nRF5 SDK for Thread and Zigbee v1.0.0
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
ZCL Tunnel cluster

Data Structures

struct  zb_zcl_tunnel_transfer_data_req_s
 Tunnel Transfer Data Request command paylaod. More...
 
struct  zb_zcl_tunnel_transfer_data_req_internal_s
 
struct  zb_zcl_tunnel_transfer_data_resp_s
 Tunnel Transfer Data Response command paylaod. More...
 
struct  zb_zcl_tunnel_op_status_s
 
struct  zb_zcl_tunnel_io_param_s
 
struct  zb_zcl_tunnel_io_slot_s
 
struct  zb_zcl_tunnel_io_slot_continue_s
 
struct  zb_zcl_tunnel_context_s
 

Macros

#define ZB_ZCL_TUNNEL_TIMEOUT   (10*ZB_TIME_ONE_SECOND)
 
#define ZB_ZCL_TUNNEL_MAX_IO_SLOT_NUMBER   16
 Maximum slots for send/receive data.
 
#define ZB_ZCL_TUNNEL_IO_SLOT_UNKNOWN   0xff
 Not slots index.
 

Typedefs

typedef struct
zb_zcl_tunnel_io_slot_s 
zb_zcl_tunnel_io_slot_t
 
typedef struct
zb_zcl_tunnel_io_slot_continue_s 
zb_zcl_tunnel_io_slot_continue_t
 
typedef struct
zb_zcl_tunnel_context_s 
zb_zcl_tunnel_context_t
 

Functions

zb_ret_t zb_zcl_tunnel_transfer_data_req_handler (zb_uint8_t buf_param)
 
zb_ret_t zb_zcl_tunnel_transfer_data_resp_handler (zb_uint8_t buf_param)
 
zb_void_t zb_zcl_tunnel_transfer_data_resp_send (zb_uint8_t param, zb_uint16_t endpoint16)
 
zb_void_t zb_zcl_tunnel_send_fist_block (zb_uint8_t param, zb_uint16_t index16)
 
zb_void_t zb_zcl_tunnel_timeout (zb_uint8_t index)
 
zb_void_t zb_zcl_tunnel_invoke_user_app (zb_uint8_t param)
 
zb_ret_t zb_zcl_process_tunnel_default_response_commands (zb_uint8_t param)
 
zb_uint8_t zb_zcl_process_tunnel_specific_commands (zb_uint8_t param)
 

Tunnel cluster commands

enum  zb_zcl_tunnel_cmd_e { ZB_ZCL_CMD_TUNNEL_TRANSFER_DATA_REQ = 0x00, ZB_ZCL_CMD_TUNNEL_TRANSFER_DATA_RESP = 0x01 }
 Tunnel cluster commands. More...
 
enum  zb_zcl_tunnel_status_e { ZB_ZCL_TUNNEL_STATUS_OK = 0, ZB_ZCL_TUNNEL_STATUS_ERROR = 1, ZB_ZCL_TUNNEL_STATUS_ERROR_NO_MEMORY = 2, ZB_ZCL_TUNNEL_STATUS_ERROR_TIMEOUT = 3 }
 
enum  zb_zcl_tunnel_operation_code_e { ZB_ZCL_TUNNEL_OPERATION_TX = 1 << 0, ZB_ZCL_TUNNEL_OPERATION_RX = 1 << 1 }
 
enum  zb_zcl_tunnel_tx_flags_e { ZB_ZCL_TUNNEL_TX_START = 1 << 0 }
 Tunnel Transfer Data Request flags. More...
 
typedef enum zb_zcl_tunnel_status_e zb_zcl_tunnel_status_t
 
typedef struct
zb_zcl_tunnel_transfer_data_req_s 
zb_zcl_tunnel_transfer_data_req_t
 Tunnel Transfer Data Request command paylaod.
 
typedef struct
zb_zcl_tunnel_transfer_data_req_internal_s 
zb_zcl_tunnel_transfer_data_req_data_internal_t
 
typedef struct
zb_zcl_tunnel_transfer_data_resp_s 
zb_zcl_tunnel_transfer_data_resp_t
 Tunnel Transfer Data Response command paylaod.
 
typedef void(* zb_zcl_tunnel_cb_t )(zb_uint8_t param)
 
typedef struct
zb_zcl_tunnel_op_status_s 
zb_zcl_tunnel_op_status_t
 
