Skip to content

kernel ttlv 相关接口

API 列表

函数说明
Quos_ttlvAddIdBool()添加节点数据 bool
Quos_ttlvAddIdInt()添加节点数据 int
Quos_ttlvAddIdFloat()添加节点数据 float
Quos_ttlvAddIdFloatEx()添加节点数据 float 扩展
Quos_ttlvAddIdRaw()添加节点数据 raw
Quos_ttlvAddIdText()添加节点数据 text
Quos_ttlvAddIdStruct()添加节点数据 struct
Quos_ttlvGetNodeType()获取节点数据类型
Quos_ttlvGetNodeBool()获取节点数据 bool
Quos_ttlvGetNodeInt()获取节点数据 int
Quos_ttlvGetNodeFloat()获取节点数据 float
Quos_ttlvGetNodeText()获取节点数据 text
Quos_ttlvGetNodeStruct()获取节点数据 struct
Quos_ttlvGetNodeRaw()获取节点数据 raw
Quos_ttlvGetIdType()获取指定 ID 节点数据类型
Quos_ttlvGetIdBool()获取指定 ID 节点数据 bool
Quos_ttlvGetIdInt()获取指定 ID 节点数据 int
Quos_ttlvGetIdFloat()获取指定 ID 节点数据 float
Quos_ttlvGetIdText()获取指定 ID 节点数据 text
Quos_ttlvGetIdStruct()获取指定 ID 节点数据 struct
Quos_ttlvGetIdRaw()获取指定 ID 节点数据 raw
Quos_ttlvGetCount()获取节点个数
Quos_ttlvGetNode()获取节点指针
Quos_ttlvRemove()删除节点
Quos_ttlvFree()释放 ttlv
Quos_ttlvUnformat()将字节流转成 ttlv 节点
Quos_ttlvFormat()将 ttlv 节点转成字节流
Quos_ttlvFormatLen()将 ttlv 节点转成字节流的长度
Quos_ttlvHeadPrintf()打印 ttlv 内容
Quos_json2Ttlv()将 json 对象转成 ttlv 节点
Quos_ttlv2Json()将 ttlv 节点转成 json 对象

API 详情

Quos_ttlvAddIdBool

添加节点数据 bool。

函数原型

c
qbool Quos_ttlvAddIdBool(void **ttlvHead, quint16_t id, qbool value);

参数说明

  • 输入参数

    • void **ttlvHead:ttlv 节点。
    • quint16_tid:节点 id。
    • qboolvalue:节点 value。
  • 输出参数

    • 无。
  • 返回值

    • TRUE:执行成功,FALSE:执行失败。

调用示例

c
void *ttlvHead = NULL;
Quos_ttlvAddIdBool(&ttlvHead, 1, TRUE);

Quos_ttlvAddIdInt

添加节点数据 int。

函数原型

c
qbool Quos_ttlvAddIdInt(void **ttlvHead, quint16_t id, qint64_t num);

参数说明

  • 输入参数

    • void **ttlvHead:ttlv 节点。
    • quint16_tid:节点 id。
    • qint64_tnum:节点 value。
  • 输出参数

    • 无。
  • 返回值

    • TRUE:执行成功,FALSE:执行失败。

调用示例

c
void *ttlvHead = NULL;
Quos_ttlvAddIdInt(&ttlvHead, 2, 23);

Quos_ttlvAddIdFloat

添加节点数据 float。

函数原型

c
qbool Quos_ttlvAddIdFloat(void **ttlvHead, quint16_t id, double num);

参数说明

  • 输入参数

    • void **ttlvHead:ttlv 节点。
    • quint16_tid:节点 id。
    • doublenum:节点 value。
  • 输出参数

    • 无。
  • 返回值

    • TRUE:执行成功,FALSE:执行失败。

调用示例

c
void *ttlvHead = NULL;
Quos_ttlvAddIdFloat(&ttlvHead, 4, 18.5);

Quos_ttlvAddIdFloatEx

添加节点数据 float 扩展。

函数原型

c
qbool Quos_ttlvAddIdFloatEx(void **ttlvHead, quint16_t id, double value, quint8_t precision);

参数说明

  • 输入参数

    • void **ttlvHead:ttlv 节点。
    • quint16_tid:节点 id。
    • doublevalue:节点 value。
    • quint8_tprecision:float 精度,即小数点位数。
  • 输出参数

    • 无。
  • 返回值

    • TRUE:执行成功,FALSE:执行失败。

调用示例

c
void *ttlvHead = NULL;
Quos_ttlvAddIdFloatEx(&ttlvHead, 4, 18.5, 1);

