// 同步模块，配置载波频率(发射和接受同频，半双工)
// 杭州秒寻科技有限公司
// 周涛
// 2023-11-18

#include "includes.h"

/*
 * 计划选用的频段为409-410MHz，起始频点为：409.750，截止频率为：409.9875
 * 鉴于2310芯片频率最小间隔只能到K，所有只能使用奇数号频点，分别如下
 * 1：409.750，3：409.775，5：409.800，7：409.825，9：409.850，
 * 11：409.875，13：409.900，15：409.925，17：409.950，19：409.975
 */

// 配置载波中心频率
// 中心频率 = 基本频率（RFPDK工具导出的频率）+ 频点ID * 频点间隔
// byCarrierId:频点ID，0-250
// byFreqSpace:频点间隔，单位khz，，最小值50K，最大250，默认间隔选250kHz
// 返回值，0：失败，1：成功
uint8 synctx_freq_config_carrier_freq(uint8 byCarrierId, uint8 byFreqSpace)
{
    uint8 byFlag = 0;

    // 默认参数
    if (byCarrierId == 0xFF)
    {
        byCarrierId = 0;
    }

    // 默认参数
    if (byFreqSpace == 0xFF)
    {
        byFreqSpace = 250;
    }

    // go sleep
    byFlag = synctx_switch_work_status(SYNC_STATUS_GO_SLEEP, SYNC_STATUS_SLEEP);
    if (!byFlag)
    {
        return 0;
    }

    // 配置频率
    synctx_freq_config_freq_space(byFreqSpace); // 配置频点间隔
    driver_delay_100us();                       // 延时100us
    synctx_freq_config_channel_id(byCarrierId); // 配置频点号

    // go ready
    byFlag = synctx_switch_work_status(SYNC_STATUS_GO_READY, SYNC_STATUS_READY);
    if (!byFlag)
    {
        return 0;
    }

    // go tfs
    byFlag = synctx_switch_work_status(SYNC_STATUS_GO_TFS, SYNC_STATUS_TFS);
    if (!byFlag)
    {
        return 0;
    }

    return 1;
}

// 配置频点间隔，单位Kh
// byFreqSpace:频点间隔，单位khz，最大255，默认间隔选250kHz
void synctx_freq_config_freq_space(uint8 byFreqSpace)
{
    synctx_wirte_reg(0x0C, byFreqSpace); // 频点间隔
}

// 配置频点ID
// byChannelId:频点ID号，0至255有效
void synctx_freq_config_channel_id(uint8 byCarrierId)
{
    synctx_wirte_reg(0x03, byCarrierId); // 频点号
}
