nRF5 SDK for Thread and Zigbee v1.0.0
Data Structures | Macros | Typedefs | Functions
ZDO management services

Data Structures

struct  zb_zdo_mgmt_nwk_update_req_hdr_s
 Header of parameters for Mgmt_NWK_Update_req. More...
 
struct  zb_zdo_mgmt_nwk_update_req_s
 Parameters for Mgmt_NWK_Update_req. More...
 
struct  zb_zdo_mgmt_nwk_update_notify_hdr_s
 Header parameters for mgmt_nwk_update_notify. More...
 
struct  zb_zdo_mgmt_nwk_update_notify_param_s
 Parameters for mgmt_nwk_update_notify. More...
 
struct  zb_zdo_mgmt_lqi_param_s
 Parameters for Mgmt_Lqi_req. More...
 
struct  zb_zdo_mgmt_lqi_req_s
 Request for Mgmt_Lqi_req. More...
 
struct  zb_zdo_mgmt_lqi_resp_s
 Response for Mgmt_Lqi_rsp. More...
 
struct  zb_zdo_neighbor_table_record_s
 NeighborTableList Record Format for Mgmt_Lqi_resp. More...
 
struct  zb_zdo_mgmt_rtg_param_s
 Parameters for Mgmt_Rtg_req. More...
 
struct  zb_zdo_mgmt_rtg_req_s
 Request for Mgmt_Rtg_req. More...
 
struct  zb_zdo_mgmt_rtg_resp_s
 Response for Mgmt_Rtg_rsp. More...
 
struct  zb_zdo_routing_table_record_s
 RoutingTableList Record Format for mgmt_rtg_resp. More...
 
struct  zb_zdo_mgmt_bind_param_s
 Parameters for Mgmt_Bind_req. More...
 
struct  zb_zdo_mgmt_bind_req_s
 Request for Mgmt_Bind_req. More...
 
struct  zb_zdo_mgmt_bind_resp_s
 Response for Mgmt_Bind_rsp. More...
 
struct  zb_zdo_binding_table_record_s
 BindingTableList Record Format for mgmt_bind_resp. See ZB spec, Table 2.131. More...
 
struct  zb_zdo_bind_req_param_s
 Parameters for Bind_req API call. More...
 
struct  zb_zdo_bind_req_head_s
 Bind_req request head send to the remote. More...
 
struct  zb_zdo_bind_req_tail_1_s
 Bind_req request tail 1st variant send to the remote. More...
 
struct  zb_zdo_bind_req_tail_2_s
 Bind_req request tail 2nd variant send to the remote. More...
 
struct  zb_zdo_bind_resp_s
 Response by BibdReq. More...
 
struct  zb_zdo_mgmt_leave_param_s
 Request for Mgmt_Leave_req. More...
 
struct  zb_zdo_mgmt_leave_req_s
 
struct  zb_zdo_mgmt_leave_res_s
 Response for Mgmt_Leave_rsp. More...
 
struct  zb_zdo_end_device_bind_req_head_s
 End_Device_Bind_req command head. More...
 
struct  zb_zdo_end_device_bind_req_tail_s
 End_Device_Bind_req command head. More...
 
struct  zb_end_device_bind_req_param_s
 Parameters for End_Device_Bind_req. More...
 
struct  zb_zdo_end_device_bind_resp_s
 Response from End_Device_Bind_req. More...
 
struct  zb_zdo_mgmt_permit_joining_req_s
 Parameters for Mgmt_Permit_Joining_req. More...
 
struct  zb_zdo_mgmt_permit_joining_req_param_s
 Parameters for zb_zdo_mgmt_permit_joining_req. More...
 
struct  zb_zdo_mgmt_permit_joining_resp_s
 Response from zb_zdo_mgmt_permit_joining_req. More...
 
struct  zb_zdo_not_supported_resp_s
 Not Supported Response. More...
 
struct  zb_zdo_device_annce_s
 
struct  zb_nlme_leave_indication_s
 

Macros

#define ZB_ZDO_RECORD_SET_DEVICE_TYPE(var, type)   ( var &= ~3, var |= type )
 
#define ZB_ZDO_RECORD_GET_DEVICE_TYPE(var)   ( var & 3 )
 
#define ZB_ZDO_RECORD_SET_RX_ON_WHEN_IDLE(var, type)   ( var &= ~0xC, var |= (type << 2) )
 
