lllllliu
2022-12-13 17:09:07 +08:00
```c
typedef struct dsp_buf_t {
uint16_t head;
uint16_t buf_len;
uint16_t cmd;
uint16_t data_len;
uint8_t data_and_crc[];
} dsp_buf_t;
static dsp_buf_t *get_buffer(size_t data_size, void *data, uint16_t cmd) {
dsp_buf_t *buffer = lv_mem_alloc(sizeof(dsp_buf_t) + data_size + sizeof(uint8_t) * 2);
buffer->head = 0X55AA;
buffer->cmd = cmd;
buffer->data_len = data_size;
buffer->buf_len = buffer->data_len + 6; //cmd + data_len + data + crc
lv_memcpy(buffer->data_and_crc, data, buffer->data_len);
uint16_t crc = crc16_Count((uint8_t *) &buffer->cmd, buffer->data_len + 4);
buffer->data_and_crc[buffer->data_len] = (crc >> 8) & 0xFF;
buffer->data_and_crc[buffer->data_len + 1] = crc & 0xFF;
return buffer;
}
```