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