#define ZB_ZDO_RECORD_GET_RX_ON_WHEN_IDLE(var)   ( (var & 0xC) >> 2 )
 
#define ZB_ZDO_RECORD_SET_RELATIONSHIP(var, type)   ( var &= ~0x70, var |= (type << 4) )
 
#define ZB_ZDO_RECORD_GET_RELATIONSHIP(var)   ( (var & 0x70) >> 4 )
 
#define ZB_ZDO_RTG_SET_STATUS(var, type)   ( var &= ~3, var |= type )
 
#define ZB_ZDO_RTG_GET_STATUS(var)   ( var & 7 )
 
#define ZB_ZDO_RTG_SET_MEM_CONSTRAINED(var, type)   ( var &= ~0x08, var |= (type << 3) )
 
#define ZB_ZDO_RTG_GET_MEM_CONSTRAINED(var)   ( (var & 0x08) >> 3 )
 
#define ZB_ZDO_RTG_SET_MANY_TO_ONE(var, type)   ( var &= ~0x10, var |= (type << 4) )
 
#define ZB_ZDO_RTG_GET_MANY_TO_ONE(var)   ( (var & 0x10) >> 4 )
 
#define ZB_ZDO_RTG_SET_ROUTE_RECORD_REQUIRED(var, type)   ( var &= ~0x20, var |= (type << 5) )
 
#define ZB_ZDO_RTG_GET_ROUTE_RECORD_REQUIRED(var)   ( (var & 0x20) >> 5 )
 

Typedefs

typedef struct
zb_zdo_mgmt_nwk_update_req_hdr_s 
zb_zdo_mgmt_nwk_update_req_hdr_t
 Header of parameters for Mgmt_NWK_Update_req.
 
typedef struct
zb_zdo_mgmt_nwk_update_req_s 
zb_zdo_mgmt_nwk_update_req_t
 Parameters for Mgmt_NWK_Update_req.
 
typedef struct
zb_zdo_mgmt_nwk_update_notify_hdr_s 
zb_zdo_mgmt_nwk_update_notify_hdr_t
 Header parameters for mgmt_nwk_update_notify.
 
typedef struct
zb_zdo_mgmt_nwk_update_notify_param_s 
zb_zdo_mgmt_nwk_update_notify_param_t
 Parameters for mgmt_nwk_update_notify.
 
typedef struct
zb_zdo_mgmt_lqi_param_s 
zb_zdo_mgmt_lqi_param_t
 Parameters for Mgmt_Lqi_req. More...
 
typedef struct
zb_zdo_mgmt_lqi_req_s 
zb_zdo_mgmt_lqi_req_t
 Request for Mgmt_Lqi_req. More...
 
typedef struct
zb_zdo_mgmt_lqi_resp_s 
zb_zdo_mgmt_lqi_resp_t
 Response for Mgmt_Lqi_rsp. More...
 
typedef struct
zb_zdo_neighbor_table_record_s 
zb_zdo_neighbor_table_record_t
 NeighborTableList Record Format for Mgmt_Lqi_resp.
 
typedef struct
zb_zdo_mgmt_rtg_param_s 
zb_zdo_mgmt_rtg_param_t
 Parameters for Mgmt_Rtg_req. More...
 
typedef struct
zb_zdo_mgmt_rtg_req_s 
zb_zdo_mgmt_rtg_req_t
 Request for Mgmt_Rtg_req. More...
 
typedef struct
zb_zdo_mgmt_rtg_resp_s 
zb_zdo_mgmt_rtg_resp_t
 Response for Mgmt_Rtg_rsp. More...
 
typedef struct
zb_zdo_routing_table_record_s 
zb_zdo_routing_table_record_t
 RoutingTableList Record Format for mgmt_rtg_resp.
 
typedef struct
zb_zdo_mgmt_bind_param_s 
zb_zdo_mgmt_bind_param_t
 Parameters for Mgmt_Bind_req. More...
 
typedef struct
zb_zdo_mgmt_bind_req_s 
zb_zdo_mgmt_bind_req_t
 Request for Mgmt_Bind_req. More...
 
typedef struct
zb_zdo_mgmt_bind_resp_s 
zb_zdo_mgmt_bind_resp_t
 Response for Mgmt_Bind_rsp. More...
 
typedef struct
zb_zdo_binding_table_record_s 
zb_zdo_binding_table_record_t
 BindingTableList Record Format for mgmt_bind_resp. See ZB spec, Table 2.131.
 