Quos_ttlvAddIdRaw

添加节点数据 raw。

函数原型

c
qbool Quos_ttlvAddIdRaw(void **ttlvHead, quint16_t id, const quint8_t *data, quint32_t len);

参数说明

  • 输入参数

    • void **ttlvHead:ttlv 节点。
    • quint16_tid:节点 id。
    • quint8_t *data:节点 value。
    • quint32_t *len:节点 value len。
  • 输出参数

    • 无。
  • 返回值

    • TRUE:执行成功,FALSE:执行失败。

调用示例

c
void *ttlvHead = NULL;
quint8_t buf[5] = {'a', 'b', 'c', 'd', 'e'};
Quos_ttlvAddIdRaw(&ttlvHead, 5, buf, sizeof(buf));

Quos_ttlvAddIdText

添加节点数据 text。

函数原型

c
qbool Quos_ttlvAddIdText(void **ttlvHead, quint16_t id, const char *data);

参数说明

  • 输入参数

    • void **ttlvHead:ttlv 节点。
    • quint16_tid:节点 id。
    • char *data:节点 value。
  • 输出参数

    • 无。
  • 返回值

    • TRUE:执行成功,FALSE:执行失败。

调用示例

c
void *ttlvHead = NULL;
Quos_ttlvAddIdText(&ttlvHead, 3, "hello world");

Quos_ttlvAddIdStruct

添加节点数据 struct。

函数原型

c
qbool Quos_ttlvAddIdStruct(void **ttlvHead, quint16_t id, void *vStruct);

参数说明

  • 输入参数

    • void **ttlvHead:ttlv 节点。
    • quint16_tid:节点 id。
    • void *vStruct:节点 value。
  • 输出参数

    • 无。
  • 返回值

    • TRUE:执行成功,FALSE:执行失败。

调用示例

c
void *ttlvHead = NULL;
void *ttlvArrayHead = NULL;
Quos_ttlvAddIdInt(&ttlvArrayHead, 1, 11);
Quos_ttlvAddIdBool(&ttlvArrayHead, 2, FALSE);
Quos_ttlvAddIdFloat(&ttlvArrayHead, 3, 5.7);
Quos_ttlvAddIdStruct(&ttlvHead, 6, ttlvArrayHead);

Quos_ttlvGetNodeType

获取节点数据类型。

函数原型

c
qbool Quos_ttlvGetNodeType(const void *ttlvNode, Quos_dpDataType_e *type);

参数说明

  • 输入参数

    • void **ttlvNode:ttlv 节点。
  • 输出参数

    • Quos_dpDataType_etype:节点数据类型。

    • 具体取值见下表:

      取值描述
      QUOS_DPDATA_TYPE_BOOL数据类型 bool
      QUOS_DPDATA_TYPE_INT数据类型 int
      QUOS_DPDATA_TYPE_FLOAT数据类型 float
      QUOS_DPDATA_TYPE_TEXT数据类型 text
      QUOS_DPDATA_TYPE_STRUCT数据类型 struct
      QUOS_DPDATA_TYPE_RAW数据类型 raw
  • 返回值

    • TRUE:执行成功,FALSE:执行失败。

调用示例

c
void *ttlvHead = NULL;
Quos_dpDataType_e type = 0;
Quos_ttlvAddIdText(&ttlvHead, 3, "hello world");
Quos_ttlvGetNodeType(ttlvHead, &type);

Quos_ttlvGetNodeBool

获取节点数据 bool。

函数原型

c
qbool Quos_ttlvGetNodeBool(const void *ttlvNode, qbool *value);

参数说明

  • 输入参数

    • void **ttlvNode:ttlv 节点。
  • 输出参数

    • qboolvalue:节点数据。
  • 返回值

    • TRUE:执行成功,FALSE:执行失败。

调用示例

c
void *ttlvHead = NULL;
qbool val = 0;
Quos_ttlvAddIdBool(&ttlvHead, 1, TRUE);
Quos_ttlvGetNodeBool(ttlvHead, &val);

Quos_ttlvGetNodeInt

获取节点数据 int。

函数原型

c
qbool Quos_ttlvGetNodeInt(const void *ttlvNode, qint64_t *value);

参数说明

  • 输入参数

    • void **ttlvNode:ttlv 节点。
  • 输出参数

    • qint64_tvalue:节点数据。
  • 返回值

    • TRUE:执行成功,FALSE:执行失败。

调用示例

c
void *ttlvHead = NULL;
qint64_t val = 0;
Quos_ttlvAddIdInt(&ttlvHead, 2, 23);
Quos_ttlvGetNodeInt(ttlvHead, &val);

