-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathtlvparse.h
71 lines (58 loc) · 1.46 KB
/
tlvparse.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*****************************************************************************
* 文件描述:PBOC3.0-TLV Parse
* 应用平台:linux
* 创建时间:20150918
* 作者:RedXu
*****************************************************************************/
#ifndef __TLVPARSE__H__
#define __TLVPARSE__H__
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
struct TLVNode{
uint16_t Tag; /* T */
uint16_t Length; /* L */
unsigned char* Value; /* V */
unsigned char TagSize;
unsigned char LengthSize;
uint16_t MoreFlag; /* Used In Sub */
uint16_t SubFlag; /* have Sub Node? */
uint16_t SubCount;
struct TLVNode* Sub[256];
struct TLVNode* Next;
};
/**
* 解析数据,生成TLV结构
* @param buf [数据]
* @param size [数据长度]
* @return [TLVNode]
*/
struct TLVNode* TLV_Parse(unsigned char* buf,int size);
/**
* 合并src结构到target
* @param target [目标TLVNode]
* @param src [源TLVNode]
*/
void TLV_Merge(struct TLVNode* target,struct TLVNode* src);
/**
* 在node中查找tag.
* @param node [TLVNode]
* @param tag [tag标签]
* @return [NULL - 未找到]
*/
struct TLVNode* TLV_Find(struct TLVNode* node,uint16_t tag);
/**
* Free TLVNode Memory
* @param node [node]
*/
void TLV_Free(struct TLVNode* node);
/**
* DEBUG TLVNode
* @param node [description]
*/
void TLV_Debug(struct TLVNode* node);
#ifdef __cplusplus
}
#endif
#endif