typedef struct
zb_zdo_bind_req_param_s 
zb_zdo_bind_req_param_t
 Parameters for Bind_req API call. More...
 
typedef struct
zb_zdo_bind_req_head_s 
zb_zdo_bind_req_head_t
 Bind_req request head send to the remote. More...
 
typedef struct
zb_zdo_bind_req_tail_1_s 
zb_zdo_bind_req_tail_1_t
 Bind_req request tail 1st variant send to the remote. More...
 
typedef struct
zb_zdo_bind_req_tail_2_s 
zb_zdo_bind_req_tail_2_t
 Bind_req request tail 2nd variant send to the remote. More...
 
typedef struct zb_zdo_bind_resp_s zb_zdo_bind_resp_t
 Response by BibdReq.
 
typedef struct
zb_zdo_mgmt_leave_param_s 
zb_zdo_mgmt_leave_param_t
 Request for Mgmt_Leave_req. More...
 
typedef struct
zb_zdo_mgmt_leave_req_s 
zb_zdo_mgmt_leave_req_t
 
typedef struct
zb_zdo_mgmt_leave_res_s 
zb_zdo_mgmt_leave_res_t
 Response for Mgmt_Leave_rsp. More...
 
typedef struct
zb_zdo_end_device_bind_req_head_s 
zb_zdo_end_device_bind_req_head_t
 End_Device_Bind_req command head. More...
 
typedef struct
zb_zdo_end_device_bind_req_tail_s 
zb_zdo_end_device_bind_req_tail_t
 End_Device_Bind_req command head. More...
 
typedef struct
zb_end_device_bind_req_param_s 
zb_end_device_bind_req_param_t
 Parameters for End_Device_Bind_req. More...
 
typedef struct
zb_zdo_end_device_bind_resp_s 
zb_zdo_end_device_bind_resp_t
 Response from End_Device_Bind_req. More...
 
typedef struct
zb_zdo_mgmt_permit_joining_req_s 
zb_zdo_mgmt_permit_joining_req_t
 Parameters for Mgmt_Permit_Joining_req. More...
 
typedef struct
zb_zdo_mgmt_permit_joining_req_param_s 
zb_zdo_mgmt_permit_joining_req_param_t
 Parameters for zb_zdo_mgmt_permit_joining_req.
 
typedef struct
zb_zdo_mgmt_permit_joining_resp_s 
zb_zdo_mgmt_permit_joining_resp_t
 Response from zb_zdo_mgmt_permit_joining_req.
 
typedef struct
zb_zdo_not_supported_resp_s 
zb_zdo_not_supported_resp_t
 Not Supported Response.
 
typedef struct
zb_zdo_device_annce_s 
zb_zdo_device_annce_t
 
typedef struct
zb_nlme_leave_indication_s 
zb_nlme_leave_indication_t
 

Functions

zb_uint8_t zb_zdo_mgmt_nwk_update_req (zb_uint8_t param, zb_callback_t cb)
 Performs Mgmt_NWK_Update_req request. More...
 
zb_uint8_t zb_zdo_mgmt_lqi_req (zb_uint8_t param, zb_callback_t cb)
 Sends 2.4.3.3.2 Mgmt_Lqi_req. More...
 
zb_uint8_t zb_zdo_mgmt_rtg_req (zb_uint8_t param, zb_callback_t cb)
 Sends Mgmt_Rtg_req request. More...
 
zb_uint8_t zb_zdo_mgmt_bind_req (zb_uint8_t param, zb_callback_t cb)
 Sends Mgmt_Bind_req request. More...
 
void zdo_mgmt_bind_resp (zb_uint8_t param)
 Sends 2.4.4.3.4 Mgmt_Bind_rsp. More...
 
zb_uint8_t zb_zdo_bind_req (zb_uint8_t param, zb_callback_t cb)
 Bind_req request. More...
 
zb_uint8_t zb_zdo_unbind_req (zb_uint8_t param, zb_callback_t cb)
 Unbind_req request. More...
 
zb_bool_t zb_zdo_find_bind_src (zb_uint8_t src_end, zb_uint16_t cluster_id)
 Checks existance of bind table entries with selected endpoint and cluster ID. More...
 
zb_uint8_t zdo_mgmt_leave_req (zb_uint8_t param, zb_callback_t cb)
 Sends Mgmt_Leave_req. More...
 