Quos_ttlvGetNodeFloat

获取节点数据 float。

函数原型

c
qbool Quos_ttlvGetNodeFloat(const void *ttlvNode, double *value);

参数说明

  • 输入参数

    • void **ttlvNode:ttlv 节点。
  • 输出参数

    • doublevalue:节点数据。
  • 返回值

    • TRUE:执行成功,FALSE:执行失败。

调用示例

c
void *ttlvHead = NULL;
double val = 0.0;
Quos_ttlvAddIdFloat(&ttlvHead, 4, 18.5);
Quos_ttlvGetNodeFloat(ttlvHead, &val);

Quos_ttlvGetNodeText

获取节点数据 text。

函数原型

c
quint32_t Quos_ttlvGetNodeText(const void *ttlvNode, char **value)

参数说明

  • 输入参数

    • void **ttlvNode:ttlv 节点。
  • 输出参数

    • quint8_t **value:ttlv 数据。
  • 返回值

    • 节点数据长度。

调用示例

c
void *ttlvHead = NULL;
Quos_ttlvAddIdText(&ttlvHead, 3, "hello world");
char *ch = NULL;
Quos_ttlvGetNodeText(ttlvHead, &ch);

Quos_ttlvGetNodeStruct

获取节点数据 struct。

函数原型

c
void *Quos_ttlvGetNodeStruct(const void *ttlvNode);

参数说明

  • 输入参数

    • void **ttlvNode:ttlv 节点。
  • 输出参数

    • 无。
  • 返回值

    • 节点数据。

调用示例

c
void *ttlvHead = NULL;
void *ttlvArrayHead = NULL;
Quos_ttlvAddIdInt(&ttlvArrayHead, 1, 11);
Quos_ttlvAddIdBool(&ttlvArrayHead, 2, FALSE);
Quos_ttlvAddIdFloat(&ttlvArrayHead, 3, 5.7);
Quos_ttlvAddIdStruct(&ttlvHead, 6, ttlvArrayHead);
void *st = Quos_ttlvGetNodeStruct(ttlvHead);

Quos_ttlvGetNodeRaw

获取节点数据 raw。

函数原型

c
quint32_t Quos_ttlvGetNodeRaw(const void *ttlvNode, quint8_t **value);

参数说明

  • 输入参数

    • void **ttlvNode:ttlv 节点。
  • 输出参数

    • quint8_t **value:ttlv 数据。
  • 返回值

    • 节点数据长度。

调用示例

c
void *ttlvHead = NULL;
quint8_t *value = NULL;
Quos_ttlvAddIdRaw(&ttlvHead, 5, buf, sizeof(buf));
quint32_t len = Quos_ttlvGetNodeRaw(ttlvHead, &value);

Quos_ttlvGetIdType

获取指定 ID 节点数据类型。

函数原型

c
qbool Quos_ttlvGetIdType(const void *ttlvHead, quint16_t id, Quos_dpDataType_e *type);

参数说明

  • 输入参数

    • void **ttlvNode:ttlv 节点。
    • quint16_tid:ttlv id。
  • 输出参数

    • Quos_dpDataType_e *type:ttlv 数据类型。
  • 返回值

    • TRUE:执行成功,FALSE:执行失败。

调用示例

c
void *ttlvHead = NULL;
Quos_dpDataType_e type = 0;
Quos_ttlvAddIdText(&ttlvHead, 3, "hello world");
Quos_ttlvGetIdType(ttlvHead, 3, &type);

Quos_ttlvGetIdBool

获取指定 ID 节点数据 bool。

函数原型

c
qbool Quos_ttlvGetIdBool(const void *ttlvHead, quint16_t id, qbool *value);

参数说明

  • 输入参数

    • void **ttlvNode:ttlv 节点。
    • quint16_tid:ttlv id。
  • 输出参数

    • qbool *value:ttlv 数据。
  • 返回值

    • TRUE:执行成功,FALSE:执行失败。

调用示例

c
void *ttlvHead = NULL;
qbool value = 0;
Quos_ttlvAddIdBool(&ttlvHead, 1, TRUE);
Quos_ttlvGetIdBool(ttlvHead, 1, &value);

Quos_ttlvGetIdInt

获取指定 ID 节点数据 int。

函数原型

c
qbool Quos_ttlvGetIdInt(const void *ttlvHead, quint16_t id, qint64_t *value);

参数说明

  • 输入参数

    • void **ttlvNode:ttlv 节点。
    • quint16_tid:ttlv id。
  • 输出参数

    • qint64_t *value:ttlv 数据。
  • 返回值

    • TRUE:执行成功,FALSE:执行失败。

