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.

LAUNCHXL-CC1352R1: FCC certification: Hopping frequency of the 60 channels in FH mode

Part Number: LAUNCHXL-CC1352R1


Hey guys,

we have a really tough time due to some "precise" inquires from a TCB (technical certification buddy) guy during final FCC approvement. Our network hops on 60 channels based on the 915 MHz frequency band. The channels are 67 - 126 with a dwell time of 250ms. We have already provided information from HERE and this whitepaper to the TCB guy. However, without success.

His request is as follows:

"The manufacturer need to provide a pseudo-random hopping sequence. The diagramm provided of the different nodes is not enough. They need to provide a hopping sequence of the 60 channels. This should be obtained from the software of the transmitter after a hopping sequence if possible."

I think the easiest way would be to print one hopping sequence of the 60 channels and write these values into a table for visualization of the hopping sequence. As far as I understand, this "channel timetable" is transmitted from collector to sensor within the PA frame, however, looking into the code I didnt find a way how to access this timetable and print it via the seriel interface of an CC1352R1-Launchpad. Looks like everything is happening within the stack on both sides.

Could you provide me with a hopping sequence of the channels 67 - 126 with a dwell time of 250ms from one of your boards? Or can you tell me how I can get such a hopping sequence by myself?

Please note that this is an urgent matter since our distributor in the US and canada are waiting for the approval in order to receive our sensors and gateways as soon as possible.

Best wishes

Slev1n

  • Not sure what the question is about. Since the hopping sequence is pseudo-random it will be different each time the network is started meaning that a table will only be valid once. 

    You should be able to see the hopping sequence using a water fall plot on a spectrum with the network up and running. 

  • Since the hopping sequence is pseudo-random it will be different each time the network is started meaning that a table will only be valid once. 

    I think (or at least I hope) the TCB guy is aware of that. Nevertheless, I still think that "an example" with a real channel hopping sequence of the channels 67 - 126 would be sufficient. I would add the timing to each channel by myself.

    Could you provide us with such a sequence?

    You should be able to see the hopping sequence using a water fall plot on a spectrum with the network up and running. 

    Unfortunately, we do not have access to a fast enough oscilloscope, nor to a proper spectrum analyzer to plot the spectrum.

    best wishes

    Slev1n

  • Hello Slev1n,

    You can enable CERTIFICATION_TEST_MODE pre define symbol. This will transmit back to back on the current TX channel.

    On newer SDKs this can be configured on the syscfg window, I believe you are using 3.10.

    To enable this on 3.10:

    go to {PROJ_WORKSPACE}/application/subg/config.h

    and search for CERTIFICATION_TEST_MODE, it should be close to the bottom of the file.

    toggle that define to TRUE.

    This should give you what you need.

  • Hey AB,

    I know about this test mode, it came in pretty handy during the lab certification last year. However, is there a way to read out every TX channel and print it via uart before or after each message? Note that we do not have sufficiently hardware to log it analogically hence I'd prefer the "digital" way.

    Can I use the ApiMac_attribute_logicalChannel attribute to retrieve the channel which IS used or WAS used for transmission in FH mode? EDIT: This approach is not workin as it always returns 0...

    best wishes

    Slev1n

  • As the unicast hopping sequence is carried within the PA frame I thought I could check this frame using wireshark. I catched the PA frame with security disabled on both sides. However, I cannot see how the sensor can parse the hopping sequence from here?! (find the snipped below)

  • Slev1n,

    you can call 

    FHAPI_status FHAPI_getTxParams(uint32_t *pBackOffDur, uint8_t *chIdx);

    and print out the chIdx before or after you send a packet. The chIdx should be the pseudo random calculated TX channel at that moment.

  • I will try that and respond if it worked.

  • Well, I think I am not using the function correctly.

    In sensor.c I added the following to DataCnfCb (after) and Sensor_sendMsg (pre)

            uint32_t FHAPI_time;
            uint8_t FHAPIT_chIDx;
            FHAPI_getTxParams(&FHAPI_time, &FHAPIT_chIDx);
            System_printf("FHAPI_time_after: %d\r\n", FHAPI_time);
            System_printf("FHAPI_ch_after: %d\r\n", FHAPIT_chIDx);

    The print results for pre is always:

    FHAPI_time_pre: 268435456
    FHAPI_ch_pre: 164

    And for after:

    FHAPI_time_after: 0
    FHAPI_ch_after: 20

    I do use the certification test mode with packet length of 200 bytes and 500 pktInterval (PHY_ID_1).

    Any idea what I am doing wrong?

  • Can you try 

    FHDH1CF_getChannelNum(FH_hnd);

    this should return uint8_t

  • Changing the code to:       

        FH_HND_s FH_handle;
        uint8_t channel_pre;
        channel_pre = FHDH1CF_getChannelNum(&FH_handle);
        //System_printf("FHAPI_time_pre: %d\r\n", FHAPI_time);
        System_printf("FHAPI_ch_pre: %d\r\n", channel_pre);

    The output is not correct, I get:

    FHAPI_ch_after: 65

    FHAPI_ch_pre: 31

    The values are not changing and both channels are not included in my channel mask.

    Is the hopping sequence only based on the channel mask and the MAC Address of the collector?

    I am actually wondering if I just randomly put the channels into a table and claim that it is the hopping sequence...

    Any further suggestions?

  • Hi Slev1n,

    You can access the channel variable directly. 

    Try reading macPhyChannel.

    This variable is extern in mac/low_level/mac_radio.h

    This should work.