// DMA模块，DMA发送信号数据到I2S接口
// Author: 周涛
// Date: 2023-7-21

#include "includes.h"

static int32 *gSsm_pdwSignalSendList = NULL; // 信号发送队列

// 模块初始化
uint8 ssm_init()
{
    uint8 byFlag = 0;
    uint8 byCarrierID = 0;  // 载波编号
    uint8 byTimeslotId = 0; // 时隙编号

    // 获得载波ID
    byCarrierID = wmm_bts_query_carrier_id();

    // 查询基站时隙
    byTimeslotId = wmm_bts_query_timeslot_id();

    // 初始化信号模块
    byFlag = signal_main_init(byCarrierID, byTimeslotId);
    if (!byFlag)
    {
        return 0;
    }

    // 获得一个周期信号的发送队列地址
    signal_main_query_period_signal_list(&gSsm_pdwSignalSendList);

    // 发送一组测试信号，初始化CPLD，并使能CPLD
    ssm_start_send_test_signal();

    return 1;
}

// 发送一组测试信号
void ssm_start_send_test_signal()
{
    driver_i2s_start_send_cpld_test_data();
    driver_delay_nxms(50); // 等待测试信号发送完成
}

// 发送音频信号
void ssm_start_send_audito_signal()
{
    uint8 byDmaSendFlag = 0;

    // 1、查询DMA发送状态，0：空闲，1：正在发送
    byDmaSendFlag = driver_i2s_query_send_status();
    if (!byDmaSendFlag) // DMA空闲
    {
        driver_i2s_start_send_data(gSsm_pdwSignalSendList); // 启动发送信号
    }

    return;
}
