nRF5 SDK for Thread and Zigbee v3.2.0
Data Structures
APS functions visible to applications

Data Structures

struct  zb_aps_hdr_s
 Parsed APS header. More...
 
struct  zb_apsme_binding_req_s
 APSME binding structure. More...
 
struct  zb_apsme_add_group_req_s
 APSME-ADD-GROUP.request primitive parameters. More...
 
struct  zb_apsme_add_group_conf_s
 APSME-ADD-GROUP.confirm primitive parameters. More...
 
struct  zb_apsme_remove_all_groups_req_s
 APSME-REMOVE-ALL-GROUPS.request primitive parameters. More...
 
struct  zb_apsme_remove_all_groups_conf_s
 APSME-REMOVE-ALL-GROUPS.confirm primitive parameters. More...
 

Common constants.

enum  zb_aps_status_e {
  ZB_APS_STATUS_SUCCESS = 0x00, ZB_APS_STATUS_ILLEGAL_REQUEST = 0xa3, ZB_APS_STATUS_INVALID_BINDING = 0xa4, ZB_APS_STATUS_INVALID_GROUP = 0xa5,
  ZB_APS_STATUS_INVALID_PARAMETER = 0xa6, ZB_APS_STATUS_NO_ACK = 0xa7, ZB_APS_STATUS_NO_BOUND_DEVICE = 0xa8, ZB_APS_STATUS_NO_SHORT_ADDRESS = 0xa9,
  ZB_APS_STATUS_NOT_SUPPORTED = 0xaa, ZB_APS_STATUS_SECURED_LINK_KEY = 0xab, ZB_APS_STATUS_SECURED_NWK_KEY = 0xac, ZB_APS_STATUS_SECURITY_FAIL = 0xad,
  ZB_APS_STATUS_TABLE_FULL = 0xae, ZB_APS_STATUS_UNSECURED = 0xaf, ZB_APS_STATUS_UNSUPPORTED_ATTRIBUTE = 0xb0
}
 APS status constants. More...
 
enum  zb_aps_addr_mode_e { ZB_APS_ADDR_MODE_DST_ADDR_ENDP_NOT_PRESENT = 0, ZB_APS_ADDR_MODE_16_GROUP_ENDP_NOT_PRESENT = 1, ZB_APS_ADDR_MODE_16_ENDP_PRESENT = 2, ZB_APS_ADDR_MODE_64_ENDP_PRESENT = 3 }
 APS addressing mode constants. More...
 
typedef enum zb_aps_status_e zb_aps_status_t
 APS status constants.
 
typedef enum zb_aps_addr_mode_e zb_aps_addr_mode_t
 APS addressing mode constants.
 
#define ZB_MIN_ENDPOINT_NUMBER   1
 Minimum valid endpoint number.
 
#define ZB_MAX_ENDPOINT_NUMBER   240
 Maximum valid endpoint number.
 
#define ZB_APS_BROADCAST_ENDPOINT_NUMBER   255
 Broadcast endpoint number.
 

APS data service structures and API.

typedef struct zb_aps_hdr_s zb_aps_hdr_t
 Parsed APS header.
 
typedef zb_aps_hdr_t zb_apsde_data_indication_t
 

APS management service data structures and API.

typedef struct
zb_apsme_binding_req_s 
zb_apsme_binding_req_t
 APSME binding structure. More...
 
typedef struct
zb_apsme_add_group_req_s 
zb_apsme_add_group_req_t
 APSME-ADD-GROUP.request primitive parameters.
 
typedef struct
zb_apsme_add_group_conf_s 
zb_apsme_add_group_conf_t
 APSME-ADD-GROUP.confirm primitive parameters.
 
typedef struct
zb_apsme_add_group_req_s 
zb_apsme_remove_group_req_t
 APSME-REMOVE-GROUP.request primitive parameters.
 
typedef struct
zb_apsme_add_group_conf_s 
zb_apsme_remove_group_conf_t
 APSME-REMOVE-GROUP.confirm primitive parameters.
 
typedef struct
zb_apsme_remove_all_groups_req_s 
zb_apsme_remove_all_groups_req_t
 APSME-REMOVE-ALL-GROUPS.request primitive parameters.
 
typedef struct
zb_apsme_remove_all_groups_conf_s 
zb_apsme_remove_all_groups_conf_t
 APSME-REMOVE-ALL-GROUPS.confirm primitive parameters.
 