调用示例

c
void *ttlvHead = NULL;
qint64_t value = 0;
Quos_ttlvAddIdInt(&ttlvHead, 2, 23);
Quos_ttlvGetIdInt(ttlvHead, 2, &value);

Quos_ttlvGetIdFloat

获取指定 ID 节点数据 float。

函数原型

c
qbool Quos_ttlvGetIdFloat(const void *ttlvHead, quint16_t id, double *value);

参数说明

  • 输入参数

    • void **ttlvNode:ttlv 节点。
    • quint16_tid:ttlv id。
  • 输出参数

    • double *value:ttlv 数据。
  • 返回值

    • TRUE:执行成功,FALSE:执行失败。

调用示例

c
void *ttlvHead = NULL;
double value = 0.0;
Quos_ttlvAddIdFloat(&ttlvHead, 4, 18.5);
Quos_ttlvGetIdFloat(ttlvHead, 4, &value);

Quos_ttlvGetIdText

获取指定 ID 节点数据 text。

函数原型

c
quint32_t Quos_ttlvGetIdText(const void *ttlvHead, quint16_t id, char **value);

参数说明

  • 输入参数

    • void **ttlvNode:ttlv 节点。
    • quint16_tid:ttlv id。
  • 输出参数

    • quint8_t **value:ttlv 数据。
  • 返回值

    • 数据长度。

调用示例

c
void *ttlvHead = NULL;
Quos_ttlvAddIdText(&ttlvHead, 3, "hello world");
char *ch = NULL;
Quos_ttlvGetIdText(ttlvHead, 3, &ch);

Quos_ttlvGetIdStruct

获取指定 ID 节点数据 struct。

函数原型

c
void *Quos_ttlvGetIdStruct(const void *ttlvHead, quint16_t id);

参数说明

  • 输入参数

    • void **ttlvNode:ttlv 节点。
    • quint16_tid:ttlv id。
  • 输出参数

    • 无。
  • 返回值

    • ttlv 数据。

调用示例

c
void *ttlvHead = NULL;
void *ttlvArrayHead = NULL;
Quos_ttlvAddIdInt(&ttlvArrayHead, 1, 11);
Quos_ttlvAddIdBool(&ttlvArrayHead, 2, FALSE);
Quos_ttlvAddIdFloat(&ttlvArrayHead, 3, 5.7);
Quos_ttlvAddIdStruct(&ttlvHead, 6, ttlvArrayHead);
void *st = Quos_ttlvGetIdStruct(ttlvHead, 6);

Quos_ttlvGetIdRaw

获取指定 ID 节点数据 raw。

函数原型

c
quint32_t Quos_ttlvGetIdRaw(const void *ttlvHead, quint16_t id, quint8_t **value);

参数说明

  • 输入参数

    • void **ttlvNode:ttlv 节点。
    • quint16_tid:ttlv id。
  • 输出参数

    • quint8_t **value:ttlv 数据。
  • 返回值

    • 数据长度。

调用示例

c
void *ttlvHead = NULL;
quint8_t *value = NULL;
quint8_t buf[5] = {'a', 'b', 'c', 'd', 'e'};
Quos_ttlvAddIdRaw(&ttlvHead, 5, buf, sizeof(buf));
quint32_t len = Quos_ttlvGetIdRaw(ttlvHead, 5, &value);

Quos_ttlvGetCount

获取节点个数。

函数原型

c
quint32_t Quos_ttlvGetCount(const void *ttlvHead);

参数说明

  • 输入参数

    • void **ttlvHead:ttlv 节点。
  • 输出参数

    • 无。
  • 返回值

    • 节点个数。

调用示例

c
void *ttlvHead = NULL;
Quos_ttlvAddIdBool(&ttlvHead, 1, TRUE);
Quos_ttlvAddIdInt(&ttlvHead, 2, 23);
Quos_ttlvAddIdText(&ttlvHead, 3, "hello world");
quint32_t len = Quos_ttlvGetCount(ttlvHead);

Quos_ttlvGetNode

获取节点指针。

函数原型

c
void *Quos_ttlvGetNode(const void *ttlvHead, quint16_t index, quint16_t *id, Quos_dpDataType_e *type);

参数说明

  • 输入参数

    • void **ttlvHead:ttlv 节点。
    • quint16_tindex:节点索引。
  • 输出参数

    • quint16_t *id:节点 id。
    • Quos_dpDataType_e *type:节点类型。
  • 返回值

    • 节点指针。

