feat: 寫入 inst char 以及讀取 data char 會在 rtt 顯示

This commit is contained in:
chain40
2024-05-21 00:28:15 +08:00
parent d3812a8b72
commit 14a4dec57b
+45 -15
View File
@@ -174,8 +174,22 @@ static void on_ins_connect(ins_connect_t *p_ins)
static void on_ins_write_char(ins_write_char_t *p_ins)
{
NRF_LOG_INFO("write handle: 0x%02X", p_ins->handle);
uint16_t write_size = p_ins->len - sizeof(p_ins->handle) - 1;
NRF_LOG_INFO("write handle: 0x%02X", p_ins->handle);
{
uint8_t *p_start = (void *)p_ins->write_data;
uint32_t loop = write_size / 8;
uint32_t remain = write_size % 8;
for (int i = 0; i < loop; i++)
{
NRF_LOG_HEXDUMP_INFO(p_start, 8);
p_start += 8;
}
if (remain)
{
NRF_LOG_HEXDUMP_INFO(p_start, remain);
}
}
extern ret_code_t le_gatt_c_write_req(uint32_t handle, void *, uint16_t);
ret_code_t err_code = le_gatt_c_write_req(p_ins->handle, p_ins->write_data, write_size);
@@ -202,22 +216,38 @@ static void on_ins_survive(ins_survive_t *p_ins)
success_ack();
}
typedef struct
{
uint16_t rsp_code;
union
{
uint8_t len;
uint8_t payload[256];
};
} __PACKED read_char_rsp_t;
read_char_rsp_t read_char_rsp;
void host_read_char_cb(uint8_t *p_data, uint16_t len)
{
read_char_rsp.rsp_code = 0x0004;
memcpy(&read_char_rsp.len, p_data, len);
uart_drv_tx(&read_char_rsp, offsetof(read_char_rsp_t, payload) + len);
static union
{
struct
{
uint16_t rsp_code;
uint8_t payload[];
};
uint8_t arr[256];
} read_char_rsp = {
.rsp_code = 0x0004
};
memcpy(read_char_rsp.payload, p_data, len);
uart_drv_tx(&read_char_rsp, sizeof(read_char_rsp.rsp_code) + len);
{
uint8_t *p_start = p_data;
uint32_t loop = len / 8;
uint32_t remain = len % 8;
for (int i = 0; i < loop; i++)
{
NRF_LOG_HEXDUMP_INFO(p_start, 8);
p_start += 8;
}
if (remain)
{
NRF_LOG_HEXDUMP_INFO(p_start, remain);
}
}
}
typedef struct