#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);

    //hal层初始化
    if (mode == APP_UART)
    {
        //串口设备1初始化
        s_JZ_SerialPortHalRegInfo SerialInfo = {
            .BitRate = UART_DEV1_BITRATE,
            .ConnectType = PORT_CONNECT_TYPE_AS_SUB
        };  

        JZsdk_HalPort_Init(UART_DEV_1, (void *)&SerialInfo);
    }

    if (mode == APP_PSDK)
    {
        //外接传输模块,用于与飞机的数据通信
        JZsdk_data_transmisson_Receive_Init();
    }
    
    //串口设备2初始化
    s_JZ_SerialPortHalRegInfo SerialInfo2 = {
        .BitRate = UART_DEV2_BITRATE,
        .ConnectType = PORT_CONNECT_TYPE_AS_SUB
    };  

    JZsdk_HalPort_Init(UART_DEV_2, (void *)&SerialInfo2);

    //音频库初始化
    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); 
}