zb_uint8_t zb_aps_is_endpoint_in_group (zb_uint16_t group_id, zb_uint8_t endpoint)
 
void zb_apsme_bind_request (zb_uint8_t param)
 APSME-BIND.request primitive. More...
 
void zb_apsme_unbind_request (zb_uint8_t param)
 APSME-UNBIND.request primitive. More...
 
void zb_apsme_unbind_all (zb_uint8_t param)
 Perform unbind all entries. This custom function and it is not described in ZigBee specificatoin. More...
 
void zb_apsme_add_group_request (zb_uint8_t param)
 APSME-ADD-GROUP.request primitive. More...
 
void zb_apsme_remove_group_request (zb_uint8_t param)
 APSME-REMOVE-GROUP.request primitive. More...
 
void zb_apsme_remove_all_groups_request (zb_uint8_t param)
 APSME-REMOVE-ALL-GROUPS.request primitive. More...
 

Detailed Description

Typedef Documentation

Parameters of the APSDE-DATA.indication primitive.

Also used as a parameter in different APS calls.

APSME binding structure.

This data structure passed to zb_apsme_bind_request() and to zb_apsme_unbind_request()

Enumeration Type Documentation

APS addressing mode constants.

Enumerator
ZB_APS_ADDR_MODE_DST_ADDR_ENDP_NOT_PRESENT 

0x00 = DstAddress and DstEndpoint not present

ZB_APS_ADDR_MODE_16_GROUP_ENDP_NOT_PRESENT 

0x01 = 16-bit group address for DstAddress; DstEndpoint not present

ZB_APS_ADDR_MODE_16_ENDP_PRESENT 

0x02 = 16-bit address for DstAddress and DstEndpoint present

ZB_APS_ADDR_MODE_64_ENDP_PRESENT 

0x03 = 64-bit extended address for DstAddress and DstEndpoint present

APS status constants.

Enumerator
ZB_APS_STATUS_SUCCESS 

A request has been executed successfully.

ZB_APS_STATUS_ILLEGAL_REQUEST 

A parameter value was out of range.

ZB_APS_STATUS_INVALID_BINDING 

An APSME-UNBIND.request failed due to the requested binding link not existing in the binding table.

ZB_APS_STATUS_INVALID_GROUP 

An APSME-REMOVE-GROUP.request has been issued with a group identifier that does not appear in the group table.

ZB_APS_STATUS_INVALID_PARAMETER 

A parameter value was invalid or out of range. ZB_APS_STATUS_NO_ACK 0xa7 An APSDE-DATA.request requesting acknowledged transmission failed due to no acknowledgement being received.

ZB_APS_STATUS_NO_ACK 

An APSDE-DATA.request requesting acknowledged transmission failed due to no acknowledgement being received.

ZB_APS_STATUS_NO_BOUND_DEVICE 

An APSDE-DATA.request with a destination addressing mode set to 0x00 failed due to there being no devices bound to this device.

ZB_APS_STATUS_NO_SHORT_ADDRESS 

An APSDE-DATA.request with a destination addressing mode set to 0x03 failed due to no corresponding short address found in the address map table.

ZB_APS_STATUS_NOT_SUPPORTED 

An APSDE-DATA.request with a destination addressing mode set to 0x00 failed due to a binding table not being supported on the device.

ZB_APS_STATUS_SECURED_LINK_KEY 

An ASDU was received that was secured using a link key.

ZB_APS_STATUS_SECURED_NWK_KEY 

An ASDU was received that was secured using a network key.

ZB_APS_STATUS_SECURITY_FAIL 

An APSDE-DATA.request requesting security has resulted in an error during the corresponding security processing.

ZB_APS_STATUS_TABLE_FULL 

An APSME-BIND.request or APSME.ADD- GROUP.request issued when the binding or group tables, respectively, were full.

ZB_APS_STATUS_UNSECURED 

An ASDU was received without any security

ZB_APS_STATUS_UNSUPPORTED_ATTRIBUTE 

An APSME-GET.request or APSME- SET.request has been issued with an unknown attribute identifier.

Function Documentation

void zb_apsme_add_group_request ( zb_uint8_t  param)

APSME-ADD-GROUP.request primitive.

Parameters
param- buffer with parameter. See zb_apsme_add_group_req_t.
Example
addr = param;
req->group_address = addr;
req->endpoint = ZR3_BIND_EP;

