RFDuinoGZLL Channel
I am working on my own HOST and DEVICE sketches and am confused with respect to the RFduinoGZLL.Channel assignment. Specifically, this member is not documented in the RFduino programming guide.
***********
In the OpenBCI HOST and DEVICE sketches, the channel for each must be assigned like:
RFduinoGZLL.Channel = 6;
HOWEVER, the Channel member is not documented in the RFduino programming guide. Nor is it present in the files RFduinoGZLL.h, RFduinoGZLL.cpp, libRFduinoGZLL.h, or libRFduinoGZLL.cpp. Where does this member come frome, and where is it documented? If OpenBCI is using a custom RFduino library, is there documentation specific to the version used on these devices?
The nrf_gzll protocol provides extensive controls over device addresses and channel hopping. However, the RFduinoGZLL library does not provide access to the underlying nrf_gzll channel options. Was there a modification provided for the OpenBCI build?
***********
Here is what I understand about the GZLL addressing and channel hopping (highlighted in grey) and the matching RFduino utilities (highlighted in red).
The GZLL protocol allows you to adjust the HOST base address via:
nrf_gzll_set_base_address_0()
RFduinoGZLL_host_base_address
All DEVICEs in a GZLL network share a base address:
nrf_gzll_set_base_address_1()
RFduinoGZLL_device_base_address
Each DEVICE must have its own prefix:
nrf_gzll_set_address_prefix_byte(pipe,prefixByte)
(Could not find match)
Last, each of these pipes may be enabled/disabled:
nrf_gzll_set_rx_pipes_enabled(pipes)
(Could not find match)
When beginning a GZLL device, it uses one of 2 channel selection protocols:
nrf_gzll_set_device_channel_selection_policy();
nrf_gzll_set_device_channel_selection_policy();
(Could not find match)
The RFDuinoGZLL library enables this feature by providing the following constants:
NRF_GZLL_DEVICE_CHANNEL_SELECTION_POLICY_USE_SUCCESSFUL
NRF_GZLL_DEVICE_CHANNEL_SELECTION_POLICY_USE_CURRENT
(Could not find match)
That may be set using the following method:
nrf_gzll_set_device_channel_selection_policy(policy);
(Could not find match)
You can even finetune its channel-hopping frequency using the methods:
nrf_gzll_set_timeslots_per_channel(timeslots)
nrf_gzll_set_timeslots_per_channel_when_device_out_of_sync(timeslots)
(Could not find match)
Last, the nrf_gzll protocol allows you to adjust which channels are available to the device using:
nrf_gzll_set_channel_table(channelTable,size)
(Could not find match)
The last method allows you to specify any number of channels from:
0 to NRF_GZLL_CONST_MAX_CHANNEL_TABLE_SIZE
(Could not find match)
Where each entry in the table is a value in the range:
0 <= channel <= 125
(Could not find match)
Comments
http://openbci.com/forum/index.php?p=/search&Search=gazelle
http://openbci.com/forum/index.php?p=/discussion/comment/2493/#Comment_2493
for our OpenBCI system that enables the RFduinoGZLL.channel command, and
also there's some magic there to make the streaming data more stable.
[and avoid the normal channel hopping built into Bluetooth]