awtk/docs/manual/wbuffer_t.md

336 lines
9.0 KiB
Markdown
Raw Normal View History

2018-12-20 17:33:31 +08:00
## wbuffer\_t
### 概述
2019-12-14 13:25:56 +08:00
Write 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);
```
```c
wbuffer_t wbuffer;
wbuffer_init_extendable(&wbuffer);
wbuffer_write_string(&wbuffer, "hello awtk");
wbuffer_deinit(&wbuffer);
```
> 如果初始化为extendable则最后需要调用wbuffer\_deinit释放资源。
2019-01-15 14:34:05 +08:00
----------------------------------
2018-12-20 17:33:31 +08:00
### 函数
<p id="wbuffer_t_methods">
| 函数名称 | 说明 |
| -------- | ------------ |
2018-12-27 15:28:20 +08:00
| <a href="#wbuffer_t_wbuffer_deinit">wbuffer\_deinit</a> | 释放资源。 |
2019-12-30 12:44:15 +08:00
| <a href="#wbuffer_t_wbuffer_extend_capacity">wbuffer\_extend\_capacity</a> | 扩展缓冲区至指定的大小。 |
2020-04-27 08:36:57 +08:00
| <a href="#wbuffer_t_wbuffer_has_room">wbuffer\_has\_room</a> | 是否还有空间。 |
2018-12-21 12:11:40 +08:00
| <a href="#wbuffer_t_wbuffer_init">wbuffer\_init</a> | 初始wbuffer对象。 |
2019-12-30 12:44:15 +08:00
| <a href="#wbuffer_t_wbuffer_init_extendable">wbuffer\_init\_extendable</a> | 初始wbuffer对象容量不够时是否支持自动扩展使用完成后需要调用wbuffer\_deinit释放资源。 |
2018-12-21 12:11:40 +08:00
| <a href="#wbuffer_t_wbuffer_skip">wbuffer\_skip</a> | 跳过指定的长度。 |
| <a href="#wbuffer_t_wbuffer_write_binary">wbuffer\_write\_binary</a> | 写入指定长度的二进制数据。 |
| <a href="#wbuffer_t_wbuffer_write_float">wbuffer\_write\_float</a> | 写入float数据。 |
| <a href="#wbuffer_t_wbuffer_write_string">wbuffer\_write\_string</a> | 写入字符串。 |
| <a href="#wbuffer_t_wbuffer_write_uint16">wbuffer\_write\_uint16</a> | 写入uint16数据。 |
| <a href="#wbuffer_t_wbuffer_write_uint32">wbuffer\_write\_uint32</a> | 写入uint32数据。 |
| <a href="#wbuffer_t_wbuffer_write_uint8">wbuffer\_write\_uint8</a> | 写入uint8数据。 |
2018-12-20 17:33:31 +08:00
### 属性
<p id="wbuffer_t_properties">
2019-01-17 15:56:15 +08:00
| 属性名称 | 类型 | 说明 |
2018-12-20 17:33:31 +08:00
| -------- | ----- | ------------ |
2019-12-30 12:44:15 +08:00
| <a href="#wbuffer_t_capacity">capacity</a> | uint32\_t | 数据缓冲区最大容量。 |
2018-12-21 18:29:29 +08:00
| <a href="#wbuffer_t_cursor">cursor</a> | uint32\_t | 当前写入位置。 |
2019-12-30 12:44:15 +08:00
| <a href="#wbuffer_t_data">data</a> | uint8\_t* | 数据缓冲区。用于保存写入的数据。 |
| <a href="#wbuffer_t_extendable">extendable</a> | bool\_t | 容量不够时是否支持自动扩展。 |
2018-12-27 15:28:20 +08:00
#### wbuffer\_deinit 函数
-----------------------
* 函数功能:
2019-11-15 11:33:43 +08:00
> <p id="wbuffer_t_wbuffer_deinit">释放资源。
2019-10-16 09:02:32 +08:00
2018-12-27 15:28:20 +08:00
* 函数原型:
```
ret_t wbuffer_deinit (wbuffer_t* wbuffer);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
2019-09-30 17:11:53 +08:00
#### wbuffer\_extend\_capacity 函数
2018-12-21 18:29:29 +08:00
-----------------------
* 函数功能:
2019-12-30 12:44:15 +08:00
> <p id="wbuffer_t_wbuffer_extend_capacity">扩展缓冲区至指定的大小。
2019-10-16 09:02:32 +08:00
2019-09-30 17:11:53 +08:00
* 函数原型:
```
ret_t wbuffer_extend_capacity (wbuffer_t* wbuffer, uint32_t capacity);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
2019-12-30 12:44:15 +08:00
| capacity | uint32\_t | 缓冲区的容量。 |
2020-04-27 08:36:57 +08:00
#### wbuffer\_has\_room 函数
-----------------------
* 函数功能:
> <p id="wbuffer_t_wbuffer_has_room">是否还有空间。
* 函数原型:
```
bool_t wbuffer_has_room (wbuffer_t* wbuffer, uint32_t size);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | bool\_t | 返回FALSE表示无否则表示有。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
| size | uint32\_t | 空间大小。 |
2019-09-30 17:11:53 +08:00
#### wbuffer\_init 函数
-----------------------
2018-12-21 18:29:29 +08:00
2019-09-30 17:11:53 +08:00
* 函数功能:
2018-12-21 18:29:29 +08:00
2019-11-15 11:33:43 +08:00
> <p id="wbuffer_t_wbuffer_init">初始wbuffer对象。
2019-10-16 09:02:32 +08:00
2018-12-21 11:39:05 +08:00
* 函数原型:
```
wbuffer_t* wbuffer_init (wbuffer_t* wbuffer, uint8_t* data, uint16_t capacity);
```
* 参数说明:
2018-12-20 17:33:31 +08:00
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | wbuffer\_t* | wbuffer对象本身。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
| data | uint8\_t* | 缓冲区。 |
| capacity | uint16\_t | 缓冲区的容量。 |
2018-12-27 15:28:20 +08:00
#### wbuffer\_init\_extendable 函数
-----------------------
* 函数功能:
2019-12-30 12:44:15 +08:00
> <p id="wbuffer_t_wbuffer_init_extendable">初始wbuffer对象容量不够时是否支持自动扩展使用完成后需要调用wbuffer\_deinit释放资源。
2019-10-16 09:02:32 +08:00
2018-12-27 15:28:20 +08:00
* 函数原型:
```
wbuffer_t* wbuffer_init_extendable (wbuffer_t* wbuffer);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | wbuffer\_t* | wbuffer对象本身。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
2018-12-21 18:29:29 +08:00
#### wbuffer\_skip 函数
-----------------------
2018-12-21 11:39:05 +08:00
* 函数功能:
2019-11-15 11:33:43 +08:00
> <p id="wbuffer_t_wbuffer_skip">跳过指定的长度。
2019-10-16 09:02:32 +08:00
2018-12-21 11:39:05 +08:00
* 函数原型:
```
2018-12-27 15:28:20 +08:00
ret_t wbuffer_skip (wbuffer_t* wbuffer, int32_t delta);
2018-12-21 11:39:05 +08:00
```
* 参数说明:
2018-12-20 17:33:31 +08:00
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
2018-12-27 15:28:20 +08:00
| delta | int32\_t | 跳过的偏移量,正数往前负数往回跳。 |
2018-12-21 18:29:29 +08:00
#### wbuffer\_write\_binary 函数
-----------------------
2018-12-21 11:39:05 +08:00
* 函数功能:
2019-11-15 11:33:43 +08:00
> <p id="wbuffer_t_wbuffer_write_binary">写入指定长度的二进制数据。
2019-10-16 09:02:32 +08:00
2018-12-21 11:39:05 +08:00
* 函数原型:
```
ret_t wbuffer_write_binary (wbuffer_t* wbuffer, void* data, uint32_t size);
```
* 参数说明:
2018-12-20 17:33:31 +08:00
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
2019-12-30 12:44:15 +08:00
| data | void* | 要写入的数据。 |
| size | uint32\_t | 要写入的数据长度。 |
2018-12-21 18:29:29 +08:00
#### wbuffer\_write\_float 函数
-----------------------
2018-12-21 11:39:05 +08:00
* 函数功能:
2019-11-15 11:33:43 +08:00
> <p id="wbuffer_t_wbuffer_write_float">写入float数据。
2019-10-16 09:02:32 +08:00
2018-12-21 11:39:05 +08:00
* 函数原型:
```
ret_t wbuffer_write_float (wbuffer_t* wbuffer, float_t value);
```
* 参数说明:
2018-12-20 17:33:31 +08:00
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
2019-12-30 12:44:15 +08:00
| value | float\_t | 要写入的数据。 |
2018-12-21 18:29:29 +08:00
#### wbuffer\_write\_string 函数
-----------------------
2018-12-21 11:39:05 +08:00
* 函数功能:
2019-11-15 11:33:43 +08:00
> <p id="wbuffer_t_wbuffer_write_string">写入字符串。
2019-10-16 09:02:32 +08:00
2018-12-21 11:39:05 +08:00
* 函数原型:
```
ret_t wbuffer_write_string (wbuffer_t* wbuffer, char* data);
```
* 参数说明:
2018-12-20 17:33:31 +08:00
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
2019-12-30 12:44:15 +08:00
| data | char* | 要写入的字符串。 |
2018-12-21 18:29:29 +08:00
#### wbuffer\_write\_uint16 函数
-----------------------
2018-12-21 11:39:05 +08:00
* 函数功能:
2019-11-15 11:33:43 +08:00
> <p id="wbuffer_t_wbuffer_write_uint16">写入uint16数据。
2019-10-16 09:02:32 +08:00
2018-12-21 11:39:05 +08:00
* 函数原型:
```
ret_t wbuffer_write_uint16 (wbuffer_t* wbuffer, uint16_t value);
```
* 参数说明:
2018-12-20 17:33:31 +08:00
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
2019-12-30 12:44:15 +08:00
| value | uint16\_t | 要写入的数据。 |
2018-12-21 18:29:29 +08:00
#### wbuffer\_write\_uint32 函数
-----------------------
2018-12-21 11:39:05 +08:00
* 函数功能:
2019-11-15 11:33:43 +08:00
> <p id="wbuffer_t_wbuffer_write_uint32">写入uint32数据。
2019-10-16 09:02:32 +08:00
2018-12-21 11:39:05 +08:00
* 函数原型:
```
ret_t wbuffer_write_uint32 (wbuffer_t* wbuffer, uint32_t value);
```
* 参数说明:
2018-12-20 17:33:31 +08:00
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
2019-12-30 12:44:15 +08:00
| value | uint32\_t | 要写入的数据。 |
2018-12-21 18:29:29 +08:00
#### wbuffer\_write\_uint8 函数
-----------------------
2018-12-21 11:39:05 +08:00
* 函数功能:
2019-11-15 11:33:43 +08:00
> <p id="wbuffer_t_wbuffer_write_uint8">写入uint8数据。
2019-10-16 09:02:32 +08:00
2018-12-21 11:39:05 +08:00
* 函数原型:
```
ret_t wbuffer_write_uint8 (wbuffer_t* wbuffer, uint8_t value);
```
* 参数说明:
2018-12-20 17:33:31 +08:00
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| wbuffer | wbuffer\_t* | wbuffer对象。 |
2019-12-30 12:44:15 +08:00
| value | uint8\_t | 要写入的数据。 |
2018-12-20 17:33:31 +08:00
#### capacity 属性
-----------------------
2019-12-30 12:44:15 +08:00
> <p id="wbuffer_t_capacity">数据缓冲区最大容量。
2019-10-16 09:02:32 +08:00
2018-12-20 17:33:31 +08:00
* 类型uint32\_t
| 特性 | 是否支持 |
| -------- | ----- |
| 可直接读取 | 是 |
| 可直接修改 | 否 |
#### cursor 属性
-----------------------
2019-11-15 11:33:43 +08:00
> <p id="wbuffer_t_cursor">当前写入位置。
2019-10-16 09:02:32 +08:00
2018-12-20 17:33:31 +08:00
* 类型uint32\_t
| 特性 | 是否支持 |
| -------- | ----- |
| 可直接读取 | 是 |
| 可直接修改 | 否 |
#### data 属性
-----------------------
2019-12-30 12:44:15 +08:00
> <p id="wbuffer_t_data">数据缓冲区。用于保存写入的数据。
2019-10-16 09:02:32 +08:00
2018-12-20 17:33:31 +08:00
* 类型uint8\_t*
| 特性 | 是否支持 |
| -------- | ----- |
| 可直接读取 | 是 |
| 可直接修改 | 否 |
2018-12-27 15:28:20 +08:00
#### extendable 属性
-----------------------
2019-12-30 12:44:15 +08:00
> <p id="wbuffer_t_extendable">容量不够时是否支持自动扩展。
2019-10-16 09:02:32 +08:00
2018-12-27 15:28:20 +08:00
* 类型bool\_t
| 特性 | 是否支持 |
| -------- | ----- |
| 可直接读取 | 是 |
| 可直接修改 | 否 |