zb_uint8_t zb_end_device_bind_req (zb_uint8_t param, zb_callback_t cb)
 
zb_uint8_t zb_zdo_mgmt_permit_joining_req (zb_uint8_t param, zb_callback_t cb)
 
void zb_zdo_add_group_req (zb_uint8_t param)
 ZDO interface for ADD-GROUP.request. More...
 
void zb_zdo_remove_group_req (zb_uint8_t param)
 ZDO interface for REMOVE-GROUP.request. More...
 
void zb_zdo_remove_all_groups_req (zb_uint8_t param)
 ZDO interface for REMOVE-ALL-GROUPS.request. More...
 
void zb_zdo_get_group_membership_req (zb_uint8_t param)
 ZDO interface for ZCL Get Group Membership Command. More...
 

Detailed Description

Macro Definition Documentation

#define ZB_ZDO_RECORD_GET_DEVICE_TYPE (   var)    ( var & 3 )

Get device type of neighbor table record.

Parameters
var- neighbor table record type_flags
See Also
zb_zdo_neighbor_table_record_s
#define ZB_ZDO_RECORD_GET_RELATIONSHIP (   var)    ( (var & 0x70) >> 4 )

Get relationship of neighbor table record.

Parameters
var- neighbor table record type_flags
See Also
zb_zdo_neighbor_table_record_s
#define ZB_ZDO_RECORD_GET_RX_ON_WHEN_IDLE (   var)    ( (var & 0xC) >> 2 )

Get RxOnWhenIdle of neighbor table record.

Parameters
var- neighbor table record type_flags
See Also
zb_zdo_neighbor_table_record_s
#define ZB_ZDO_RECORD_SET_DEVICE_TYPE (   var,
  type 
)    ( var &= ~3, var |= type )

Set device type of neighbor table record to type 'type': bits 0 - 1, mask 0x3;

Parameters
var- neighbor table record type_flags
type- Zigbee device type value
See Also
zb_zdo_neighbor_table_record_s
#define ZB_ZDO_RECORD_SET_RELATIONSHIP (   var,
  type 
)    ( var &= ~0x70, var |= (type << 4) )

Set relationship attribute of neighbor table record to type 'type': bits 4 - 6, mask 0x70;

Parameters
var- neighbor table record type_flags
type- Zigbee relationship value
See Also
zb_zdo_neighbor_table_record_s
#define ZB_ZDO_RECORD_SET_RX_ON_WHEN_IDLE (   var,
  type 
)    ( var &= ~0xC, var |= (type << 2) )

Set RxOnWhenIdle attribute of neighbor table record to type 'type': bits 2 - 3, mask 0xC;

Parameters
var- neighbor table record type_flags
type- RxOnWhenIdle value
See Also
zb_zdo_neighbor_table_record_s

Typedef Documentation

Parameters for End_Device_Bind_req.

See Also
ZB spec, subclause 2.4.3.2.1.

Arguments of the NLME-LEAVE.indication routine.

Bind_req request head send to the remote.

See Also
ZB spec, subclause 2.4.3.2.2.

Parameters for Bind_req API call.

See Also
ZB spec, subclause 2.4.3.2.2.

Bind_req request tail 1st variant send to the remote.

See Also
ZB spec, subclause 2.4.3.2.2.

Bind_req request tail 2nd variant send to the remote.

See Also
ZB spec, subclause 2.4.3.2.2.

Parameters of Device_annce primitive.

To be put into buffer as data (means - after space alloc).

End_Device_Bind_req command head.

See Also
ZB spec, subclause 2.4.3.2.1.

End_Device_Bind_req command head.

See Also
ZB spec, subclause 2.4.3.2.1.

Response from End_Device_Bind_req.

See Also
ZB spec, subclause 2.4.3.2.1.

Parameters for Mgmt_Bind_req.

See Also
ZB spec, subclause 2.4.3.3.4.

Request for Mgmt_Bind_req.

See Also
ZB spec, subclause 2.4.3.3.4.

Response for Mgmt_Bind_rsp.

See Also
ZB spec, subclause 2.4.4.3.4.

Request for Mgmt_Leave_req.

See Also
ZB spec, subclause 2.4.3.3.5.

