Hello,
A CC2650 BLE product I am working on is currently in the lab undergoing compliance testing. I have used the built-in modes for FCC testing using the:
HCI_EXT_ModemTestTxCmd();
function to put the radio in the particular modes. This is a nice feature!
To perform the Receiver Blocking Test, the lab wanted two of our boards connected to each other (via BLE) sending data with an indication that the connection is still good. I found the spp_ble_client and spp_ble_master example projects for the CC2650 Launchpad and thought that was a great starting point. I modified the projects to work with our hardware and for the Server to send data every 250ms. The Client toggles its led every time it receives data.
I just learned that the radio need to be restricted to one of two channels/frequencies at the low and high end of the spectrum. I found these two threads on this forum that talk about using channel maps to limit the channels used in the hopping scheme:
https://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/p/404558/1433442
https://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/p/507332/1844550
These talked about using the function: HCI_LE_SetHostChanClassificationCmd() on the Central device to limit the channels used for transmitting. It was noted that this must be done after the connection is established. These threads are about all I have found about this topic - I haven't found documentation that goes in to greater detail about channel maps or the HCI_LE_SetHostChanClassificationCmd function and it's uses etc.
I put the following code in the spp_ble_client (the Central) project in spp_ble_client.c, SPPBLEClient_processRoleEvent() function, and the GAP_LINK_ESTABLISHED_EVENT section:
uint8 chanMap[5];
hciStatus_t rv;
chanMap[0]=1<<1; //2404MHz
//chanMap[4]=1<<6; //2478MHz
rv=HCI_LE_SetHostChanClassificationCmd(chanMap);
I don't have a spectrum analyzer so I send this code to a colleague who does and confirmed that it looks like the boards are still using the full spectrum - it is not limited to just one channel.
I can use some help here to get this working, ie. only using one channel while connected:
1. Is my use of the channel map correct? An array of five bytes? LSb is 2402MHz and MSb is 2480MHz?
2. Am I calling HCI_LE_SetHostChanClassificationCmd(chanMap); correctly?
3. Am I calling HCI_LE_SetHostChanClassificationCmd(chanMap); in the correct place?
4. Is there a way for me to verify that this is working/not working without a spectrum analyzer? Is there a CC2650 Launchpad sniffer project using a TI PC Tool or similar?
5. Can someone point me to better documentation for using channel maps and HCI_LE_SetHostChanClassificationCmd(chanMap); in TI Simplelink?
6. ...
Thanks for any help / suggestions...