Hi I am using Mesh V 4.0 and Stack V 16.0
I have created the Message Model in Client side and can able to send string from Client to Server on button press.
Now when I am trying to send command from Server to Client on button press event it is not getting sent.I am receiving below error
<t: 192320>, main.c, 198, Button 1 pressed
<t: 192328>, access.c, 1196, Status=7<t: 192330>, main.c, 177, Status : 7
<t: 192332>, app_error_weak.c, 115, Mesh error 7 at 0x000268E9 (C:\nRF_mesh\nrf5_SDK_for_Mesh_v4.0.0_src\examples\light_switch\server\src\main.c:187)
static simple_on_off_client_t m_client;
static generic_onoff_server_t m_servers[2];
static bool m_device_provisioned;
static dsm_handle_t m_central_handle;
void address_set(uint16_t addr)
{
ERROR_CHECK(dsm_address_publish_add(addr, &m_central_handle));
ERROR_CHECK(access_model_publish_address_set(m_client.model_handle, m_central_handle));
}
void send_start (void)
{
uint32_t status=0;
uint8_t buffer[2]={0x05,0xFB};
uint8_t length;
uint16_t address;
access_message_tx_t msg;
length= sizeof(buffer);
if (length)
{
msg.opcode.opcode = 0xC5;
msg.opcode.company_id = 0x0059; // Nordic's company ID
msg.p_buffer = (const uint8_t *) &buffer[0];
msg.length =length;
address = 0x0005; //SERVER ID
address_set(address);
// SEGGER_RTT_printf(0,"Sending to group address 0x%04x\n", address);
status= access_model_publish(m_servers[0].model_handle, &msg); //CHANGED TO 0 FROM 3
__LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "Status : %u \n", status);
if (status == NRF_ERROR_INVALID_STATE ||
status == NRF_ERROR_BUSY||status == NRF_ERROR_NO_MEM)
{
__LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "Cannot send. Device is busy.\n");
hal_led_blink_ms(LEDS_MASK, 50, 4);
}
else
{
ERROR_CHECK(status);
}
}
}
static void button_event_handler(uint32_t button_number)
{
__LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "Button %u pressed\n", button_number);
switch (button_number)
{
/* Pressing SW1 on the Development Kit will result in LED state to toggle and trigger
the STATUS message to inform client about the state change. This is a demonstration of
state change publication due to local event. */
case 0:
{
__LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "User action \n");
hal_led_pin_set(ONOFF_SERVER_0_LED, !hal_led_pin_get(ONOFF_SERVER_0_LED));
app_onoff_status_publish(&m_onoff_server_0);
break;
}
case 1:
{
send_start();
break;
} }
}