1 #ifdef __INTERCONNECTION__
2 
3 #ifndef __APP_INTERCONNECTION_TLV_H__
4 #define __APP_INTERCONNECTION_TLV_H__
5 
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9 
10 #define  CCMP_CHILD_MASK        0x80
11 #define  CCMP_BIGLEN_MASK       0x80
12 
13 typedef struct _TlvItem
14 {
15     uint8_t                     type; // bit7= 1,with subtype ; bit7=0, no subtype  type value: bit6~bit0 ; general error = 127
16     uint16_t                    length;
17     uint8_t                     *value;
18     struct _TlvItem             *brotherNode;
19     struct _TlvItem             *childNode;
20     struct _TlvItem             *parentNode;
21 
22 }TLV_ITEM_T;
23 
24 void app_interconnection_tlv_get_big_endian_u16_from_item(TLV_ITEM_T* item, uint16_t* dataPtr);
25 
26 void app_interconnection_tlv_get_big_endian_u32_from_item(TLV_ITEM_T* item, uint32_t* dataPtr);
27 
28 uint32_t app_interconnection_tlv_item_get_length_size(uint32_t len);
29 
30 void app_interconnection_tlv_item_print(uint32_t spaceNumber, TLV_ITEM_T *item);
31 
32 TLV_ITEM_T *app_interconnection_tlv_item_tree_malloc(uint8_t *buf, uint32_t len);
33 
34 TLV_ITEM_T *app_interconnection_tlv_item_tree_malloc_long_msg(uint8_t *buf, uint32_t len);
35 
36 void app_interconnection_tlv_item_tree_free(TLV_ITEM_T *tree);
37 
38 TLV_ITEM_T *app_interconnection_creat_new_tlv_item(uint8_t type,uint32_t len,uint8_t *value);
39 
40 void free_tlv_item(TLV_ITEM_T *item);
41 
42 void tlv_item_add_child(TLV_ITEM_T *parent, TLV_ITEM_T *child);
43 
44 void tlv_item_add_brother(TLV_ITEM_T *brother, TLV_ITEM_T *me);
45 
46 TLV_ITEM_T *app_interconnection_tlv_get_item_with_type(TLV_ITEM_T *root, uint8_t type);
47 
48 TLV_ITEM_T* app_interconnection_tlv_get_brother_node(TLV_ITEM_T *root);
49 
50 TLV_ITEM_T* app_interconnection_tlv_get_child_node(TLV_ITEM_T *root);
51 
52 uint8_t app_interconnection_tlv_get_item_type(TLV_ITEM_T *item);
53 
54 uint8_t* app_interconnection_tlv_get_item_value(TLV_ITEM_T *item,uint32_t *length);
55 
56 uint32_t app_interconnection_tlv_get_item_tree_length(TLV_ITEM_T* root);
57 
58 uint8_t* app_interconnection_tlv_malloc_for_item(TLV_ITEM_T *item,uint32_t *length);
59 
60 uint8_t* app_interconnection_tlv_malloc_for_item_tree_with_margin(TLV_ITEM_T *item, uint8_t head, uint8_t tail, uint32_t *length);
61 
62 #ifdef __cplusplus
63 }
64 #endif
65 
66 #endif
67 
68 #endif