I need to send broadcast leave request to all the zigbee devices connected to the network.
int RemoveZigbeeDevice()
{
zb_ret_t zb_err_code;
zb_err_code = (zb_buf_get_out_delayed(TrvSendLeaveReq));
if (!zb_err_code) {
LOG_DBG("Buffer is full");
}
return zb_err_code;
}
void TrvSendLeaveReq (zb_uint8_t param)
{
zb_bufid_t buf = param;
zb_zdo_mgmt_leave_param_t *req = NULL;
zb_uint8_t tsn;
TRACE_MSG(TRACE_ERROR, "zb_leave_req", (FMT__0));
req = ZB_BUF_GET_PARAM(buf, zb_zdo_mgmt_leave_param_t);
LOG_DBG("send_leave 0x%04hX\n", RemoveZigbeeShortAddr());
ZB_MEMSET(req->device_address, 0, sizeof(zb_ieee_addr_t));
req->remove_children = ZB_FALSE;
req->rejoin = ZB_FALSE;
req->dst_addr = RemoveZigbeeShortAddr();
tsn = zdo_mgmt_leave_req(param, leave_callback);
}
void leave_callback(zb_uint8_t param)
{
zb_zdo_mgmt_leave_res_t *resp = (zb_zdo_mgmt_leave_res_t *)zb_buf_begin(param);
TRACE_MSG(TRACE_ERROR, "LEAVE CALLBACK status %hd", (FMT__H, resp->status));
}