typedef struct
zb_zcl_tunnel_io_param_s 
zb_zcl_tunnel_io_param_t
 
zb_void_t zb_zcl_tunnel_init (zb_uint16_t manuf_id)
 
zb_void_t zb_zcl_tunnel_register_cb (zb_zcl_tunnel_cb_t tunnel_cb)
 
zb_ret_t zb_zcl_tunnel_transmit_data (zb_uint8_t buf_param)
 
zb_void_t zb_zcl_tunnel_default_user_app (zb_uint8_t param)
 
#define ZB_ZCL_TUNNEL_SEND_TRANSFER_REQ(_buffer, _addr, _dst_addr_mode, _dst_ep, _ep, _prfl_id, _def_resp, _cb,_manufacturer_id, _flag, _byte_num, _data_size, _image_data)
 Send Transfer Data command. More...
 
#define ZB_ZCL_TUNNEL_GET_TRANSFER_REQ(_data_ptr, _buffer, _status)
 Macro for getting Send Transfer Data command. More...
 
#define ZB_ZCL_TUNNEL_SEND_TRANSFER_RESP(_buffer, _addr, _dst_addr_mode, _dst_ep, _ep, _prfl_id, _seq, _cb,_manufacturer_id, _tun_status)
 Send Transfer Data response command. More...
 
#define ZB_ZCL_TUNNEL_GET_TRANSFER_RESP(_data_ptr, _buffer, _status)
 Macro for getting Send Transfer Data response command. More...
 

Detailed Description

Manufacture specific cluster for transmit custom data between peers Model: One (client) to More (servers) Usually a device has MIXED role

Macro Definition Documentation

#define ZB_ZCL_TUNNEL_GET_TRANSFER_REQ (   _data_ptr,
  _buffer,
  _status 
)
Value:
{ \
\
if (ZB_BUF_LEN((_buffer)) != sizeof(zb_zcl_tunnel_transfer_data_req_t) \
+ src_ptr->data_size * sizeof(zb_uint8_t) ) \
{ \
} \
else \
{ \
(_data_ptr)->req_header.tx_flag = src_ptr->tx_flag; \
ZB_HTOLE16(&((_data_ptr)->req_header.byte_num), &(src_ptr->byte_num)); \
(_data_ptr)->req_header.data_size = src_ptr->data_size; \
(_data_ptr)->tun_data = (zb_uint8_t*)(src_ptr+1); \
} \
}
struct zb_zcl_tunnel_transfer_data_req_s zb_zcl_tunnel_transfer_data_req_t
Tunnel Transfer Data Request command paylaod.
Definition: zb_zcl_common.h:252
#define ZB_BUF_BEGIN(zbbuf)
Definition: zboss_api_core.h:722
#define ZB_BUF_LEN(zbbuf)
Definition: zboss_api_core.h:731
Tunnel Transfer Data Request command paylaod.
Definition: zb_zcl_tunnel.h:95
Definition: zb_zcl_common.h:251
unsigned char zb_uint8_t
Project-local 1-byte unsigned int type.
Definition: zb_types.h:115

Macro for getting Send Transfer Data command.

Attention
Assumes that ZCL header already cut.
Parameters
_data_ptr- pointer to a variable of type zb_zcl_tunnel_transfer_data_internal_t.
_buffercontaining the packet (by pointer).
_status- variable to put parse status to (see zb_zcl_parse_status_t).

