Hi,
I am surveying the zigbee example for my project.
In my project, coordinator has to permit or reject certain end device/router.
I have searched following articles and i have tried "zdo_mgmt_leave_req" method.
but it fails.
With sniffer, leave request message shown "Malformed Packet".
in main.c in coordinator, i inserted my_leave function call when ZB_ZDO_SIGNAL_DEVICE_ANNCE is received.
and
in my_leave_function, i filled field req->dst_addr with the ZED short address
(req->dst_addr = 0x089b;)
Why the packet is Malformed ??
void zboss_signal_handler(zb_uint8_t param)
{
..
case ZB_ZDO_SIGNAL_DEVICE_ANNCE:
{
zb_zdo_signal_device_annce_params_t * dev_annce_params = ZB_ZDO_SIGNAL_GET_PARAMS(p_sg_p, zb_zdo_signal_device_annce_params_t);
NRF_LOG_INFO("Device with a short address %hx commissionned", dev_annce_params->device_short_addr);
NRF_LOG_INFO("Leave req");
my_leave(param);
}
//by embedholic
void leave_callback(zb_uint8_t param)
{
zb_zdo_mgmt_leave_res_t *resp = (zb_zdo_mgmt_leave_res_t *)ZB_BUF_BEGIN(ZB_BUF_FROM_REF(param));
NRF_LOG_INFO( "LEAVE CALLBACK status %hd", (FMT__H, resp->status));
}
void my_leave(zb_uint8_t param)
{
zb_buf_t *buf = ZB_BUF_FROM_REF(param);
zb_zdo_mgmt_leave_param_t *req = NULL;
zb_ret_t ret = RET_OK;
zb_uint8_t tsn;
TRACE_MSG(TRACE_ERROR, "zb_leave_req", (FMT__0));
req = ZB_GET_BUF_PARAM(buf, zb_zdo_mgmt_leave_param_t);
ZB_MEMSET(req->device_address, 0, sizeof(zb_ieee_addr_t));
req->remove_children = ZB_FALSE;
req->rejoin = ZB_FALSE;
req->dst_addr = 0x089b;
tsn = zdo_mgmt_leave_req(param, leave_callback);
}