Files
433_STM32/Core/Inc/rf433_tx_app.h

116 lines
2.8 KiB
C
Raw Permalink 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_tx_app.h
* @brief RF433 TX应用层接口
******************************************************************************
*/
#ifndef __RF433_TX_APP_H__
#define __RF433_TX_APP_H__
#ifdef __cplusplus
extern "C" {
#endif
#include "rf433.h"
#include <stdint.h>
#include <stdbool.h>
/* ============================================================================
* 数据类型定义
* ============================================================================ */
/**
* @brief TX状态机状态
*/
typedef enum {
TX_STATE_INIT = 0, /**< 初始化状态 */
TX_STATE_SENDING, /**< 发送中状态 */
TX_STATE_WAITING, /**< 等待状态 */
TX_STATE_IDLE, /**< 空闲状态 */
} tx_state_t;
/**
* @brief TX应用结构体
*/
typedef struct {
tx_state_t state; /**< 当前状态 */
uint32_t send_count; /**< 已发送次数 */
uint32_t total_count; /**< 总发送次数 */
uint32_t send_interval_ms; /**< 发送间隔(ms) */
uint32_t last_send_time; /**< 上次发送时间 */
rf433_register_t config; /**< RF433配置 */
bool is_running; /**< 是否正在运行 */
} rf433_tx_app_t;
/* ============================================================================
* API函数声明
* ============================================================================ */
/**
* @brief 初始化TX应用层
* @param config RF433配置参数
* @retval RF433_OK 成功
* @retval RF433_ERROR 参数错误
*/
rf433_error_t rf433_tx_app_init(const rf433_register_t *config);
/**
* @brief 启动TX自动发送
* @param count 总发送次数
* @param interval_ms 发送间隔(ms)
* @retval RF433_OK 成功
* @retval RF433_ERROR 参数错误
*/
rf433_error_t rf433_tx_app_start(uint32_t count, uint32_t interval_ms);
/**
* @brief 停止TX自动发送
* @retval RF433_OK 成功
*/
rf433_error_t rf433_tx_app_stop(void);
/**
* @brief 手动发送数据
* @param data 数据指针
* @param length 数据长度
* @retval RF433_OK 成功
* @retval RF433_ERROR 参数错误
* @retval RF433_ERROR_BUSY 模块忙
*/
rf433_error_t rf433_tx_app_manual_send(uint8_t *data, uint16_t length);
/**
* @brief TX任务函数在主循环中调用
*/
void rf433_tx_app_task(void);
/**
* @brief 获取TX状态
* @return 当前TX状态
*/
tx_state_t rf433_tx_app_get_state(void);
/**
* @brief 获取已发送次数
* @return 已发送次数
*/
uint32_t rf433_tx_app_get_send_count(void);
/**
* @brief 获取总发送次数
* @return 总发送次数
*/
uint32_t rf433_tx_app_get_total_count(void);
/**
* @brief 重置TX计数器
*/
void rf433_tx_app_reset_count(void);
#ifdef __cplusplus
}
#endif
#endif /* __RF433_TX_APP_H__ */