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.

CC2650: Using Proxy binding in RemoTI 2.00.01.15

Part Number: CC2650

Hi all, thank you for your time to read this posting.

I am working on my project that based on the RNP project, which contain 1 recipient, and 2 originators. An external MCU is communicating/controlling the RNP using UART interface (NPI frames). The MAC addresses of the nodes can be shared out-of-band.

The following is what I did/sent from the MCU using UART to the RNP:

At the Recipient side,

0xFE 0x04 0x00 0x2A 0x21 0x00 0x00 0xE8 0x01 0xE6  (Reading the GDP BINDING CAP, which return 0x01, i.e. push button + validation)

0xFE 0x05 0x00 0x2A 0x22 0x00 0x00 0xE8 0x01 0x00 0xE4 (Writing the GDP BINDING CAP, with 0x00, to do just push button, in hope to skip validation or just reduce the complexity)

0xFE 0x0E 0x00 0x2A 0x22 0x00 0x00 0xE4 0x0A <8 bytes MAC> <2 bytes PAN> 0xD0 (Writing of the Proxy Binding info, which return 0xFE 0x01 0x00 0x6A 0x22 0x00 0x49, status 0x00, that is success)

0xFE 0x00 0x00 0x4A 0x31 0x7B (Send Allow Binding)

At the Originator side,

0xFE 0x0E 0x00 0x2A 0x22 0x00 0x00 0xE4 0x0A <8 bytes MAC> <2 bytes PAN> 0xD0 (Writing of the Proxy Binding info, which return 0xFE 0x01 0x00 0x6A 0x22 0x00 0x49, status 0x00, that is success)

0xFE 0x01 0x00 0x4A 0x30 0x01 0x7A (Sent start binding)

then in the sniffer, I can see the Pair Request message from the originator, then a Pair response from the recipient. However, the pair is not formed

Recipient return: 0xFE 0x02 0x00 0x4A 0x32 0xB4 0xFF 0x31 (I think the status returned is 0xB4, that is RTI_ERROR_NOT_PERMITTED)

Originator return: 0xFE 0x02 0x00 0x4A 0x30 0x54 0xFF 0xD3 (The status returned is 0x54, that is RTI_ERROR_BINDING_TIMEOUT)

What did I miss? Any suggestion and advice are welcome. Thank you again for your time reading this post.

  • I dug into the RNP app, and you can only get an RTI_ERROR_NOT_PERMITTED with RTI_AllowBindReq() on the recipient if gdpBrState != NULL; meaning it that the GDP profile could be likely in a discovery (or perhaps pairing) state. From the logs you provided, I can't really tell in what state it might be. Are you performing any discovery prior to RTI_AllowBindReq()? Are any other NPI commands sent to the RNP after RTI_InitReq()?

    Also, the CRC values on the RTI_WriteItem() call on recipient and orginator are identical. It seems silly, but can you verify that you sending each other's MAC address instead of the same one?

  • Hi Tom,

    Thank you so much for you reply.

    Please find the answer to your question below:

    Can you verify that you sending each other's MAC address instead of the same one? Yes, I verified, MAC are different, actually the CRC are different too, one is 0xC1, one is 0xD0. I just used the same info from my clipboard when I was creating the log to post.

    Are you performing any discovery prior to RTI_AllowBindReq()? No, I did not perform any discovery.

    Are any other NPI commands sent to the RNP after RTI_InitReq()? Together with the above question, the following are what I have done within the user thread I created, from start-up. Please tell me if there is any steps that are not needed, needed, or even wrong. thanks!

    Recipient side, contents of pData:

    Writing the Node Capability - RTI_SYNC_REQ, RTI_CMD_WRITE_ITEM, { 0x00, RTI_PROFILE_RTI, RTI_CP_ITEM_NODE_CAPABILITIES, 0x01, 0x0F }

    Writing the Application Device Type List - { 0x00, RTI_PROFILE_RTI, RTI_CP_ITEM_APPL_DEV_TYPE_LIST, 0x03, 0x09, 0x09, 0x00 }

    Writing the Node supported Target Types - { 0x00, RTI_PROFILE_RTI, RTI_CP_ITEM_NODE_SUPPORTED_TGT_TYPES, 0x06, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00 }

    Write the application capability - { 0x00, RTI_PROFILE_RTI, RTI_CP_ITEM_APPL_CAPABILITIES, 0x01, 0x25 }

    Write the Profile ID list - { 0x00, RTI_PROFILE_RTI, RTI_CP_ITEM_APPL_PROFILE_ID_LIST, 0x02, RTI_PROFILE_GDP, RTI_PROFILE_ZRC }

    Write the vendor ID - { 0x00, RTI_PROFILE_RTI, RTI_CP_ITEM_VENDOR_ID, 0x02, 0x07, 0x00 }

    Write the vendor name - { 0x00, RTI_PROFILE_RTI, RTI_CP_ITEM_VENDOR_NAME, 0x07, 0x54, 0x49, 0x20, 0x49, 0x6E, 0x63, 0x00 }

    Write the user string - { 0x00, RTI_PROFILE_RTI, RTI_SA_ITEM_USER_STRING, 0x0F, 0x4D, 0x69, 0x7A, 0x75, 0x68, 0x6F, 0x20, 0x4F, 0x53, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00 }

    (Maybe I don't need this, since the PAN is randomized?) Read then write the PAN - 

    (Maybe I don't need this, since the Short address is generated at proxy binding?) Write the short address for this node -

    RTI_InitReq() - RTI_ASYNC_REQ, RTI_CMD_INIT_REQ

    Write restore,  Startup Ctrl Restore - RTI_SYNC_REQ, RTI_CMD_WRITE_ITEM, { 0x00, RTI_PROFILE_RTI, RTI_CP_ITEM_STARTUP_CTRL, 0x01, 0x00 }

    Turning off standby mode - RTI_ASYNC_REQ, RTI_CMD_STANDBY_REQ, 0x00

    Enable Channel Agility - RTI_SYNC_REQ, RTI_CMD_WRITE_ITEM, { 0x00, RTI_PROFILE_RTI, RCN_NIB_AGILITY_ENABLE, 0x01, 0x00 }