调用示例

c
void *ttlvHead = NULL;
quint16_t id = 0;
Quos_dpDataType_e type = 0;
Quos_ttlvAddIdBool(&ttlvHead, 1, TRUE);
void *ptr = Quos_ttlvGetNode(ttlvHead, 0, &id, &type);

Quos_ttlvRemove

删除节点。

函数原型

c
void Quos_ttlvRemove(void **ttlvHead, quint16_t id);

参数说明

  • 输入参数

    • void **ttlvHead:ttlv 节点。
    • quint16_tid:节点 id。
  • 输出参数

    • 无。
  • 返回值

    • 无。

调用示例

c
void *ttlvHead = NULL;
Quos_ttlvAddIdBool(&ttlvHead, 1, TRUE);
Quos_ttlvRemove(&ttlvHead, 1);

Quos_ttlvFree

释放节点。

函数原型

c
void Quos_ttlvFree(void **ttlvHead);

参数说明

  • 输入参数

    • void **ttlvHead:ttlv 节点。
  • 输出参数

    • 无。
  • 返回值

    • 无。

调用示例

c
void *ttlvHead = NULL;
Quos_ttlvAddIdBool(&ttlvHead, 1, TRUE);
Quos_ttlvFree(&ttlvHead);

Quos_ttlvUnformat

将字节流转成 ttlv 节点。

函数原型

c
void *Quos_ttlvUnformat(const quint8_t *buffer, quint32_t len);

参数说明

  • 输入参数

    • quint8_t *buffer:字节数据。
    • quint32_tlen:字节数据长度。
  • 输出参数

    • 无。
  • 返回值

    • ttlv 节点。

调用示例

c
void *ttlvHead = Quos_ttlvUnformat(payload, payloadLen);

Quos_ttlvFormat

将 ttlv 节点转成字节流。

函数原型

c
quint32_t Quos_ttlvFormat(const void *ttlvHead, quint8_t *retBuf);

参数说明

  • 输入参数

    • void *ttlvHead:ttlv 节点。
  • 输出参数

    • quint8_tretBuf:字节数据。
  • 返回值

    • 字节数据长度。

调用示例

c
void *ttlvHead = NULL;
quint8_t buf[128] = {0};
Quos_ttlvAddIdBool(&ttlvHead, 1, TRUE);
quint32_t len = Quos_ttlvFormat(ttlvHead, buf);

Quos_ttlvFormatLen

将 ttlv 节点转成字节流长度。

函数原型

c
quint32_t Quos_ttlvFormatLen(const void *ttlvHead);

参数说明

  • 输入参数

    • void *ttlvHead:ttlv 节点。
  • 输出参数

    • 无。
  • 返回值

    • 字节数据长度。

调用示例

c
void *ttlvHead = NULL;
Quos_ttlvAddIdBool(&ttlvHead, 1, TRUE);
quint32_t len = Quos_ttlvFormatLen(ttlvHead);

Quos_ttlvHeadPrintf

打印 ttlv 内容。

函数原型

c
void Quos_ttlvHeadPrintf(const void *ttlvHead);

参数说明

  • 输入参数

    • void *ttlvHead:ttlv 节点。
  • 输出参数

    • 无。
  • 返回值

    • 无。

调用示例

c
void *ttlvHead = NULL;
Quos_ttlvAddIdBool(&ttlvHead, 1, TRUE);
Quos_ttlvHeadPrintf(ttlvHead);

Quos_json2Ttlv

json 转 ttlv。

函数原型

c
void *Quos_json2Ttlv(const Quos_cjson_t *json);

参数说明

  • 输入参数

    • Quos_cjson_t *json:json 对象。
  • 输出参数

    • 无。
  • 返回值

    • ttlv 节点。

调用示例

c
Quos_cjson_t * js = NULL;
void *ttlvHead = NULL;
js = Quos_cjsonCreateNumber(120);
ttlvHead = Quos_json2Ttlv(js);

Quos_ttlv2Json

ttlv 转 json。

函数原型

c
Quos_cjson_t *Quos_ttlv2Json(const void *ttlvHead);

参数说明

  • 输入参数

    • void *ttlvHead:ttlv 节点。
  • 输出参数

    • 无。
  • 返回值

    • json 对象。

调用示例

c
Quos_cjson_t * js = NULL;
void *ttlvHead = NULL;
Quos_ttlvAddIdBool(&ttlvHead, 1, TRUE);
js = Quos_ttlv2Json(ttlvHead);

错误码列表

枚举值十六进制十进制描述
OPRT_OK-0x0000-0执行成功