120 lines
2.6 KiB
C
120 lines
2.6 KiB
C
#include <stdint.h>
|
|
#include <string.h>
|
|
#include "proto.h"
|
|
#include "uartRb.h"
|
|
|
|
static __inline void pt_fill_rsp(pkt_t *pkt, uint8_t rsp, uint8_t len)
|
|
{
|
|
pkt->type = PT_TYPE_RSP;
|
|
pkt->code = rsp;
|
|
pkt->len = len;
|
|
}
|
|
|
|
/*static __inline*/ void pt_send_rsp(pkt_t *pkt)
|
|
{
|
|
uart_send(UART1_PORT, pkt->len + PKT_HDR_SIZE, (uint8_t *)pkt);
|
|
}
|
|
|
|
/* Common: Status */
|
|
void pt_rsp_code(uint8_t rsp)
|
|
{
|
|
PKT_ALLOC(PLEN_RSP_CODE);
|
|
pt_fill_rsp(pkt, rsp, PLEN_RSP_CODE);
|
|
|
|
pt_send_rsp(pkt);
|
|
}
|
|
|
|
void pt_rsp_cmd_res(uint8_t opcode, uint8_t status, uint8_t len, const void *payl)
|
|
{
|
|
PKT_ALLOC(PLEN_RSP_CMD_RES);
|
|
pt_fill_rsp(pkt, PT_RSP_CMD_RES, len + 2);
|
|
|
|
PKT_PARAM(struct pt_rsp_cmd_res);
|
|
param->opcode = opcode;
|
|
param->status = status;
|
|
|
|
memcpy(param->data, payl, len);
|
|
|
|
pt_send_rsp(pkt);
|
|
}
|
|
|
|
void pt_rsp_le_data_rep(uint16_t handle, uint8_t len, const void *payl)
|
|
{
|
|
PKT_ALLOC(PLEN_RSP_LE_DATA_REP);
|
|
pt_fill_rsp(pkt, PT_RSP_LE_DATA_REP, len + 2);
|
|
|
|
PKT_PARAM(struct pt_rsp_le_data_rep);
|
|
param->handle[0] = handle;
|
|
param->handle[1] = handle >> 8;
|
|
|
|
memcpy(param->data, payl, len);
|
|
// memcpy(&pkt->payl[2], payl, len);
|
|
pt_send_rsp(pkt);
|
|
}
|
|
|
|
void pt_rsp_status_res(uint8_t status)
|
|
{
|
|
PKT_ALLOC(PLEN_RSP_STATUS);
|
|
pt_fill_rsp(pkt, PT_RSP_STATUS_RES, PLEN_RSP_STATUS);
|
|
|
|
PKT_PARAM(struct pt_rsp_status);
|
|
param->status = status;
|
|
|
|
pt_send_rsp(pkt);
|
|
}
|
|
|
|
void pt_rsp_nvram_rep(const void *payl)
|
|
{
|
|
PKT_ALLOC(PLEN_RSP_NVRAM_REP);
|
|
pt_fill_rsp(pkt, PT_RSP_NVRAM_REP, PLEN_RSP_NVRAM_REP);
|
|
|
|
memcpy(pkt->payl, payl, PLEN_RSP_NVRAM_REP);
|
|
|
|
pt_send_rsp(pkt);
|
|
}
|
|
|
|
void pt_rsp_key(uint8_t opcode, uint8_t len, const void *payl)
|
|
{
|
|
PKT_ALLOC(PLEN_RSP_GKEY);
|
|
pt_fill_rsp(pkt, opcode, len);
|
|
|
|
memcpy(pkt->payl, payl, len);
|
|
|
|
pt_send_rsp(pkt);
|
|
}
|
|
|
|
void pt_rsp_le_pairing_state(uint16_t state)
|
|
{
|
|
PKT_ALLOC(PLEN_RSP_LE_PAIRING_STATE);
|
|
pt_fill_rsp(pkt, PT_RSP_LE_PAIRING_STATE, PLEN_RSP_LE_PAIRING_STATE);
|
|
|
|
PKT_PARAM(struct pt_rsp_le_pairing_state);
|
|
param->state[0] = state;
|
|
param->state[1] = state >> 8;
|
|
|
|
pt_send_rsp(pkt);
|
|
}
|
|
|
|
void pt_rsp_le_encryption_state(uint8_t state)
|
|
{
|
|
PKT_ALLOC(PLEN_RSP_LE_ENCRYPTION_STATE);
|
|
pt_fill_rsp(pkt, PT_RSP_LE_ENCRYPTION_STATE, PLEN_RSP_LE_ENCRYPTION_STATE);
|
|
|
|
PKT_PARAM(struct pt_rsp_le_encryption_state);
|
|
param->state = state;
|
|
|
|
pt_send_rsp(pkt);
|
|
}
|
|
|
|
void pt_rsp_uuid_handle(uint16_t handle)
|
|
{
|
|
PKT_ALLOC(PLEN_RSP_UUID_HANDLE);
|
|
pt_fill_rsp(pkt, PT_RSP_UUID_HANDLE, PLEN_RSP_UUID_HANDLE);
|
|
|
|
PKT_PARAM(struct pt_rsp_uuid_handle);
|
|
param->handle[0] = handle;
|
|
param->handle[1] = handle >> 8;
|
|
|
|
pt_send_rsp(pkt);
|
|
}
|