Based on the experimental_lpn example if have ported at application (light switch) to work as a low power node.
Everything work fine on the lpn node where i use the generic_onoff_client to send button on/off to a server node.
I now want to 'request' the generic_onoff_server status issuing a GET from the client. This is also received on the server and a STATUS published.
Both server and client have been setup to use same app-key and group address on publish/subscribe.
To help me verifying what is send/received, i have added debug-print (__LOG) in app_mesh_core_event_cb() on NRF_MESH_EVT_MESSAGE_RECEIVED and NRF_MESH_EVT_TX_COMPLETE.
I using the light_switch_server example as server and have verified that the light_switch_client example works fine receiving STATUS, but not the exprimental_lpn
Are there any restriction in the experimental_lpn that prevent me from receiving STATUS ?
I have also made these changes to the mesh-init and main loop .. allowing me to use APP_SCHED (Event Scheduler) .
mesh_stack_init_params_t init_params =
/* Run application and mesh event handling in main loop using app_scheduler:
When using the APP_SCHED to post event, the irq_priority must be changed from
NRF_MESH_IRQ_PRIORITY_LOWEST to NRF_MESH_IRQ_PRIORITY_THREAD in order to avoid
mesh app assert. */
.core.irq_priority = NRF_MESH_IRQ_PRIORITY_THREAD, //NRF_MESH_IRQ_PRIORITY_LOWEST,
.core.lfclksrc = DEV_BOARD_LF_CLK_CFG,
.core.p_uuid = NULL,
.models.models_init_cb = models_init_cb,
.models.config_server_cb = NULL //config_server_evt_cb
__LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "m_device_provisioned:%d\n",m_device_provisioned);
/* Register event handler to receive LPN and friendship events. */
bool done = nrf_mesh_process();
Did I missed that at LPN can only received STATUS etc after establishing a friendship with a server ?
In order for a node using the Low Power feature to consistently receive messages, it must establish a friendship with a node with the Friend feature, yes.