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.

CC2564C: Channel Classification Command

Part Number: CC2564C
Other Parts Discussed in Thread: CC2564,

Hi,

  • Does the channel classification response command always goes from controller?
  • How controller determining good/bad channels
  • Is there any way to set by host through some command?
  • How to send channel classification request disable command from host?

Regards,

Sridhar.

  • Hi Sridhar,

    This E2E thread has some information on the afh implementation: https://e2e.ti.com/support/wireless-connectivity/bluetooth/f/538/t/546021?CC2564-Channel-Mapping

    I will look into this further and get some more details on your question tomorrow.

    Regards,

    Michael

  • Hi Michael,

    I have gone through that thread and understand that HCI_Set_AFH_Host_Channel_Classification command can set the channel classification information. So I tried to set this value before connection and that value is effected in first channel classification response from slave after connection procedure, but the subsequent channel classification responses are not following the same channel map what i am setting from host. My observation is the controller is considering the channel map of what we set only for the first channel classification response message, rest of the cases it's following it's own algorith. Is it expected behavior? or we are missing something to make sure that the host given channel map is taking every time?

    Regards,

    Sridhar.

  • Hi Sridhar,

    Yes, this is expected behavior. In addition to using the HCI_Set_AFH_Host_Channel_Classification command, you will need to use the HCI_Write_AFH_Channel_Assessment_Mode command as well to disable the C2564 from performing its AFH channel assessment.

    However, unless you also control the slave and can run the same commands on its side, you will not be able to fully control what channels gets used. This is since the slave will still be reporting its AFH channel mapping to the host. Please take a look at the Bluetooth spec for a more thorough explanation of how this works.

    You can look at the HCI logs while running those commands to observe the behavior of the CC2564 upon use of those commands. You can capture logs with through the instructions here: http://processors.wiki.ti.com/index.php/CC256x_Logger_User_Guide

    Let me know if you need more clarification or have further questions about the CC2564.

    Regards,

    Michael

  • Hi Michael,

    As per specification A channel shall be classified as bad when it is marked as bad in the most recent HCI_Set_AFH_Host_Channel_Classification command.  That means when we set this value from host repeatedly on a loop (delay of 2s) , the controller(slave) should take this value and report same channel map to master in subsequent channel classification messages, but the slave controller not following this. Attached specification chapter 8.6.8 for your refernce.

    Regards,

    Sridhar.

  • Hi Michael,

    I followed your suggestion for usage of HCI_Write_AFH_Channel_Assessment_Mode and got the following results.

    Test Setup& Results:

    1. Central is connected to peripheral
      1. Central sent SET_AFH command
      2. Central Enabled Channel Classification Request command
      3. Slave responded with channel classification response
    2. Now I have sent HCI_Write_AFH_Channel_Assessment_Mode disable to slave controller 
    3. I have sent my desired channel information to slave controller through HCI_Set_AFH_Host_Channel_Classification command and then slave is ending this information to master(which is expected). Master also responding  back with SET_AFH command as a response for previously reported channel classification message from slave.
    4. Now I have sent HCI_Write_AFH_Channel_Assessment_Mode disable to master controller. 
    5. I have sent HCI_Set_AFH_Host_Channel_Classification command to slave controller , so that it should report this newley chaged channel map from host to master.(as a Channel Classification message to host). (which is working as expected)
    6. Since master received Channel Classification message from slave , it has to respond back with SET_AFH command to slave,  which is not happening.

    As per specification  HCI_Write_AFH_Channel_Assessment_Mode disable/enable command should not effect the existing AFH behavior, which is deviating here. looks like HCI_Write_AFH_Channel_Assessment_Mode disable command from master it's stopping subsequent SET_AFH commands. does HCI_Write_AFH_Channel_Assessment_Mode disable command internally disabling SET_AFH?.

    Please look at this issue and revert back on how to achieve host desired channel classification rather than standard AFH.

    Regards,

    Sridhar.

  • Hi Michael,

    Observation on previous report:

    • After step 6 in previous conversation, i tried to send HCI_Set_AFH_Host_Channel_Classification command to master host and then it sent a SET_AFH command to slave.

    Questions:

    • Is this behavior is expected?
    • If yes, will both the devices operate on host driven channels? (will they follow what we set through HCI_Set_AFH_Host_Channel_Classification command input to both hosts)
    • What happens if master don't send any SET_AFH command  to slave after step 6? (will slave follow the same channels what we set from HCI_Set_AFH_Host_Channel_Classification command from host)
    • How master is defining SET_AFH algorithm? is it directly taking what slave has sent through channel classification message?(or) is it taking as a one input parameter for its channel algorithm?
    • Is there any command to disable TI channel algorithm and follow slave channel classification message as only input?
    • If we don't send SET_AFH from master after we receive channel classification message from slave, will salve support those channels only?(or) it should get a SET_AFH command from master, so that it can use those channels .(Does SET_AFH always necessary from master to slave to control the channels slave operate?)

    Regards,

    Sridhar.

  • Hi Sridhar,

     

    The CC2564C is compliant with the Bluetooth spec, and has been fully certified as such. Thus, it should be operating exactly as per the BT core specifications.

    With that in mind, here are the answers to your questions:

    • Is this behavior is expected?

    Yes

    • If yes, will both the devices operate on host driven channels? (will they follow what we set through HCI_Set_AFH_Host_Channel_Classification command input to both hosts)

    Yes

    • What happens if master don't send any SET_AFH command  to slave after step 6? (will slave follow the same channels what we set from HCI_Set_AFH_Host_Channel_Classification command from host)

    The master should be sending set_afh messages to the slave, even if the HCI_Set_AFH_Host_Channel_Classification is set, since it will still be running its local measurements and determining which channels are good/bad.

    • How master is defining SET_AFH algorithm? is it directly taking what slave has sent through channel classification message?(or) is it taking as a one input parameter for its channel algorithm?

    The slave channel classification report is one of the inputs. The section 8.6.8 that you have highlighted, explains how the master will also take the input from its local measurements as well as its own host channel classification from the HCI_Set_AFH_Host_Channel_Classification command. Do note that the master will follow the slave’s channel classification report on a best-effort basis. This too is defined in the BT core spec.

    • Is there any command to disable TI channel algorithm and follow slave channel classification message as only input?

    The HCI_Write_AFH_Channel_Assessment_Mode disables local measurements, and if you don’t send the HCI_Set_AFH_Host_Channel_Classification on the master to set any host channel classification, then it will only use the slave channel classification.

    • If we don't send SET_AFH from master after we receive channel classification message from slave, will salve support those channels only?(or) it should get a SET_AFH command from master, so that it can use those channels .(Does SET_AFH always necessary from master to slave to control the channels slave operate?)

    The slave should get an SET_AFH command from the master, assuming some change in channel map is required, such as if the slave sends a new channel classification report. The set_afh command is necessary for it to know the upcoming channel hop sequence of the master. See section 8.6.7 for details.

     

    Regards,

    Michael

  • Hi Michael,

    On the last point you mentioned as follows

    • The slave should get an SET_AFH command from the master, assuming some change in channel map is required, such as if the slave sends a new channel classification report. The set_afh command is necessary for it to know the upcoming channel hop sequence of the master. See section 8.6.7 for details.

    we are observing different behavior on this point.

    • After we issue  HCI_Write_AFH_Channel_Assessment_Mode disable command to master controller , we are unable to see any SET_AFH command from master to slave(even though slave is sending Channel Classification  to master), until and unless we explicitly send HCI_Set_AFH_Host_Channel_Classification command to master controller.

    Regards,

    Sridhar.

  • Hi Sridhar,

    The behavior you describe is working as intended. The SET_AFH command is only used by the master if the AFH hop sequence need to be changed. If there is no need for a change due to the channel map staying the same, then the master will not send that command.

    If you run your logging for longer or introduce some interference nearby, you should observe the master sending out SET_AFH commands as the channel reports by the slave change.

    Regards,

    Michael

  • Hi Michael,

    After we issue HCI_Write_AFH_Channel_Assessment_Mode disable command on mater and slave controllers, we are issuing HCI_Set_AFH_Host_Channel_Classification command to slave controller repeatedly with a time duration of 10 seconds and every time the channel map will have one bit change in channel map. The slave controller is sending this information to master but , master is not sending SET_AFH command to slave. According to you if there is any change in channel classification information from slave to master then master should send  SET_AFH command to slave, which is not happening.

    Regards,

    Sridhar.

  • Hi Sridhar,

    The slave changing its channel classification map will not necessarily cause the master to do a change in the hop sequence and thus make a SET_AFH command to occur. If you change more than one channel in the slave's channel map, are you able to see the SET_AFH command get sent?

    Do you have a CC2564C as both the master and slave? If you could get HCI logs to show this behavior, I may be able to examine those and see why your system behaves the way it does.

    Regards,

    Michael