Files
CCU621M/app/tcp_ser/ble_link/fc41d_ble_priv.h
T

76 lines
1.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* @file fc41d_ble_priv.h
* @brief FC41D BLE 后端私有上下文(与 tcp_link_ctx_t 在 comm_link 中 union 复用)
*/
#ifndef FC41D_BLE_PRIV_H
#define FC41D_BLE_PRIV_H
#include <stdint.h>
#include "fc41d_ble.h"
#define FC41D_AT_RX_ACC_SIZE 768U
#define FC41D_AT_LINE_MAX 128U
#define FC41D_AT_CMD_MAX 1200U
/** link 解析缓冲(AT 行与 +QBLERECV */
#define FC41D_LINK_RX_NORMAL 512U
/** 固件升级:单包 1024B Base64 JSON + UART 残包 */
#define FC41D_LINK_RX_UPGRADE 2048U
/** 应用 RX 环(心跳/参数查询等) */
#define FC41D_APP_RX_NORMAL 1024U
/** 固件升级 Data JSON 拼包(1024B 载荷约 1.6KB JSON */
#define FC41D_APP_RX_UPGRADE 2048U
typedef enum {
FC41D_BLE_ST_IDLE = 0,
FC41D_BLE_ST_POWER_ON,
FC41D_BLE_ST_WAIT_CONNECT,
FC41D_BLE_ST_CONNECTED,
FC41D_BLE_ST_ERROR,
} fc41d_ble_state_t;
typedef enum {
FC41D_BLE_URC_NONE = 0,
FC41D_BLE_URC_CONNECTED,
FC41D_BLE_URC_DISCONNECTED,
} fc41d_ble_urc_t;
typedef struct {
char rx_acc[FC41D_AT_RX_ACC_SIZE];
uint16_t rx_acc_len;
fc41d_ble_urc_t pending_urc;
char at_cmd_buf[FC41D_AT_LINE_MAX];
char ble_cmd_buf[64];
char gatt_at_cmd[FC41D_AT_CMD_MAX];
} fc41d_ble_at_t;
typedef struct {
uint8_t *link_rx_acc;
uint16_t link_rx_acc_cap;
uint16_t link_rx_acc_len;
uint16_t qble_payload_need;
uint8_t *app_rx;
uint16_t app_rx_cap;
uint16_t app_rx_wr;
uint16_t app_rx_rd;
} fc41d_ble_io_t;
typedef struct {
fc41d_ble_state_t state;
uint64_t connect_deadline_ms;
uint64_t power_on_deadline_ms;
uint64_t last_stat_poll_ms;
uint8_t transparent; /* 1=QBLETRANMODE 已生效,UART 直传 JSON */
uint8_t gatt_fallback; /* 1=透传 AT 失败,回退 +QBLERECV/QBLEGATTSNTFY */
} fc41d_ble_sm_t;
typedef struct {
fc41d_ble_at_t at;
fc41d_ble_io_t io;
fc41d_ble_sm_t sm;
} fc41d_ble_ctx_t;
#endif /* FC41D_BLE_PRIV_H */