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

Error NRF_ERROR_INVALID_STATE when send data via mesh 3.0

Hi all,

I using SDK MESH 3.0 and light swich server exam. If I send data in button_event_handler function. All run correct.

If I send data in int main -> error in function : 

NRF_MESH_ASSERT_DEBUG(bearer_event_in_correct_irq_priority()); Detail in line code : 

if (active_irq == HAL_IRQn_NONE)
{
return (m_irq_priority == NRF_MESH_IRQ_PRIORITY_THREAD || !hal_irq_is_enabled(EVENT_IRQn));
}

So I create one timer interrupt for send data. It pass error above . But in function segmented_packet_tx in transport.c appear error : 

    /* According to the Mesh Profile Specification v1.0 Section 3.6.4.1, we should only ever send one
     * transport SAR packet at the same time between a given source and destination. Return FORBIDDEN if
     * there's a SAR session in progress with the same parameters. */
    for (uint32_t i = 0; i < TRANSPORT_SAR_SESSIONS_MAX; ++i)
    {
        if (m_trs_sar_sessions[i].session.session_type == TRS_SAR_SESSION_TX &&
            m_trs_sar_sessions[i].metadata.net.src == p_metadata->net.src &&
            m_trs_sar_sessions[i].metadata.net.dst.value == p_metadata->net.dst.value)
        {
            return NRF_ERROR_INVALID_STATE;
        }
    }

When I debug : 

- send OK -> 

m_trs_sar_sessions[0] = TRS_SAR_SESSION_INACTIVE

m_trs_sar_sessions[1] = TRS_SAR_SESSION_INACTIVE

m_trs_sar_sessions[2] = TRS_SAR_SESSION_INACTIVE

m_trs_sar_sessions[3] = TRS_SAR_SESSION_INACTIVE

- send ERROR 8 -> 

m_trs_sar_sessions[0] = TRS_SAR_SESSION_TX

m_trs_sar_sessions[1] = TRS_SAR_SESSION_INACTIVE

m_trs_sar_sessions[2] = TRS_SAR_SESSION_INACTIVE

m_trs_sar_sessions[3] = TRS_SAR_SESSION_INACTIVE

Pls, show me advace. Thank very much

Parents Reply Children
No Data
Related