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.

CC1352R: Close network in FH mode with full PAN capacity.

Part Number: CC1352R


Hi,

Immediately after the network has reached PAN capacity I have to close the network. In Beacon and Non Beacon mode you can set "permit join" off and it's enough. But in FH mode this option doesn't exist. So the node enter to "access Denied" mode, and doesn't leave anymore. If I turn on another collector, noting happens. Any hints about this?

Thanks in advance

Andrés

  • Hi Andrés,

    I'm not 100% sure what you mean by "access denied" mode on the sensor node. However, you could try to restart or send the sensor to the starting mode when this happens.

    Cheers,

    Marie H.

  • Hi Marie,

    If PAN capacity is full, i.e.  the collector has reached its maximum device quantity the response is ACCESS_DENIED. Sending the sensor to the starting mode might not solve the situation since it could try to connect with the very same collector again. How could I make sure that the same situation doesn't repeat endlessly ?

    Andrés

  • Hi Andres, 

    If I understand you correctly, you are having a collector working at full capacity and you want a sensor attempting to join this network to stop trying. I am working on this case and will get back to you with some feedback. 

    Regards,

    Siddanth

  • Yes, that's correct. Also if I have another collector turn on, the sensor doesn't "see" this new collector (because it's in "access denied" and ParentFound = true)

    I mean what happens if I have two collectors, one at its capacity, and the other not

    Thanks!

    Andrés

  • Hi Andrés,

    This might require some modifications to the application layer. Unfortunately, the sensor example does not completely cover the full PAN scenario.

    When the association confirmation callback executes (assocCnfCb), if the PAN is at full capacity, you’ll see that both the device states and the device start states are set. Nevertheless, for these particular states, nothing happens other than updating the CUI (no clocks are reset, no new async request are sent, etc.)

        else if((pData->status == ApiMac_assocStatus_panAtCapacity) ||
                (pData->status == ApiMac_assocStatus_panAccessDenied))
        {
            /* Stop Attempting to Join as PAN has reached Capacity or Access denied*/
            switchState(Jdllc_deviceStates_accessDenied);
            updateState(Jdllc_states_accessDenied);
            /* Update stats */
            Sensor_msgStats.joinFails++;
            /* Enter sleep state based on configuration */
            ApiMac_mlmeSetReqBool(ApiMac_attribute_RxOnWhenIdle, CONFIG_RX_ON_IDLE);
        }

    A good starting point is to see what happens when switchState(Jdllc_deviceStates_accessDenied) executes. This will simply set the JDLLC_STATE_CHANGE_EVT event, which will cause processState() to execute.

    In processState() you’ll have to add a particular case for Jdllc_deviceStates_accessDenied. My guess is that you need to clear the device state, set parentFound to false, and most likely restart the trickle timer used for the async messages.

    Now, after you’ve done this, you might need to take care of some additional things. Mainly because even if you get to the point where you are scanning again for other collectors, it could happen that the sensor again attempts to join the collector which is at full capacity.

    Therefore, you would probably need to do some sort of bookkeeping so that the sensor is aware of which PANs are full. Most lilley you'll need to modify the async indication callback (wsAsyncIndCb) so that it ignores those PANs and goes for the other collector.

    BR,
    Andres