Problem in the specification: in 2.4.3.3.5 Mgmt_Leave_req only one DeviceAddress exists. But, in such case it is impossible to satisfy 2.4.3.3.5.1: "The Mgmt_Leave_req is generated from a Local Device requesting that a Remote Device leave the network or to request that another device leave the network." Also, in the PRO TC document, 14.2TP/NWK/BV-04 ZR-ZDO-APL RX Join/Leave is following note: "gZC sends Mgmt_Leave.request with DevAddr=all zero, DstAddr=ZR"

Request for Mgmt_Leave_req.

See Also
ZB spec, subclause 2.4.3.3.5.

Response for Mgmt_Leave_rsp.

See Also
ZB spec, subclause 2.4.4.3.5.

Parameters for Mgmt_Lqi_req.

See Also
ZB spec, subclause 2.4.3.3.2.

Request for Mgmt_Lqi_req.

See Also
ZB spec, subclause 2.4.3.3.2.

Response for Mgmt_Lqi_rsp.

See Also
ZB spec, subclause 2.4.4.3.2.

Parameters for Mgmt_Permit_Joining_req.

See Also
ZB spec, subclause 2.4.3.3.7.

Parameters for Mgmt_Rtg_req.

See Also
ZB spec, subclause 2.4.3.3.3.

Request for Mgmt_Rtg_req.

See Also
ZB spec, subclause 2.4.3.3.3.

Response for Mgmt_Rtg_rsp.

See Also
ZB spec, subclause 2.4.4.3.3.

Function Documentation

zb_uint8_t zb_end_device_bind_req ( zb_uint8_t  param,
zb_callback_t  cb 
)

sends 2.4.3.2.1 End_Device_Bind_req command

Parameters
param- index of buffer with request
cb- user's function to call when got response from the remote.
Returns
- ZDP transaction sequence number or 0xFF if operation cannot be performed now (nor enough memory, resources, etc.)
void zb_zdo_add_group_req ( zb_uint8_t  param)

ZDO interface for ADD-GROUP.request.

Note that zb_apsme_add_group_request does not call confirm callback.

Parameters
param- (in/out) buffer with parameters

Example

void start_add_to_group(zb_uint8_t param)
{
zb_buf_t *buf = ZB_BUF_FROM_REF(param);
req->group_address = TEST_GROUP_ADDRESS_1;
req->endpoint = ZB_TEST_PROFILE_EP;
ZDO_START_ROUTINE_WITH_CALLBACK(param, zb_zdo_add_group_req, group_add_conf1);
}

See tp_pro_bv-46 sample

zb_uint8_t zb_zdo_bind_req ( zb_uint8_t  param,
zb_callback_t  cb 
)

Bind_req request.

Parameters
param- index of buffer with request. zb_apsme_binding_req_s
cb- user's function to call when got response from the remote. zb_zdo_bind_resp_s
Returns
- ZDP transaction sequence number or 0xFF if operation cannot be performed now (nor enough memory, resources, etc.)

Example:

{
ZB_MEMCPY(&req->src_addr, &g_ieee_addr, sizeof(zb_ieee_addr_t));
req->src_endpoint = i;
req->clusterid = 1;
ZB_MEMCPY(&req->dst_addr.addr_long, &g_ieee_addr_d, sizeof(zb_ieee_addr_t));
req->dst_endpoint = 240;
zb_zdo_bind_req(ZB_REF_FROM_BUF(buf), zb_bind_callback);
ret = buf->u.hdr.status;
if (ret == RET_TABLE_FULL)
{
TRACE_MSG(TRACE_ERROR, "TABLE FULL %d", (FMT__D, ret));
}
}
void zb_bind_callback(zb_uint8_t param)
{
zb_ret_t ret = RET_OK;
zb_buf_t *buf = (zb_buf_t *)ZB_BUF_FROM_REF(param);
zb_uint8_t *aps_body = NULL;
aps_body = ZB_BUF_BEGIN(buf);
ZB_MEMCPY(&ret, aps_body, sizeof(ret));
TRACE_MSG(TRACE_INFO1, "zb_bind_callback %hd", (FMT__H, ret));
if (ret == RET_OK)
{
// bind ok
}
}

See tp_zdo_bv-12 sample

zb_bool_t zb_zdo_find_bind_src ( zb_uint8_t  src_end,
zb_uint16_t  cluster_id 
)

Checks existance of bind table entries with selected endpoint and cluster ID.

Parameters
src_end- source endpoint
cluster_id- source cluster ID
Returns
ZB_TRUE if binding is found on given endpoint, ZB_FALSE otherwise
void zb_zdo_get_group_membership_req ( zb_uint8_t  param)

