Files
433_STM32/Core/Inc/rf433_rx_app.h

120 lines
3.0 KiB
C
Raw Permalink Normal View History

/**
******************************************************************************
* @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__ */