BaseConfig.c 5.7 KB
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <string.h>

#include "JZsdkLib.h"

#include "version_choose.h"
#include "ircut.h"
#include "Megaphone_InputAndOutput.h"
#include "Gimbal_InAndOut.h"

#include "JZsdk_Uart_Input.h"
#include "BaseConfig.h"
#include "Psdk_UI_io.h"

#include "Dji_Control/DJI_WidgetControl.h"
#include "Lighting_InAndOut.h"

static int Main_WorkMode();
static void *Main_WorkModeTask(void *arg);
static int WorkMode = JZ_FLAGCODE_OFF;


int Main_APP_Psdk()
{
    JZsdk_LibInit();

    //引脚初始化
    Ircut_Init();

    if (DEVICE_VERSION == TF_A1)
    {
        //串口设备1初始化
        //JZsdk_Uart_Init(UART_DEV_1);

        //串口设备2初始化
        JZsdk_Uart_Init(UART_DEV_2);

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

        //云台初始化
        Gimbal_Init();

        //灯类初始化
        Lighting_Init();

        //初始化dji控件
        DJI_WidgetControlInit();

        //初始化app模式
        JZsdk_Set_Psdk_UIcontrol_UseFlag(1);

        delayMs(100);

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

        Main_WorkModeSet(JZ_FLAGCODE_ON);
    }
}



int Main_APP_Uart()
{
    //引脚初始化
    Ircut_Init();   

    //串口程序计时开始(用于连接上就跑串口程序,没连上就退出 继续跑psdk)
    //Main_WorkMode();

    if (DEVICE_VERSION == JZ_H1E)
    {
        //串口设备1初始化
        JZsdk_Uart_Init(UART_DEV_1);

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

    if (DEVICE_VERSION == JZ_H1T)
    {
        //串口设备1初始化
        JZsdk_Uart_Init(UART_DEV_1);

        //4g设备初始化
        JZsdk_Uart_Init(UART_4G);

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

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

    if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T)
    {
        //串口设备1初始化
        JZsdk_Uart_Init(UART_DEV_1);

        if (DEVICE_VERSION == JZ_H150T)
        {
            //4g设备初始化
            JZsdk_Uart_Init(UART_4G);
        }

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

        //云台初始化
        Gimbal_Init();
    }
    
    if (DEVICE_VERSION == JZ_H10)
    {
        //串口设备1初始化
        JZsdk_Uart_Init(UART_DEV_1);

        //喊话器初始化
        Megaphone_Init();
        
        //云台初始化
        Gimbal_Init();
    }

    if (DEVICE_VERSION == JZ_H10T)
    {
        //串口设备1初始化
        JZsdk_Uart_Init(UART_DEV_1);

        //4g设备初始化
        JZsdk_Uart_Init(UART_4G);

        //喊话器初始化
        Megaphone_Init();
        
        //云台初始化
        Gimbal_Init();
    }

    if (DEVICE_VERSION == JZ_U3)
    {
        //串口设备1初始化
        JZsdk_Uart_Init(UART_DEV_1);

        //串口设备2初始化
        JZsdk_Uart_Init(UART_DEV_2);

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

        //云台初始化
        Gimbal_Init();

        //消息订阅初始化
        JZsdk_Uart_Send_MessageSubcription_Control(UART_DEV_2, JZ_FLAGCODE_OFF);
    }

    if (DEBUG_VERSION == TF_A1)
    {
        //串口设备1初始化
        JZsdk_Uart_Init(UART_DEV_1);

        //串口设备2初始化
        JZsdk_Uart_Init(UART_DEV_2);

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

        //云台初始化
        Gimbal_Init();

        //消息订阅初始化
        JZsdk_Uart_Send_MessageSubcription_Control(UART_DEV_2, JZ_FLAGCODE_OFF); 
    }
    
}

int Main_TestAPP()
{
    //串口设备1初始化
    JZsdk_Uart_Init(UART_DEV_1);

    
}

int Main_WorkModeSet(int mode)
{
    WorkMode = mode;

    if (mode == JZ_FLAGCODE_ON)
    {


#if FIRMWARE_ORIGIN ==  DOMESTIC_VERSION   //国内版才有方言

    if (APP_VERSION == APP_PSDK)
    {
        //播放喊话器启动中
        Megaphone_TTS_Play(strlen("喊话器准备就绪"), "喊话器准备就绪", 0);
    }
    
    else if (APP_VERSION == APP_UART)
    {
        //播报喊话器准备就绪
        delayMs(3500);

        //播放喊话器启动中
        Megaphone_TTS_Play(strlen("喊话器直连模式准备就绪"), "喊话器直连模式准备就绪", 0);
    }
    

#elif FIRMWARE_ORIGIN == OVERSEAS_VERSION   //海外版才有其他国家的语音

    //设置语音为英文
    Megaphone_TTS_SetTone(0x11);

    //播放喊话器启动中
    Megaphone_TTS_Play(strlen("Speaker Direct Mode Ready"),"Speaker Direct Mode Ready", 0);

#endif

    }
}


static int Main_WorkMode()
{
    pthread_t work_mode_task;
	pthread_attr_t task_attribute; //线程属性
	pthread_attr_init(&task_attribute);  //初始化线程属性
	pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED);      //设置线程属性
	int timer = pthread_create(&work_mode_task,&task_attribute,Main_WorkModeTask,NULL);		//线程
    if(timer != 0)
    {
        printf("创建计时线程失败!\n");
    }
}

static void *Main_WorkModeTask(void *arg)
{
    //计时flag
	int i=0;
	printf("进入串口等待函数\n");
	for (i = 0; i < 60; i++)
    {
        delayMs(1000);//延迟一秒钟
        printf("计数%d\n",i);

        if (WorkMode == JZ_FLAGCODE_ON)
        {
            printf("串口连接成功,进入串口模式\n");
            return NULL;
        }
        
    }
    
    if(i==60 && WorkMode == JZ_FLAGCODE_OFF)
    {
        printf("串口连接超时,回到连接psdk");
        exit(0);
    }	
}