// 同步模块
// 杭州秒寻科技有限公司
// 周涛
// 2023-11-09

#ifndef SYNC_H
#define SYNC_H

#include "sysdef.h"

#define SYNC_RSSI_COUNT_TIMES 3 // 接收电平统计次数

// 同步模块管理接口
typedef struct
{
    uint8 byCounter;
    int16 awRssiValue[SYNC_RSSI_COUNT_TIMES]; // 原始值
    int16 wRssiValue;                         // 平均值
} SYNC_MANAGE_T;

//// 供外部使用接口
uint8 sync_init();
uint8 sync_switch_work_status(uint8 byGoStatus, uint8 byGetStatus);
void sync_read_rssi();
int16 sync_query_rssi();

// 内部接口
uint8 sync_config_gpio5_rest();
void sync_select_reg_page(uint8 byPage);
void sync_read_reg(uint8 byAddress, uint8 *pbyValue);
uint8 sync_wirte_reg(uint8 byAddress, uint8 byValue);
uint8 sync_rewrite_reg(uint8 byAddress, uint8 byValue, uint8 byMask);
uint8 sync_get_work_status(uint8 byStatus);
uint8 sync_config_api_command(uint8 byApiCommand);
uint8 sync_config_cap_load(uint8 byCapValue);
void sync_soft_reset();
void sync_rewrite_reg_page(uint8 byRegPage, uint8 *pbyData, uint16 wLen);
uint32 sync_read_chip_id();
uint8 sync_config_oscillator_wait_time(uint8 byValue);
void sync_power_up(void);
void sync_config_tcxo();
uint8 sync_ir_calibration();
uint8 sync_config_rx_dout();
uint8 sync_config_rx_int();
uint8 sync_config_tx_int();
uint8 sync_update_rssi_select();
uint8 sync_pre_send_data();
uint8 sync_rx_exit_status();
uint8 sync_tx_exit_status();
uint8 sync_manual_jump_freq_mode();
uint8 sync_set_rx_sync_word(uint8 byData); // 配置同步字
uint8 sync_set_rx_init_param(uint8 byCarrierId, uint8 byFreqSpace, uint8 byRxSyncWordIndex);

#endif
