作者 ookk303

dev 2.22更新

正在显示 67 个修改的文件 包含 2672 行增加686 行删除

要显示太多修改。

为保证性能只显示 67 of 67+ 个文件。

... ... @@ -26,8 +26,10 @@ project_build/GDU_普宙PSDK
# !project_build/DJI_大疆PSDK/samples/sample_c/platform/linux/all/hal
# !project_build/DJI_大疆PSDK/samples/sample_c/platform/linux/all/CMakeLists.txt
project_build/Payload-SDK-release-v3.11.0/*
project_build/Payload-SDK-release-v3.12.0/*
project_build/特殊固件
project_build/DJI_Test
# project_build/Attention_提示程序
... ...
... ... @@ -146,7 +146,15 @@
"jzsdk_expansionapi.h": "c",
"test_widget_speaker.h": "c",
"dji_expansion.h": "c",
"test_widget.h": "c"
"test_widget.h": "c",
"jzc1.h": "c",
"msp_errors.h": "c",
"megaphone_tts.h": "c",
"qtts.h": "c",
"msp_cmn.h": "c",
"ctype.h": "c",
"intl_interface.h": "c",
"iflytek_1.h": "c"
},
"Codegeex.GenerationPreference": "automatic",
"C_Cpp.dimInactiveRegions": false,
... ...
# 编译链的配置
#1、编译链与设备类型的选择
set(DEVICE_NAME JZ_H150G)
set(DEVICE_NAME JZ_H150S)
#上一行为禁止修改行
message("**************************JZSDK构建编译开始***************************\n")
... ... @@ -34,6 +34,8 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_ST")
set(MAKE_COMPILER ARM_X86_64_ARRCH64)
elseif("${DEVICE_NAME}" STREQUAL "JZ_H150G")
set(MAKE_COMPILER LINARO_ARM_CORTEX_LINUX)
elseif("${DEVICE_NAME}" STREQUAL "JZ_T40")
set(MAKE_COMPILER LINARO_ARM_CORTEX_LINUX)
endif()
if(${MAKE_COMPILER} STREQUAL "ARM_CORTEXA9_LINUX")
... ...
... ... @@ -73,6 +73,30 @@ if(${LIGHTING_MODULE} STREQUAL "VERSION_SWITCH_ON")
endif()
#如果要加载探照灯模块,需要加载以下附属内容
if(${SEARCHLIGHT_MODULE} STREQUAL "VERSION_SWITCH_ON")
message("\n探照灯模块加载中")
#打开探照灯的代码编译部分
add_definitions(-DMACRO_SEARCHLIGHT_MODULE)
#将探照灯的源代码加入编译中
file(GLOB_RECURSE SEARCHLIGHT_SRC ${ROOT_DIRS}Module/SearchLight/*.c)
list(APPEND ALL_SRC_FILES ${SEARCHLIGHT_SRC})
endif()
#如果要加载侧面激光模块,需要加载以下附属内容
if(${SIDE_LASER_MODULE} STREQUAL "VERSION_SWITCH_ON")
message("\n侧面激光模块加载中")
#打开侧面激光的代码编译部分
add_definitions(-DMACRO_SIDE_LASER_MODULE)
file(GLOB_RECURSE MODULE_SIDE_LASER_SRC ${ROOT_DIRS}Module/SideLaser/*.c)
list(APPEND ALL_SRC_FILES ${MODULE_SIDE_LASER_SRC})
endif()
#如果要加载媒体管理模块,需要加载以下附属内容
if(${MEDIA_PROC_MODULE} STREQUAL "VERSION_SWITCH_ON")
message("\n媒体管理模块加载中")
... ... @@ -135,11 +159,23 @@ if(${MEGAPHONE_MODULE} STREQUAL "VERSION_SWITCH_ON")
file(GLOB_RECURSE MEGAPHONE_SRC ${ROOT_DIRS}Module/Megaphone/*.c)
list(APPEND ALL_SRC_FILES ${MEGAPHONE_SRC})
message("加载讯飞TTS模块")
set(IFLAY_TTS_MODULE VERSION_SWITCH_ON)
#加载tts模块
if(TTS_MODULE STREQUAL "JZ_TTS_MODULE_1" )
message("加载espeak模块")
set(ESPEAK_TTS_MODULE VERSION_SWITCH_ON)
message("加载讯飞一代TTS模块")
add_definitions(-DMACRO_IFLAY_TTS_1_MODULE)
message("加载espeak模块")
add_definitions(-DMACRO_ESPEAK_TTS_MODULE)
elseif(TTS_MODULE STREQUAL "JZ_TTS_MODULE_2" )
message("加载讯飞二代TTS模块")
add_definitions(-DMACRO_IFLAY_TTS_2_MODULE)
file(GLOB_RECURSE IFLTTEK_2_SRC ${ROOT_DIRS}Module/Megaphone/TTS/iflytek_2/*.cpp)
list(APPEND ALL_SRC_FILES ${IFLTTEK_2_SRC})
endif()
message("加载alsalib模块")
set(ALSALIB_MODULE VERSION_SWITCH_ON)
... ... @@ -148,6 +184,7 @@ if(${MEGAPHONE_MODULE} STREQUAL "VERSION_SWITCH_ON")
set(OPUS_MODULE VERSION_SWITCH_ON)
endif()
#如果要加载通用模块,需要加载以下附属内容
if(${COMMON_MODULE} STREQUAL "VERSION_SWITCH_ON")
... ... @@ -165,16 +202,7 @@ if(${EXTENSION_API_MODULE} STREQUAL "VERSION_SWITCH_ON")
list(APPEND ALL_SRC_FILES ${EXTENSION_API_MODULE_SRC})
endif()
#如果要加载侧面激光模块,需要加载以下附属内容
if(${SIDE_LASER_MODULE} STREQUAL "VERSION_SWITCH_ON")
message("\n侧面激光模块加载中")
#打开侧面激光的代码编译部分
add_definitions(-DMACRO_SIDE_LASER_MODULE)
file(GLOB_RECURSE MODULE_SIDE_LASER_SRC ${ROOT_DIRS}Module/SideLaser/*.c)
list(APPEND ALL_SRC_FILES ${MODULE_SIDE_LASER_SRC})
endif()
#如果要加载UI模块,需要加载以下附属内容
if(${UI_CONTROL_MODULE} STREQUAL "VERSION_SWITCH_ON")
... ...
... ... @@ -15,13 +15,26 @@ set(GIMBAL_MODULE VERSION_SWITCH_OFF)
# IRCUT 引脚处理模块
set(IRCUT_MODULE VERSION_SWITCH_OFF)
############### 光源模块 ##########################
# LIGHTING 光源处理模块
set(LIGHTING_MODULE VERSION_SWITCH_OFF)
# SEARCHLIGHT 探照灯处理模块
set(SEARCHLIGHT_MODULE VERSION_SWITCH_OFF)
################ 喊话器模块 #######################
# 喊话器模块
set(MEGAPHONE_MODULE VERSION_SWITCH_OFF)
# TTS模块
set(TTS_MODULE JZ_TTS_MODULE_1)
##################################################
# 电源管理模块
set(COMMON_MODULE VERSION_SWITCH_OFF)
... ... @@ -377,6 +390,35 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_H150G")
list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
message("JZ_H150G基础配置完毕\n")
elseif("${DEVICE_NAME}" STREQUAL "JZ_T40")
# 添加Gimbal 云台处理模块
set(GIMBAL_MODULE VERSION_SWITCH_ON)
# 添加LIGHTING 光源处理模块
set(LIGHTING_MODULE VERSION_SWITCH_ON)
# 添加探照灯模块
set(SEARCHLIGHT_MODULE VERSION_SWITCH_ON)
# 添加AudioDeal 音频处理模块
set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
# 添加喊话器模块
set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
# 添加TTS模块
set(TTS_MODULE JZ_TTS_MODULE_2)
# 添加FFMPEG及其附属模块
set(FFMPEG_MODULE VERSION_SWITCH_ON)
#设备独立配置源文件
file(GLOB_RECURSE DEVICE_CONFOG_SRC ${ROOT_DIRS}JZsdk_Config/DeviceSample/JZ_T40/*.c)
list(APPEND ALL_SRC_FILES ${DEVICE_CONFOG_SRC})
message("JZ_T40基础配置完毕\n")
endif()
message("***********************模组模块配置完毕*********************************\n")
\ No newline at end of file
... ...
... ... @@ -3,17 +3,17 @@
# ${ROOT_DIRS}为cmakelist文件提供的工程根目录
if(${IFLAY_TTS_MODULE} STREQUAL "VERSION_SWITCH_ON")
set(iFLYTEK_TTS_DIRS "${ROOT_DIRS}ThirdParty/iFLYTEK_TTS/lib/arm-cortexa9-linux-gnueabihf")
if(${TTS_MODULE} STREQUAL "JZ_TTS_MODULE_1")
set(iFLYTEK_TTS_1_DIRS "${ROOT_DIRS}ThirdParty/iFLYTEK_TTS/lib/arm-cortexa9-linux-gnueabihf")
include_directories(${ROOT_DIRS}ThirdParty/iFLYTEK_TTS/include)
target_link_libraries(
${PROJECT_NAME}
${iFLYTEK_TTS_DIRS}/libmsc.so
${iFLYTEK_TTS_1_DIRS}/libmsc.so
)
message("讯飞TTS模块已加载\n")
message("讯飞一代TTS模块已加载\n")
endif()
if(${ESPEAK_TTS_MODULE} STREQUAL "VERSION_SWITCH_ON")
if(${TTS_MODULE} STREQUAL "JZ_TTS_MODULE_1")
set(ESPEAK_TTS_DIRS "${ROOT_DIRS}ThirdParty/Espeak/lib/arm-cortexa9-linux-gnueabihf")
include_directories(${ROOT_DIRS}ThirdParty/Espeak/include)
target_link_libraries(
... ... @@ -24,6 +24,18 @@ if(${ESPEAK_TTS_MODULE} STREQUAL "VERSION_SWITCH_ON")
message("Espeak模块已加载\n")
endif()
if(${TTS_MODULE} STREQUAL "JZ_TTS_MODULE_2")
set(iFLYTEK_TTS_2_DIRS "${ROOT_DIRS}ThirdParty/iFLYTEK_TTS_2/lib/arm-cortexa9-linux-gnueabihf")
include_directories(${ROOT_DIRS}ThirdParty/iFLYTEK_TTS_2/include)
target_link_libraries(
${PROJECT_NAME}
aikit
rt
)
message("讯飞二代TTS模块已加载\n")
endif()
if(${ALSALIB_MODULE} STREQUAL "VERSION_SWITCH_ON")
set(ALSALIB_DIRS "${ROOT_DIRS}ThirdParty/AlsaLib/lib/arm-cortexa9-linux-gnueabihf")
include_directories(${ROOT_DIRS}ThirdParty/AlsaLib/include)
... ...
message("开始库搜索")
if(${TTS_MODULE} STREQUAL "JZ_TTS_MODULE_2")
link_directories(${ROOT_DIRS}ThirdParty/iFLYTEK_TTS_2/lib/arm-cortexa9-linux-gnueabihf)
message("讯飞二代TTSLib已搜索\n")
endif()
\ No newline at end of file
... ...
... ... @@ -11,3 +11,4 @@ unsigned char *JZsdk_GetDeviceName()
{
}
... ...
... ... @@ -29,27 +29,33 @@
#define VERSION_SWITCH_OFF 0x0000 //不加载
//设备选择
#define JZ_H1E 0x0011
#define JZ_H1E 0x11
#define JZ_H1T 0x0016
#define JZ_H1T 0x16
#define JZ_U3 0x0017
#define JZ_U3S 0x0018
#define JZ_U3D 0x0019
#define JZ_U30 0x001A
#define JZ_U3 0x17
#define JZ_U3S 0x18
#define JZ_U3D 0x19
#define JZ_U30 0x1A
#define JZ_T40 0x1C
#define JZ_T40_LEFT_GIMBAL 0x1C11
#define JZ_T40_RIGHT_GIMBAL 0x1C12
#define JZ_T40_LEFT_LIGHT 0x1C21
#define JZ_T40_RIGHT_LIGHT 0x1C22
#define JZ_H150S 0x13
#define JZ_H150T 0x15
#define JZ_H150G 0x20
#define JZ_H150S 0x0013
#define JZ_H150T 0x0015
#define JZ_H150G 0x0020
#define JZ_H10 0x12
#define JZ_H10T 0x14
#define JZ_H10 0x0012
#define JZ_H10T 0x0014
#define TF_A1 0x1010
#define JZ_C1 0x1011
#define JZ_ST 0x1012
/***********************************
*
* 已退出历史舞台
... ...
... ... @@ -97,6 +97,12 @@ typedef struct {
F32_t yaw; /*!< Specifies float value of yaw for attitude */
} T_JZsdkAttitude3f;
typedef enum E_JZ_SingleCompensationMode{
JZ_SINGLE_COMPENSATION_MODE_PITCH_LEFT = 0,
JZ_SINGLE_COMPENSATION_MODE_PITCH_RIGHT = 1,
}E_JZ_SingleCompensationMode;
/* Exported types ------------------------------------------------------------*/
... ...
... ... @@ -17,9 +17,13 @@ int JZsdk_Get_FrameSequence(char *DealBuf)
* 获取帧的长度
*
* ***************************/
int JZsdk_Get_FrameLength(char *DealBuf)
int JZsdk_Get_FrameLength(char *DealBuf)
{
return ((int)DealBuf[3]) << 8 + DealBuf[4];
// 转换为 unsigned char 避免符号扩展问题
unsigned char *buf = (unsigned char *)DealBuf;
// 正确计算:高位字节左移8位 + 低位字节
return (buf[3] << 8) | buf[4];
}
/***************************
... ...
... ... @@ -109,6 +109,61 @@ void JZsdk_UserLogOutput(E_JZsdkConsoleLogLevel level, const char *fmt, ...)
void JZsdk_User_OutputHex(E_JZsdkConsoleLogLevel level, const char *fmt, ...)
{
// 将日志级别转换为相应的字符串
const char *JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "";
switch (level) {
case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_DEBUG:
JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "DEBUG";
break;
case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO:
JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "INFO";
break;
case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_WARN:
JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "WARNING";
break;
case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_ERROR:
JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "ERROR";
break;
default:
break;
}
// 使用可变参数处理传入的格式化字符串和可变参数
va_list args;
va_start(args, fmt);
//格式化日志消息
char logMessage[10];
memset(logMessage, 0, sizeof(logMessage));
vsnprintf(logMessage, sizeof(logMessage), fmt, args);
va_end(args);
// 执行具体的日志输出操作
char finalLogMessage[512];
memset(finalLogMessage, 0, sizeof(finalLogMessage));
snprintf(finalLogMessage, 612, "%s", logMessage);
printf("%x ",finalLogMessage[0]);
//写入日志
//HexToLogFile(finalLogMessage);
}
... ...
... ... @@ -325,36 +325,41 @@ static T_JZsdkReturnCode DeviceSample_init(int mode)
#if DEVICE_VERSION == JZ_H150G
JZ_h150g_init(mode);
#endif
}
//T40加载
#if DEVICE_VERSION == JZ_T40
JZ_T40_init(mode);
#endif
}
T_JZsdkReturnCode Main_APP_Psdk()
//环境信息加载
static T_JZsdkReturnCode EquipmentEnvironment_Init()
{
int value[5] = {0, 0, 0, 0, 0};
//sdklib加载
JZsdk_LibInit(JZ_FLAGCODE_ON);
//hal加载
//hal信息加载,这里后期需要优化
JZsdk_Hal_Init();
JZSDK_LOG_INFO("%x,PsdkVersion%d.%d.%d.%d\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);
//通用模块初始化
CommonMod_Init();
//引脚初始化
Ircut_Init();
//设备信息初始化
DeviceInfo_Init();
}
T_JZsdkReturnCode Main_APP_Psdk()
{
//环境加载
EquipmentEnvironment_Init();
//工作模式设置函数,用于超时,及播放启动语音等
Main_WorkMode();
//外接传输模块
JZsdk_data_transmisson_Receive_Init();
//设备例程初始化
DeviceSample_init(APP_PSDK);
... ... @@ -373,23 +378,8 @@ T_JZsdkReturnCode Main_APP_Psdk()
int Main_APP_Uart()
{
int value[5] = {0, 0, 0, 0, 0};
//lib库初始化
JZsdk_LibInit(JZ_FLAGCODE_ON);
JZsdk_Hal_Init();
JZSDK_LOG_INFO("0x%x,UartVersion%d.%d.%d.%d\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);
//通用模块
CommonMod_Init();
//引脚初始化
Ircut_Init();
//设备信息初始化
DeviceInfo_Init();
//环境加载
EquipmentEnvironment_Init();
//工作模式设置函数,用于超时,及播放启动语音等
Main_WorkMode();
... ... @@ -404,8 +394,6 @@ int Main_APP_Uart()
int Main_TestAPP()
{
int value[5] = {0, 0, 0, 0, 0};
JZsdk_LibInit(JZ_FLAGCODE_ON);
JZsdk_Hal_Init();
... ... @@ -413,8 +401,12 @@ int Main_TestAPP()
CommonMod_Init();
//串口设备1初始化
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
s_JZ_SerialPortHalRegInfo SerialInfo = {
.BitRate = UART_DEV1_BITRATE,
.ConnectType = PORT_CONNECT_TYPE_AS_SUB
};
JZsdk_HalPort_Init(UART_DEV_1, (void *)&SerialInfo);
}
... ...
... ... @@ -245,6 +245,23 @@ extern "C" {
#define NET_WORK_IPADDR NULL
#define NET_WORK_TARGET_IPADDR NULL
#define NET_WORK_NETMASK NULL
#elif DEVICE_VERSION == JZ_T40
#define UART_DEV1_NUM "/dev/ttyS1"
#define UART_DEV1_BITRATE (115200)
#define UART_DEV2_NUM "/dev/ttyS0"
#define UART_DEV2_BITRATE (115200)
#define COMM_4G_UART_NUM "/dev/ttyS2"
#define COMM_4G_UART_BITRATE (115200)
#define GIMBAL_UART_NUM NULL
#define GIMBAL_UART_BITRATE (0)
#define NET_WORK_IPADDR NULL
#define NET_WORK_TARGET_IPADDR NULL
#define NET_WORK_NETMASK NULL
#else
#define UART_DEV1_NUM NULL
... ...
... ... @@ -26,6 +26,8 @@
#include "DeviceSample/JZ_U3_series/JZ_U3D/JZ_u3d.h"
#include "DeviceSample/JZ_U3_series/JZ_U30/JZ_u30.h"
#include "DeviceSample/JZ_T40/JZ_T40.h"
#include "DeviceSample/JZC1/JZC1.h"
#include "DeviceSample/JZ_ST/JZ_ST.h"
... ...
... ... @@ -1141,6 +1141,16 @@ static T_JZsdkReturnCode JZC1_PowerOn_Read()
//c1的实际初始化函数
T_JZsdkReturnCode JZC1_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)
{
... ... @@ -1148,15 +1158,21 @@ T_JZsdkReturnCode JZC1_Init(int mode)
JZsdk_NetWork_Init();
}
if (mode == APP_PSDK)
{
//外接传输模块,用于与飞机的数据通信
JZsdk_data_transmisson_Receive_Init();
}
#ifdef RTK_MPP_STATUS_ON
T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
T_JZsdkVideoMgmtHandler VideoMgmtHandler = {
.SetNextFrame_IDR = JZC1_SetNextFrame_IDR,
//媒体模块初始化
T_JZsdkMediaProcHandler MediaProcHandler = {
.VideoMgmtHandler.SetNextFrame_IDR = JZC1_SetNextFrame_IDR,
};
VideoMgmt_Init(VideoMgmtHandler);
MediaProc_Init(MediaProcHandler);
//初始化红外的编码器
g_JZC1_info.IRC_enc_info = (T_rtk_mmp_enc_info *)malloc(sizeof(T_rtk_mmp_enc_info));
... ...
... ... @@ -6,6 +6,7 @@
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
#include "Ircut/Ircut.h"
/****************************
*
... ... @@ -16,17 +17,38 @@
* ****************************/
T_JZsdkReturnCode JZ_h10_init(int mode)
{
//音频库初始化
AudioDeal_Init();
//引脚初始化
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 = 11;
ircut_info.Amplifiter_Pin.Group = 0;
ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
//还有个pwm
ircut_info.PWM_1_Pin.Enable = JZ_FLAGCODE_ON;
Ircut_Init(ircut_info);
int value[5] = {0};
if (mode == APP_UART)
{
//串口设备1初始化
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
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();
}
//音频库初始化
AudioDeal_Init();
//喊话器初始化
Megaphone_Init();
... ...
... ... @@ -7,6 +7,7 @@
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
#include "Ircut/Ircut.h"
/****************************
*
... ... @@ -17,21 +18,51 @@
* ****************************/
T_JZsdkReturnCode JZ_h10t_init(int mode)
{
//音频库初始化
AudioDeal_Init();
//引脚初始化
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_info.OutPutPower_Pin.Enable = JZ_FLAGCODE_ON;
ircut_info.OutPutPower_Pin.Port = JZ_IRC_PORT_PB;
ircut_info.OutPutPower_Pin.index = 6;
ircut_info.OutPutPower_Pin.Group = 0;
ircut_info.OutPutPower_Pin.mode = JZ_IRC_PIN_MODE_OUT;
ircut_info.PWM_1_Pin.Enable = JZ_FLAGCODE_ON;
Ircut_Init(ircut_info);
int value[5] = {0};
if (mode == APP_UART)
{
//串口设备1初始化
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
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();
}
//4g设备初始化
value[0] = COMM_4G_UART_BITRATE;
JZsdk_HalPort_Init(UART_4G, value);
s_JZ_SerialPortHalRegInfo Serial_4G_Info = {
.BitRate = COMM_4G_UART_BITRATE,
.ConnectType = PORT_CONNECT_TYPE_AS_SUB
};
JZsdk_HalPort_Init(UART_4G, (void *)&Serial_4G_Info);
//音频库初始化
AudioDeal_Init();
//喊话器初始化
Megaphone_Init();
... ...
... ... @@ -7,6 +7,8 @@
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "IRCUT/ircut.h"
/****************************
*
* h150g 初始化
... ... @@ -16,17 +18,37 @@
* ****************************/
T_JZsdkReturnCode JZ_h150g_init(int mode)
{
//音频库初始化
//AudioDeal_Init();
int value[5] = {0};
//引脚初始化
IrcutInfo ircut_info;
ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PA;
ircut_info.Amplifiter_Pin.index = 17;
ircut_info.Amplifiter_Pin.Group = 0;
ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
Ircut_Init(ircut_info);
if (mode == APP_UART)
{
//串口设备1初始化
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
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();
}
//音频库初始化
//AudioDeal_Init();
//喊话器初始化
//Megaphone_Init();
}
\ No newline at end of file
... ...
... ... @@ -9,6 +9,7 @@
#include "Gimbal/Gimbal.h"
#include "MediaProc/MediaProc.h"
#include "Ircut/Ircut.h"
... ... @@ -67,24 +68,43 @@ T_JZsdkReturnCode JZ_h150s_h150t_init(int mode)
{
T_JZsdkReturnCode ret;
//音频库初始化
AudioDeal_Init();
//引脚初始化
IrcutInfo ircut_info;
ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PA;
ircut_info.Amplifiter_Pin.index = 17;
ircut_info.Amplifiter_Pin.Group = 0;
ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
Ircut_Init(ircut_info);
if (mode == APP_UART)
{
//串口设备1初始化
int value[1];
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
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();
}
//h150t额外开启4g
if (DEVICE_VERSION == JZ_H150T)
{
//4g设备初始化
int value[1];
value[0] = COMM_4G_UART_BITRATE;
JZsdk_HalPort_Init(UART_4G, value);
//串口设备4g初始化
s_JZ_SerialPortHalRegInfo Serial_4G_Info = {
.BitRate = COMM_4G_UART_BITRATE,
.ConnectType = PORT_CONNECT_TYPE_AS_SUB
};
JZsdk_HalPort_Init(UART_4G, (void *)&Serial_4G_Info);
}
if (mode == APP_UART)
... ... @@ -93,17 +113,20 @@ T_JZsdkReturnCode JZ_h150s_h150t_init(int mode)
JZsdk_NetWork_Init();
}
//音频库初始化
AudioDeal_Init();
//喊话器初始化
Megaphone_Init();
//云台初始化
Gimbal_Init(JZ_MODULE_CONTROL_WAY_INDEPENDENT);
//视频流模块初始化
T_JZsdkVideoMgmtHandler VideoMgmtHandler = {
.SetNextFrame_IDR = NULL,
//媒体模块初始化
T_JZsdkMediaProcHandler MediaProcHandler = {
.VideoMgmtHandler.SetNextFrame_IDR = NULL,
};
VideoMgmt_Init(VideoMgmtHandler);
MediaProc_Init(MediaProcHandler);
//相机初始化
g_H150S_Info.CamereInfo = (JZsdk_CameraInfo *)malloc(sizeof(JZsdk_CameraInfo));
... ...
... ... @@ -5,6 +5,7 @@
#include "JZsdk_Hal.h"
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Ircut/Ircut.h"
/****************************
*
... ... @@ -16,16 +17,37 @@
T_JZsdkReturnCode JZ_h1e_init(int mode)
{
int value[5] = {0};
//音频库初始化
AudioDeal_Init();
//引脚初始化
IrcutInfo ircut_info;
ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PB;
ircut_info.Amplifiter_Pin.index = 4;
ircut_info.Amplifiter_Pin.Group = 0;
ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
Ircut_Init(ircut_info);
if (mode == APP_UART)
{
//串口设备1初始化
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
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();
}
//音频库初始化
AudioDeal_Init();
//喊话器初始化
Megaphone_Init();
... ...
... ... @@ -6,10 +6,11 @@
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
#include "Ircut/Ircut.h"
/****************************
*
* h15tt 初始化
* h1t 初始化
*
* mode psdk为psdk模式 uart为串口模式
*
... ... @@ -18,19 +19,42 @@ T_JZsdkReturnCode JZ_h1t_init(int mode)
{
int value[5] = {0};
//音频库初始化
AudioDeal_Init();
//引脚初始化
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)
{
//串口设备1初始化
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
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();
}
//4g设备初始化
value[0] = COMM_4G_UART_BITRATE;
JZsdk_HalPort_Init(UART_4G, value);
s_JZ_SerialPortHalRegInfo Serial_4G_Info = {
.BitRate = COMM_4G_UART_BITRATE,
.ConnectType = PORT_CONNECT_TYPE_AS_SUB
};
JZsdk_HalPort_Init(UART_4G, (void *)&Serial_4G_Info);
//音频库初始化
AudioDeal_Init();
//喊话器初始化
Megaphone_Init();
... ...
... ... @@ -272,6 +272,16 @@ static T_JZsdkReturnCode JZ_IrcCameraInit()
T_JZsdkReturnCode JZ_ST_Init(int mode)
{
//引脚初始化
IrcutInfo ircut_info;
ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PA;
ircut_info.Amplifiter_Pin.index = 17;
ircut_info.Amplifiter_Pin.Group = 0;
ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
Ircut_Init(ircut_info);
//网口初始化
if (mode == APP_UART)
{
... ... @@ -279,15 +289,21 @@ T_JZsdkReturnCode JZ_ST_Init(int mode)
JZsdk_NetWork_Init();
}
if (mode == APP_PSDK)
{
//外接传输模块,用于与飞机的数据通信
JZsdk_data_transmisson_Receive_Init();
}
T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
#ifdef RTK_MPP_STATUS_ON
//初始化相机流管理器
T_JZsdkVideoMgmtHandler VideoMgmtHandler = {
.SetNextFrame_IDR = JZST_SetNextFrame_IDR,
//媒体模块初始化
T_JZsdkMediaProcHandler MediaProcHandler = {
.VideoMgmtHandler.SetNextFrame_IDR = JZST_SetNextFrame_IDR,
};
VideoMgmt_Init(VideoMgmtHandler);
MediaProc_Init(MediaProcHandler);
//初始化红外的编码器
g_JZST_info.IRC_enc_info = (T_rtk_mmp_enc_info *)malloc(sizeof(T_rtk_mmp_enc_info));
... ...
#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 "Lighting/Lighting_InAndOut.h"
#include "JZsdk_haldata_deal/JZsdk_data_transmisson.h"
#include "IRCUT/ircut.h"
#include "Hal_Send/HalSend.h"
static int T40_SubConnectFlag = JZ_FLAGCODE_OFF;
void *JZ_T40_SubConnectTask(void *arg)
{
static int LeftGimbalConnectFlag = JZ_FLAGCODE_OFF;
static int RightGimbalConnectFlag = JZ_FLAGCODE_OFF;
static int LeftLightConnectFlag = JZ_FLAGCODE_OFF;
static int RightLightConnectFlag = JZ_FLAGCODE_OFF;
static int DelayTime = 0; //最多尝试连接设备30s
while (RightGimbalConnectFlag == JZ_FLAGCODE_OFF ||
LeftGimbalConnectFlag == JZ_FLAGCODE_OFF ||
RightLightConnectFlag == JZ_FLAGCODE_OFF ||
LeftLightConnectFlag == JZ_FLAGCODE_OFF ||
DelayTime < 30000)
{
s_JZsdk_Hal_Info *HalInfo = JZsdk_Hal_GetHalInfo();
//遍历hal信息
for (int i = 0; i < HalInfo->HalPort[UART_DEV_2].SubNum; i++)
{
if(HalInfo->HalPort[UART_DEV_2].SubId[i] == 0x1c11)
{
LeftGimbalConnectFlag = JZ_FLAGCODE_ON;
continue;
}
if(HalInfo->HalPort[UART_DEV_2].SubId[i] == 0x1c12)
{
RightGimbalConnectFlag = JZ_FLAGCODE_ON;
continue;
}
if(HalInfo->HalPort[UART_DEV_2].SubId[i] == 0x1c21)
{
LeftLightConnectFlag = JZ_FLAGCODE_ON;
continue;
}
if(HalInfo->HalPort[UART_DEV_2].SubId[i] == 0x1c22)
{
RightLightConnectFlag = JZ_FLAGCODE_ON;
continue;
}
}
//左云台未连接
if (LeftGimbalConnectFlag == JZ_FLAGCODE_OFF)
{
//向左云台发送连接指令
HalSend_type1Send_ConnectFrame(UART_DEV_2, 0x11);
delayMs(500);
DelayTime+=500;
}
//右云台未连接
if (RightGimbalConnectFlag == JZ_FLAGCODE_OFF)
{
//向右云台发送连接指令
HalSend_type1Send_ConnectFrame(UART_DEV_2, 0x12);
delayMs(500);
DelayTime+=500;
}
//左探照灯未连接
if (LeftLightConnectFlag == JZ_FLAGCODE_OFF)
{
//向左探照灯发送连接指令
HalSend_type1Send_ConnectFrame(UART_DEV_2, 0x21);
delayMs(500);
DelayTime+=500;
}
//右探照灯未连接
if (RightLightConnectFlag == JZ_FLAGCODE_OFF)
{
//向右探照灯发送连接指令
HalSend_type1Send_ConnectFrame(UART_DEV_2, 0x22);
delayMs(500);
DelayTime+=500;
}
}
T40_SubConnectFlag = JZ_FLAGCODE_ON;
JZSDK_LOG_INFO("T40 SubDevice Connect Success");
}
/*****************************
*
*
* 子设备连接
* 两个探照灯,两个云台
*
* ***************************/
static T_JZsdkReturnCode JZ_T40_SubDevice_Init(void)
{
T_JZsdkOsalHandler *osalHandle = JZsdk_Platform_GetOsalHandler();
if (osalHandle == NULL)
{
JZSDK_LOG_ERROR("osalHandle is NULL");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
T_JZTaskHandle JZ_T40_SubTaskHandle;
osalHandle->TaskCreate("T40_SubDevice_Init", JZ_T40_SubConnectTask, 2048, NULL, &JZ_T40_SubTaskHandle);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode JZ_T40_Ircut_Init()
{
//引脚初始化
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);
}
void *JZ_T40_CheckLightTemperatureTask(void *arg)
{
//等候子设备连接成功
while (T40_SubConnectFlag == JZ_FLAGCODE_OFF)
{
delayMs(100);
}
JZSDK_LOG_INFO("开始检查灯温度");
while (1)
{
//检查左灯温度
HalSend_type1Send_CheckStatus_SearchLight_Temperture(UART_DEV_2, 0x21);
delayMs(500);
//检查右灯温度
HalSend_type1Send_CheckStatus_SearchLight_Temperture(UART_DEV_2, 0x22);
delayMs(500);
}
}
static T_JZsdkReturnCode JZ_T40_CheckLightTemperature(void)
{
T_JZsdkOsalHandler *osalHandle = JZsdk_Platform_GetOsalHandler();
if (osalHandle == NULL)
{
JZSDK_LOG_ERROR("osalHandle is NULL");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
T_JZTaskHandle JZ_T40_CheckLightTemperatureTaskHandle;
osalHandle->TaskCreate("T40_CheckLightTemperature", JZ_T40_CheckLightTemperatureTask, 2048, NULL, &JZ_T40_CheckLightTemperatureTaskHandle);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/********************
*
*
* T40 基础参数设置
*
*
* ****************/
static T_JZsdkReturnCode JZ_T40_BaseParamSet(void)
{
//设置探照灯亮度
//设置探照灯模式
//设置激光模式
//设置激光开关
//设置警灯颜色
//设置警灯模式
//设置云台角度
//设置喊话器音量
}
/****************************
*
* T40 初始化
*
* mode psdk为psdk模式 uart为串口模式
*
* ****************************/
T_JZsdkReturnCode JZ_T40_init(int mode)
{
//引脚初始化
JZ_T40_Ircut_Init();
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_MAIN,
};
JZsdk_HalPort_Init(UART_DEV_2, (void *)&SerialInfo2);
// //4G初始化
// value[0] = COMM_4G_UART_BITRATE;
// JZsdk_HalPort_Init(UART_4G, value);
//子设备连接
JZ_T40_SubDevice_Init();
//音频库初始化
AudioDeal_Init();
//喊话器初始化
Megaphone_Init();
//云台初始化
Gimbal_Init(JZ_MODULE_CONTROL_WAY_INDEPENDENT);
//灯类初始化
Lighting_Init();
//制造一个定时查询温度的线程
//JZ_T40_CheckLightTemperature();
//基础参数设置
JZ_T40_BaseParamSet();
JZSDK_LOG_INFO("T40 Init Success");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
... ...
/**
********************************************************************
* @file JZ_T40.h
* JZ_T40.h的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZ_T40_H
#define JZ_T40_H
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
T_JZsdkReturnCode JZ_T40_init(int mode);
T_JZsdkReturnCode JZ_T40_Ircut_Init();
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -7,6 +7,7 @@
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
#include "Ircut/ircut.h"
/****************************
*
... ... @@ -17,21 +18,43 @@
* ****************************/
T_JZsdkReturnCode JZ_u3_init(int mode)
{
//音频库初始化
AudioDeal_Init();
//引脚初始化
IrcutInfo ircut_info;
ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PB;
ircut_info.Amplifiter_Pin.index = 4;
ircut_info.Amplifiter_Pin.Group = 0;
ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
int value[5] = {0};
Ircut_Init(ircut_info);
if (mode == APP_UART)
{
//串口设备1初始化
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
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初始化
value[0] = UART_DEV2_BITRATE;
JZsdk_HalPort_Init(UART_DEV_2, value);
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();
... ...
... ... @@ -8,6 +8,8 @@
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
#include "Ircut/ircut.h"
/****************************
*
* u30 初始化
... ... @@ -17,21 +19,44 @@
* ****************************/
T_JZsdkReturnCode JZ_u30_init(int mode)
{
//音频库初始化
AudioDeal_Init();
//引脚初始化
IrcutInfo ircut_info;
ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PB;
ircut_info.Amplifiter_Pin.index = 4;
ircut_info.Amplifiter_Pin.Group = 0;
ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
int value[5] = {0};
Ircut_Init(ircut_info);
if (mode == APP_UART)
{
//串口设备1初始化
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
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初始化
value[0] = UART_DEV2_BITRATE;
JZsdk_HalPort_Init(UART_DEV_2, value);
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();
... ...
... ... @@ -7,6 +7,7 @@
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
#include "Ircut/ircut.h"
/****************************
*
... ... @@ -17,21 +18,43 @@
* ****************************/
T_JZsdkReturnCode JZ_u3d_init(int mode)
{
//音频库初始化
AudioDeal_Init();
//引脚初始化
IrcutInfo ircut_info;
ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PB;
ircut_info.Amplifiter_Pin.index = 4;
ircut_info.Amplifiter_Pin.Group = 0;
ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
int value[5] = {0};
Ircut_Init(ircut_info);
if (mode == APP_UART)
{
//串口设备1初始化
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
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初始化
value[0] = UART_DEV2_BITRATE;
JZsdk_HalPort_Init(UART_DEV_2, value);
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();
... ...
... ... @@ -7,6 +7,7 @@
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
#include "SideLaser/SideLaser.h"
#include "Ircut/ircut.h"
/****************************
*
... ... @@ -16,22 +17,56 @@
*
* ****************************/
T_JZsdkReturnCode JZ_u3s_init(int mode)
{
//音频库初始化
AudioDeal_Init();
{
//引脚初始化
IrcutInfo ircut_info;
ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PB;
ircut_info.Amplifiter_Pin.index = 4;
ircut_info.Amplifiter_Pin.Group = 0;
ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
ircut_info.SideLight_Left_Pin.Enable = JZ_FLAGCODE_ON;
ircut_info.SideLight_Left_Pin.Port = JZ_IRC_PORT_PB;
ircut_info.SideLight_Left_Pin.index = 6;
ircut_info.SideLight_Left_Pin.Group = 0;
ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
ircut_info.SideLight_Right_Pin.Enable = JZ_FLAGCODE_ON;
ircut_info.SideLight_Right_Pin.Port = JZ_IRC_PORT_PB;
ircut_info.SideLight_Right_Pin.index = 7;
ircut_info.SideLight_Right_Pin.Group = 0;
ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
Ircut_Init(ircut_info);
int value[5] = {0};
if (mode == APP_UART)
{
//串口设备1初始化
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
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初始化
value[0] = UART_DEV2_BITRATE;
JZsdk_HalPort_Init(UART_DEV_2, value);
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();
... ...
... ... @@ -7,6 +7,8 @@
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
#include "Ircut/ircut.h"
/****************************
*
... ... @@ -17,20 +19,45 @@
* ****************************/
T_JZsdkReturnCode TF_a1_init(int mode)
{
//音频库初始化
AudioDeal_Init();
//引脚初始化
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;
int value[5] = {0};
Ircut_Init(ircut_info);
//hal层初始化
if (mode == APP_UART)
{
//串口设备1初始化
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
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初始化
value[0] = UART_DEV2_BITRATE;
JZsdk_HalPort_Init(UART_DEV_2, value);
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();
... ...
... ... @@ -7,7 +7,7 @@
#define VERSION_CHOOSE_H
#include "JZsdk_Base/JZsdk_Code/JZsdk_DeviceCode.h"
//1~10行 除了D可以修改版本选择 禁止动任何东西
#define DEVICE_VERSION JZ_H150G
#define DEVICE_VERSION JZ_H150S
//禁止修改行 选择是串口程序 还是 psdk程序
#define APP_VERSION APP_PSDK
... ... @@ -21,9 +21,9 @@
#define MINOR_VERSION_TEN_POSITION 0
#define MINOR_VERSION_ONE_POSITION 3
#define MODIFY_VERSION_TEN_POSITION 1
#define MODIFY_VERSION_ONE_POSITION 1
#define MODIFY_VERSION_ONE_POSITION 2
#define DEBUG_VERSION_TEN_POSITION 0
#define DEBUG_VERSION_ONE_POSITION 3
#define DEBUG_VERSION_ONE_POSITION 0
... ... @@ -49,6 +49,18 @@
#define MEGAPHONE_CONFIG_STATUS_ON
#endif
#ifdef MACRO_IFLAY_TTS_1_MODULE
#define IFLAY_TTS_1_CONFIG_STATUS_ON
#endif
#ifdef MACRO_ESPEAK_TTS_MODULE
#define ESPEAK_TTS_CONFIG_STATUS_ON
#endif
#ifdef MACRO_IFLAY_TTS_2_MODULE
#define IFLAY_TTS_2_CONFIG_STATUS_ON
#endif
//是否开启媒体功能
#ifdef MACRO_MEDIA_PROC_MODULE
#define MEDIA_PROC_CONFIG_STATUS_ON
... ... @@ -99,6 +111,11 @@
#define LIGHTING_STATUS_ON
#endif
//是否加载探照灯模块
#ifdef MACRO_SEARCHLIGHT_MODULE
#define SEARCHLIGHT_STATUS_ON
#endif
//是否加载云台模块
#ifdef MACRO_GIMBAL_MODULE
#define GIMBAL_STATUS_ON
... ... @@ -111,7 +128,10 @@
//是否开启喊话器功能
#define MEGAPHONE_CONFIG_STATUS_ON
#define IFLAY_TTS_1_CONFIG_STATUS_ON
#define IFLAY_TTS_2_CONFIG_STATUS_ON
#define ESPEAK_TTS_CONFIG_STATUS_ON
//是否开启媒体管理功能
#define MEDIA_PROC_CONFIG_STATUS_ON
... ... @@ -142,6 +162,9 @@
//默认开启光源模块
#define LIGHTING_STATUS_ON
//默认开启探照灯模块
#define SEARCHLIGHT_STATUS_ON
//默认开启云台模块
#define GIMBAL_STATUS_ON
#endif
... ...
... ... @@ -35,6 +35,9 @@
#include "AudioDeal/AudioDeal.h"
#endif
#ifdef SEARCHLIGHT_STATUS_ON
#include "Searchlight/Searchlight.h"
#endif
static int HalRecvMode = JZ_FLAGCODE_OFF; //接收模式,主要是为了限制不同设备同时要求hal层做出 同一个数据接收相关功能 ,目前做法是只限定一个hal设备使用一种数据接收模式
static int HalRecvDataLen = 0; //用于计算接收数据长度
... ... @@ -64,7 +67,7 @@ static T_JZsdkMutexHandle GetMusicList_MutexHandle = NULL;
/*********
*
* 回复连接
* 作为子设备,接收到连接帧,并回复连接 与设备号
*
*
**********/
... ... @@ -3003,20 +3006,25 @@ static T_JZsdkReturnCode RecvDeal_CheckStatus_SearchLightLightAttribute(int Port
{
JZSDK_LOG_INFO("%s,灯光属性查询",JZsdk_DefineCode_GetPortName(Port));
T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
#ifdef SEARCHLIGHT_STATUS_ON
//1、获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//2、查询灯光属性
int Light_Frequency;
int Light_Mode;
int Light_LeftLumen;
int Light_RightLumen;
T_JZsdkReturnCode ret = UIcontrol_CheckStatus_SearchLightLightAttribute(&Light_Frequency, &Light_Mode, &Light_LeftLumen, &Light_RightLumen);
ret = UIcontrol_FlushSearchLightLightAttribute();
T_JzSearchLightAttribute LightAttribute;
ret = SearchLight_Get_SearchLightAttribute(&LightAttribute);
// 2、回复灯光属性
HalSend_type1Send_SearchLight_Frequency(Port, Light_Frequency);
HalSend_type1Send_SearchLight_Mode(Port, Light_Mode);
HalSend_type1Send_SearchLight_Lumen(Port, Light_LeftLumen, Light_RightLumen);
HalSend_type1Send_SearchLight_Frequency(Port, LightAttribute.Frequency);
HalSend_type1Send_SearchLight_Mode(Port, LightAttribute.Mode);
HalSend_type1Send_SearchLight_Lumen(Port, LightAttribute.LeftBrightness, LightAttribute.RightBrightness);
#endif
return ret;
}
... ... @@ -3880,11 +3888,53 @@ static T_JZsdkReturnCode RecvDeal_ObtainConnectFrame(int Port, char *getbuf)
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//1、通过数据帧2,获取值
int value = getbuf[10];
//获取设备id
//计算ID长度
int FrameLenth = JZsdk_Get_FrameLength(getbuf);
int IDLength = FrameLenth - 11;
//2、发送到本地处理
//TestAPP_Connect(value);
//获取ID
int DeviceID = 0;
//将ID转换为int
for (int i = 0; i < IDLength; i++)
{
DeviceID = DeviceID + (getbuf[9 + i] << (8 * (IDLength - i - 1)));
}
JZSDK_LOG_INFO("收到连接回复帧, 设备ID: %d", DeviceID);
//将ID放入Hal信息
s_JZsdk_Hal_Info *halInfo = JZsdk_Hal_GetHalInfo();
if (halInfo == NULL)
{
JZSDK_LOG_ERROR("获取Hal信息失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
//遍历ID表
for (int i = 0; i < halInfo->HalPort[Port].SubNum ; i++)
{
if (halInfo->HalPort[Port].SubId[i] == DeviceID)
{
JZSDK_LOG_INFO("已拥有设备ID: %d", DeviceID);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
}
//添加ID
if (halInfo->HalPort[Port].SubNum >= JZ_MAX_SUB_ID_NUM)
{
JZSDK_LOG_INFO("设备ID表已满");
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
else
{
JZSDK_LOG_INFO("添加设备ID: %d", DeviceID);
}
halInfo->HalPort[Port].SubId[halInfo->HalPort[Port].SubNum] = DeviceID;
halInfo->HalPort[Port].SubNum++;
return ret;
}
... ... @@ -4470,11 +4520,12 @@ static void *UartReinit_thread(void *arg)
int Port = arg_value[0];
int Value[1];
Value[0]= arg_value[1];
s_JZ_SerialPortHalRegInfo SerialInfo = {
.BitRate = arg_value[1],
.ConnectType = PORT_CONNECT_TYPE_AS_SUB
};
JZsdk_HalPort_ReInit(Port, Value);
JZsdk_HalPort_ReInit(Port, (void *)&SerialInfo);
JZSDK_LOG_INFO("串口重置完毕");
... ... @@ -5337,6 +5388,7 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
//收到连接回复帧
case JZ_INSCODE_5BFRAME_INITIATECONNECT:
RecvDeal_ObtainConnectFrame(Port,getbuf);
return 0;
break;
//收到心跳帧
... ...
... ... @@ -12,16 +12,18 @@
#include "./HalSend_type1.h"
//发送主动连接帧
T_JZsdkReturnCode HalSend_type1Send_ConnectFrame(int PortNum)
T_JZsdkReturnCode HalSend_type1Send_ConnectFrame(int PortNum, int FrameSequence)
{
unsigned char sendbuf[256];
int send_buf_len;
//1、获取帧样板
JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_ASKFORCONNECT , sendbuf, &send_buf_len);
sendbuf[6] = FrameSequence; //帧序列
//2、发送帧
HalSend_SendData(PortNum ,sendbuf, send_buf_len, 1);
HalSend_SendData(PortNum ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -918,7 +920,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalPitchAngle(int Uartport, int Fra
}
//设置当前云台角度
T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle)
T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle, int FrameSequence, int ReplyFlag)
{
//printf("发送设置云台角度帧 %d\n",angle); //该打印可能会造成卡顿
unsigned char sendbuf[256];
... ... @@ -938,6 +940,8 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle
sendbuf[9] = 0x00;
}
sendbuf[5] = ReplyFlag; //应答位
sendbuf[6] = FrameSequence; //帧序列
sendbuf[10] = ((angle>>8) & 0xff);
sendbuf[11] = (angle & 0xff);
... ... @@ -963,7 +967,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalAngle(int Uartport ,int Fr
}
//微调云台pitch
T_JZsdkReturnCode HalSend_type1Send_Set_GimbalFineTuningPitch(int Uartport, int PitchFineTuning)
T_JZsdkReturnCode HalSend_type1Send_Set_GimbalFineTuningPitch(int Uartport, int PitchFineTuning, int FrameSequence)
{
printf("发送微调云台pitch帧\n");
unsigned char sendbuf[256];
... ... @@ -983,6 +987,7 @@ T_JZsdkReturnCode HalSend_type1Send_Set_GimbalFineTuningPitch(int Uartport, int
sendbuf[9] = 0x00;
}
sendbuf[6] = FrameSequence; //帧序列
sendbuf[10] = ((PitchFineTuning>>8) & 0xff);
sendbuf[11] = (PitchFineTuning & 0xff);
... ... @@ -1113,7 +1118,7 @@ T_JZsdkReturnCode HalSend_type1Send_SetGimbalRange(int Uartport,int FrameSequenc
****************************************************************************************************************************************************/
//发送设置探照灯爆闪频率
T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int Frequency)
T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int Frequency, int FrameSequence)
{
printf("发送设置爆闪频率帧\n");
... ... @@ -1125,13 +1130,14 @@ T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int F
//2、写入数据
sendbuf[10] = Frequency;
sendbuf[6] = FrameSequence;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//设置探照灯控制
T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode)
T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode, int FrameSequence)
{
printf("发送探照灯控制\n");
... ... @@ -1143,13 +1149,14 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode)
//2、写入数据
sendbuf[10] = mode;
sendbuf[6] = FrameSequence;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//设置探照灯亮度
T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int LeftLumen, int RightLumen)
T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int LeftLumen, int RightLumen, int FrameSequence)
{
printf("发送设置探照灯亮度\n");
... ... @@ -1162,12 +1169,37 @@ T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int Left
//2、写入数据
sendbuf[9] = LeftLumen;
sendbuf[10] = RightLumen;
sendbuf[6] = FrameSequence;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//设置单边探照灯亮度
T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetSingleLumem(int Uartport, int Lumen, int FrameSequence)
{
printf("发送设置单边探照灯亮度\n");
unsigned char sendbuf[256];
int send_buf_len;
//1、获取帧样板
JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN, sendbuf, &send_buf_len);
//2、将模板从14位改成13位
sendbuf[4] = 0x0C;
memcpy(&sendbuf[9], &sendbuf[10], 4);
sendbuf[13] = 0x00;
send_buf_len=send_buf_len--;
//2、写入数据
sendbuf[6] = FrameSequence;
sendbuf[9] = Lumen;
//3、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
//发送
//查询探照灯频率
T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Frequency(int Uartport)
... ... @@ -1230,7 +1262,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Attribute(int Uartpo
}
//查询探照灯温度
T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartport)
T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartport, int FrameSequence)
{
printf("发送查询探照灯温度\n");
... ... @@ -1240,6 +1272,8 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartp
//1、获取帧样板
JZsdk_GetFrameTemplate(JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE, sendbuf, &send_buf_len);
sendbuf[6] = FrameSequence;
//2、发送帧
HalSend_SendData(Uartport ,sendbuf, send_buf_len, MULTI_THREAD_SEND);
}
... ...
... ... @@ -24,7 +24,7 @@ extern "C" {
/* Exported types ------------------------------------------------------------*/
T_JZsdkReturnCode HalSend_type1Send_Reply_Success(int Uartport ,int FrameSequence);
T_JZsdkReturnCode HalSend_type1Send_Send_Connect(int Uartport , int FrameSequence,int Version_flag);
T_JZsdkReturnCode HalSend_type1Send_ConnectFrame(int PortNum);
T_JZsdkReturnCode HalSend_type1Send_ConnectFrame(int PortNum, int FrameSequence);
T_JZsdkReturnCode HalSend_type1Send_Send_HeartBeatStatus(int Uartport , int FrameSequence,int HeartBeatStatus);
T_JZsdkReturnCode HalSend_type1Send_Set_PowerStatus(int Uartport, int FrameSequence, int status);
... ... @@ -69,9 +69,9 @@ T_JZsdkReturnCode HalSend_type1Send_Send_OpusList_Stop(int Uartport, int FrameSe
T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalPitchAngle(int Uartport, int FrameSequence ,int angle);
T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle);
T_JZsdkReturnCode HalSend_type1Send_Set_GimbalPitchAngle(int Uartport ,int angle, int FrameSequence, int ReplyFlag);
T_JZsdkReturnCode HalSend_type1Send_Reply_GimbalFineTuningPitch(int Uartport, int FrameSequence, int FineTunigPitch);
T_JZsdkReturnCode HalSend_type1Send_Set_GimbalFineTuningPitch(int Uartport, int PitchFineTuning);
T_JZsdkReturnCode HalSend_type1Send_Set_GimbalFineTuningPitch(int Uartport, int PitchFineTuning, int FrameSequence);
T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalFineTuningPitch(int Uartport, int FrameSequence);
T_JZsdkReturnCode HalSend_type1Send_Set_GimbalLinkageControl(int Uartport,int FrameSequence, int value);
T_JZsdkReturnCode HalSend_type1Send_CheckStatus_GimbalLinkage(int Uartport,int FrameSequence);
... ... @@ -88,9 +88,11 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_CurrentPlayTime(int Uartport ,int time
T_JZsdkReturnCode HalSend_type1Send_Reply_CurrentPlayTimeStatus(int Uartport, int FrameSequence ,int mode);
T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int Frequency);
T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode);
T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int LeftLumen, int RightLumen);
T_JZsdkReturnCode HalSend_type1Send_Set_SearchLightFrequency(int Uartport ,int Frequency, int FrameSequence);
T_JZsdkReturnCode HalSend_type1Send_SearchLight_Control(int Uartport,int mode, int FrameSequence);
T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetLumen(int Uartport, int LeftLumen, int RightLumen, int FrameSequence);
T_JZsdkReturnCode HalSend_type1Send_SearchLight_SetSingleLumem(int Uartport, int Lumen, int FrameSequence);
T_JZsdkReturnCode HalSend_type1Send_MessageSubcription_Control(int Uartport, int value);
T_JZsdkReturnCode HalSend_type1Send_Set_WarningLight_Status(int Uartport,int status, int mode);
... ... @@ -115,7 +117,7 @@ T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Frequency(int Uartpo
T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Lumen(int Uartport);
T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Mode(int Uartport);
T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Attribute(int Uartport);
T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartport);
T_JZsdkReturnCode HalSend_type1Send_CheckStatus_SearchLight_Temperture(int Uartport, int FrameSequence);
T_JZsdkReturnCode HalSend_type1Send_WarningLight_Status(int Uartport, int status, int mode);
... ...
... ... @@ -24,48 +24,36 @@ T_JZsdkReturnCode JZsdk_Hal_Init()
g_HalInfo = pOsalHandler->Malloc(sizeof(s_JZsdk_Hal_Info));
}
//将结构体信息清空
memset(g_HalInfo, 0, sizeof(s_JZsdk_Hal_Info));
//PSDK系列初始化
for (int i = DEVICE_PSDK; i < UART_4G; i++)
{
g_HalInfo->HalPort[i].UseFlag = JZ_FLAGCODE_OFF;
g_HalInfo->HalPort[i].ConnectStatus = JZ_FLAGCODE_OFF;
g_HalInfo->HalPort[i].HeartBeatStatusSend = JZ_FLAGCODE_OFF;
g_HalInfo->HalPort[i].PortType = PORT_TYPE_PSDK;
}
//UART系列初始化
for (int i = UART_4G; i < USB_DEV_1; i++)
{
g_HalInfo->HalPort[i].UseFlag = JZ_FLAGCODE_OFF;
g_HalInfo->HalPort[i].ConnectStatus = JZ_FLAGCODE_OFF;
g_HalInfo->HalPort[i].HeartBeatStatusSend = JZ_FLAGCODE_OFF;
g_HalInfo->HalPort[i].PortType = PORT_TYPE_UART;
}
//USB系列初始化
for (int i = USB_DEV_1; i < NET_DEV_1; i++)
{
g_HalInfo->HalPort[i].UseFlag = JZ_FLAGCODE_OFF;
g_HalInfo->HalPort[i].ConnectStatus = JZ_FLAGCODE_OFF;
g_HalInfo->HalPort[i].HeartBeatStatusSend = JZ_FLAGCODE_OFF;
g_HalInfo->HalPort[i].PortType = PORT_TYPE_USB;
}
//网口系列初始化
for (int i = NET_DEV_1; i < HAL_DATA_TRANSMISSION; i++)
{
g_HalInfo->HalPort[i].UseFlag = JZ_FLAGCODE_OFF;
g_HalInfo->HalPort[i].ConnectStatus = JZ_FLAGCODE_OFF;
g_HalInfo->HalPort[i].HeartBeatStatusSend = JZ_FLAGCODE_OFF;
g_HalInfo->HalPort[i].PortType = PORT_TYPE_NET;
}
//特殊数据层
for (int i = HAL_DATA_TRANSMISSION; i < HAL_MAX; i++)
{
g_HalInfo->HalPort[i].UseFlag = JZ_FLAGCODE_OFF;
g_HalInfo->HalPort[i].ConnectStatus = JZ_FLAGCODE_OFF;
g_HalInfo->HalPort[i].HeartBeatStatusSend = JZ_FLAGCODE_OFF;
g_HalInfo->HalPort[i].PortType = PORT_TYPE_TRANS_DATA;
}
... ... @@ -141,12 +129,13 @@ T_JZsdkReturnCode JZsdk_HalPort_SetUseFlag(int PortName,int UseFlag)
//用于给初始化函数调用
static T_JZsdkReturnCode JZsdK_HalPort_Init_Info(int PortName, int UseFlag
, int ConnectStatus, int HeartBeatStatusSend, int PortType)
, int ConnectStatus, int HeartBeatStatusSend, int PortType, int ConnectType)
{
g_HalInfo->HalPort[PortName].UseFlag = UseFlag;
g_HalInfo->HalPort[PortName].ConnectStatus = ConnectStatus;
g_HalInfo->HalPort[PortName].HeartBeatStatusSend = HeartBeatStatusSend;
g_HalInfo->HalPort[PortName].PortType = PortType;
g_HalInfo->HalPort[PortName].ConnectType = ConnectType;
//记录端口
JZsdk_HalPort_SetUseFlag(PortName, JZ_FLAGCODE_ON);
... ... @@ -161,14 +150,19 @@ static T_JZsdkReturnCode JZsdK_HalPort_Init_Info(int PortName, int UseFlag
* uart初始化 value[0]为波特率
*
* ******************/
T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, int Value[])
T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, void *Value)
{
T_JZsdkReturnCode ret;
//psdk初始化
if (PortName >= DEVICE_PSDK && PortName < UART_4G)
{
JZsdK_HalPort_Init_Info(PortName, JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF, PORT_TYPE_PSDK);
JZsdK_HalPort_Init_Info(PortName,
JZ_FLAGCODE_ON,
JZ_FLAGCODE_OFF,
JZ_FLAGCODE_OFF,
PORT_TYPE_PSDK,
PORT_CONNECT_TYPE_AS_SUB);
JZSDK_LOG_INFO("hal%s 初始化",JZsdk_DefineCode_GetPortName(PortName));
... ... @@ -179,15 +173,26 @@ T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, int Value[])
if (PortName >= UART_4G && PortName < USB_DEV_1)
{
JZSDK_LOG_INFO("hal%s 初始化",JZsdk_DefineCode_GetPortName(PortName));
if (Value == NULL)
{
JZSDK_LOG_ERROR("hal%s 初始化失败,Value为NULL",JZsdk_DefineCode_GetPortName(PortName));
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
s_JZ_SerialPortHalRegInfo *PortInfo = (s_JZ_SerialPortHalRegInfo *)Value;
int BitRate = PortInfo->BitRate;
int ConnectType = PortInfo->ConnectType;
ret = JZsdk_Uart_ReInit(PortName, Value[0]);
ret = JZsdk_Uart_ReInit(PortName, BitRate);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("hal%s 初始化失败",JZsdk_DefineCode_GetPortName(PortName));
return ret;
}
JZsdK_HalPort_Init_Info(PortName, JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF, PORT_TYPE_UART);
JZsdK_HalPort_Init_Info(PortName, JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF, PORT_TYPE_UART, ConnectType);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -207,7 +212,7 @@ T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, int Value[])
//数据传输初始化
if (PortName == HAL_DATA_TRANSMISSION)
{
JZsdK_HalPort_Init_Info(PortName, JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF, PORT_TYPE_TRANS_DATA);
JZsdK_HalPort_Init_Info(PortName, JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF, PORT_TYPE_TRANS_DATA, PORT_CONNECT_TYPE_AS_SUB);
JZSDK_LOG_INFO("hal%s 初始化",JZsdk_DefineCode_GetPortName(PortName));
}
... ... @@ -223,7 +228,7 @@ T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, int Value[])
* 与init的区别是, Reinit 是要调用多线程来重初始化的
*
* ***************************/
T_JZsdkReturnCode JZsdk_HalPort_ReInit(int PortName, int Value[])
T_JZsdkReturnCode JZsdk_HalPort_ReInit(int PortName, void *Value)
{
return JZsdk_HalPort_Init(PortName, Value);
}
\ No newline at end of file
... ...
... ... @@ -25,6 +25,8 @@ extern "C" {
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
#define JZ_MAX_SUB_ID_NUM 10
typedef enum E_HAL_PORT_TYPE
{
PORT_TYPE_PSDK = 0,
... ... @@ -35,6 +37,26 @@ typedef enum E_HAL_PORT_TYPE
PORT_TYPE_TRANS_DATA = 4,
}E_HAL_PORT_TYPE;
typedef enum E_HAL_CONNECT_TYPE
{
PORT_CONNECT_TYPE_AS_SUB = 0, //作为副设备
PORT_CONNECT_TYPE_AS_MAIN = 1, //作为主设备
}E_HAL_CONNECT_TYPE;
/******************
*
* hal使用状态
*
* ********/
typedef struct s_JZ_SerialPortHalRegInfo
{
int BitRate; //波特率
E_HAL_CONNECT_TYPE ConnectType; //连接类型
}s_JZ_SerialPortHalRegInfo;
/******************
*
* hal使用状态
... ... @@ -45,9 +67,17 @@ typedef enum E_HAL_PORT_TYPE
typedef struct s_JZsdk_HalStatus
{
int UseFlag; //hal使用标志位 //初始化时开关关闭
int ConnectStatus; //接收过连接帧后打开
int HeartBeatStatusSend; //心跳帧的发送开关
int PortType;
int PortType; //hal的端口类型
int ConnectType;//主副设备类型
//作为主设备专有
int SubId[JZ_MAX_SUB_ID_NUM]; //副设备ID
int SubNum; //副设备数量
//作为副设备专有
int HeartBeatStatusSend; //对主设备发送心跳帧的发送开关
int ConnectStatus; //连接状态,接收过连接帧后打开
}s_JZsdk_HalStatus;
typedef struct s_JZsdk_Hal_Info
... ... @@ -64,8 +94,8 @@ typedef struct s_JZsdk_Hal_Info
int JZsdk_HalPort_UseFlag(int PortName);
T_JZsdkReturnCode JZsdk_HalPort_SetUseFlag(int PortName,int UseFlag);
T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, int Value[]);
T_JZsdkReturnCode JZsdk_HalPort_ReInit(int PortName, int Value[]);
T_JZsdkReturnCode JZsdk_HalPort_Init(int PortName, void *Value);
T_JZsdkReturnCode JZsdk_HalPort_ReInit(int PortName, void *Value);
T_JZsdkReturnCode JZsdk_Hal_Init();
... ...
#include "JZsdkLib.h"
/**************************
*
* i2c reset
*
*
* **********************/
// static T_JZsdkReturnCode JZsdk_HalI2c_i2cReset()
// {
// char systemCmd[JZSDK_CMD_SIZE] = {0};
// JZ_U32 ret;
// // 1. 导出GPIO
// sprintf(systemCmd, "echo %d > /sys/class/gpio/export", I2C_DEVICE_RESET_GPIO_NUM);
// ret = system(systemCmd);
// if (ret != 0) {
// printf("Export reset gpio failed, %d\r\n", ret);
// return; // 建议提前返回避免后续错误
// }
// // 2. 设置方向为输出
// sprintf(systemCmd, "echo out > /sys/class/gpio/gpio%d/direction", I2C_DEVICE_RESET_GPIO_NUM);
// ret = system(systemCmd);
// if (ret != 0) {
// printf("Set gpio direction failed, %d\r\n", ret);
// goto unexport;
// }
// // 3. 拉低复位引脚
// sprintf(systemCmd, "echo 0 > /sys/class/gpio/gpio%d/value", I2C_DEVICE_RESET_GPIO_NUM);
// ret = system(systemCmd);
// if (ret != 0) {
// printf("Set gpio value failed, %d\r\n", ret);
// goto unexport;
// }
// usleep(I2C_DEVICE_RESET_TIME_US);
// // 4. 拉高复位引脚
// sprintf(systemCmd, "echo 1 > /sys/class/gpio/gpio%d/value", I2C_DEVICE_RESET_GPIO_NUM);
// ret = system(systemCmd);
// if (ret != 0) {
// printf("Set gpio value failed, %d\r\n", ret);
// goto unexport;
// }
// unexport:
// // 5. 取消导出GPIO
// sprintf(systemCmd, "echo %d > /sys/class/gpio/unexport", I2C_DEVICE_RESET_GPIO_NUM);
// system(systemCmd); // 忽略取消导出的返回值
// }
... ...
... ... @@ -221,13 +221,14 @@ static void *UartDeal_rece(void *arg)
// data_len2+=args->MessageLength;
// printf("当前接收长度%d bytesRead%d bmessage%d reslen%d\n",data_len,bytesRead,data_len2,args->ResLen);
// JZSDK_LOG_INFO("从串口读取到,长度%d",(args->MessageLength-args->ResLen));
// for (int i = 0; i < (args->MessageLength-args->ResLen); i++)
// {
// JZSDK_LOG_OUTPUTHEX("%s",&args->Message[i+args->ResLen]);
// }
#if 1
JZSDK_LOG_INFO("从串口读取到,长度%d",(args->MessageLength-args->ResLen));
for (int i = 0; i < (args->MessageLength-args->ResLen); i++)
{
JZSDK_LOG_OUTPUTHEX("%s",&args->Message[i+args->ResLen]);
}
#endif
// 更新剩余长度
args->ResLen = 0;
}
... ... @@ -557,17 +558,17 @@ static void JZsdk_Uart_UartSend_Task(void *data)
if (taskData->Uart_name == UART_4G)
{
printf("4G设备发送\n");
printf("task4G设备发送\n");
write(Uart_4G_fd, taskData->str, taskData->str_lenth);
}
else if (taskData->Uart_name == UART_DEV_1)
{
printf("串口1号设备发送\n");
printf("task串口1号设备发送\n");
write(Uart_DEV1_fd, taskData->str, taskData->str_lenth);
}
else if (taskData->Uart_name == UART_DEV_2)
{
printf("串口2号设备发送\n");
printf("task串口2号设备发送\n");
write(Uart_DEV2_fd, taskData->str, taskData->str_lenth);
}
else if (taskData->Uart_name == HAL_DATA_TRANSMISSION)
... ...
... ... @@ -30,7 +30,7 @@ static int Audiodeal_status = JZ_FLAGCODE_OFF;
T_JZsdkReturnCode AudioDeal_Init()
{
T_JZsdkReturnCode ret;
ret = JZsdk_Malloc((void **)&AudioDeakInfo_index, sizeof(struct AudioDealInfo));
//初始化参数
... ...
... ... @@ -3,6 +3,7 @@
#include <time.h>
#include <unistd.h>
#include <string.h>
#include <math.h>
#include "Attribute.h"
// 每个月的天数表(索引0为占位)
... ...
... ... @@ -16,6 +16,7 @@
#include "Gimbal/Gimbal.h"
#include "Gimbal/Gimbal_DataDeal/Gimbal_DataDeal.h"
#include "Gimbal/Gimbal_MotorFineTuning/MotorFineTuning.h"
#include "Gimbal/SingleCompensation/SingleCompensation.h"
#include "BaseConfig.h"
#include "Hal_Send/HalSend.h"
... ... @@ -33,6 +34,12 @@ static int g_MotorFineTuningPitch = 0; //pitch微调值
static int g_MotorFineTuningYaw = 0; //yaw微调值
static int g_MotorFineTuningRoll = 0; //roll微调值
//单边微调角度,并非会在每次调整角度后发送,而是在每次单边微调和初始化时发送
static T_JZ_SingleCompensationInfo g_SingleCompensationInfo = {
.Left_SingleCompensationValue = 0,
.Right_SingleCompensationValue = 0,
};
//飞机自身角度
static int Gimbal_UavSelfPitch = 0;
... ... @@ -366,7 +373,7 @@ T_JZsdkReturnCode Gimbal_Set_PitchFineTuning(int pitch)
g_MotorFineTuningPitch = pitch;
#if DEVICE_VERSION == JZ_H1T
HalSend_type1Send_Set_GimbalFineTuningPitch(UART_DEV_1, g_MotorFineTuningPitch);
HalSend_type1Send_Set_GimbalFineTuningPitch(UART_DEV_1, g_MotorFineTuningPitch, 0x00);
#endif
}
break;
... ... @@ -619,6 +626,73 @@ T_JZsdkReturnCode Gimbal_Obtain_Gimbal_Pitch(int Pitch)
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/********************************
*
*
* 单边云台补偿值设置
*
*
* ************************************/
T_JZsdkReturnCode Gimbal_Set_SingleCompensation(int Mode, int Value)
{
//判断云台是否初始化完成
if (g_JZsdk_GimbalStatusFlag == JZ_FLAGCODE_OFF)
{
JZSDK_LOG_ERROR("云台未初始化");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
if (Mode == JZ_SINGLE_COMPENSATION_MODE_PITCH_LEFT)
{
JZSDK_LOG_INFO("设置单边补偿值,模式:左补偿,值:%d\n", Value);
g_SingleCompensationInfo.Left_SingleCompensationValue = g_SingleCompensationInfo.Left_SingleCompensationValue + Value;
//设置本地的单边补偿值
SingleCompensation_SaveValues(&g_SingleCompensationInfo);
//发送单边补偿值到云台
HalSend_type1Send_Set_GimbalFineTuningPitch(UART_DEV_2, g_SingleCompensationInfo.Left_SingleCompensationValue, 0x11);
}
else if (Mode == JZ_SINGLE_COMPENSATION_MODE_PITCH_RIGHT)
{
JZSDK_LOG_INFO("设置单边补偿值,模式:右补偿,值:%d\n", Value);
g_SingleCompensationInfo.Right_SingleCompensationValue = g_SingleCompensationInfo.Right_SingleCompensationValue + Value;
//设置本地的单边补偿值
SingleCompensation_SaveValues(&g_SingleCompensationInfo);
//发送单边补偿值到云台
HalSend_type1Send_Set_GimbalFineTuningPitch(UART_DEV_2, g_SingleCompensationInfo.Right_SingleCompensationValue, 0x12);
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/**************************************************************
*
*
... ... @@ -758,6 +832,13 @@ static T_JZsdkReturnCode Gimbal_Set_RealPitchAngle(int pitch, int FineTuningP, i
T_JZsdkReturnCode Get_JZsdk_GimbalStatusFlag()
{
return g_JZsdk_GimbalStatusFlag;
... ... @@ -841,15 +922,31 @@ static T_JZsdkReturnCode Gimbal_Init_IndependentControl()
{
g_Gimbal_Mode = JZ_MODULE_CONTROL_WAY_INDEPENDENT;
T_JZsdkReturnCode ret;
//舵机初始化
Gimal_MotorInit();
//云台微调初始化
MotorFineTuning_Init(&g_MotorFineTuningPitch, &g_MotorFineTuningYaw, &g_MotorFineTuningRoll);
//单边云台补偿初始化
ret = JZsdk_SingleCompensation_Init(&g_SingleCompensationInfo);
if ((JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS == ret) && (DEVICE_VERSION == JZ_T40))
{
JZSDK_LOG_INFO("单边云台补偿初始化成功, 读取到补偿值,左补偿值:%d,右补偿值:%d", g_SingleCompensationInfo.Left_SingleCompensationValue, g_SingleCompensationInfo.Right_SingleCompensationValue);
//发送单边补偿值到云台
HalSend_type1Send_Set_GimbalFineTuningPitch(UART_DEV_2, g_SingleCompensationInfo.Left_SingleCompensationValue, 0x11);
delayMs(500);
HalSend_type1Send_Set_GimbalFineTuningPitch(UART_DEV_2, g_SingleCompensationInfo.Right_SingleCompensationValue, 0x12);
}
//云台角度初始化
Gimbal_Flush_Pitch();
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ...
... ... @@ -44,6 +44,8 @@ T_JZsdkReturnCode Gimbal_Obtain_GimbalLinkage(int GimbalLinkage);
T_JZsdkReturnCode Gimbal_CheckStatus_Angle(int *PitchAngle, int *YawAngle, int *RollAngle);
T_JZsdkReturnCode Gimbal_Obtain_Gimbal_Pitch(int Pitch);
T_JZsdkReturnCode Gimbal_Set_SingleCompensation(int Mode, int Value);
T_JZsdkReturnCode Gimbal_PitchSelfangleMode(int Pitch);
int Gimbal_PitchScaleMode(int value);
... ...
... ... @@ -115,12 +115,17 @@ T_JZsdkReturnCode Gimbal_DataDeal_SetRealAngle(int angle)
|| DEVICE_VERSION == TF_A1
//发送角度给串口2
HalSend_type1Send_Set_GimbalPitchAngle(UART_DEV_2, angle);
HalSend_type1Send_Set_GimbalPitchAngle(UART_DEV_2, angle, 0, JZ_FLAGCODE_ON);
#elif DEVICE_VERSION == JZ_H1T
//发送角度给串口1
HalSend_type1Send_Set_GimbalPitchAngle(UART_DEV_1, angle);
HalSend_type1Send_Set_GimbalPitchAngle(UART_DEV_1, angle, 0, JZ_FLAGCODE_ON);
#elif DEVICE_VERSION == JZ_T40
//T40很特殊,需要控制两个子设备,所以要准备帧序列
HalSend_type1Send_Set_GimbalPitchAngle(UART_DEV_2, angle, 0x10, JZ_FLAGCODE_OFF);
#else
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
... ...
... ... @@ -67,6 +67,13 @@ extern "C" {
#define MAX_PITCH 300
#define MIN_PITCH -900
#elif DEVICE_VERSION == JZ_T40
#define PITCH_PWM_MAX 0
#define PITCH_PWM_MIN 0
#define MAX_PITCH 300
#define MIN_PITCH -900
#else
#define PITCH_PWM_MAX 0
... ...
#include <stdio.h>
#include "JZsdkLib.h"
#include "./SingleCompensation.h"
#define SINGLE_COMPENSATION_INFO_PATH "/root/SingleCompensationInfo.txt"
static T_JZsdkReturnCode SingleCompensation_ReadValues(T_JZ_SingleCompensationInfo *p_SingleCompensationInfo)
{
FILE *file = fopen(SINGLE_COMPENSATION_INFO_PATH, "r");
// 如果文件不存在,创建默认文件
if (!file)
{
// 设置默认值
p_SingleCompensationInfo->Left_SingleCompensationValue = 0;
p_SingleCompensationInfo->Right_SingleCompensationValue = 0;
// 创建文件并写入默认值
FILE *new_file = fopen(SINGLE_COMPENSATION_INFO_PATH, "w");
if (!new_file)
{
JZSDK_LOG_ERROR("Failed to create default config file");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
fprintf(new_file, "%d\n%d\n", p_SingleCompensationInfo->Left_SingleCompensationValue, p_SingleCompensationInfo->Right_SingleCompensationValue);
fclose(new_file);
JZSDK_LOG_INFO("Created default config file with values: Left=0, Right=0");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
// 读取两个整数值
if (fscanf(file, "%d %d", &(p_SingleCompensationInfo->Left_SingleCompensationValue) , &(p_SingleCompensationInfo->Right_SingleCompensationValue)) != 2)
{
// 如果读取失败,使用默认值
p_SingleCompensationInfo->Left_SingleCompensationValue = 0;
p_SingleCompensationInfo->Right_SingleCompensationValue = 0;
}
fclose(file);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode SingleCompensation_SaveValues(T_JZ_SingleCompensationInfo *p_SingleCompensationInfo)
{
FILE *file = fopen(SINGLE_COMPENSATION_INFO_PATH, "w");
if (!file) {
JZSDK_LOG_ERROR("Failed to open config file for writing");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
// 直接写入两个值
fprintf(file, "%d\n%d\n", p_SingleCompensationInfo->Left_SingleCompensationValue, p_SingleCompensationInfo->Right_SingleCompensationValue);
fclose(file);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode JZsdk_SingleCompensation_Init(T_JZ_SingleCompensationInfo *p_SingleCompensationInfo)
{
//读取本地的补偿值
SingleCompensation_ReadValues(p_SingleCompensationInfo);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ...
/**
********************************************************************
* @file SingleCompensation.h
* SingleCompensation.h 的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef SINGLE_COMPENSATION_H
#define SINGLE_COMPENSATION_H
/* Includes ------------------------------------------------------------------*/
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
typedef struct T_JZ_SingleCompensationInfo
{
int Left_SingleCompensationValue; //左单轴补偿值
int Right_SingleCompensationValue; //右单轴补偿值
}T_JZ_SingleCompensationInfo;
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
T_JZsdkReturnCode JZsdk_SingleCompensation_Init(T_JZ_SingleCompensationInfo *p_SingleCompensationInfo);
T_JZsdkReturnCode SingleCompensation_SaveValues(T_JZ_SingleCompensationInfo *p_SingleCompensationInfo);
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -63,28 +63,6 @@ static int PowerContorl;
#define Page_Size (4096 * 2)
#define PIO_BASE_ADDRESS 0x01C20800
#if DEVICE_VERSION == JZ_H1E
#define AMPLIFIER_PIN PB
#define AMPLIFIER_PIN_NUM 4
#elif DEVICE_VERSION == JZ_H1T
#define AMPLIFIER_PIN PG
#define AMPLIFIER_PIN_NUM 5
#elif DEVICE_VERSION == JZ_H10T
#define AMPLIFIER_PIN PG
#define AMPLIFIER_PIN_NUM 5
#elif DEVICE_VERSION == JZ_U3
#define AMPLIFIER_PIN PB
#define AMPLIFIER_PIN_NUM 4
#elif DEVICE_VERSION == TF_A1
#define AMPLIFIER_PIN PG
#define AMPLIFIER_PIN_NUM 5
#else
#define AMPLIFIER_PIN PB
#define AMPLIFIER_PIN_NUM 4
#endif
#define STATUS_LIGHT_PIN PG
#define STATUS_LIGHT_PIN_NUM 2
... ... @@ -95,7 +73,7 @@ static uint32_t *gpio_dat = NULL;
static uint32_t *pwm_base_map = NULL;
static uint32_t *pwm1_period = NULL;
void GPIO_ConfigPin(PORT port, unsigned int pin, PIN_MODE mode)
static void GPIO_ConfigPin(PORT port, unsigned int pin, PIN_MODE mode)
{
if (base_map == NULL)
return;
... ... @@ -104,7 +82,7 @@ void GPIO_ConfigPin(PORT port, unsigned int pin, PIN_MODE mode)
printf("struct PIO_Struct size : %d\n",sizeof(PIO->Pn[port]));
}
void GPIO_SetPin(PORT port, unsigned int pin, unsigned int level)
static void GPIO_SetPin(PORT port, unsigned int pin, unsigned int level)
{
if (base_map == NULL)
return;
... ... @@ -128,23 +106,6 @@ int GPIO_Free(void)
}
void V3s_set_amplifier(int amplifier_mode)
{ //功放开关
if(amplifier_mode==0)
{//关闭功放
printf("关闭功放\n");
GPIO_SetPin(AMPLIFIER_PIN,AMPLIFIER_PIN_NUM,0);
}
else if(amplifier_mode==1)
{//打开功放
printf("打开功放\n");
GPIO_SetPin(AMPLIFIER_PIN,AMPLIFIER_PIN_NUM,1);
}
}
int V3s_PWM_contrl(int PWM_num)
{
... ... @@ -191,22 +152,22 @@ static void GPIO_mmap_Init()
}
//状态灯初始化
static void Status_light_init()
{
//状态灯初始化
//这里已经将0x1c20000的地址映射到了内存中,但是我们需要的地址是0x01C20800,所以要再加上地址偏移量~
PIO = (PIO_Map *)((unsigned int)base_map + addr_offset);
printf("PIO:0x%.8X\n", PIO);
// //状态灯初始化
// static void Status_light_init()
// {
// //状态灯初始化
// //这里已经将0x1c20000的地址映射到了内存中,但是我们需要的地址是0x01C20800,所以要再加上地址偏移量~
// PIO = (PIO_Map *)((unsigned int)base_map + addr_offset);
// printf("PIO:0x%.8X\n", PIO);
GPIO_ConfigPin(STATUS_LIGHT_PIN,STATUS_LIGHT_PIN_NUM,OUT);
}
// GPIO_ConfigPin(STATUS_LIGHT_PIN,STATUS_LIGHT_PIN_NUM,OUT);
// }
static void Status_light()
{
//低电平亮
GPIO_SetPin(STATUS_LIGHT_PIN,STATUS_LIGHT_PIN_NUM,0);
}
// static void Status_light()
// {
// //低电平亮
// GPIO_SetPin(STATUS_LIGHT_PIN,STATUS_LIGHT_PIN_NUM,0);
// }
static void PWM_init() //pwm初始化
{
... ... @@ -261,89 +222,257 @@ static void PWM_init() //pwm初始化
printf("v3spwm初始化完成\n");
}
static int V3S_Power_Pin_init()
// void V3s_Ircut_Init()//引脚初始化
// {
// GPIO_mmap_Init(); //GPIO 内存映射初始化
// //这里已经将0x1c20000的地址映射到了内存中,但是我们需要的地址是0x01C20800,所以要再加上地址偏移量~
// PIO = (PIO_Map *)((unsigned int)base_map + addr_offset);
// printf("PIO:0x%.8X", PIO);
// //静音引脚初始化
// GPIO_ConfigPin(AMPLIFIER_PIN,AMPLIFIER_PIN_NUM,OUT);
// //10T要初始化电机引脚
// if (DEVICE_VERSION == JZ_H10T)
// {
// PWM_init() ; //pwm初始化
// GPIO_ConfigPin(PB,6,OUT); //对外供电初始化
// }
// //激光引脚初始化
// if (DEVICE_VERSION == JZ_U3S)
// {
// GPIO_ConfigPin(PB,6,OUT);
// GPIO_ConfigPin(PB,7,OUT);
// }
// //状态灯初始化
// //Status_light_init();
// //打开状态灯
// //Status_light();
// }
int V3s_Ircut_uInit()
{
//这里已经将0x1c20000的地址映射到了内存中,但是我们需要的地址是0x01C20800,所以要再加上地址偏移量~
PIO = (PIO_Map *)((unsigned int)base_map + addr_offset);
printf("PIO:0x%.8X", PIO);
//GPIO 内存映射移除
munmap(base_map, Page_Size);
printf("munmap success!\n");
}
// void Ircut_V3S_Set_OutPutPowerControl(int power_control)
// {
// if (DEVICE_VERSION == JZ_H10T)
// {
// if (power_control == 1)
// {
// GPIO_ConfigPin(PB,6,OUT); //电源脚初始化
// GPIO_SetPin(PB,6,1); //打开开关
// }
// else if(power_control ==0)
// {
// GPIO_SetPin(PB,6,0); //关闭开关
// GPIO_ConfigPin(PB,6,DISABLE); //释放引脚
// }
// }
// }
if (DEVICE_VERSION == JZ_H10T)
{
GPIO_ConfigPin(PB,6,OUT);
/********************
*
* 端口组换算
* 将JZSDK的端口组转换成V3S的端口组
*
* **********************/
static T_JZsdkReturnCode V3s_Port_Conversion(E_JZ_IRC_PORT port, PORT *v3s_port)
{
switch (port)
{
case JZ_IRC_PORT_PA:
*v3s_port = PA;
break;
case JZ_IRC_PORT_PB:
*v3s_port = PB;
break;
case JZ_IRC_PORT_PC:
*v3s_port = PC;
break;
case JZ_IRC_PORT_PD:
*v3s_port = PD;
break;
case JZ_IRC_PORT_PE:
*v3s_port = PE;
break;
case JZ_IRC_PORT_PF:
*v3s_port = PF;
break;
case JZ_IRC_PORT_PG:
*v3s_port = PG;
break;
default:
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
break;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/********************
*
* 端口模式换算
* 将JZSDK的端口模式转换成V3S的端口模式
*
* **********************/
static T_JZsdkReturnCode V3s_PinMode_Conversion(E_JZ_IRC_PIN_MODE mode, PIN_MODE *v3s_mode)
{
switch (mode)
{
case JZ_IRC_PIN_MODE_IN:
*v3s_mode = IN;
break;
case JZ_IRC_PIN_MODE_OUT:
*v3s_mode = OUT;
break;
case JZ_IRC_PIN_MODE_AUX:
*v3s_mode = AUX;
break;
void V3s_Ircut_Init()//引脚初始化
case JZ_IRC_PIN_MODE_INT:
*v3s_mode = INT;
break;
case JZ_IRC_PIN_MODE_DISABLE:
*v3s_mode = DISABLE;
break;
default:
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
break;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode JZsdk_V3s_Ircut_Init(IrcutInfo *ircut_info)
{
GPIO_mmap_Init(); //GPIO 内存映射初始化
//内存映射初始化
GPIO_mmap_Init();
//地址偏移量
//这里已经将0x1c20000的地址映射到了内存中,但是我们需要的地址是0x01C20800,所以要再加上地址偏移量~
PIO = (PIO_Map *)((unsigned int)base_map + addr_offset);
printf("PIO:0x%.8X", PIO);
//静音引脚初始化
GPIO_ConfigPin(AMPLIFIER_PIN,AMPLIFIER_PIN_NUM,OUT);
//10T要初始化电机引脚
if (DEVICE_VERSION == JZ_H10T)
//静音角引脚初始化
if (ircut_info->Amplifiter_Pin.Enable == JZ_FLAGCODE_ON)
{
PWM_init() ; //pwm初始化
GPIO_ConfigPin(PB,6,OUT); //对外供电初始化
//获取引脚组
PORT Amplifiter_Pin_port;
if(V3s_Port_Conversion(ircut_info->Amplifiter_Pin.Port, &Amplifiter_Pin_port) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("V3s_Port_Conversion error!\n");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//获取引脚模式
PIN_MODE Amplifiter_Pin_mode;
if(V3s_PinMode_Conversion(ircut_info->Amplifiter_Pin.mode, &Amplifiter_Pin_mode) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("V3s_PinMode_Conversion error!\n");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//配置引脚
GPIO_ConfigPin(Amplifiter_Pin_port,ircut_info->Amplifiter_Pin.index,Amplifiter_Pin_mode);
}
//激光引脚初始化
if (DEVICE_VERSION == JZ_U3S)
if (ircut_info->SideLight_Right_Pin.Enable == JZ_FLAGCODE_ON)
{
GPIO_ConfigPin(PB,6,OUT);
GPIO_ConfigPin(PB,7,OUT);
}
//状态灯初始化
//Status_light_init();
//打开状态灯
//Status_light();
}
//获取引脚组
PORT SideLight_Right_Pin_port;
if(V3s_Port_Conversion(ircut_info->SideLight_Right_Pin.Port, &SideLight_Right_Pin_port) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("V3s_Port_Conversion error!\n");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//获取引脚模式
PIN_MODE SideLight_Right_Pin_mode;
if(V3s_PinMode_Conversion(ircut_info->SideLight_Right_Pin.mode, &SideLight_Right_Pin_mode) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("V3s_PinMode_Conversion error!\n");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
int V3s_Ircut_uInit()
{
//GPIO 内存映射移除
munmap(base_map, Page_Size);
printf("munmap success!\n");
}
//配置引脚
GPIO_ConfigPin(SideLight_Right_Pin_port,ircut_info->SideLight_Right_Pin.index,SideLight_Right_Pin_mode);
}
void Ircut_V3S_Set_OutPutPowerControl(int power_control)
{
if (DEVICE_VERSION == JZ_H10T)
if (ircut_info->SideLight_Left_Pin.Enable == JZ_FLAGCODE_ON)
{
if (power_control == 1)
//获取引脚组
PORT SideLight_Left_Pin_port;
if(V3s_Port_Conversion(ircut_info->SideLight_Left_Pin.Port, &SideLight_Left_Pin_port) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
GPIO_ConfigPin(PB,6,OUT); //电源脚初始化
GPIO_SetPin(PB,6,1); //打开开关
JZSDK_LOG_ERROR("V3s_Port_Conversion error!\n");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
else if(power_control ==0)
//获取引脚模式
PIN_MODE SideLight_Left_Pin_mode;
if(V3s_PinMode_Conversion(ircut_info->SideLight_Left_Pin.mode, &SideLight_Left_Pin_mode) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
GPIO_SetPin(PB,6,0); //关闭开关
GPIO_ConfigPin(PB,6,DISABLE); //释放引脚
JZSDK_LOG_ERROR("V3s_PinMode_Conversion error!\n");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//配置引脚
GPIO_ConfigPin(SideLight_Left_Pin_port,ircut_info->SideLight_Left_Pin.index,SideLight_Left_Pin_mode);
}
if (ircut_info->PWM_1_Pin.Enable == JZ_FLAGCODE_ON)
{
//配置PWM
PWM_init();
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/***********************
/***************************
*
* 引脚控制
* 设置引脚状态
*
*
* ********************/
T_JZsdkReturnCode V3s_PinControl(int port, int num, int status)
* ****************************/
T_JZsdkReturnCode JZsdk_V3s_Gpio_SetPin(E_JZ_IRC_PORT port, int index, int status)
{
//转换引脚组
PORT gpio_port;
if(V3s_Port_Conversion(port, &gpio_port) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("V3s_Port_Conversion error!\n");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//转换引脚状态
int value = 0;
if (status == JZ_FLAGCODE_ON)
{
... ... @@ -354,5 +483,8 @@ T_JZsdkReturnCode V3s_PinControl(int port, int num, int status)
value = 0;
}
GPIO_SetPin(port,num,value); //关闭开关
//设置引脚状态
GPIO_SetPin(gpio_port, index, value);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
... ...
... ... @@ -2,12 +2,13 @@
#define V3S_IRCUT_H
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
#include "Ircut/ircut.h"
void V3s_Ircut_Init();
int V3s_Ircut_uInit() ;
void V3s_set_amplifier(int amplifier_mode);
int V3s_PWM_contrl(int PWM_num);
void Ircut_V3S_Set_OutPutPowerControl(int power_control);
T_JZsdkReturnCode V3s_PinControl(int port, int num, int status);
T_JZsdkReturnCode JZsdk_V3s_Gpio_SetPin(E_JZ_IRC_PORT port, int index, int status);
T_JZsdkReturnCode JZsdk_V3s_Ircut_Init(IrcutInfo *ircut_info);
#endif
\ No newline at end of file
... ...
... ... @@ -7,89 +7,87 @@
#include "JZsdkLib.h"
static int OutPutPower = JZ_FLAGCODE_OFF;
static IrcutInfo *T_Ircut_info = NULL;
static int Ircut_Init_flag = JZ_FLAGCODE_OFF;
T_JZsdkReturnCode Ircut_Init()//引脚初始化
/**************************
*
* 引脚初始化
*
*
* *************************/
T_JZsdkReturnCode Ircut_Init(IrcutInfo ircut_info)
{
if (T_Ircut_info != NULL)
{
Ircut_Init_flag = JZ_FLAGCODE_OFF;
free(T_Ircut_info);
T_Ircut_info = NULL;
}
T_Ircut_info = (IrcutInfo *)malloc(sizeof(IrcutInfo));
if (T_Ircut_info == NULL)
{
JZSDK_LOG_ERROR("MODULE_IRCUT_INIT_MALLOC_ERROR");
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
memcpy(T_Ircut_info, &ircut_info, sizeof(IrcutInfo));
//初始化对应的引脚
if (DEVICE_VERSION == JZ_H1E || DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_H10T ||
DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30||
DEVICE_VERSION == TF_A1)
DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_T40)
{
V3s_Ircut_Init();
JZsdk_V3s_Ircut_Init(T_Ircut_info);
}
//暂不修改为新式
else if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T || DEVICE_VERSION == JZ_H10)
{
H3_ircut_init();
}
//暂不修改为新式
else if (DEVICE_VERSION == JZ_C1)
{
//快门引脚初始化
SysfsGPIO_Init_ircut(KT_IRC_SHUTTER_GPIO_NUM, "out");
}
else
{
printf("无引脚使用\n");
JZSDK_LOG_ERROR("无引脚使用\n");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
Ircut_Init_flag = JZ_FLAGCODE_ON;
JZSDK_LOG_INFO("MODULE_IRCUT_INIT_COMPLETE");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode Ircut_uInit()
{
if (DEVICE_VERSION == JZ_H1E)
{
V3s_Ircut_uInit();
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//功放开关
T_JZsdkReturnCode set_amplifier(int amplifier_mode)
{
if (DEVICE_VERSION == JZ_H1E || DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_H10T ||
DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30 ||
DEVICE_VERSION == TF_A1)
{
V3s_set_amplifier(amplifier_mode);
}
if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T || DEVICE_VERSION == JZ_H10)
{
H3_ircut_set_amplifier(amplifier_mode);
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//PWM控制
// 函数:Ircut_PWM_control
// 功能:控制Ircut的PWM
// 参数:pwm_num:PWM编号
// 返回值:无
int Ircut_PWM_control(int pwm_num)
{
// 判断设备版本是否为JZ_H10T
if (DEVICE_VERSION == JZ_H10T)
{
// 调用V3s_PWM_contrl函数,控制PWM
V3s_PWM_contrl(pwm_num);
}
}
//对外电源控制
T_JZsdkReturnCode Ircut_Set_OutPutPower_Control(int value)
{
if (DEVICE_VERSION == JZ_H10T)
{
if (value == JZ_FLAGCODE_OFF || value == JZ_FLAGCODE_ON)
{
Ircut_V3S_Set_OutPutPowerControl(value);
OutPutPower = value;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
}
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//查询是否有开启电源控制
... ... @@ -105,18 +103,123 @@ T_JZsdkReturnCode Ircut_CheckStatus_OutPutPower(int *value)
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
/***********************
/**********************
*
* 引脚控制
*
*
* ********************/
T_JZsdkReturnCode Ircut_PinControl(int port, int num, int status)
* *****************/
T_JZsdkReturnCode Ircut_PinControl(E_JZ_IRC_PORT port, int index, int status)
{
if (DEVICE_VERSION == JZ_H1E || DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_H10T ||
DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30 ||
DEVICE_VERSION == TF_A1)
DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30||
DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_T40)
{
V3s_PinControl(port, num, status);
JZsdk_V3s_Gpio_SetPin(port, index, status);
}
if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T || DEVICE_VERSION == JZ_H10)
{
H3_ircut_set_amplifier(status);
}
}
/*************************
*
* 侧面激光引脚控制
* index 0 左 1 右
* 0 绿 1 红
*
* ***********************/
T_JZsdkReturnCode Ircut_SideLaser_IrcutControl(int index, int status)
{
if (T_Ircut_info == NULL)
{
JZSDK_LOG_ERROR("Ircut_info is NULL");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
if (index == 0 && T_Ircut_info->SideLight_Right_Pin.Enable == JZ_FLAGCODE_ON)
{
Ircut_PinControl(T_Ircut_info->SideLight_Right_Pin.Port,
T_Ircut_info->SideLight_Right_Pin.index,
status);
}
else if (index == 1 && T_Ircut_info->SideLight_Right_Pin.Enable == JZ_FLAGCODE_ON)
{
Ircut_PinControl(T_Ircut_info->SideLight_Left_Pin.Port,
T_Ircut_info->SideLight_Left_Pin.index,
status);
}
}
\ No newline at end of file
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/***********************************
*
* 功放开关
*
*
* ********************************/
T_JZsdkReturnCode set_amplifier(int amplifier_mode)
{
if (T_Ircut_info == NULL)
{
JZSDK_LOG_ERROR("Ircut_info is NULL");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
if (T_Ircut_info->Amplifiter_Pin.Enable != JZ_FLAGCODE_ON)
{
JZSDK_LOG_ERROR("Amplifiter_Pin is not enable");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
Ircut_PinControl(T_Ircut_info->Amplifiter_Pin.Port,
T_Ircut_info->Amplifiter_Pin.index,
amplifier_mode);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/***********************************
*
* 对外电源控制
*
*
* ********************************/
T_JZsdkReturnCode Ircut_Set_OutPutPower_Control(int value)
{
if (T_Ircut_info == NULL)
{
JZSDK_LOG_ERROR("Ircut_info is NULL");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
if (T_Ircut_info->OutPutPower_Pin.Enable != JZ_FLAGCODE_ON)
{
JZSDK_LOG_ERROR("OutPutPower_Pin is not enable");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
if (DEVICE_VERSION == JZ_H10T)
{
if (value == JZ_FLAGCODE_OFF || value == JZ_FLAGCODE_ON)
{
Ircut_PinControl(T_Ircut_info->OutPutPower_Pin.Port,
T_Ircut_info->OutPutPower_Pin.index,
value);
OutPutPower = value;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
}
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
... ...
... ... @@ -20,19 +20,78 @@ extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
typedef enum E_JZ_IRC_PORT{
JZ_IRC_PORT_PA = 0,
JZ_IRC_PORT_PB = 1,
JZ_IRC_PORT_PC = 2,
JZ_IRC_PORT_PD = 3,
JZ_IRC_PORT_PE = 4,
JZ_IRC_PORT_PF = 5,
JZ_IRC_PORT_PG = 6,
}E_JZ_IRC_PORT;
typedef enum E_JZ_IRC_PIN_MODE{
JZ_IRC_PIN_MODE_IN = 0x00, //输入模式
JZ_IRC_PIN_MODE_OUT = 0x01, //输出模式
JZ_IRC_PIN_MODE_AUX = 0x02, //辅助模式
JZ_IRC_PIN_MODE_INT = 0x03, //中断模式
JZ_IRC_PIN_MODE_DISABLE = 0x04, //禁用模式
}E_JZ_IRC_PIN_MODE;
typedef struct T_JZsdkIrcut_GpioInfo{
int Enable; //使能开关 jzoff关 jzon开
int Group; //引脚所在组
E_JZ_IRC_PORT Port; //引脚所在组的端口
int index; //引脚所在组中的第几个引脚
E_JZ_IRC_PIN_MODE mode; //引脚模式
}T_JZsdkIrcut_GpioInfo;
typedef struct T_JZsdkIrcut_PwmInfo{
int Enable; //使能开关 jzoff关 jzon开
}T_JZsdkIrcut_PwmInfo;
/* 常亮定义*/
/*******
*
* 引脚信息结构体
*
* ********/
typedef struct IrcutInfo
{
//喊话器引脚信息
//静音角
T_JZsdkIrcut_GpioInfo Amplifiter_Pin;
//侧面激光引脚信息
T_JZsdkIrcut_GpioInfo SideLight_Right_Pin;
T_JZsdkIrcut_GpioInfo SideLight_Left_Pin;
//对外输出电源
T_JZsdkIrcut_GpioInfo OutPutPower_Pin;
//pwm引脚信息
//pwm引脚1
T_JZsdkIrcut_PwmInfo PWM_1_Pin;
}IrcutInfo;
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
T_JZsdkReturnCode Ircut_Init();
T_JZsdkReturnCode Ircut_uInit() ;
T_JZsdkReturnCode set_amplifier(int amplifier_mode);
int Ircut_PWM_control(int pwm_num);
T_JZsdkReturnCode Ircut_Set_OutPutPower_Control(int value);
T_JZsdkReturnCode Ircut_CheckStatus_OutPutPower(int *value);
T_JZsdkReturnCode Ircut_PinControl(int port, int num, int status);
T_JZsdkReturnCode Ircut_Init(IrcutInfo ircut_info);
T_JZsdkReturnCode Ircut_SideLaser_IrcutControl(int index, int status);
T_JZsdkReturnCode set_amplifier(int amplifier_mode);
T_JZsdkReturnCode Ircut_Set_OutPutPower_Control(int value);
#ifdef __cplusplus
}
#endif
... ...
... ... @@ -41,23 +41,23 @@ T_JZsdkReturnCode Lighting_Init()
* 探照灯 灯光属性
*
********************************************************************************************************************************/
//查询灯光属性
T_JZsdkReturnCode Lighting_CheckStatus_SearchLightLightAttribute(int *ValueFrequency, int *ValueMode, int *ValueLeftLumen, int *ValueRightLumen)
{
//1、刷新查询灯光属性
if (DEVICE_VERSION == JZ_H1T)
{
SearchLight_V3S_H1T_CheckStatus_LightAttribute();
}
// //查询灯光属性
// T_JZsdkReturnCode Lighting_CheckStatus_SearchLightLightAttribute(int *ValueFrequency, int *ValueMode, int *ValueLeftLumen, int *ValueRightLumen)
// {
// //1、刷新查询灯光属性
// if (DEVICE_VERSION == JZ_H1T)
// {
// SearchLight_V3S_H1T_CheckStatus_LightAttribute();
// }
//2、获取一次本地灯光属性
Lighting_Get_SearchLightMode(ValueMode);
Lighting_Get_SearchLightLumen(ValueLeftLumen, ValueRightLumen);
Lighting_Get_SearchLightFrequency(ValueFrequency);
// //2、获取一次本地灯光属性
// Lighting_Get_SearchLightMode(ValueMode);
// Lighting_Get_SearchLightLumen(ValueLeftLumen, ValueRightLumen);
// Lighting_Get_SearchLightFrequency(ValueFrequency);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
/********************************************************************************************************************************
*
... ... @@ -65,53 +65,57 @@ T_JZsdkReturnCode Lighting_CheckStatus_SearchLightLightAttribute(int *ValueFrequ
*
********************************************************************************************************************************/
//设置探照灯模式
T_JZsdkReturnCode Lighting_SearchLightControl(int mode)
{
printf("设置%x探照灯模式\n",DEVICE_VERSION);
SearchLight_Mode = mode;
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
return SearchLight_V3S_U3_SearchLightControl(mode);
}
else if (DEVICE_VERSION == JZ_H1T)
{
return SearchLight_V3S_H1T_SearchLightControl(mode);
}
else if (DEVICE_VERSION == TF_A1)
{
return SearchLight_V3S_TFA1_SearchLightControl(mode);
}
// //设置探照灯模式
// T_JZsdkReturnCode Lighting_SearchLightControl(int mode)
// {
// printf("设置%x探照灯模式\n",DEVICE_VERSION);
// SearchLight_Mode = mode;
// if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
// {
// return SearchLight_V3S_U3_SearchLightControl(mode);
// }
// else if (DEVICE_VERSION == JZ_T40)
// {
// return SearchLight_V3S_T40_SearchLightControl(mode);
// }
// else if (DEVICE_VERSION == JZ_H1T)
// {
// return SearchLight_V3S_H1T_SearchLightControl(mode);
// }
// else if (DEVICE_VERSION == TF_A1)
// {
// return SearchLight_V3S_TFA1_SearchLightControl(mode);
// }
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
// }
//收到并修改探照灯模式(中继修改)
T_JZsdkReturnCode Lighting_Obtain_SearchLightMode(int mode)
{
printf("%x探照灯模式改变%d\n",DEVICE_VERSION, mode);
// //收到并修改探照灯模式(中继修改)
// T_JZsdkReturnCode Lighting_Obtain_SearchLightMode(int mode)
// {
// printf("%x探照灯模式改变%d\n",DEVICE_VERSION, mode);
SearchLight_Mode = mode;
// SearchLight_Mode = mode;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
//获取探照灯的灯光模式
T_JZsdkReturnCode Lighting_Get_SearchLightMode(int *mode)
{
*mode = SearchLight_Mode;
// //获取探照灯的灯光模式
// T_JZsdkReturnCode Lighting_Get_SearchLightMode(int *mode)
// {
// *mode = SearchLight_Mode;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
//查询探照灯灯光模式
T_JZsdkReturnCode Lighting_CheckStatus_SearchLightMode()
{
// //查询探照灯灯光模式
// T_JZsdkReturnCode Lighting_CheckStatus_SearchLightMode()
// {
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
// }
/********************************************************************************************************************************
... ... @@ -120,65 +124,71 @@ T_JZsdkReturnCode Lighting_CheckStatus_SearchLightMode()
*
********************************************************************************************************************************/
//设置探照灯的灯光亮度
T_JZsdkReturnCode Lighting_Set_SearchLightLumen(int LeftLumen, int RightLumen)
{
printf("设置%x探照灯灯光亮度\n",DEVICE_VERSION);
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
SearchLight_RightLumen = RightLumen;
SearchLight_LeftLumen = LeftLumen;
return SearchLight_V3S_U3_Set_SearchLightLumen(LeftLumen, RightLumen);
}
else if (DEVICE_VERSION == JZ_H1T)
{
return SearchLight_V3S_H1T_Set_SearchLightLumen(LeftLumen, RightLumen);
}
else if (DEVICE_VERSION == TF_A1)
{
SearchLight_RightLumen = RightLumen;
SearchLight_LeftLumen = LeftLumen;
return SearchLight_V3S_TFA1_Set_SearchLightLumen(LeftLumen, RightLumen);
}
// //设置探照灯的灯光亮度
// T_JZsdkReturnCode Lighting_Set_SearchLightLumen(int LeftLumen, int RightLumen)
// {
// printf("设置%x探照灯灯光亮度\n",DEVICE_VERSION);
// if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
// {
// SearchLight_RightLumen = RightLumen;
// SearchLight_LeftLumen = LeftLumen;
// return SearchLight_V3S_U3_Set_SearchLightLumen(LeftLumen, RightLumen);
// }
// else if (DEVICE_VERSION == JZ_T40)
// {
// SearchLight_RightLumen = RightLumen;
// SearchLight_LeftLumen = LeftLumen;
// return SearchLight_V3S_T40_Set_SearchLightLumen(LeftLumen, RightLumen);
// }
// else if (DEVICE_VERSION == JZ_H1T)
// {
// return SearchLight_V3S_H1T_Set_SearchLightLumen(LeftLumen, RightLumen);
// }
// else if (DEVICE_VERSION == TF_A1)
// {
// SearchLight_RightLumen = RightLumen;
// SearchLight_LeftLumen = LeftLumen;
// return SearchLight_V3S_TFA1_Set_SearchLightLumen(LeftLumen, RightLumen);
// }
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
// }
//收到并修改探照灯的灯光亮度(中继修改)
T_JZsdkReturnCode Lighting_Obtain_SearchLightLumen(int LeftLumen, int RightLumen)
{
printf("接收到%x探照灯灯光亮度 左灯%d 右灯%d\n",DEVICE_VERSION, LeftLumen, RightLumen);
// //收到并修改探照灯的灯光亮度(中继修改)
// T_JZsdkReturnCode Lighting_Obtain_SearchLightLumen(int LeftLumen, int RightLumen)
// {
// printf("接收到%x探照灯灯光亮度 左灯%d 右灯%d\n",DEVICE_VERSION, LeftLumen, RightLumen);
//如果是主喊话器副灯的单一设备
if (DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
// //如果是主喊话器副灯的单一设备
// if (DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
// {
}
// }
else
{
SearchLight_RightLumen = RightLumen;
SearchLight_LeftLumen = LeftLumen;
}
// else
// {
// SearchLight_RightLumen = RightLumen;
// SearchLight_LeftLumen = LeftLumen;
// }
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
//获取探照灯设置的灯光亮度
T_JZsdkReturnCode Lighting_Get_SearchLightLumen(int *LeftLumen, int *RightLumen)
{
*LeftLumen = SearchLight_LeftLumen;
*RightLumen = SearchLight_RightLumen;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
// //获取探照灯设置的灯光亮度
// T_JZsdkReturnCode Lighting_Get_SearchLightLumen(int *LeftLumen, int *RightLumen)
// {
// *LeftLumen = SearchLight_LeftLumen;
// *RightLumen = SearchLight_RightLumen;
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
//查询探照灯灯光亮度
T_JZsdkReturnCode Lighting_CheckStatus_SearchLightLumen()
{
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
// //查询探照灯灯光亮度
// T_JZsdkReturnCode Lighting_CheckStatus_SearchLightLumen()
// {
// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
// }
... ... @@ -188,107 +198,111 @@ T_JZsdkReturnCode Lighting_CheckStatus_SearchLightLumen()
*
********************************************************************************************************************************/
//设置爆闪灯频率
T_JZsdkReturnCode Lighting_Set_SearchLightFrequency(int value)
{
printf("设置0x%x:探照灯爆闪频率\n",DEVICE_VERSION);
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
SearchLight_Frequency = value;
return SearchLight_V3S_U3_Set_SearchLightFrequency(value);
}
else if (DEVICE_VERSION == JZ_H1T)
{
return SearchLight_V3S_H1T_Set_SearchLightFrequency(value);
}
else if (DEVICE_VERSION == TF_A1)
{
return SearchLight_V3S_TFA1_Set_SearchLightFrequency(value);
}
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//收到并修改探照灯的灯光频率(中继修改)
T_JZsdkReturnCode Lighting_Obtain_SearchLightFrequency(int Frequency)
{
printf("%x探照灯爆闪频率改变%d\n",DEVICE_VERSION, Frequency);
SearchLight_Frequency = Frequency;
// //设置爆闪灯频率
// T_JZsdkReturnCode Lighting_Set_SearchLightFrequency(int value)
// {
// printf("设置0x%x:探照灯爆闪频率\n",DEVICE_VERSION);
// if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
// {
// SearchLight_Frequency = value;
// return SearchLight_V3S_U3_Set_SearchLightFrequency(value);
// }
// else if (DEVICE_VERSION == JZ_T40)
// {
// return SearchLight_V3S_T40_Set_SearchLightFrequency(value);
// }
// else if (DEVICE_VERSION == JZ_H1T)
// {
// return SearchLight_V3S_H1T_Set_SearchLightFrequency(value);
// }
// else if (DEVICE_VERSION == TF_A1)
// {
// return SearchLight_V3S_TFA1_Set_SearchLightFrequency(value);
// }
// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
// }
// //收到并修改探照灯的灯光频率(中继修改)
// T_JZsdkReturnCode Lighting_Obtain_SearchLightFrequency(int Frequency)
// {
// printf("%x探照灯爆闪频率改变%d\n",DEVICE_VERSION, Frequency);
// SearchLight_Frequency = Frequency;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//获取探照灯的灯光频率
T_JZsdkReturnCode Lighting_Get_SearchLightFrequency(int *Frequency)
{
*Frequency = SearchLight_Frequency;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//查询探照灯灯光频率
T_JZsdkReturnCode Lighting_CheckStatus_SearchLightFrequency()
{
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//收到并修改探照灯的温度(中继修改)
T_JZsdkReturnCode Lighting_Obtain_SearchLightTemperature(int LeftTemperature, int RightTemperature)
{
printf("设备0x1010%x探照灯温度改变左灯%d 右灯%d\n",DEVICE_VERSION, LeftTemperature ,RightTemperature);
SearchLight_LeftTemperature = LeftTemperature;
SearchLight_RightTemperature = RightTemperature;
int Max_tmeperature; //最大温度值
Max_tmeperature = MAX(LeftTemperature, RightTemperature);
//判断探照灯是否有打开
if (SearchLight_Mode == JZ_FLAGCODE_OFF)
{
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//如果是JZ u3
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
//输入温度进温度控制线程
SearchLightTemControl_Set_g_InputTemp(Max_tmeperature);
}
if (DEVICE_VERSION == TF_A1)
{
//输入温度进温度控制线程
SearchLightTemControl_Set_g_InputTemp(Max_tmeperature);
}
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
// //获取探照灯的灯光频率
// T_JZsdkReturnCode Lighting_Get_SearchLightFrequency(int *Frequency)
// {
// *Frequency = SearchLight_Frequency;
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
// //查询探照灯灯光频率
// T_JZsdkReturnCode Lighting_CheckStatus_SearchLightFrequency()
// {
// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
// }
// //收到并修改探照灯的温度(中继修改)
// T_JZsdkReturnCode Lighting_Obtain_SearchLightTemperature(int LeftTemperature, int RightTemperature)
// {
// printf("设备0x1010%x探照灯温度改变左灯%d 右灯%d\n",DEVICE_VERSION, LeftTemperature ,RightTemperature);
// SearchLight_LeftTemperature = LeftTemperature;
// SearchLight_RightTemperature = RightTemperature;
// int Max_tmeperature; //最大温度值
// Max_tmeperature = MAX(LeftTemperature, RightTemperature);
// //判断探照灯是否有打开
// if (SearchLight_Mode == JZ_FLAGCODE_OFF)
// {
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
// if (DEVICE_VERSION == JZ_U3 ||
// DEVICE_VERSION == JZ_U3S ||
// DEVICE_VERSION == JZ_U3D ||
// DEVICE_VERSION == JZ_U30 ||
// DEVICE_VERSION == TF_A1 ||
// DEVICE_VERSION == JZ_T40
// )
// {
// //输入温度进温度控制线程
// SearchLightTemControl_Set_g_InputTemp(Max_tmeperature);
// }
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//获取探照灯的灯光温度
T_JZsdkReturnCode Lighting_Get_SearchLightTemperature(int *LeftTemperature, int *RightTemperature)
{
*LeftTemperature = SearchLight_LeftTemperature;
*RightTemperature = SearchLight_RightTemperature;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//查询灯光温度
T_JZsdkReturnCode Lighting_CheckStatus_SearchLightTemperture(int *ValueLeftTemperature, int *ValueRightTemperaturen)
{
//1、刷新查询灯光温度
if (DEVICE_VERSION == JZ_H1T)
{
SearchLight_V3S_H1T_CheckStatus_SearchLightTemperture();
}
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
// //获取探照灯的灯光温度
// T_JZsdkReturnCode Lighting_Get_SearchLightTemperature(int *LeftTemperature, int *RightTemperature)
// {
// *LeftTemperature = SearchLight_LeftTemperature;
// *RightTemperature = SearchLight_RightTemperature;
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
// //查询灯光温度
// T_JZsdkReturnCode Lighting_CheckStatus_SearchLightTemperture(int *ValueLeftTemperature, int *ValueRightTemperaturen)
// {
// //1、刷新查询灯光温度
// if (DEVICE_VERSION == JZ_H1T)
// {
// SearchLight_V3S_H1T_CheckStatus_SearchLightTemperture();
// }
//2、获取一次本地灯光温度
Lighting_Get_SearchLightTemperature(ValueLeftTemperature, ValueRightTemperaturen);
// //2、获取一次本地灯光温度
// Lighting_Get_SearchLightTemperature(ValueLeftTemperature, ValueRightTemperaturen);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
/********************************************************************************************************************************
*
... ... @@ -428,35 +442,35 @@ T_JZsdkReturnCode Lighting_CheckStatus_WarningLightColor(int *ValueColor1, int *
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********
*
*刷新亮度函数
*
**********/
T_JZsdkReturnCode JZsdk_SearchLight_FlushLumen(int InputLumen)
{
JZsdk_SearchLightTemControl_FlushLumen(InputLumen);
}
/****************
*
* 获取消息订阅状态
*
* *************/
int JZsdk_SearchLight_GetMessageSubFlag(void)
{
return g_SearchLight_Subscription_Flag;
}
/***************************
*
* 设置消息订阅状态
*
*
************************/
T_JZsdkReturnCode JZsdk_SearchLight_SetMessageSubFlag(int InputFlag)
{
g_SearchLight_Subscription_Flag = InputFlag;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
// /*********
// *
// *刷新亮度函数
// *
// **********/
// T_JZsdkReturnCode JZsdk_SearchLight_FlushLumen(int InputLumen)
// {
// JZsdk_SearchLightTemControl_FlushLumen(InputLumen);
// }
// /****************
// *
// * 获取消息订阅状态
// *
// * *************/
// int JZsdk_SearchLight_GetMessageSubFlag(void)
// {
// return g_SearchLight_Subscription_Flag;
// }
// /***************************
// *
// * 设置消息订阅状态
// *
// *
// ************************/
// T_JZsdkReturnCode JZsdk_SearchLight_SetMessageSubFlag(int InputFlag)
// {
// g_SearchLight_Subscription_Flag = InputFlag;
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
\ No newline at end of file
... ...
... ... @@ -8,7 +8,7 @@
T_JZsdkReturnCode SearchLight_V3S_H1T_Set_SearchLightFrequency(int value)
{
//向H1T的单片机发送调节频率帧
HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_1, value);
HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_1, value, 0x00);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -17,7 +17,7 @@ T_JZsdkReturnCode SearchLight_V3S_H1T_Set_SearchLightFrequency(int value)
T_JZsdkReturnCode SearchLight_V3S_H1T_SearchLightControl(int mode)
{
//向H1T的单片机发送探照灯控制帧
HalSend_type1Send_SearchLight_Control(UART_DEV_1, mode);
HalSend_type1Send_SearchLight_Control(UART_DEV_1, mode, 0x00);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -26,7 +26,7 @@ T_JZsdkReturnCode SearchLight_V3S_H1T_SearchLightControl(int mode)
T_JZsdkReturnCode SearchLight_V3S_H1T_Set_SearchLightLumen(int LeftLumen, int RightLumen)
{
//向H1T的单片机发送探照灯控制帧
HalSend_type1Send_SearchLight_SetLumen(UART_DEV_1, LeftLumen, RightLumen);
HalSend_type1Send_SearchLight_SetLumen(UART_DEV_1, LeftLumen, RightLumen, 0x00);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -72,7 +72,7 @@ T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_LightAttribute()
T_JZsdkReturnCode SearchLight_V3S_H1T_CheckStatus_SearchLightTemperture()
{
//向H1T的单片机发送探照灯灯光模式查询帧
HalSend_type1Send_CheckStatus_SearchLight_Temperture(UART_DEV_1);
HalSend_type1Send_CheckStatus_SearchLight_Temperture(UART_DEV_1, 0x00);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
... ...
... ... @@ -8,7 +8,7 @@
T_JZsdkReturnCode SearchLight_V3S_TFA1_Set_SearchLightFrequency(int value)
{
//向u3的单片机发送调节频率帧
HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_2, value);
HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_2, value, 0x00);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -16,7 +16,7 @@ T_JZsdkReturnCode SearchLight_V3S_TFA1_Set_SearchLightFrequency(int value)
T_JZsdkReturnCode SearchLight_V3S_TFA1_SearchLightControl(int mode)
{
//向u3的单片机发送探照灯控制帧
HalSend_type1Send_SearchLight_Control(UART_DEV_2, mode);
HalSend_type1Send_SearchLight_Control(UART_DEV_2, mode, 0x00);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -25,10 +25,7 @@ T_JZsdkReturnCode SearchLight_V3S_TFA1_SearchLightControl(int mode)
T_JZsdkReturnCode SearchLight_V3S_TFA1_Set_SearchLightLumen(int LeftLumen, int RightLumen)
{
//向tfa1的单片机发送探照灯控制帧
HalSend_type1Send_SearchLight_SetLumen(UART_DEV_2, LeftLumen, RightLumen);
//向tfa1的单片机发送查询亮度帧
//JZsdk_Uart_Send_SearchLight_CheckStatus_Lumen(UART_DEV_2);
HalSend_type1Send_SearchLight_SetLumen(UART_DEV_2, LeftLumen, RightLumen, 0x00);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
... ...
... ... @@ -8,7 +8,7 @@
T_JZsdkReturnCode SearchLight_V3S_U3_Set_SearchLightFrequency(int value)
{
//向u3的单片机发送调节频率帧
HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_2, value);
HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_2, value, 0x00);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -16,7 +16,7 @@ T_JZsdkReturnCode SearchLight_V3S_U3_Set_SearchLightFrequency(int value)
T_JZsdkReturnCode SearchLight_V3S_U3_SearchLightControl(int mode)
{
//向u3的单片机发送探照灯控制帧
HalSend_type1Send_SearchLight_Control(UART_DEV_2, mode);
HalSend_type1Send_SearchLight_Control(UART_DEV_2, mode, 0x00);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -24,7 +24,45 @@ T_JZsdkReturnCode SearchLight_V3S_U3_SearchLightControl(int mode)
T_JZsdkReturnCode SearchLight_V3S_U3_Set_SearchLightLumen(int LeftLumen, int RightLumen)
{
//向u3的单片机发送探照灯控制帧
HalSend_type1Send_SearchLight_SetLumen(UART_DEV_2, LeftLumen, RightLumen);
HalSend_type1Send_SearchLight_SetLumen(UART_DEV_2, LeftLumen, RightLumen, 0x00);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/***********************************
*
* 以下为T40的临时存放
*
*
* ********************************/
T_JZsdkReturnCode SearchLight_V3S_T40_Set_SearchLightFrequency(int value)
{
//向u3的单片机发送调节频率帧
HalSend_type1Send_Set_SearchLightFrequency(UART_DEV_2, value, 0x20);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode SearchLight_V3S_T40_SearchLightControl(int mode)
{
//向u3的单片机发送探照灯控制帧
HalSend_type1Send_SearchLight_Control(UART_DEV_2, mode, 0x20);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode SearchLight_V3S_T40_Set_SearchLightLumen(int LeftLumen, int RightLumen)
{
//向单片机发送探照灯控制帧
HalSend_type1Send_SearchLight_SetSingleLumem(UART_DEV_2, LeftLumen, 0x20);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
... ...
... ... @@ -29,6 +29,10 @@ T_JZsdkReturnCode SearchLight_V3S_U3_SearchLightControl(int mode);
T_JZsdkReturnCode SearchLight_V3S_U3_Set_SearchLightLumen(int LeftLumen, int RightLumen);
T_JZsdkReturnCode SearchLight_V3S_T40_Set_SearchLightFrequency(int value);
T_JZsdkReturnCode SearchLight_V3S_T40_SearchLightControl(int mode);
T_JZsdkReturnCode SearchLight_V3S_T40_Set_SearchLightLumen(int LeftLumen, int RightLumen);
#ifdef __cplusplus
}
#endif
... ...
... ... @@ -8,6 +8,7 @@
#include "version_choose.h"
#include "BaseConfig.h"
#include "MediaProc/MediaProc.h"
#include "./VideoMgmt/VideoMgmt.h"
#include "./MultProc/MultProc.h"
#include "./MediaParm.h"
... ... @@ -50,8 +51,26 @@ static T_JZsdkReturnCode MediaProc_MultiThreading()
}
//视频流模块初始化
T_JZsdkReturnCode MediaProc_Init()
T_JZsdkReturnCode MediaProc_Init(T_JZsdkMediaProcHandler MediaProcHandler)
{
//初始化DCIM存储文件夹
if (JZsdk_check_directory_exists_posix("/root/sdcard/DCIM") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZsdk_Osal_Mkdir("/root/sdcard/DCIM");
}
//创建录像文件夹
if (JZsdk_check_directory_exists_posix("/root/sdcard/DCIM/Videos") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZsdk_Osal_Mkdir("/root/sdcard/DCIM/Videos");
}
//创建照片文件夹
if( JZsdk_check_directory_exists_posix("/root/sdcard/DCIM/Photos") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZsdk_Osal_Mkdir("/root/sdcard/DCIM/Photos");
}
//初始化媒体模块
VideoMgmt_Init(MediaProcHandler.VideoMgmtHandler);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
... ...
... ... @@ -19,13 +19,19 @@
extern "C" {
#endif
typedef struct T_JZsdkMediaProcHandler
{
T_JZsdkVideoMgmtHandler VideoMgmtHandler;
}T_JZsdkMediaProcHandler;
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
T_JZsdkReturnCode MediaProc_Init();
T_JZsdkReturnCode MediaProc_Init(T_JZsdkMediaProcHandler MediaProcHandler);
... ...
... ... @@ -11,9 +11,7 @@
#include "BaseConfig.h"
#include "JZsdk_network/JZsdk_network.h"
#if APP_VERSION == APP_PSDK
#include "JZsdk_PsdkExpansion/JZsdk_PsdkExpansion.h"
#endif
#include "ExtensionAPI/JZsdk_ExpansionApi.h"
//推流入口
T_JZsdkReturnCode VideoStream_PushFrame(unsigned char* h264_data, unsigned int data_len)
... ... @@ -37,9 +35,13 @@ T_JZsdkReturnCode VideoStream_PushFrame(unsigned char* h264_data, unsigned int d
//放入到对应的传输函数
#if APP_VERSION == APP_PSDK
//大疆模式,往大疆入口推流
JZsdk_Expansion_Push_DJIH264Frame(h264_data, data_len);
T_JZsdkToPsdkHandler *JzsdkToPsdkHandle = ExpansionApi_JZsdkToPsdk_GetHandler();
if (JzsdkToPsdkHandle != NULL && JzsdkToPsdkHandle->push_DJIH264Frame_to_plane != NULL)
{
JzsdkToPsdkHandle->push_DJIH264Frame_to_plane(h264_data, data_len);
}
#elif APP_VERSION == APP_UART
JZsdk_NetWork_SentData(h264_data, data_len);
#endif
... ...
... ... @@ -19,7 +19,6 @@
#include "Megaphone/MegTempControl/MegTempControl.h"
#include "../AudioDeal/AudioDeal.h"
#include "./TTS/Megaphone_TTS.h"
#include "./TTS/cnTTS/cnTTS.h"
#include "Megaphone/Music/AudioFile/Megaphone_AudioFile.h"
#include "Megaphone/Music/RealTimeMP2/Megaphone_RealTimeMP2.h"
#include "Megaphone/opus/Megaphone_Opus.h"
... ... @@ -167,20 +166,12 @@ static T_JZsdkReturnCode Megaphone_Play(struct MegaphoneInfo *IndexInfo, enum Me
switch (status)
{
case AUDIO_PLAY_STATUS_IFLAY_TTS:
case AUDIO_PLAY_STATUS_TTS:
{
JZSDK_LOG_INFO("音频播放:cnTTS");
JZSDK_LOG_INFO("音频播放:TTS");
//播放讯飞tts
ret = Megaphone_cnTTS_Play(IndexInfo->str, IndexInfo->str_len, ReplyFlag);
}
break;
case ADDIO_PLAY_STATUS_ESPEAK_TTS:
{
JZSDK_LOG_INFO("音频播放:esTTS");
ret = Espeak_tts(IndexInfo->str , IndexInfo->str_len);
//播放tts
ret = Megaphone_Tts_Play(IndexInfo->str, IndexInfo->str_len, ReplyFlag);
}
break;
... ... @@ -304,14 +295,7 @@ T_JZsdkReturnCode Megaphone_TTS_Play(unsigned char *str, unsigned int str_len, i
//1、获取当前音色
int tone = TTS_Get_tone();
if (tone >= 0x00 && tone <= 0x36)
{
ret = Megaphone_Play(g_MegaphoneInfo, AUDIO_PLAY_STATUS_IFLAY_TTS, ReplyFlag);
}
else
{
ret = Megaphone_Play(g_MegaphoneInfo, ADDIO_PLAY_STATUS_ESPEAK_TTS, ReplyFlag);
}
ret = Megaphone_Play(g_MegaphoneInfo, AUDIO_PLAY_STATUS_TTS, ReplyFlag);
//检测是否开启了预设模式,且属于是需要回复即正常播放的tts,保存tts文本和音色
if (PrsetTask_GetPrsetTaskSaveContentFlag() == JZ_FLAGCODE_ON)
... ... @@ -973,6 +957,22 @@ T_JZsdkReturnCode Megaphone_Init_OnlyTTs()
}
MegaphoneStatusFlag = JZ_FLAGCODE_ON;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/***************
*
* 喊话器反初始化tts
*
* **************/
T_JZsdkReturnCode Megaphone_DeInit_OnlyTTs()
{
Megaphone_TTS_DeInit();
MegaphoneStatusFlag = JZ_FLAGCODE_OFF;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -1184,9 +1184,7 @@ static T_JZsdkReturnCode Megaphone_ConvertPlayStatus(int status)
}
//B、查询是否在播放文本
if (status == AUDIO_PLAY_STATUS_IFLAY_TTS
|| status == ADDIO_PLAY_STATUS_ESPEAK_TTS
)
if (status == AUDIO_PLAY_STATUS_TTS)
{
return 0x20;
}
... ...
... ... @@ -38,8 +38,7 @@ typedef enum MegaphonePlayStatus
{
AUDIO_PLAY_STATUS_IDLE = 0x00, //空闲状态
AUDIO_PLAY_STATUS_MUSIC = 0x01, //播放歌曲
AUDIO_PLAY_STATUS_IFLAY_TTS = 0x02, //播放讯飞文本
ADDIO_PLAY_STATUS_ESPEAK_TTS = 0x03, //espeak文本
AUDIO_PLAY_STATUS_TTS = 0x02, //播放文本
AUDIO_PLAY_STATUS_OPUS_REAL_TIME = 0x04, //opus实时语音
AUDIO_PLAY_STATUS_OPUS_RECORD = 0x05, //opus录音
AUDIO_PLAY_STATUS_MP3_REAL_TIME = 0x06, //mp3实时语音
... ... @@ -79,6 +78,8 @@ extern struct MegaphoneInfo *g_MegaphoneInfo;
/* Exported functions --------------------------------------------------------*/
T_JZsdkReturnCode Megaphone_Init();
T_JZsdkReturnCode Megaphone_Init_OnlyTTs();
T_JZsdkReturnCode Megaphone_DeInit_OnlyTTs();
T_JZsdkReturnCode Megaphone_TTS_Play(unsigned char *str, unsigned int str_len, int ReplyFlag);
T_JZsdkReturnCode Megaphone_TTS_param(int flagcode, enum MegaphoneTTSParam paramflag, int *value);
T_JZsdkReturnCode Megaphone_Amplifier_param(int flagcode, int *value);
... ...
... ... @@ -4,10 +4,14 @@
#include "Megaphone/Music/AudioFile/Megaphone_AudioFile.h"
#include "Megaphone/TTS/Megaphone_TTS.h"
#include "JZsdkLib.h"
#include "version_choose.h"
#ifdef ESPEAK_TTS_CONFIG_STATUS_ON
#include "Intl_interface.h"
#include "version_choose.h"
#include "JZsdkLib.h"
#define RECODE_DIR "/root/record/"
... ... @@ -16,7 +20,6 @@ T_JZsdkReturnCode Espeak_init()
char dict_path[]="/root";//设置资源库路径
char wav_save_path[]=RECODE_DIR;//设置生成音频路径
tts_init(dict_path,wav_save_path);//初始化
printf("espeak_init\n");
//检查record文件夹是否存在
if (JZsdk_check_directory_exists_posix(RECODE_DIR) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
... ... @@ -24,6 +27,8 @@ T_JZsdkReturnCode Espeak_init()
JZsdk_RunSystemCmd("mkdir /root/record");
}
JZSDK_LOG_DEBUG("espeak_init");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -108,3 +113,5 @@ T_JZsdkReturnCode Espeak_tts(unsigned char *tts_words ,unsigned int len)
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
#endif
\ No newline at end of file
... ...
... ... @@ -3,7 +3,10 @@
#include "DeviceInfo/DeviceInfo.h"
#include "Megaphone/TTS/Espeak_tts/Espeak_tts.h"
#include "./cnTTS/cnTTS.h"
#include "./iflytek_1/iflytek_1.h"
#include "./iflytek_2/iflytek_2.h"
#include "version_choose.h"
static int g_Megaphone_TTS_tone = 0x01;
static int g_Megaphone_TTS_NormalVolume = 100; //生成的tts原音量
... ... @@ -16,17 +19,89 @@ static int g_tts_add = JZ_FLAGCODE_OFF; //追加声音
**********/
T_JZsdkReturnCode Megaphone_TTS_Init()
{
//根据不同的喊话器初始化不同的TTS库
#ifdef IFLAY_TTS_1_CONFIG_STATUS_ON
//讯飞初始化
Megaphone_cnTTS_Init();
Iflytek_1_Init();
#endif
#ifdef ESPEAK_TTS_CONFIG_STATUS_ON
//海外固件,外语初始化
Espeak_init();
#endif
#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON
//讯飞初始化
Iflytek_2_Init();
#endif
JZSDK_LOG_DEBUG("Megaphone_TTS_Init");
}
/*********
*
* TTS销毁
*
* *********/
T_JZsdkReturnCode Megaphone_TTS_DeInit()
{
#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON
//讯飞初始化
Iflytek_2_DeInit();
#endif
}
/*********
*
* TTSPLAY
*
*
**********/
T_JZsdkReturnCode Megaphone_Tts_Play(unsigned char *str, unsigned int str_len, int ReplyFlag)
{
#ifdef IFLAY_TTS_1_CONFIG_STATUS_ON
//判断音色
int tone = TTS_Get_tone();
if (tone >= 0x00 && tone <= 0x36)
{
return Ifytek_1_Play(str, str_len, ReplyFlag);
}
else
{
return Espeak_tts(str ,str_len);
}
#endif
#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON
return Ifytek_2_Play(str, str_len, ReplyFlag);
#endif
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
/*********
*
* 获取生成的tts音量
*
... ...
... ... @@ -45,7 +45,9 @@ int TTS_Set_speed(int value);
int TTS_Set_TTS_AppendTone(int value);
T_JZsdkReturnCode Megaphone_TTS_Init();
T_JZsdkReturnCode Megaphone_TTS_DeInit();
T_JZsdkReturnCode Megaphone_Tts_Play(unsigned char *str, unsigned int str_len, int ReplyFlag);
#ifdef __cplusplus
}
... ...
... ... @@ -4,7 +4,7 @@
#include <stdlib.h>
#include <pthread.h>
#include "./cnTTS.h"
#include "../Megaphone_TTS.h"
#include "../../Megaphone.h"
... ... @@ -14,11 +14,15 @@
#include "JZsdkLib.h"
#include "version_choose.h"
#ifdef IFLAY_TTS_1_CONFIG_STATUS_ON
#include "./iflytek_1.h"
#include "qtts.h"
#include "msp_cmn.h"
#include "msp_errors.h"
#include "msp_types.h"
#define TTS_SAVE 0
static T_JZsdkReturnCode TTS_Synthesis(const char* src_text, const char* params)
... ... @@ -326,7 +330,7 @@ static void *Play_cntts_pthread(void *arg)
//广播状态开始
if (ReplyFlag == JZ_FLAGCODE_ON)
{
Megaphone_status_Broadcast(AUDIO_PLAY_STATUS_IFLAY_TTS);
Megaphone_status_Broadcast(AUDIO_PLAY_STATUS_TTS);
}
int amplifier = JZ_FLAGCODE_ON;
... ... @@ -356,8 +360,6 @@ static void *Play_cntts_pthread(void *arg)
{
Megaphone_status_Broadcast(JZ_FLAGCODE_OFF);
}
JZSDK_LOG_INFO("TTS线程结束");
}
... ... @@ -392,9 +394,11 @@ relogin:
* tts初始化
*
**********/
T_JZsdkReturnCode Megaphone_cnTTS_Init()
T_JZsdkReturnCode Iflytek_1_Init()
{
login_tts();
JZSDK_LOG_DEBUG("Iflytek_1_Init");
}
... ... @@ -404,7 +408,7 @@ T_JZsdkReturnCode Megaphone_cnTTS_Init()
* 讯飞TTS_播放函数
*
**********/
T_JZsdkReturnCode Megaphone_cnTTS_Play(unsigned char *str, unsigned int str_len, int ReplyFlag)
T_JZsdkReturnCode Ifytek_1_Play(unsigned char *str, unsigned int str_len, int ReplyFlag)
{
//1、制造一个数据产生函数
pthread_t TTS_flie_task;
... ... @@ -441,3 +445,5 @@ T_JZsdkReturnCode Megaphone_cnTTS_Play(unsigned char *str, unsigned int str_len,
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
#endif
\ No newline at end of file
... ...
/**
********************************************************************
* @file cnTTS.h
* cnTTS的头文件
* @file Module/Megaphone/TTS/iflytek_1/iflytek_1.h
* TTS的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef CN_TTS_H
#define CN_TTS_H
#ifndef IFLYTEK_1_H
#define IFLYTEK_1_H
/* Includes ------------------------------------------------------------------*/
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
... ... @@ -26,8 +26,8 @@ extern "C" {
T_JZsdkReturnCode Megaphone_cnTTS_Init();
T_JZsdkReturnCode Megaphone_cnTTS_Play(unsigned char *str, unsigned int str_len, int ReplyFlag);
T_JZsdkReturnCode Iflytek_1_Init();
T_JZsdkReturnCode Ifytek_1_Play(unsigned char *str, unsigned int str_len, int ReplyFlag);
#ifdef __cplusplus
... ...
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <pthread.h>
#include "../Megaphone_TTS.h"
#include "../../Megaphone.h"
#include "./iflytek_2.h"
#include "AudioDeal/AudioDeal.h"
#include "Megaphone/Volume/volume.h"
#include "JZsdkLib.h"
#include "version_choose.h"
#ifdef IFLAY_TTS_2_CONFIG_STATUS_ON
#include "iflytek_tts.h"
static T_JZsdkReturnCode IflyTek_2_Tts_Input(int language, char *Text, int speed, int volume)
{
//1、将JZSDK的Language索引值转换为 IFLTEK2的语言索引值
//2、将language转换为音色文件
int IfyTek_language = 0;
char role[20] = {0};
switch (language)
{
case 0x01: // 中文女生
IfyTek_language = 1;
strcpy(role, "xiaoyan");
break;
case 0x02: // 中文男生
IfyTek_language = 1;
strcpy(role, "xiaofeng");
break;
case 0x11: // 英文女生
IfyTek_language = 2;
strcpy(role, "catherine");
break;
case 0x12: // 英文男生
IfyTek_language = 2;
strcpy(role, "john");
break;
case 0x31: // 东北
IfyTek_language = 1;
strcpy(role, "xiaoqian");
break;
case 0x32: // 四川
IfyTek_language = 1;
strcpy(role, "yezi");
break;
case 0x33: // 河南
IfyTek_language = 1;
strcpy(role, "xiaokun");
break;
case 0x34: // 湖南
IfyTek_language = 1;
strcpy(role, "xiaoqiang");
break;
/*case 35: // 陕西
role = "xiaoying";
break;
*/
case 0x36: // 广东
IfyTek_language = 12; // 粤语
strcpy(role, "xiaomei");
break;
case 0x37: // 湖北
IfyTek_language = 1;
strcpy(role, "xiaowang");
break;
/*case 38: // 东北
role = "xiaoqian";
break;
*/
default: // 默认中文女生
IfyTek_language = 1;
strcpy(role, "xiaoyan");
break;
}
IflytekLib_2_TextToTts(IfyTek_language, role, Text, speed, volume);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static T_JZsdkReturnCode TTS_FILE_play(struct t_Megaphone_tts_param *Megaphone_tts_param)
{
int tone = Megaphone_tts_param->tts_tone;
int speed = Megaphone_tts_param->tts_speed;
char *argv = Megaphone_tts_param->ttsdata;
int ReplyFlag = Megaphone_tts_param->ReplyFlag;
int tts_add_mode = Megaphone_tts_param->tts_add;
int volume = Megaphone_tts_param->tts_volume;
//开始合成音频
int loop;
int loop_interval;
do
{
//输入数据
IflyTek_2_Tts_Input(tone, argv, speed, volume);
//如果开启了追加模式
// if(tts_add_mode == JZ_FLAGCODE_ON)
// {
// //追加合成音频
// IflyTek_2_Tts_Input(tone, argv, volume);
// }
Megaphone_param(JZ_FLAGCODE_GET, MEGAPHONE_LOOP, &loop);
Megaphone_param(JZ_FLAGCODE_GET, MEGAPHONE_LOOP_INTERVAL, &loop_interval);
//循环播放延时
while (loop_interval > 0 && (loop == JZ_FLAGCODE_ON) && (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_ON))
{
delayMs(50);
loop_interval -= 50;
}
} while ((loop == JZ_FLAGCODE_ON) && (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_ON));
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//TTS合成线程
static void *Play_cntts_pthread(void *arg)
{
struct t_Megaphone_tts_param *Megaphone_tts_param = (struct t_Megaphone_tts_param *) arg;
int ReplyFlag = Megaphone_tts_param->ReplyFlag;
//设置标志位
Megaphone_MegDataGenFlag(JZ_FLAGCODE_SET, JZ_FLAGCODE_ON);
Megaphone_MegDataGenFinshFlag(JZ_FLAGCODE_SET, JZ_FLAGCODE_ON);
//广播状态开始
if (ReplyFlag == JZ_FLAGCODE_ON)
{
Megaphone_status_Broadcast(AUDIO_PLAY_STATUS_TTS);
}
int amplifier = JZ_FLAGCODE_ON;
Megaphone_Amplifier_param(JZ_FLAGCODE_SET, &amplifier);
//修改tts前的音量
Megaphone_SetVolume(0, 1);
//生成tts播放文件
TTS_FILE_play(Megaphone_tts_param);
//释放掉结构体和标志位
JZsdk_Free(Megaphone_tts_param);
//恢复音量
int audio_volume = Megaphone_GetUiVolume();
Megaphone_SetVolume(audio_volume,0);
amplifier = JZ_FLAGCODE_OFF;
Megaphone_Amplifier_param(JZ_FLAGCODE_SET, &amplifier);
Megaphone_MegDataGenFlag(JZ_FLAGCODE_SET, JZ_FLAGCODE_OFF);
Megaphone_MegDataGenFinshFlag(JZ_FLAGCODE_SET, JZ_FLAGCODE_OFF);
//广播关闭
if (ReplyFlag == JZ_FLAGCODE_ON)
{
Megaphone_status_Broadcast(JZ_FLAGCODE_OFF);
}
}
/*********
*
* 讯飞TTS_播放函数
*
**********/
T_JZsdkReturnCode Ifytek_2_Play(unsigned char *str, unsigned int str_len, int ReplyFlag)
{
//1、制造一个数据产生函数
pthread_t TTS_flie_task;
pthread_attr_t task_attribute; //线程属性
pthread_attr_init(&task_attribute); //初始化线程属性
pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程属性
//tts参数结构体
struct t_Megaphone_tts_param *Megaphone_tts_param = NULL;
if(JZsdk_Malloc( (void **)&Megaphone_tts_param, sizeof(struct t_Megaphone_tts_param)) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)//如果申请内存失败,malloc会返回一个NULl
{
printf("malloc use failure");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;//申请内存失败,错误退出
}
//清空参数
memset (Megaphone_tts_param,0,sizeof(struct t_Megaphone_tts_param));
//写入参数
Megaphone_tts_param->tts_speed = TTS_Get_speed();
Megaphone_tts_param->tts_tone = TTS_Get_tone();
Megaphone_tts_param->tts_volume = TTS_Get_NormalVolume();
Megaphone_tts_param->tts_add = TTS_Get_TTS_AppendTone();
Megaphone_tts_param->ReplyFlag = ReplyFlag;
memset(Megaphone_tts_param->ttsdata,0,sizeof(Megaphone_tts_param->ttsdata));
memcpy(Megaphone_tts_param->ttsdata, str, str_len);
int tts_ret = pthread_create(&TTS_flie_task,&task_attribute,Play_cntts_pthread,(void *)Megaphone_tts_param); //TTS线程
if(tts_ret != 0)
{
printf("创建TTS线程失败\n");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********
*
* tts初始化
*
**********/
T_JZsdkReturnCode Iflytek_2_Init()
{
IflytekLib_2_Init();
JZSDK_LOG_DEBUG("Iflytek_2_Init");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*******
*
* tts销毁
*
* ********/
T_JZsdkReturnCode Iflytek_2_DeInit()
{
IflytekLib_2_UnInit();
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
#endif
\ No newline at end of file
... ...
/**
********************************************************************
* @file Module/Megaphone/TTS/iflytek_2/iflytek_2.h
* TTS的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef IFLYTEK_2_H
#define IFLYTEK_2_H
/* Includes ------------------------------------------------------------------*/
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
T_JZsdkReturnCode Ifytek_2_Init();
T_JZsdkReturnCode Iflytek_2_DeInit();
T_JZsdkReturnCode Ifytek_2_Play(unsigned char *str, unsigned int str_len, int ReplyFlag);
#ifdef __cplusplus
}
#endif
#endif
... ...