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