9ceb218f80
Co-authored-by: Cursor <cursoragent@cursor.com>
59 lines
1.8 KiB
C
59 lines
1.8 KiB
C
#ifndef VTK_TLV_H
|
||
#define VTK_TLV_H
|
||
|
||
#include "publicdata/public_define.h"
|
||
|
||
#if (POS_VTK_EN)
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
#include "main.h"
|
||
|
||
/* 简化的 TLV 工具:目前仅支持
|
||
* - 1 字节 Tag
|
||
* - 短格式 Length(1 字节,长度 < 128)
|
||
* 满足本项目中金额 / 操作号 / 消息名等中小长度字段需求。
|
||
*/
|
||
|
||
/* 在缓冲末尾追加一个 TLV
|
||
* @param[in] tag 参数标识
|
||
* @param[in] pVal 值缓冲区
|
||
* @param[in] len 值长度
|
||
* @param[in,out] pBuf 目标缓冲区
|
||
* @param[in] bufMax 目标缓冲区大小
|
||
* @param[in,out] pOffset 当前已使用长度,调用成功后自动累加
|
||
* @return U8_T 1=成功 0=失败(空间不足或长度超限)
|
||
*/
|
||
U8_T vtk_tlv_append(U8_T tag, const U8_T *pVal, U16_T len,
|
||
U8_T *pBuf, U16_T bufMax, U16_T *pOffset);
|
||
|
||
/* 追加 ASCII 字符串 TLV(不含终止符 '\0') */
|
||
U8_T vtk_tlv_append_ascii(U8_T tag, const char *str,
|
||
U8_T *pBuf, U16_T bufMax, U16_T *pOffset);
|
||
|
||
/* 以十进制 ASCII 形式追加无符号整数(长度可变,最小宽度由 minWidth 控制) */
|
||
U8_T vtk_tlv_append_ascii_uint(U8_T tag, U32_T value, U8_T minWidth,
|
||
U8_T *pBuf, U16_T bufMax, U16_T *pOffset);
|
||
|
||
/* 在 TLV 缓冲中查找第一个指定 Tag
|
||
* @param[in] pBuf TLV 缓冲区
|
||
* @param[in] bufLen 缓冲区长度
|
||
* @param[in] tag 要查找的 Tag
|
||
* @param[out] ppVal 找到时指向 Value 起始地址
|
||
* @param[out] pValLen 找到时的 Value 长度
|
||
* @return U8_T 1=找到 0=未找到或格式错误
|
||
*/
|
||
U8_T vtk_tlv_find_first(const U8_T *pBuf, U16_T bufLen, U8_T tag,
|
||
const U8_T **ppVal, U16_T *pValLen);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif /* POS_VTK_EN */
|
||
|
||
#endif /* VTK_TLV_H */
|
||
|