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.

CC2642R: How to send data in connectionless AOA mode

Part Number: CC2642R

We can run connectionless AOA mode demo successfully. Now we need adding data exchange feature.

Because connectionless AOA mode is used. How to send customize data from rlts_slave to rlts_master? And from rlts_master to rlts_slave?

  • Hi,

    in connectionless AoA, data can only be transmitted from the advertiser to the scanner. This can be done by modifying the advertising data that the advertiser is sending. If two way communication is required, then connection AoA may be easier to work with. You could also try to keep connectionless AoA and establish a connection whenever a data exchange is required.

    Best Regards,

    Jan

  • Can we kick off a new observer task in rtls_slave projcet ? Or swtich BLE role from GAP_PROFILE_PERIPHERAL to multi role based on rlts_slave example? Other than add GAP_PROFILE_CENTRAL in GAP_DeviceInit, are there any changes needed?

  • Hi,

    I would expect so. I would recommend looking at the multi_role example which implements both peripheral and central capabilities in a single project. If you are interested in observer attributes, then I suggest referencing the simple_observer project as well. To add observing & advertising, then you would have to follow the general setup shown in the multi_role example (scanning & advertising) as well as the general set up shown in the simple_broadcaster (broadcasting, but not connecting). You would also need to incorporate the actual scanning logic which is present in the simple_broadcaster and multi_role projects.

    Best Regards,

    Jan

  • We refer to multi_role, 1. Add GAP_PROFILE_CENTRAL when calling GAP_DeviceInit function 2. Add Initialization for GapScan shown in multi_role_scanInit under GAP_DEVICE_INIT_DONE_EVENT 3. Call GapScan_enable in a one time shot 100ms timer callback. The issue is whenever GapScan_enable called, the CC2642 stops working. Is there any steps required before call GapScen_enable? 

  • Hi,

    I looked into this further. Can you try updating your SDK to 5.20? The rtls_coordinator project is now in multi-role so it can support both peripheral and central functionality. I recommend updating to the latest sdk and referencing the mentioned project as a guide to implement your desired functionality.

    Best Regards,

    Jan

  • We have look into SDK5.20. But it seems the only update is project name? rlts_coordinator is old rlts_master, and rtls_responder is old rlts_slave. And if it so, then there is actually no change for role, because old rtls_master is in Peripheral+Central role and old rtls_slave is in Peripheral role, And rtls_coordinator is still in Peripheral+Central role and rtls_responder is still in Peripheral role. Our goal is to make whatever rtls_responder or rtls_slave do periodic ADV as well as scan at the same time. Upgrade does not help here. By the way, besides changes done mentioned in previous post, we also try modifying -DHOST_CONFIG=PERIPHERAL_CFG to -DHOST_CONFIG=PERIPHERAL_CFG+CENTRAL_CFG in rtls_slave project, build_config.opt, the issue still shows. Can you kindly help to confirm whether rtls_slave or rtls_responder can do Periodic ADV and Scan at the same time?

  • Hi,

    Thank you for the information. I will consult with some colleagues and see if this is possible. I will update you early next week.

    Best Regards,

    Jan

  • Hi,

    I have a few quick questions that came to mind while researching this. You mentioned that when you call GapScan_enable(), the device stops working. Can you expand on this? What is the return code of the function call. Does the program completely freeze? Where does the call stack say the program is located when this occurs?

    Best Regards,

    Jan

  • Hi Jan,

    I run more debug today by following your questions on SDK5.20 rlts_responder example. Please see below results:

    1. GapScan_enable has no return. By using step over and Step into, the code stops at ICALL_SYNC_HANDLE_POST(ICall_entities[dest].task->syncHandle); in function ICall_Errno ICall_send(ICall_EntityID src,ICall_EntityID dest,ICall_MSGFormat format,void *msg) in icall.c file

    2. To debug, I add a 50ms period clock and do GPIO_toggle in clock callback. And I mapped out LNA/Tx Start RF signal to GPIO. I can see when GapScan_enable is called, all signals stops. 

      

    if zoom in

    But if comment out GapScan_enable in code, then all ADV (primary ADV and periodic ADV) back to normal. And 50ms GPIO toggle is normal.

    3. See ROV after freeze happen. There is no exception and stack overflow happen, RTLSCtrl is blocked.

    4. See ADV interval seems is 100ms. I try to modify by using code 

    uint32_t newAdvInt = 560;
    GapAdv_setParam(advHandleLegacy, GAP_ADV_PARAM_PRIMARY_INTERVAL_MIN, &newAdvInt);
    GapAdv_setParam(advHandleLegacy, GAP_ADV_PARAM_PRIMARY_INTERVAL_MAX, &newAdvInt);

    under GAP_DEVICE_INIT_DONE_EVENT event before GapAdv_enable

    It does not effective. So how to modify primary ADV interval and periodic adv interval?  In case the interval is too short to scan.

  • Hi,

    Thanks for the info. This is very helpful. With regards to the advertising interval, I recommend looking into the BLE Scanning & Advertising SimpleLink Academy course. This lab covers a lot of valuable information for how to configure advertising and scanning. Upon first glance, the code segment you attached seems like it is properly configuring the advertising interval. Can you confirm if advertising is disabled during this instance?

    I will consult with a colleague on the scanning behavior and get back to you.

    Best Regards,

    Jan

  • Hi 

    Any update here? We are blocked here.

  • Hi,

    Connectionless AoA is not recommended in the cases where bidirectional communication is required.

    In SDK 5.20, the rtls_responder is not enabled to use scanning hence the issue you are facing.

    We may enable this possibility in future SDK releases. Please stay tuned. (Please don't ask me for a specific date, I won't share our roadmap details on a public forum.)

    For the moment, the best option for you is to use connection-AoA. Other "creative" solutions consisting in using two CC2642R connected through UART - one behaving as rtls_responder, the other behaving as simple_observer - as target could also be considered.

    As your original has been answered I am going to close the thread.

    Thank you for your comprehension.

    Best regards,