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.

CC2640R2F: get list of peripheral feature when requested by central

Part Number: CC2640R2F


Hi Everyone,

I'm writing my firmware starting by multi role project.

I want to clear DLE feature bit in feature set bytes, but I want to leave setted the other flags as by default. To do this I've tried to search if exists a callback/function that can get how the feature flag is setted.

In order to do this, I've searched if there is a callback that is invoked when master do a LL_FEATURE_REQ to the peripheral, without response.

I've found the function HCI_ReadLocalSupportedFeaturesCmd() that I've tried to call in the end of multi_role_init function.

This callback invoke an event of

HCI_READ_LOCAL_SUPPORTED_FEATURES

and I try to assign to the vector featset the content of command_complete->pReturnParam[1]

memcpy(featSet1, &command_complete->pReturnParam[1], 8);

and subsequently clear only the bit flag regarding DLE functionality by call

CLR_FEATURE_FLAG(featSet1[0], LL_FEATURE_DATA_PACKET_LENGTH_EXTENSION);


and subsequently update controller with modified features


HCI_EXT_SetLocalSupportedFeaturesCmd(featSet1);

but from packet sniffer, I obtain that my response has feature flags all to 0

I don't think that the feature set flag are all to 0 because if I don't clear the flag bytes the packet sniffer see LL_FEATURE_RSP as follow

So the functionalities byte flag are all enabled by default

My question is:

There is a function that I can call to get how feature flags are setted? What is? When I can call this function?

Thanks for support.

Regards

  • Hello,

    Let me look into this. At the same time, could you please give us more background on why are you trying to accomplish with this?

    Thanks,

    David
  • Hi David,

    thanks for quick reply. 

    I've fixed PDU size, so, I don't need DLE functionality, so, I want clear DLE bit, but, I want to keep the other feature bits unchanged, and, to do this, I want to read the feature bits configuration.

  • Hi DavidL,

    sorry for my duplicate response.

    I've tried to use the function HCI_LE_ReadLocalSupportedFeaturesCmd();

    that invoke event

    HCI_LE_READ_LOCAL_SUPPORTED_FEATURES

    where I can read the supported feature and clear desired bits by using instruction

    memcpy(featSet, &command_complete->pReturnParam[1], 8);

    In this case, featset contains the correct value of supported features

    I've verified that this parameters are correct, because, I've tried to read after a modification, and verify that the readen configuration corresponds with my previous configuration.


    thanks a lot for help