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.

CC1310: how to dynamically select channels to use on collector and sensor nodes in TI 15.4 network with frequency hopping?

Part Number: CC1310


Hi,

The default settings in collector/sensor node example code seem to indicate that we should include all channels in FH_ASYNC_CHANNEL_MASK, as in the following code:

// subg/config.h
/*!
 Channel mask used when CONFIG_FH_ENABLE is true.
 Represents the list of channels on which the device can hop.
 The actual sequence used shall be based on DH1CF function.
 It is represented as a bit string with LSB representing Ch0.
 e.g., 0x01 0x10 represents Ch0 and Ch12 are included.
 */
#define CONFIG_FH_CHANNEL_MASK        { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
                                        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
                                        0xFF, 0xFF, 0xFF, 0xFF, 0xFF }

/*!
 List of channels to target the Async frames
 It is represented as a bit string with LSB representing Ch0
 e.g., 0x01 0x10 represents Ch0 and Ch12 are included
 It should cover all channels that could be used by a target device in its
 hopping sequence. Channels marked beyond number of channels supported by
 PHY Config will be excluded by stack. To avoid interference on a channel,
 it should be removed from Async Mask and added to exclude channels
 (CONFIG_CHANNEL_MASK).
 */
#define FH_ASYNC_CHANNEL_MASK         { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
                                        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
                                        0xFF, 0xFF, 0xFF, 0xFF, 0xFF }

During testing, I found out that if we reduce the number of channels actually used, as defined in CONFIG_FH_CHANNEL_MASK, something like the following:

#define CONFIG_FH_CHANNEL_MASK        { 0x55,0x55,0x55,0x55,0x55,0x55, \
                                        0x55,0x55,0x55,0x55,0x55,0x55, \
                                        0x55,0x00,0x00,0x00,0x00 }

The amount of time a sensor node needs to join network will be significantly reduced, roughly proportional to the number of channels actually used. Also in theory if we use different channels for different networks, even those networks co-exist in close vicinity. they won't interfere with each other. We can also avoid interference from other systems.

So my question is: how do we dynamically set different channels for different networks? Should we include all channels in FH_ASYNC_CHANNEL_MASK even if we don't actually use all channels for frequency hopping? 

Please advise.

Thanks in advance.