ZDO interface for ZCL Get Group Membership Command.

Parameters
param- (in/out) buffer with parameters

See aps_group_management sample

zb_uint8_t zb_zdo_mgmt_bind_req ( zb_uint8_t  param,
zb_callback_t  cb 
)

Sends Mgmt_Bind_req request.

Parameters
paramreference to the buffer to put request data to.
cbcallback to be called on operation finish.
Returns
- ZDP transaction sequence number or 0xFF if operation cannot be performed now (nor enough memory, resources, etc.)

See zdo_binding sample

zb_uint8_t zb_zdo_mgmt_lqi_req ( zb_uint8_t  param,
zb_callback_t  cb 
)

Sends 2.4.3.3.2 Mgmt_Lqi_req.

Parameters
param- index of buffer with Lqi request parameters. zb_zdo_mgmt_lqi_param_s
cb- user's function to call when got response from the remote.
Returns
- ZDP transaction sequence number or 0xFF if operation cannot be performed now (nor enough memory, resources, etc.) zb_zdo_mgmt_lqi_resp_s, zb_zdo_neighbor_table_record_s

Example:

{
req_param->start_index = 0;
req_param->dst_addr = 0; //coord short addr
tsn = zb_zdo_mgmt_lqi_req(ZB_REF_FROM_BUF(buf), get_lqi_cb);
}
void get_lqi_cb(zb_uint8_t param)
{
zb_buf_t *buf = ZB_BUF_FROM_REF(param);
zb_uint8_t *zdp_cmd = ZB_BUF_BEGIN(buf);
TRACE_MSG(TRACE_APS1, "get_lqi_cb status %hd, neighbor_table_entries %hd, start_index %hd, neighbor_table_list_count %d",
(FMT__H_H_H_H, resp->status, resp->neighbor_table_entries, resp->start_index, resp->neighbor_table_list_count));
for (i = 0; i < resp->neighbor_table_list_count; i++)
{
TRACE_MSG(TRACE_APS1, "#%hd: long addr " TRACE_FORMAT_64 " pan id " TRACE_FORMAT_64,
(FMT__H_A_A, i, TRACE_ARG_64(record->ext_addr), TRACE_ARG_64(record->ext_pan_id)));
TRACE_MSG(TRACE_APS1,
"#%hd: network_addr %d, dev_type %hd, rx_on_wen_idle %hd, relationship %hd, permit_join %hd, depth %hd, lqi %hd",
(FMT_H_D_H_H_H_H_H_H, i, record->network_addr,
record->permit_join, record->depth, record->lqi));
record++;
}
}

See zdpo_lqi sample

zb_uint8_t zb_zdo_mgmt_nwk_update_req ( zb_uint8_t  param,
zb_callback_t  cb 
)

Performs Mgmt_NWK_Update_req request.

Parameters
param- index of buffer with call parameters. Parameters mut be put into buffer as parameters. zb_zdo_mgmt_nwk_update_req_s
cb- user's function to call when got response from the remote. zb_zdo_mgmt_nwk_update_notify_hdr_s
Returns
- ZDP transaction sequence number or 0xFF if operation cannot be performed now (nor enough memory, resources, etc.)

Example:

