This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

How does the client receive RSSI value from servers?

Hi, when I  provisioned the client and servers via provisioner to create mesh network, I can receive RSSI value from provisionee ,but after the provisionee disconnect to power and reconnect to it or after reset the provisionee, I can't receive  RSSI value again. This makes me confused.

And can you tell how to receive RSSI value from servers and show it on the client ? Any codes or advice.

Thank you all.

Zhengrui.

  • Have you tried restarting the rtt viewer instance? I often find that if I reset the board, the rtt viewer program will need to be closed & restarted before the logging begins again. 

    Regarding receiving RSSI values on the client, I would check how the provisioner implements this & do something similar on the client. Take a look at the app_health_event_cb() function in main.c of the provisioner light switch example in mesh sdk v2.0.1.

  • hello,

    Based upon the limited description of your error, I believe this pertains to the server health status messages (with RSSI values) no longer propagating after powering off and re-connection...

    I believe that this bug is a carry over from Mesh v1.0.1 that was not fixed going into v2.0.1 and is described in this post. Once you follow the instructions provided by João Oliveira you should find that the mesh health model state (and subsequent messages) is restored on reboots.

    In essence the following needs to be implemented in access.c...

    // bug in Mesh sdk v1.01 - https://devzone.nordicsemi.com/f/nordic-q-a/29611/mesh-health-model#post-id-189330
    // suggested patch applied
    
    static inline void restore_publication_period(access_common_t * p_model) {      // WJL - patch function - see  below
        if(p_model->model_info.publication_period.step_num != 0){
            access_publish_period_set(&p_model->publication_state, p_model->model_info.publication_period.step_res, p_model->model_info.publication_period.step_num);
        }
    }
    
    static inline bool restore_models(void)
    {
        if (restore_flash_data(FLASH_GROUP_MODEL, ACCESS_MODEL_COUNT, restore_acquired_model) <= 0)
        {
            return false;
        }
    
        for (access_model_handle_t i = 0; i < ACCESS_MODEL_COUNT; ++i)
        {
            if (m_model_pool[i].model_info.element_index != ACCESS_ELEMENT_INDEX_INVALID)
            {
                    restore_addresses_for_model(&m_model_pool[i]);
                    restore_publication_period(&m_model_pool[i]);       // WJL - patch line
            }
        }
    
        return true;
    }

    Once you have tried the patch, post back to let us know how you got on and we can help you further if required.

    Regards,

  • Thanks  all of you ,now I have solved this bug by using the patch to replace the codes in access.c although I still know the reason.

    Thank you Bjorn and leonwj.

    BR.

    Zhengrui

Related