修复一个ipc传输的bug

This commit is contained in:
zhangzheng
2023-10-06 21:18:23 +08:00
parent 0efc5d7f11
commit 3f03b4c3bc
22 changed files with 1369 additions and 1312 deletions

View File

@@ -286,97 +286,8 @@ RPC_TYPE_DEF_ALL(int) //!< 定义所有的
* @brief 定义一个32字节长度的数组
*
*/
// RPC_ARRAY_DEF(uint32_t, uint8_t, 32)
typedef struct rpc_array_uint32_t_uint8_t_32
{
uint32_t len;
uint8_t data[32];
} rpc_array_uint32_t_uint8_t_32_t;
static inline int rpc_svr_msg_to_buf_rpc_array_uint32_t_uint8_t_32_t(rpc_array_uint32_t_uint8_t_32_t *d, uint8_t *buf, int len)
{
if (rpc_align(len, __alignof(d->len)) > 96)
{
return -1024;
}
len = rpc_align(len, __alignof(d->len));
*((typeof(d->len) *)(&buf[len])) = d->len;
if (rpc_align(len, __alignof(d->data[0]) + d->len * sizeof(d->data[0])) > 96)
{
return -1024;
}
len += sizeof(d->len);
len = rpc_align(len, __alignof(d->data[0]));
for (int i = 0; i < d->len * sizeof(d->data[0]); i++)
{
buf[i + len] = ((uint8_t *)(d->data))[i];
}
len += d->len * sizeof(d->data[0]);
return len;
}
static inline int rpc_svr_buf_to_msg_rpc_array_uint32_t_uint8_t_32_t(rpc_array_uint32_t_uint8_t_32_t *d, uint8_t *buf, int len, int max)
{
if (rpc_align(len, __alignof(d->len)) > max)
{
return -1024;
}
len = rpc_align(len, __alignof(d->len));
d->len = *((typeof(d->len) *)(&buf[len]));
if (rpc_align(len, __alignof(d->data[0]) + d->len * sizeof(d->data[0])) > max)
{
return -1024;
}
len += sizeof(d->len);
len = rpc_align(len, __alignof(d->data[0]));
for (int i = 0; i < d->len * sizeof(d->data[0]); i++)
{
((uint8_t *)(d->data))[i] = buf[i + len];
}
len += d->len * sizeof(d->data[0]);
return len;
}
static inline int rpc_cli_msg_to_buf_rpc_array_uint32_t_uint8_t_32_t(rpc_array_uint32_t_uint8_t_32_t *d, uint8_t *buf, int len)
{
if (rpc_align(len, __alignof(d->len)) > 96)
{
return -1024;
}
len = rpc_align(len, __alignof(d->len));
*((typeof(d->len) *)(&buf[len])) = d->len;
if (rpc_align(len, __alignof(d->data[0]) + d->len * sizeof(d->data[0])) > 96)
{
return -1024;
}
len += sizeof(d->len);
len = rpc_align(len, __alignof(d->data[0]));
for (int i = 0; i < d->len * sizeof(d->data[0]); i++)
{
buf[i + len] = ((uint8_t *)(d->data))[i];
}
len += d->len * sizeof(d->data[0]);
return len;
}
static inline int rpc_cli_buf_to_msg_rpc_array_uint32_t_uint8_t_32_t(rpc_array_uint32_t_uint8_t_32_t *d, uint8_t *buf, int len, int max)
{
if (rpc_align(len, __alignof(d->len)) > max)
{
return -1024;
}
len = rpc_align(len, __alignof(d->len));
d->len = *((typeof(d->len) *)(&buf[len]));
if (rpc_align(len, __alignof(d->data[0]) + d->len * sizeof(d->data[0])) > max)
{
return -1024;
}
len += sizeof(d->len);
len = rpc_align(len, __alignof(d->data[0]));
for (int i = 0; i < d->len * sizeof(d->data[0]); i++)
{
((uint8_t *)(d->data))[i] = buf[i + len];
}
len += d->len * sizeof(d->data[0]);
return len;
}
static inline void rpc_var_rpc_array_uint32_t_uint8_t_32_t_init(rpc_array_uint32_t_uint8_t_32_t *d) {}
RPC_ARRAY_DEF(uint32_t, uint8_t, 32)
/**
* @brief 引用类型的数组定义,数组的数据来自其它地方
*