This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC1352R: HCI_EXT_ModemTestTxCmd doesn't work in DMM Z-Stack + BLE project

Part Number: CC1352R
Other Parts Discussed in Thread: SYSCONFIG

SDK 4.40.0.44

2x Launchpads cc1352r1

1st LP - "dmm_zed_switch_remote_display_app" project

2nd LP - Smart RF Studio connected

We want to implement  the tests in the CUI menu, but when we call the command HCI_EXT_ModemTestTxCmd(LL_EXT_TX_MODULATED_CARRIER, 0), nothing happens. We don't see any signal on another LP board with Smart Rf Studio. We selected the channel 37 (2402MHz) in the SmartRf studio.

We also tried  HCI_EXT_EnhancedModemTestTxCmd(LL_EXT_TX_MODULATED_CARRIER, LL_EXT_RF_SETUP_1M_PHY, 0), the same result.

All these functions return success result (0).

We added the parameter -DHCI_TL_FULL in the "build_component.opts" otherwise it got stuck in rom_init.c ROM_Spinlock().

We tested both launchpads with Smart RF studio in TX -> RX mode, both works fine. We saw signal.

How could we start the test? Could it be that we don't initialize something and that is why the test doesn't start?

P.S. In our old BLE project based on SDK 3.10.00.53 the test was working well without any issues, although it had -DHCI_TL_NONE in the "build_component.opts" file.

  • I found the problem.

    We send an event to the Remote Display app to disable the BLE advertising and then start the HCI test. But in fact, the event was not hanlded yet at the moment when we call the HCI function. So the HCI test didn't work, because advertising was still active. I added a delay between disabling advertising and starting the HCI TX test and now it works fine.

    I have other questions.

    1. What does mean DMM "pause" for stack? What function should I call to change stack state DMMPOLICY_PAUSED or DMMPOLICY_NOT_PAUSED?

    2. Does BLOCK mode mean PAUSED or not?

    DMMSch_setBlockModeOn(DMMPolicy_StackRole_BlePeripheral);

    DMMSch_setBlockModeOff(DMMPolicy_StackRole_BlePeripheral);

    3. When I call DMMSch_setBlockModeOn(DMMPolicy_StackRole_BlePeripheral), I don't see the event

    case RD_POLICY_PAUSE_EVT:

    in the remote_display.c

    How could I trigger the RD_POLICY_PAUSE_EVT?

  • Hi Alex,

    Thank you for following up on the status of your issue.

    1. Pause activity is set by the Policy Tables inside SysConfig.  The DMM scheduler does not pause a stack regardless of the policy settings. When a policy enters a pause state, an application callback is invoked to notify the stack that it should pause its activity. The pause policy should only be used if the application callback has been implemented and registered with DMM.  In order for the application to know when its DMM policy is changed into a paused state, the user has to register callbacks functions with the DMM policy manager. 

    2. Block mode does not mean paused.  Paused is an indication to the application through a callback to let the stack know that activity should be paused.  Block mode allows the user to put a constraint on a given stack to not be allowed any radio access, no matter what the actual priority of the command would be.  To block a stack, the DMMPolicy_setBlockModeOn() API is used. The corresponding, DMMPolicy_setBlockModeOff() API is used to turn the block of again. A user can query the blocking status of a stack using the DMMPolicy_getBlockModeStatus() API.

    3. The application callbacks are registered using the DMMPolicy_registerAppCbs() API.

    Please refer to the TI DMM User's Guide and Runtime APIs for more information.

    Regards,
    Ryan