See tp_aps_bv-23-i sample

void zb_apsme_bind_request ( zb_uint8_t  param)

APSME-BIND.request primitive.

Parameters
param- reference to the buffer containing request data (see zb_apsme_binding_req_t).
Example
void zb_test(zb_uint8_t param)
{
zb_buf_t *buf = ZB_BUF_FROM_REF(param);
ZB_MEMCPY(&req->src_addr, &g_ieee_addr, sizeof(zb_ieee_addr_t));
req->src_endpoint = 1;
req->clusterid = 1;
ZB_MEMCPY(&req->dst_addr.addr_long, &g_ieee_addr_d, sizeof(zb_ieee_addr_t));
req->dst_endpoint = 0xF0;
send_data((zb_buf_t *)ZB_BUF_FROM_REF(param));
}

See tp_aps_bv-19-i sample

void zb_apsme_remove_all_groups_request ( zb_uint8_t  param)

APSME-REMOVE-ALL-GROUPS.request primitive.

Parameters
param- buffer with parameter. See zb_apsme_remove_all_groups_req_t.
Example
void remove_groups(zb_uint8_t param)
{
zb_buf_t *buf = ZB_BUF_FROM_REF(param);
zb_apsme_remove_all_groups_req_t *req_remove_param = NULL;
TRACE_MSG(TRACE_APP1, "> remove_groups param %hd", (FMT__H, param));
req_remove_param->endpoint = ZB_TEST_PROFILE_EP;
TRACE_MSG(TRACE_APP1, "< remove_groups", (FMT__0));
}

See tp_aps_bv-18 sample

void zb_apsme_remove_group_request ( zb_uint8_t  param)

APSME-REMOVE-GROUP.request primitive.

Parameters
param- buffer with parameter. See zb_apsme_remove_group_req_t.
Example
void remove_group(zb_uint8_t param)
{
zb_buf_t *buf = ZB_BUF_FROM_REF(param);
zb_apsme_remove_group_req_t *req_remove_param = NULL;
TRACE_MSG(TRACE_APP1, "> remove_group param %hd", (FMT__H, param));
req_remove_param->endpoint = ZB_TEST_PROFILE_EP;
req_remove_param->group_address = 0x0001;
TRACE_MSG(TRACE_APP1, "< remove_group", (FMT__0));
}

See tp_aps_bv-17 sample

void zb_apsme_unbind_all ( zb_uint8_t  param)

Perform unbind all entries. This custom function and it is not described in ZigBee specificatoin.

Parameters
param- not used.
void zb_apsme_unbind_request ( zb_uint8_t  param)

APSME-UNBIND.request primitive.

Parameters
param- reference to the buffer containing request data (see zb_apsme_binding_req_t).
Example
TRACE_MSG(TRACE_APS1, "start APS unbind test", (FMT__0));
for (i = 1 ;(i < ZB_APS_SRC_BINDING_TABLE_SIZE || ret == RET_OK); ++i)
{
gen_64_bit_addr(ieee_addr, i+1, i+1);
ZB_MEMCPY(&req_b.src_addr, &ieee_addr, sizeof(zb_ieee_addr_t));
req_b.src_endpoint = i;
req_b.clusterid = 1;
gen_64_bit_addr(ieee_addr, i+2, i+2);
ZB_MEMCPY(&req_b.dst_addr.addr_long, &ieee_addr, sizeof(zb_ieee_addr_t));
req_b.dst_endpoint = i+1;
ZB_MEMCPY(
&req_b,
ret = aps->u.hdr.status;
}
if (ret)
{
if (ret == RET_INVALID_BINDING)
{
TRACE_MSG(TRACE_APS1, "invalid binding for i = %d ret %d", (FMT__D_D, i, ret));
if (ZG->aps.binding.src_n_elements == 1 && ZG->aps.binding.dst_n_elements == 1)
{
TRACE_MSG(TRACE_INFO2, "SUCCESS", (FMT__0));
}
else
{
TRACE_MSG(TRACE_APS1, "ERROR binding table is corrupted", (FMT__0));
}
}
else
{
TRACE_MSG(TRACE_APS1, "ERROR %d", (FMT__D, ret));
}
}

See aps_binding_test sample


Documentation feedback | Developer Zone | Subscribe | Updated