{
req->hdr.scan_channels = ZB_MAC_ALL_CHANNELS_MASK;
req->hdr.scan_duration = TEST_SCAN_DURATION;
req->scan_count = TEST_SCAN_COUNT;
req->dst_addr = 0;
tsn = zb_zdo_mgmt_nwk_update_req(param, mgmt_nwk_update_ok_cb);
}
void mgmt_nwk_update_ok_cb(zb_uint8_t param)
{
zb_buf_t *buf = ZB_BUF_FROM_REF(param);
zb_uint8_t *zdp_cmd = ZB_BUF_BEGIN(buf);
TRACE_MSG(TRACE_APS3,
"notify_resp status %hd, scanned_channels %x %x, total_transmissions %hd, "
"transmission_failures %hd, scanned_channels_list_count %hd, buf len %hd",
(FMT__H_D_D_H_H_H_H, notify_resp->status, (zb_uint16_t)notify_resp->scanned_channels,
*((zb_uint16_t*)&notify_resp->scanned_channels + 1),
notify_resp->total_transmissions, notify_resp->transmission_failures,
if (notify_resp->status == ZB_ZDP_STATUS_SUCCESS)
{
TRACE_MSG(TRACE_APS3, "mgmt_nwk_update_notify received, Ok", (FMT__0));
}
else
{
TRACE_MSG(TRACE_ERROR, "mgmt_nwk_update_notify received, ERROR incorrect status %x",
(FMT__D, notify_resp->status));
}
}

See TP_PRO_BV-37 sample

zb_uint8_t zb_zdo_mgmt_permit_joining_req ( zb_uint8_t  param,
zb_callback_t  cb 
)

sends 2.4.3.3.7 Mgmt_Permit_Joining_req

Parameters
param- index of buffer with request
cb- user's function to call when got response from the remote.
Returns
ZDP transaction sequence number or 0xFF if operation cannot be performed now (nor enough memory, resources, etc.)
req_param->dest_addr = 0;
req_param->permit_duration = 0;
req_param->tc_significance = 1;
zb_zdo_mgmt_permit_joining_req(param, &permit_joining_cb);

See zdo_permit_joing sample

zb_uint8_t zb_zdo_mgmt_rtg_req ( zb_uint8_t  param,
zb_callback_t  cb 
)

Sends Mgmt_Rtg_req request.

Parameters
paramreference to the buffer to put request data to.
cbcallback to be called on operation finish.
Returns
- ZDP transaction sequence number or 0xFF if operation cannot be performed now (nor enough memory, resources, etc.)
void get_rtg_cb(zb_uint8_t param)
{
zb_buf_t *buf = ZB_BUF_FROM_REF(param);
zb_uint8_t *zdp_cmd = ZB_BUF_BEGIN(buf);
TRACE_MSG(TRACE_APS1, "get_rtg_cb status %hd, routing_table_entries %hd, start_index %hd, routing_table_list_count %d",
(FMT__H_H_H_H, resp->status, resp->routing_table_entries, resp->start_index, resp->routing_table_list_count));
for (i = 0; i < resp->routing_table_list_count; i++)
{
TRACE_MSG(TRACE_APS1,
"#%hd: dest_addr 0x%x, next hop 0x%x, status %hd, memory constrained %hd, many to one %hd, route record req %hd",
(FMT__H_D_D_H_H_H_H, i, record->dest_addr, record->next_hop_addr,
ZB_ZDO_RTG_GET_STATUS(record->flags),
ZB_ZDO_RTG_GET_MEM_CONSTRAINED(record->flags),
ZB_ZDO_RTG_GET_MANY_TO_ONE(record->flags),
ZB_ZDO_RTG_GET_ROUTE_RECORD_REQUIRED(record->flags)));
record++;
}
}
void rtg_req(zb_uint8_t param)
{
zb_buf_t *buf = ZB_BUF_FROM_REF(param);
TRACE_MSG(TRACE_APS1, "call rtg req", (FMT__0));
req_param->start_index = 0;
req_param->dst_addr = 0; //coord short addr
zb_zdo_mgmt_rtg_req(param, get_rtg_cb);
}

See zdo_rtg sample

void zb_zdo_remove_all_groups_req ( zb_uint8_t  param)

ZDO interface for REMOVE-ALL-GROUPS.request.

Parameters
param- (in/out) buffer with parameters
void group_add_conf(zb_uint8_t param)
{
zb_apsme_add_group_req_t *add_req = NULL;
zb_apsme_remove_group_req_t *del_req = NULL;
zb_apsme_remove_all_groups_req_t *del_all_req = NULL;
TRACE_MSG(TRACE_APS3, "###group_add_conf: iteration %hd", (FMT__H, curr_iter));
if (++curr_iter == REPETITION_COUNT)
{
if (need_remove_all_groups)
{
TRACE_MSG(TRACE_APS3, "###group_add_conf: all done, start delete all groups", (FMT__0));
del_all_req->endpoint = EP_START_ADDR + DDD; /* 2 and 3 entries in array */
ZDO_START_ROUTINE_WITH_CALLBACK(param, zb_zdo_remove_all_groups_req, group_remove_all_conf);
}
else
{
TRACE_MSG(TRACE_APS3, "###group_add_conf: all done, start delete groups", (FMT__0));
del_req->endpoint = EP_START_ADDR;
del_req->group_address = GROUP_START_ADDR;
ZDO_START_ROUTINE_WITH_CALLBACK(param, zb_zdo_remove_group_req, group_remove_conf);
}
return;
}
add_req->group_address += DDD;
if (need_remove_all_groups)
{
if (curr_iter % 2)
{
add_req->endpoint += DDD;
}
}
else
{
add_req->endpoint += DDD;
}
ZDO_START_ROUTINE_WITH_CALLBACK(param, zb_zdo_add_group_req, group_add_conf);
}

See aps_group_management sample

void zb_zdo_remove_group_req ( zb_uint8_t  param)

ZDO interface for REMOVE-GROUP.request.

Parameters
param- (in/out) buffer with parameters
void group_remove_conf1(zb_uint8_t param)
{
zb_buf_t *buf = ZB_BUF_FROM_REF(param);
zb_uint16_t grp_addr = req->group_address;
if (buf->u.hdr.status == RET_OK)
{
TRACE_MSG(TRACE_APS1, "[1] Remove from group %hd with endpoint %hd - confirm", (FMT__H_H, req->group_address, req->endpoint));
req->group_address = grp_addr;
req->endpoint = 0xEF;
ZDO_START_ROUTINE_WITH_CALLBACK(param, zb_zdo_remove_group_req, group_remove_conf2);
}
}
See tp_pro_bv-46 sample
zb_uint8_t zb_zdo_unbind_req ( zb_uint8_t  param,
zb_callback_t  cb 
)

Unbind_req request.

Parameters
param- index of buffer with request. zb_zdo_bind_req_param_s
cb- user's function to call when got response from the remote. zb_zdo_bind_resp_s
Returns
- ZDP transaction sequence number or 0xFF if operation cannot be performed now (nor enough memory, resources, etc.)

Example:

{
zb_buf_t *buf = ZB_BUF_FROM_REF(param);
TRACE_MSG(TRACE_COMMON1, "unbind_device_1", (FMT__0));
ZB_MEMCPY(bind_param->src_address, g_ieee_addr_ed1, sizeof(zb_ieee_addr_t));
bind_param->src_endp = TEST_ED1_EP;
bind_param->cluster_id = TP_BUFFER_TEST_REQUEST_CLID;
ZB_MEMCPY(bind_param->dst_address.addr_long, g_ieee_addr_ed2, sizeof(zb_ieee_addr_t));
bind_param->dst_endp = TEST_ED2_EP;
bind_param->req_dst_addr = zb_address_short_by_ieee(g_ieee_addr_ed1);
TRACE_MSG(TRACE_COMMON1, "dst addr %d", (FMT__D, bind_param->req_dst_addr));
zb_zdo_unbind_req(param, unbind_device1_cb);
}
void unbind_device1_cb(zb_uint8_t param)
{
zb_buf_t *buf = ZB_BUF_FROM_REF(param);
TRACE_MSG(TRACE_COMMON1, "unbind_device1_cb resp status %hd", (FMT__H, bind_resp->status));
if (bind_resp->status != ZB_ZDP_STATUS_SUCCESS)
{
TRACE_MSG(TRACE_COMMON1, "Error bind device 1. Test status failed", (FMT__0));
}
}

See tp_aps_bv-23-i, tp_zdo_bv-12 samples

void zdo_mgmt_bind_resp ( zb_uint8_t  param)

Sends 2.4.4.3.4 Mgmt_Bind_rsp.

Parameters
param- index of buffer with Mgmt_Bind request
zb_uint8_t zdo_mgmt_leave_req ( zb_uint8_t  param,
zb_callback_t  cb 
)

Sends Mgmt_Leave_req.

See Also
ZB spec, subclause 2.4.3.3.2.
Parameters
param- index of buffer with Lqi request parameters. zb_zdo_mgmt_leave_param_s
cb- user's function to call when got response from the remote.
Returns
- transaction sequence number of request or 0xFF if operation not be performed right now (in case if not exist free slot for registering callback)

Example:

{
zb_buf_t *buf = ZB_BUF_FROM_REF(param);
zb_ret_t ret = RET_OK;
TRACE_MSG(TRACE_ERROR, "zb_leave_req", (FMT__0));
ZB_MEMSET(req->device_address, 0, sizeof(zb_ieee_addr_t));
req->rejoin = ZB_FALSE;
req->dst_addr = 1;
tsn = zdo_mgmt_leave_req(param, leave_callback);
}
void leave_callback(zb_uint8_t param)
{
TRACE_MSG(TRACE_ERROR, "LEAVE CALLBACK status %hd", (FMT__H, resp->status));
}

See nwk_leave sample


Documentation feedback | Developer Zone | Subscribe | Updated