NOTE file data place`s in buffer, payload saves pointer to data only!

#define ZB_ZCL_TUNNEL_GET_TRANSFER_RESP (   _data_ptr,
  _buffer,
  _status 
)
Value:
{ \
\
if (ZB_BUF_LEN((_buffer)) != sizeof(zb_zcl_tunnel_transfer_data_resp_t) ) \
{ \
} \
else \
{ \
(_data_ptr)->tun_status = src_ptr->tun_status; \
} \
}
Tunnel Transfer Data Response command paylaod.
Definition: zb_zcl_tunnel.h:197
Definition: zb_zcl_common.h:252
#define ZB_BUF_BEGIN(zbbuf)
Definition: zboss_api_core.h:722
#define ZB_BUF_LEN(zbbuf)
Definition: zboss_api_core.h:731
Definition: zb_zcl_common.h:251
struct zb_zcl_tunnel_transfer_data_resp_s zb_zcl_tunnel_transfer_data_resp_t
Tunnel Transfer Data Response command paylaod.

Macro for getting Send Transfer Data response command.

Attention
Assumes that ZCL header already cut.
Parameters
_data_ptr- pointer to a variable of type zb_zcl_tunnel_transfer_data_resp_t.
_buffercontaining the packet (by pointer).
_status- variable to put parse status to (see zb_zcl_parse_status_t).
#define ZB_ZCL_TUNNEL_SEND_TRANSFER_REQ (   _buffer,
  _addr,
  _dst_addr_mode,
  _dst_ep,
  _ep,
  _prfl_id,
  _def_resp,
  _cb,
  _manufacturer_id,
  _flag,
  _byte_num,
  _data_size,
  _image_data 
)
Value:
{ \
zb_uint8_t* __ptr = ZB_ZCL_START_PACKET((_buffer)); \
ZB_ZCL_CONSTRUCT_SPECIFIC_COMMAND_REQ_FRAME_CONTROL_A(__ptr, \
ZB_ZCL_MANUFACTURER_SPECIFIC, (_manufacturer_id), \
ZB_ZCL_PACKET_PUT_DATA8(__ptr, (_flag)); \
ZB_ZCL_PACKET_PUT_DATA16_VAL(__ptr, (_byte_num)); \
ZB_ZCL_PACKET_PUT_DATA8(__ptr, (_data_size)); \
if((_data_size)>0) \
{ \
ZB_ZCL_PACKET_PUT_DATA_N(__ptr, (_image_data), (_data_size)); \
} \
ZB_ZCL_FINISH_PACKET((_buffer), __ptr) \
ZB_ZCL_SEND_COMMAND_SHORT( \
(_buffer), (_addr), (_dst_addr_mode), (_dst_ep), (_ep), (_prfl_id), \
}
#define ZB_ZCL_PACKET_PUT_DATA8(ptr, val)
Put 8 bit value to packet.
Definition: zb_zcl_common.h:1273
#define ZB_ZCL_GET_SEQ_NUM()
Return next sequence number for ZCL frame.
Definition: zb_zcl_common.h:1170
#define ZB_ZCL_START_PACKET(zbbuf)
Initializes zb_buf_t buffer and returns pointer to the beginning of array.
Definition: zb_zcl_common.h:1252
Definition: zb_zcl_common.h:784
#define ZB_ZCL_PACKET_PUT_DATA_N(ptr, val, n)
Put N byte data to packet.
Definition: zb_zcl_common.h:1457
#define ZB_ZCL_PACKET_PUT_DATA16_VAL(ptr, val)
Definition: zb_zcl_common.h:1291
Definition: zb_zcl_tunnel.h:69
Definition: zb_zcl_common.h:230
#define ZB_ZCL_FINISH_PACKET(zbbuf, ptr)
Definition: zb_zcl_common.h:1538
unsigned char zb_uint8_t
Project-local 1-byte unsigned int type.
Definition: zb_types.h:115
#define ZB_ZCL_CONSTRUCT_COMMAND_HEADER_EXT(_data_ptr, _tsn, _is_manuf_spec, _manuf_specific, _cmd_id)
Construct ZCL header, Manufacturer specific value is conditionally supported.
Definition: zb_zcl_common.h:1131
Command refers to manufacturer-specific profile extension.
Definition: zb_zcl_common.h:761

Send Transfer Data command.

Parameters
_buffer- to put packet to
_addr- address to send packet to
_dst_addr_mode- addressing mode
_dst_ep- destination endpoint
_ep- sending endpoint
_prfl_id- profile identifier
_cb- callback for getting command send status
_manufacturer_id- Manufacturer code
_flag- command flag, see zb_zcl_tunnel_tx_flags_e
_byte_num- all transfer length or current offset, see zb_zcl_tunnel_transfer_data_header_t
_data_size- data size
_image_data- image data
#define ZB_ZCL_TUNNEL_SEND_TRANSFER_RESP (   _buffer,
  _addr,
  _dst_addr_mode,
  _dst_ep,
  _ep,
  _prfl_id,
  _seq,
  _cb,
  _manufacturer_id,
  _tun_status 
)
Value:
{ \
zb_uint8_t* __ptr = ZB_ZCL_START_PACKET((_buffer)); \
ZB_ZCL_CONSTRUCT_SPECIFIC_COMMAND_RESP_FRAME_CONTROL_A(__ptr, \
ZB_ZCL_PACKET_PUT_DATA8(__ptr, (_tun_status)); \
ZB_ZCL_FINISH_PACKET((_buffer), __ptr) \
ZB_ZCL_SEND_COMMAND_SHORT( \
(_buffer), (_addr), (_dst_addr_mode), (_dst_ep), (_ep), (_prfl_id), \
}
#define ZB_ZCL_PACKET_PUT_DATA8(ptr, val)
Put 8 bit value to packet.
Definition: zb_zcl_common.h:1273
Definition: zb_zcl_common.h:786
#define ZB_ZCL_START_PACKET(zbbuf)
Initializes zb_buf_t buffer and returns pointer to the beginning of array.
Definition: zb_zcl_common.h:1252
Definition: zb_zcl_common.h:230
#define ZB_ZCL_FINISH_PACKET(zbbuf, ptr)
Definition: zb_zcl_common.h:1538
unsigned char zb_uint8_t
Project-local 1-byte unsigned int type.
Definition: zb_types.h:115
#define ZB_ZCL_CONSTRUCT_COMMAND_HEADER_EXT(_data_ptr, _tsn, _is_manuf_spec, _manuf_specific, _cmd_id)
Construct ZCL header, Manufacturer specific value is conditionally supported.
Definition: zb_zcl_common.h:1131
Command refers to manufacturer-specific profile extension.
Definition: zb_zcl_common.h:761
Definition: zb_zcl_tunnel.h:70

Send Transfer Data response command.

Parameters
_buffer- to put packet to
_addr- address to send packet to
_dst_addr_mode- addressing mode
_dst_ep- destination endpoint
_ep- sending endpoint
_prfl_id- profile identifier
_seq- request sequence
_cb- callback for getting command send status
_manufacturer_id- Manufacturer code
_tun_status- command status, see zb_zcl_tunnel_status_e

Typedef Documentation

typedef void( * zb_zcl_tunnel_cb_t)(zb_uint8_t param)

Callback to inform user about tx operation status or rx data;

Parameters
-param is reference to a buffer; zb_zcl_tunnel_io_param_t is stored as buffer parameter

structure to pass parameters for data i/o Save in first of each buffer

struct for next buffer in multi-buffer chain

Tunnel operation status

Tunnel status; range: 0x00 - 0x3F (6 bit value)

Enumeration Type Documentation

Tunnel cluster commands.

Enumerator
ZB_ZCL_CMD_TUNNEL_TRANSFER_DATA_REQ 

Request to transfer data.

ZB_ZCL_CMD_TUNNEL_TRANSFER_DATA_RESP 

Response on received data

Tunnel i/o operation type, range: 0x00 - 0x03 (2 bit value)

Enumerator
ZB_ZCL_TUNNEL_OPERATION_TX 

Current command - send data

ZB_ZCL_TUNNEL_OPERATION_RX 

Current command - receive data

Tunnel status; range: 0x00 - 0x3F (6 bit value)

Enumerator
ZB_ZCL_TUNNEL_STATUS_OK 

Data is sent or received. Use for inform User App about success current command

ZB_ZCL_TUNNEL_STATUS_ERROR 

General Error. Current operation has error: unexpected message etc.

ZB_ZCL_TUNNEL_STATUS_ERROR_NO_MEMORY 

No memory

ZB_ZCL_TUNNEL_STATUS_ERROR_TIMEOUT 

Timeout. Use for inform User App about when wait answer

Tunnel Transfer Data Request flags.

Enumerator
ZB_ZCL_TUNNEL_TX_START 

first block - if set then contains total length of transfering data else - contains current offset of transfering data

Function Documentation

zb_void_t zb_zcl_tunnel_default_user_app ( zb_uint8_t  param)

Default user application Contain default handle (usually free buffer) for different Tunnel Status command

zb_void_t zb_zcl_tunnel_init ( zb_uint16_t  manuf_id)

Init CTX data table

Parameters
manuf_id- manufacturer ID
zb_void_t zb_zcl_tunnel_register_cb ( zb_zcl_tunnel_cb_t  tunnel_cb)

Register user callback

zb_ret_t zb_zcl_tunnel_transmit_data ( zb_uint8_t  buf_param)

Start user data transmit. buf_param is a reference to a buffer; zb_zcl_tunnel_io_param_t is stored as a buffer parameter; data to be transmitted is stored as buffer data