#include "JZsdkLib.h"
#include "BaseConfig.h"
#include <pthread.h>


#include "JZsdk_Hal.h"
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
#include "Ircut/ircut.h"


/****************************
 * 
 *  a1 初始化
 *  
 *  mode psdk为psdk模式 uart为串口模式
 * 
 * ****************************/
T_JZsdkReturnCode TF_a1_init(int mode)
{
    //引脚初始化
    IrcutInfo ircut_info;
    ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
    ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PG;
    ircut_info.Amplifiter_Pin.index = 5;
    ircut_info.Amplifiter_Pin.Group = 0;
    ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;

    Ircut_Init(ircut_info);

    if (mode == APP_UART)
    {
        T_JZsdk_UartInfo UartInfo = {
            .Base.PortId = UART_DEV_1,
            .DevicePath = UART_DEV1_NUM,
            .Baudrate = UART_DEV1_BITRATE,
            .Base.HalStatus.ConnectType = PORT_CONNECT_TYPE_AS_SUB,
        };

        //串口设备1初始化
        JZsdk_HalUartInit(&UartInfo);
    }

    if (mode == APP_PSDK)
    {
        //外接传输模块,用于与飞机的数据通信
        JZsdk_data_transmisson_Receive_Init();
    }

    //串口设备2初始化
    T_JZsdk_UartInfo Uart2Info = {
        .Base.PortId = UART_DEV_2,
        .DevicePath = UART_DEV2_NUM,
        .Baudrate = UART_DEV2_BITRATE,
        .Base.HalStatus.ConnectType = PORT_CONNECT_TYPE_AS_SUB,
    };
    JZsdk_HalUartInit(&Uart2Info);

    //音频库初始化
    AudioDeal_Init();


    //喊话器初始化
    Megaphone_Init();    

    //云台初始化
    Gimbal_Init(JZ_MODULE_CONTROL_WAY_INDEPENDENT);

    //灯类初始化
    Lighting_Init();

    delayMs(1000);

    //消息订阅初始化
    HalSend_type1Send_MessageSubcription_Control(UART_DEV_2, JZ_FLAGCODE_ON); 
}