Files
433_STM32/Core/Inc/rf433_rx_app.h

120 lines
3.0 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 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 <stdint.h>
#include <stdbool.h>
/* ============================================================================
* 数据类型定义
* ============================================================================ */
/**
* @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__ */