/** ****************************************************************************** * @file rf433_rx_app.h * @brief RF433 RX应用层接口 ****************************************************************************** */ #ifndef __RF433_RX_APP_H__ #define __RF433_RX_APP_H__ #ifdef __cplusplus extern "C" { #endif #include "rf433.h" #include #include /* ============================================================================ * 数据类型定义 * ============================================================================ */ /** * @brief RX状态机状态 */ typedef enum { RX_STATE_INIT = 0, /**< 初始化状态 */ RX_STATE_RECEIVING, /**< 接收中状态 */ RX_STATE_IDLE, /**< 空闲状态 */ } rx_state_t; /** * @brief RX统计结构体 */ typedef struct { uint32_t total_received; /**< 总接收次数 */ uint32_t total_expected; /**< 总期望次数 */ uint32_t lost_packets; /**< 丢包数 */ uint8_t lost_percent; /**< 丢包率(%) */ } rf433_rx_stats_t; /** * @brief RX应用结构体 */ typedef struct { rx_state_t state; /**< 当前状态 */ rf433_rx_stats_t stats; /**< 统计信息 */ uint32_t tx_current_number; /**< TX当前序号 */ uint32_t tx_total_number; /**< TX总次数 */ uint32_t tx_number_record; /**< TX序号记录 */ rf433_register_t config; /**< RF433配置 */ bool is_running; /**< 是否正在运行 */ } rf433_rx_app_t; /* ============================================================================ * API函数声明 * ============================================================================ */ /** * @brief 初始化RX应用层 * @param config RF433配置参数 * @retval RF433_OK 成功 * @retval RF433_ERROR 参数错误 */ rf433_error_t rf433_rx_app_init(const rf433_register_t *config); /** * @brief 启动RX自动接收 * @retval RF433_OK 成功 */ rf433_error_t rf433_rx_app_start(void); /** * @brief 停止RX自动接收 * @retval RF433_OK 成功 */ rf433_error_t rf433_rx_app_stop(void); /** * @brief RX任务函数(在主循环中调用) */ void rf433_rx_app_task(void); /** * @brief 获取RX状态 * @return 当前RX状态 */ rx_state_t rf433_rx_app_get_state(void); /** * @brief 获取RX统计信息 * @param stats 统计信息结构体指针 * @retval RF433_OK 成功 * @retval RF433_ERROR 参数错误 */ rf433_error_t rf433_rx_app_get_stats(rf433_rx_stats_t *stats); /** * @brief 重置RX统计信息 */ void rf433_rx_app_reset_stats(void); /** * @brief 解析数据包 * @param data 数据包指针 * @param length 数据包长度 * @param tx_total 输出:TX总次数 * @param tx_current 输出:TX当前序号 * @retval RF433_OK 解析成功 * @retval RF433_ERROR 数据包格式错误 */ rf433_error_t rf433_rx_app_parse_packet(const uint8_t *data, uint16_t length, uint32_t *tx_total, uint32_t *tx_current); #ifdef __cplusplus } #endif #endif /* __RF433_RX_APP_H__ */