## rbuffer\_t ### 概述 Read Buffer。用于数据解包。 示例: ```c uint8_t buff[128]; wbuffer_t wbuffer; rbuffer_t rbuffer; const char* str = NULL; wbuffer_init(&wbuffer, buff, sizeof(buff)); wbuffer_write_string(&wbuffer, "hello awtk"); rbuffer_init(&rbuffer, wbuffer.data, wbuffer.cursor); rbuffer_read_string(&rbuffer, &str); ``` ### 函数

| 函数名称 | 说明 | | -------- | ------------ | | rbuffer\_has\_more | 判断是否还有数据可读。 | | rbuffer\_init | 初始rbuffer对象。 | | rbuffer\_peek\_uint16 | 读取uint16数据,但不改变cursor的位置。 | | rbuffer\_peek\_uint32 | 读取uint32数据,但不改变cursor的位置。 | | rbuffer\_peek\_uint8 | 读取uint8数据,但不改变cursor的位置。 | | rbuffer\_read\_binary | 读取指定长度的二进制数据。 | | rbuffer\_read\_float | 读取float数据。 | | rbuffer\_read\_string | 读取字符串。 | | rbuffer\_read\_uint16 | 读取uint16数据。 | | rbuffer\_read\_uint32 | 读取uint32数据。 | | rbuffer\_read\_uint8 | 读取uint8数据。 | | rbuffer\_skip | 跳过指定的长度。 | ### 属性

| 名属性称 | 类型 | 说明 | | -------- | ----- | ------------ | | capacity | uint32\_t | 缓存区最大容量。 | | cursor | uint32\_t | 当前读取位置。 | | data | uint8\_t* | 缓存区。 | #### rbuffer\_has\_more 函数 ----------------------- * 函数功能: >

判断是否还有数据可读。 * 函数原型: ``` bool_t rbuffer_has_more (rbuffer_t* rbuffer); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | bool\_t | 返回TRUE表示还有数据可读,否则表示无数据可读。 | | rbuffer | rbuffer\_t* | rbuffer对象。 | #### rbuffer\_init 函数 ----------------------- * 函数功能: >

初始rbuffer对象。 * 函数原型: ``` rbuffer_t* rbuffer_init (rbuffer_t* rbuffer, uint8_t* data, uint16_t capacity); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | rbuffer\_t* | rbuffer对象本身。 | | rbuffer | rbuffer\_t* | rbuffer对象。 | | data | uint8\_t* | 缓冲区。 | | capacity | uint16\_t | 缓冲区的容量。 | #### rbuffer\_peek\_uint16 函数 ----------------------- * 函数功能: >

读取uint16数据,但不改变cursor的位置。 * 函数原型: ``` ret_t rbuffer_peek_uint16 (rbuffer_t* rbuffer, uint16_t* value); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | rbuffer | rbuffer\_t* | rbuffer对象。 | | value | uint16\_t* | 读取的数据。 | #### rbuffer\_peek\_uint32 函数 ----------------------- * 函数功能: >

读取uint32数据,但不改变cursor的位置。 * 函数原型: ``` ret_t rbuffer_peek_uint32 (rbuffer_t* rbuffer, uint32_t* value); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | rbuffer | rbuffer\_t* | rbuffer对象。 | | value | uint32\_t* | 读取的数据。 | #### rbuffer\_peek\_uint8 函数 ----------------------- * 函数功能: >

读取uint8数据,但不改变cursor的位置。 * 函数原型: ``` ret_t rbuffer_peek_uint8 (rbuffer_t* rbuffer, uint8_t* value); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | rbuffer | rbuffer\_t* | rbuffer对象。 | | value | uint8\_t* | 读取的数据。 | #### rbuffer\_read\_binary 函数 ----------------------- * 函数功能: >

读取指定长度的二进制数据。 * 函数原型: ``` ret_t rbuffer_read_binary (rbuffer_t* rbuffer, void* data, uint32_t size); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | rbuffer | rbuffer\_t* | rbuffer对象。 | | data | void* | 读取的数据。 | | size | uint32\_t | 读取的数据长度。 | #### rbuffer\_read\_float 函数 ----------------------- * 函数功能: >

读取float数据。 * 函数原型: ``` ret_t rbuffer_read_float (rbuffer_t* rbuffer, float_t* value); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | rbuffer | rbuffer\_t* | rbuffer对象。 | | value | float\_t* | 读取的数据。 | #### rbuffer\_read\_string 函数 ----------------------- * 函数功能: >

读取字符串。 * 函数原型: ``` ret_t rbuffer_read_string (rbuffer_t* rbuffer, char** str); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | rbuffer | rbuffer\_t* | rbuffer对象。 | | str | char** | 用于返回字符串。 | #### rbuffer\_read\_uint16 函数 ----------------------- * 函数功能: >

读取uint16数据。 * 函数原型: ``` ret_t rbuffer_read_uint16 (rbuffer_t* rbuffer, uint16_t* value); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | rbuffer | rbuffer\_t* | rbuffer对象。 | | value | uint16\_t* | 读取的数据。 | #### rbuffer\_read\_uint32 函数 ----------------------- * 函数功能: >

读取uint32数据。 * 函数原型: ``` ret_t rbuffer_read_uint32 (rbuffer_t* rbuffer, uint32_t* value); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | rbuffer | rbuffer\_t* | rbuffer对象。 | | value | uint32\_t* | 读取的数据。 | #### rbuffer\_read\_uint8 函数 ----------------------- * 函数功能: >

读取uint8数据。 * 函数原型: ``` ret_t rbuffer_read_uint8 (rbuffer_t* rbuffer, uint8_t* value); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | rbuffer | rbuffer\_t* | rbuffer对象。 | | value | uint8\_t* | 读取的数据。 | #### rbuffer\_skip 函数 ----------------------- * 函数功能: >

跳过指定的长度。 * 函数原型: ``` ret_t rbuffer_skip (rbuffer_t* rbuffer, int32_t offset); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | rbuffer | rbuffer\_t* | rbuffer对象。 | | offset | int32\_t | 跳过的偏移量,正数往前负数往回跳。 | #### capacity 属性 ----------------------- >

缓存区最大容量。 * 类型:uint32\_t | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | #### cursor 属性 ----------------------- >

当前读取位置。 * 类型:uint32\_t | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | #### data 属性 ----------------------- >

缓存区。 * 类型:uint8\_t* | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 |