// 同步模块，信号收发
// 杭州秒寻科技有限公司
// 周涛
// 2023-11-20

#include "includes.h"

static SYNC_RXTX_STATUS_MANAGE_T gSynctx_stTxStatusManage = {0}; // 模块状态管理结构
uint8 gSynctx_abySendData[2] = {0x55, 0x55};                     // 每次发送的数据

// 模块初始化
void synctx_rxtx_init()
{
    SYS_MEMSET(&gSynctx_stTxStatusManage, 0, sizeof(SYNC_RXTX_STATUS_MANAGE_T));
}

// 发送信号
uint8 synctx_rxtx_send_signal()
{
    // uint8 byFlag = 0;

    // // // 清空tx fifo
    // // synctx_rxtx_clear_tx_fifo();

    // // // 将数据写入tx fifo
    // // driverapp_synctx_write_bytes(SYNC_BURST_WRITE_FIFO, (uint8 *)gSynctx_abySendData, 0x02);

    // // 切换至go tx状态(这里会出现0-20us的不定延时)
    // byFlag = synctx_switch_work_status(SYNC_STATUS_GO_TX, SYNC_STATUS_TX);
    // if (!byFlag)
    // {
    //     return 0;
    // }

    // 切换直GO_TX状态
    synctx_wirte_reg(0x01, SYNC_STATUS_GO_TX);

    return 1;
}

// 数据发送完成-后处理
uint8 synctx_rxtx_send_signal_over()
{
    uint8 byFlag = 0;

    synctx_rxtx_clear_tx_int_flag(); // 清除发送完成中断标志

    // 发送数据前预准备(芯片状态切换)，最后切换至tfs状态以缩短切换至tx状态的时间
    byFlag = synctx_pre_send_data();
    if (!byFlag)
    {
        return 0;
    }

    return 1;
}

// 清空发送缓存
uint8 synctx_rxtx_clear_tx_fifo()
{
    return synctx_rewrite_reg(0x1B, 0x01, 0x01);
}

// 清除发送中断标志
uint8 synctx_rxtx_clear_tx_int_flag()
{
    uint8 byMask = 0x01 << 0;
    return synctx_rewrite_reg(0x18, 0x01, byMask);
}

// 更新发送告警状态
// byValue:告警状态
void synctx_rxtx_update_tx_alarm(uint8 byValue)
{
    gSynctx_stTxStatusManage.bySendAlarm = byValue;
}

// 查询发送告警
uint8 synctx_rxtx_query_tx_alarm()
{
    return gSynctx_stTxStatusManage.bySendAlarm;
}

// 更新发送完成标识位
// byValue:状态
void synctx_rxtx_update_tx_cplt_flag(uint8 byValue)
{
    gSynctx_stTxStatusManage.byTxCplt = byValue;
}

// 查询发送完成标识位
uint8 synctx_rxtx_query_tx_cplt_flag()
{
    return gSynctx_stTxStatusManage.byTxCplt;
}
