作者 ookk303

2.14 更新,其实是2.13

正在显示 73 个修改的文件 包含 1907 行增加452 行删除
... ... @@ -128,7 +128,9 @@
"cameradef.h": "c",
"cam_zoom.h": "c",
"videodev2.h": "c",
"jzsdk_widget.h": "c"
"jzsdk_widget.h": "c",
"dji_sdk_config.h": "c",
"hal_uart.h": "c"
},
"Codegeex.GenerationPreference": "automatic",
"C_Cpp.dimInactiveRegions": false
... ...
... ... @@ -104,7 +104,16 @@ if(${MEDIA_PROC_MODULE} STREQUAL "VERSION_SWITCH_ON")
endif()
#如果要加载音频库模块,需要加载以下附属内容
if(${AUDIODEAL_MODULE} STREQUAL "VERSION_SWITCH_ON")
message("\n音频库模块加载中")
message("加载音频库")
add_definitions(-DMACRO_AUDIODEAL_MODULE)
file(GLOB_RECURSE AUDIODEAL_SRC ${ROOT_DIRS}Module/AudioDeal/*.c)
list(APPEND ALL_SRC_FILES ${AUDIODEAL_SRC})
endif()
#如果要加载喊话器模块,需要加载以下附属内容
if(${MEGAPHONE_MODULE} STREQUAL "VERSION_SWITCH_ON")
... ... @@ -115,10 +124,6 @@ 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("加载音频库")
file(GLOB_RECURSE AUDIODEAL_SRC ${ROOT_DIRS}Module/AudioDeal/*.c)
list(APPEND ALL_SRC_FILES ${AUDIODEAL_SRC})
message("加载讯飞TTS模块")
set(IFLAY_TTS_MODULE VERSION_SWITCH_ON)
... ...
... ... @@ -21,6 +21,10 @@ unsigned char * JZsdk_DefineCode_GetPortName(int Port)
return "HAL数据";
break;
case NET_DEV_1:
return "设备NET1";
break;
case NO_SPECIFIED:
return "无指定设备";
break;
... ...
... ... @@ -9,6 +9,7 @@
//特殊版本号
#define SPECIAL_NORMAL 0x01 //普通版本
#define SPECIAL_DAOTONG 0x02 //道通版本
#define SPECIAL_H10_M300 0x03 //h10 m300版本
//软件模式
#define APP_PSDK 0x01
... ...
... ... @@ -161,6 +161,22 @@ typedef enum {
JZ_INSCODE_5AFRAME_UPGRADE_TRANS = 0x10001103, //升级传输数据
JZ_INSCODE_5AFRAME_UPGRADE_END = 0x10001104, //升级传输结束
JZ_INSCODE_5AFRAME_CAMERA_VIDEO_PUSH_INDEX = 0x10001200, //设置视频推送索引
JZ_INSOCDE_5AFRAME_CAMERA_TAKE_PHOTO = 0x10001201, //拍照
JZ_INSCODE_5AFRAME_CAMERA_VIDEO_RECORD_START = 0x10001202, //录像开始
JZ_INSCODE_5AFRAME_CAMERA_VIDEO_RECORD_STOP = 0x10001203, //录像结束
JZ_INSCODE_5AFRAME_CAMERA_SHUTTER_CONTROL = 0x10001204, //快门控制
JZ_INSCODE_5AFRAME_CAMERA_FREEZE_CONTROL = 0x10001205, //冻结控制
JZ_INSOCDE_5AFRAME_IRC_CORRECT_WAY = 0x10001300, //红外校准方式
JZ_INSCODE_5AFRAME_IRC_SPC_PARAM = 0x10001301, //单点参数
JZ_INSCODE_5AFRAME_IRC_TPC_PARAM = 0x10001302, //两点参数
JZ_INSOCDE_5AFRAME_IRC_OUTPUT_COLOR_MODE = 0x10001400, //红外输出颜色模式
JZ_INSCODE_5AFRAME_IRC_PSEUDO_COLOR_PARAM = 0x10001401, //红外伪彩色
JZ_INSCODE_5AFRAME_IRC_GAS_ENHANCE_PARAM = 0x10001402, //红外气体增强
//5B类帧
JZ_INSCODE_5BFRAME_FRAME = 0x10004000, //发送帧
... ...
... ... @@ -48,9 +48,10 @@ typedef enum JZsdk_Widget_Control
JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT = 0x0036, //气体增强纠正
JZSDK_WIDGET_IRC_MARK_LOW_AND_HIGH_DATA = 0x0037, //红外标记高低数据
JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT_HIGH_CALIBRATION = 0x0037, //气体增强纠正高温校准
JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT_LOW_CALIBRATION = 0x0038, //气体增强纠正低温校准
JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT_HIGH_CALIBRATION = 0x0038, //气体增强纠正高温校准
JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT_LOW_CALIBRATION = 0x0039, //气体增强纠正低温校准
... ...
... ... @@ -672,6 +672,85 @@ static int Comparison_5AFRAME_FirstLevelCode_0xA1(char *getdata)
}
static int Comparison_5AFRAME_FirstLevelCode_0x90(char *getdata)
{
switch (getdata[8])
{
case 0x00:
return JZ_INSCODE_5AFRAME_CAMERA_VIDEO_PUSH_INDEX;
break;
case 0x01:
return JZ_INSOCDE_5AFRAME_CAMERA_TAKE_PHOTO;
break;
case 0x02:
return JZ_INSCODE_5AFRAME_CAMERA_VIDEO_RECORD_START;
break;
case 0x03:
return JZ_INSCODE_5AFRAME_CAMERA_VIDEO_RECORD_STOP;
break;
case 0x04:
return JZ_INSCODE_5AFRAME_CAMERA_SHUTTER_CONTROL;
break;
case 0x05:
return JZ_INSCODE_5AFRAME_CAMERA_FREEZE_CONTROL;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
static int Comparison_5AFRAME_FirstLevelCode_0x93(char *getdata)
{
switch (getdata[8])
{
case 0x00:
return JZ_INSOCDE_5AFRAME_IRC_CORRECT_WAY;
break;
case 0x10:
return JZ_INSCODE_5AFRAME_IRC_SPC_PARAM;
break;
case 0x11:
return JZ_INSCODE_5AFRAME_IRC_TPC_PARAM;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
static int Comparison_5AFRAME_FirstLevelCode_0x94(char *getdata)
{
switch (getdata[8])
{
case 0x00:
return JZ_INSOCDE_5AFRAME_IRC_OUTPUT_COLOR_MODE;
break;
case 0x10:
return JZ_INSCODE_5AFRAME_IRC_PSEUDO_COLOR_PARAM;
break;
case 0x11:
return JZ_INSCODE_5AFRAME_IRC_GAS_ENHANCE_PARAM;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
/******************************************************************
回复帧对比
... ... @@ -813,6 +892,21 @@ int JZsdk_5AFrameComparsion(char *getdata, int len)
return Comparison_5AFRAME_FirstLevelCode_0x6F(getdata);
break;
//一级功能码 90
case 0x90:
return Comparison_5AFRAME_FirstLevelCode_0x90(getdata);
break;
//一级功能码 93
case 0x93:
return Comparison_5AFRAME_FirstLevelCode_0x93(getdata);
break;
//一级功能码 92
case 0x94:
return Comparison_5AFRAME_FirstLevelCode_0x94(getdata);
break;
//一级功能码 升级功能
case 0xA1:
return Comparison_5AFRAME_FirstLevelCode_0xA1(getdata);
... ... @@ -820,6 +914,7 @@ int JZsdk_5AFrameComparsion(char *getdata, int len)
//一级功能码
/*********************************************************************************************************************************************************
*
*
... ...
... ... @@ -474,9 +474,9 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
case JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS:
{
char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x59, 0xf2, 0x00, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x59, 0xf2, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
... ...
... ... @@ -420,11 +420,18 @@ T_JZsdkReturnCode JZsdk_Osal_Rename(const char *oldFilePath, const char *newFile
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
ret = rename(oldFilePath, newFilePath);
unsigned char cmd[256] = {0};
sprintf((char *)cmd, "mv %s %s", oldFilePath, newFilePath);
ret = system((char *)cmd);
if (ret < 0) {
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
// ret = rename(oldFilePath, newFilePath);
// if (ret < 0) {
// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
// }
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ...
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <string.h>
#include "JZsdkLib.h"
#include "Hal_Send/HalSend.h"
#include "BaseConfig.h"
#include "ircut.h"
#include "Gimbal/Gimbal.h"
#include "Hal_Send/HalSend.h"
#include "JZsdk_Hal.h"
#include "ircut.h"
#include "Psdk_UI_io.h"
#include "Lighting_InAndOut.h"
#include "JZsdk_network/JZsdk_network.h"
#include "JZsdk_haldata_deal/JZsdk_data_transmisson.h"
#include "MediaProc/MediaProc.h"
#include "UI_control/WidegMgmt/JZsdk_Widget.h"
#include "DeviceSample/DeviceSample.h"
#include "CommonMod/CommonMod.h"
#include "JZsdk_Hal.h"
#if APP_VERSION == APP_PSDK
#include "fc_subscription/test_fc_subscription.h"
#include "fc_subscription/test_fc_subscription.h"
#endif
#include "DeviceInfo/DeviceInfo.h"
#ifdef MEGAPHONE_CONFIG_STATUS_ON
#include "AudioDeal/AudioDeal.h"
#include "Megaphone/Megaphone.h"
extern int MegaphoneStatusFlag;
#endif
#ifdef SIDE_LASER_STATUS_ON
#include "SideLaser/SideLaser.h"
#endif
static int Main_WorkMode();
static void *Main_WorkModeTask(void *arg);
static int WorkMode = JZ_FLAGCODE_OFF;
static int g_All_filter_Mode = JZ_FLAGCODE_OFF; //用于m30的滤波开关
static int StartupPriorityNum = JZ_FLAGCODE_OFF; //优先启动项值
static int g_device_InitFlag = JZ_FLAGCODE_OFF; //基础配置初始化标志位,该标志位用于判断设备是否已经完成准备就绪,目前主要影响的是预设任务
static int g_baseconfig_InitFlag = JZ_FLAGCODE_OFF; //基础配置初始化标志位,该标志位用于判断设备是否已经完成baseconfig 目前用处影响g_device_InitFlag
static int g_Main_WorkMode_InitFlag = JZ_FLAGCODE_OFF; //基础配置初始化标志位,该标志位用于判断设备是否已经完成连接与启动播放 目前用处影响g_device_InitFlag
/*******************
*
* mode get 是未获取 m30滤波开关
* 其他值为set+get
*
* ********************/
T_JZsdkReturnCode Main_M30_all_filter_mode(int *mode)
{
//喊话器功能被打开时
#ifdef MEGAPHONE_CONFIG_STATUS_ON
if (*mode == JZ_FLAGCODE_GET)
{
*mode = g_All_filter_Mode;
printf("滤波模式获取%d\n",*mode);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
else if ( (*mode != JZ_FLAGCODE_ON) && (*mode != JZ_FLAGCODE_OFF) )
{
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
else
{
printf("滤波模式设置%d\n",*mode);
g_All_filter_Mode = *mode;
if (*mode == JZ_FLAGCODE_ON)
{
//先关闭播放
//Megaphone_StopPlay(JZ_FLAGCODE_OFF);
//修改滤波
AudioDeal_SetFilterMode(0x01);
}
else
{
//先关闭播放
//Megaphone_StopPlay(JZ_FLAGCODE_OFF);
//修改滤波
AudioDeal_SetFilterMode(0x00);
}
}
#endif
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*** ************************* *************************
*
... ... @@ -136,201 +70,6 @@ int Main_Device_Wheather_Use()
}
T_JZsdkReturnCode Main_APP_Psdk()
{
int value[5] = {0, 0, 0, 0, 0};
//sdklib加载
JZsdk_LibInit();
//hal加载
JZsdk_Hal_Init();
JZSDK_LOG_INFO("%x,PsdkVersion%x.%x.%x.%x\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);
//通用模块初始化
CommonMod_Init();
//引脚初始化
Ircut_Init();
//设备信息初始化
DeviceInfo_Init();
//工作模式设置函数,用于超时,及播放启动语音等
Main_WorkMode();
//外接传输模块
JZsdk_data_transmisson_Receive_Init();
//a1加载
#if DEVICE_VERSION == JZ_A1
JZ_a1_init(APP_PSDK);
#endif
//h1e加载
#if DEVICE_VERSION == JZ_H1E
JZ_h1e_init(APP_PSDK);
#endif
//h1t加载
#if DEVICE_VERSION == JZ_H1T
JZ_h1t_init(APP_PSDK);
#endif
//h10加载
#if DEVICE_VERSION == JZ_H10
JZ_h10_init(APP_PSDK);
#endif
//h10t加载
#if DEVICE_VERSION == JZ_H10T
JZ_h10t_init(APP_PSDK);
#endif
//h150s h150t加载
#if DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T
JZ_h150s_h150t_init(APP_PSDK);
#endif
//u3加载
#if DEVICE_VERSION == JZ_U3
JZ_u3_init(APP_PSDK);
#endif
//u3s加载
#if DEVICE_VERSION == JZ_U3S
JZ_u3s_init(APP_PSDK);
#endif
//u3d加载
#if DEVICE_VERSION == JZ_U3D
JZ_u3d_init(APP_PSDK);
#endif
//u30加载
#if DEVICE_VERSION == JZ_U30
JZ_u30_init(APP_PSDK);
#endif
//c1加载
#if DEVICE_VERSION == JZ_C1
JZC1_Init();
#endif
//初始化控件
JZSDK_WidgetMgMT_Init();
//初始化app模式
JZsdk_HalPort_SetUseFlag(DEVICE_PSDK ,JZ_FLAGCODE_ON);
Main_WorkModeSet(JZ_FLAGCODE_ON);
g_baseconfig_InitFlag = JZ_FLAGCODE_ON;
}
int Main_APP_Uart()
{
int value[5] = {0, 0, 0, 0, 0};
//lib库初始化
JZsdk_LibInit();
JZsdk_Hal_Init();
JZSDK_LOG_INFO("0x%x,UartVersion%x.%x.%x.%x\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);
//通用模块
CommonMod_Init();
//引脚初始化
Ircut_Init();
//设备信息初始化
DeviceInfo_Init();
//工作模式设置函数,用于超时,及播放启动语音等
Main_WorkMode();
//a1加载
#if DEVICE_VERSION == JZ_A1
JZ_a1_init(APP_UART);
#endif
//h1e加载
#if DEVICE_VERSION == JZ_H1E
JZ_h1e_init(APP_UART);
#endif
//h1t加载
#if DEVICE_VERSION == JZ_H1T
JZ_h1t_init(APP_UART);
#endif
//h10加载
#if DEVICE_VERSION == JZ_H10
JZ_h10_init(APP_UART);
#endif
//h10t加载
#if DEVICE_VERSION == JZ_H10T
JZ_h10t_init(APP_UART);
#endif
//h150s h150t加载
#if DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T
JZ_h150s_h150t_init(APP_UART);
#endif
//u3加载
#if DEVICE_VERSION == JZ_U3
JZ_u3_init(APP_UART);
#endif
//u3s加载
#if DEVICE_VERSION == JZ_U3S
JZ_u3s_init(APP_UART);
#endif
//u3d加载
#if DEVICE_VERSION == JZ_U3D
JZ_u3d_init(APP_UART);
#endif
//u30加载
#if DEVICE_VERSION == JZ_U30
JZ_u30_init(APP_UART);
#endif
//c1加载
#if DEVICE_VERSION == JZ_C1
JZC1_Init();
#endif
g_baseconfig_InitFlag = JZ_FLAGCODE_ON;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
int Main_TestAPP()
{
int value[5] = {0, 0, 0, 0, 0};
JZsdk_LibInit();
JZsdk_Hal_Init();
CommonMod_Init();
//串口设备1初始化
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
}
//JZ_FLAGCODE_GET为返回工作值,其他值为设置
int Main_WorkModeSet(int mode)
{
... ... @@ -504,6 +243,171 @@ static void *Main_WorkModeTask(void *arg)
}
/************************************************************************************************************************************************
*
*
*
*
*
* 初始化
*
*
*
*
************************************************************************************************************************************************/
static T_JZsdkReturnCode DeviceSample_init(int mode)
{
//a1加载
#if DEVICE_VERSION == JZ_A1
TF_a1_init(mode);
#endif
//h1e加载
#if DEVICE_VERSION == JZ_H1E
JZ_h1e_init(mode);
#endif
//h1t加载
#if DEVICE_VERSION == JZ_H1T
JZ_h1t_init(mode);
#endif
//h10加载
#if DEVICE_VERSION == JZ_H10
JZ_h10_init(mode);
#endif
//h10t加载
#if DEVICE_VERSION == JZ_H10T
JZ_h10t_init(mode);
#endif
//h150s h150t加载
#if DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T
JZ_h150s_h150t_init(mode);
#endif
//u3加载
#if DEVICE_VERSION == JZ_U3
JZ_u3_init(mode);
#endif
//u3s加载
#if DEVICE_VERSION == JZ_U3S
JZ_u3s_init(mode);
#endif
//u3d加载
#if DEVICE_VERSION == JZ_U3D
JZ_u3d_init(mode);
#endif
//u30加载
#if DEVICE_VERSION == JZ_U30
JZ_u30_init(mode);
#endif
//c1加载
#if DEVICE_VERSION == JZ_C1
JZC1_Init(mode);
#endif
}
T_JZsdkReturnCode Main_APP_Psdk()
{
int value[5] = {0, 0, 0, 0, 0};
//sdklib加载
JZsdk_LibInit();
//hal加载
JZsdk_Hal_Init();
JZSDK_LOG_INFO("%x,PsdkVersion%x.%x.%x.%x\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);
//通用模块初始化
CommonMod_Init();
//引脚初始化
Ircut_Init();
//设备信息初始化
DeviceInfo_Init();
//工作模式设置函数,用于超时,及播放启动语音等
Main_WorkMode();
//外接传输模块
JZsdk_data_transmisson_Receive_Init();
//设备例程初始化
DeviceSample_init(APP_PSDK);
//初始化控件
JZSDK_WidgetMgMT_Init();
//初始化app模式
JZsdk_HalPort_SetUseFlag(DEVICE_PSDK ,JZ_FLAGCODE_ON);
Main_WorkModeSet(JZ_FLAGCODE_ON);
g_baseconfig_InitFlag = JZ_FLAGCODE_ON;
}
int Main_APP_Uart()
{
int value[5] = {0, 0, 0, 0, 0};
//lib库初始化
JZsdk_LibInit();
JZsdk_Hal_Init();
JZSDK_LOG_INFO("0x%x,UartVersion%x.%x.%x.%x\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);
//通用模块
CommonMod_Init();
//引脚初始化
Ircut_Init();
//设备信息初始化
DeviceInfo_Init();
//工作模式设置函数,用于超时,及播放启动语音等
Main_WorkMode();
//设备例程初始化
DeviceSample_init(APP_UART);
g_baseconfig_InitFlag = JZ_FLAGCODE_ON;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
int Main_TestAPP()
{
int value[5] = {0, 0, 0, 0, 0};
JZsdk_LibInit();
JZsdk_Hal_Init();
CommonMod_Init();
//串口设备1初始化
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
}
/**********************************
*
* 获取设备初始化标志
... ...
... ... @@ -207,9 +207,10 @@ extern "C" {
#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
#define NET_WORK_IPADDR "192.168.5.3"
#define NET_WORK_TARGET_IPADDR "192.168.5.10"
#define NET_WORK_NETMASK "255.255.255.0"
#else
#define UART_DEV1_NUM NULL
... ... @@ -239,7 +240,6 @@ int Main_APP_Uart();
T_JZsdkReturnCode Main_APP_Psdk();
int Main_TestAPP();
int Main_Device_Wheather_Use();
T_JZsdkReturnCode Main_M30_all_filter_mode(int *mode);
T_JZsdkReturnCode Main_StartupPriority(int *choose);
T_JZsdkReturnCode Main_SetDeviceName(unsigned int Port, int g_DeviceID);
int BaseConfig_GetDeviceInitFlag();
... ...
... ... @@ -12,8 +12,22 @@
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
#include "DeviceSample/JZ_H1_series/JZ_H1E/JZ_h1e.h"
#include "DeviceSample/JZ_H1_series/JZ_H1T/JZ_h1t.h"
#include "DeviceSample/JZ_H10_series/JZ_H10/JZ_h10.h"
#include "DeviceSample/JZ_H10_series/JZ_H10T/JZ_h10t.h"
#include "DeviceSample/JZ_H150S_H150T/JZ_h150s_h150t.h"
#include "DeviceSample/JZ_U3_series/JZ_U3/JZ_u3.h"
#include "DeviceSample/JZ_U3_series/JZ_U3S/JZ_u3s.h"
#include "DeviceSample/JZ_U3_series/JZ_U3D/JZ_u3d.h"
#include "DeviceSample/JZ_U3_series/JZ_U30/JZ_u30.h"
#include "DeviceSample/JZC1/JZC1.h"
#include "TF_A1/TF_a1.h"
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
... ...
#include "JZsdkLib.h"
#include "BaseConfig.h"
#include <pthread.h>
#include <stdatomic.h>
#include "JZsdk_usb_bulk/JZsdk_usb_bulk.h"
#include "IRCUT/ircut.h"
... ... @@ -20,7 +20,8 @@
#include "MediaProc/MediaProc.h"
#include "UI_control/UI_control.h"
#include "CommonMod/PowerManger/PowerManger.h"
typedef struct C1_RgaInfo
{
... ... @@ -367,11 +368,13 @@ static void *JZC1_IrcDataBuffer_Thread(void *args)
long long prev_time = start_time.tv_sec * NSEC_PER_SEC + start_time.tv_nsec;
//设置间隔时间
long long period = NSEC_PER_SEC / TARGET_FPS;
long long period = NSEC_PER_SEC / JZ_C1_IRC_FRAMERATE;
unsigned char *TempBuffer = (unsigned char *)malloc(163840);
unsigned int TempBufferLen = 0;
int num = 0;
while (1)
{
//获取当前时间
... ... @@ -401,15 +404,47 @@ static void *JZC1_IrcDataBuffer_Thread(void *args)
JZC1_IrcDeal(TempBuffer, TempBufferLen);
prev_time = current_time;
}
// 为了防止过于频繁地调用 clock_gettime,可以添加一个小的睡眠时间
// 例如,休眠1毫秒(100000000纳秒),以减少CPU占用
struct timespec req = { .tv_sec = 0, .tv_nsec = 1000000 };
nanosleep(&req, NULL);
// // 为了防止过于频繁地调用 clock_gettime,可以添加一个小的睡眠时间
// // 例如,休眠1毫秒(100000000纳秒),以减少CPU占用
// struct timespec req = { .tv_sec = 0, .tv_nsec = 1000000 };
// nanosleep(&req, NULL);
}
}
// static void *JZC1_IrcDataBuffer_Thread(void *args)
// {
// unsigned char *TempBuffer = (unsigned char *)malloc(163840);
// unsigned int TempBufferLen = 0;
// const long long period = NSEC_PER_SEC / TARGET_FPS; // 33,333,333 ns
// struct timespec next;
// clock_gettime(CLOCK_MONOTONIC, &next);
// while(1) {
// // 精确周期控制
// next.tv_nsec += period;
// if (next.tv_nsec >= NSEC_PER_SEC) {
// next.tv_sec++;
// next.tv_nsec -= NSEC_PER_SEC;
// }
// // 无锁化改造
// if(atomic_exchange(&FrameBuffer_UseFlag, JZ_FLAGCODE_ON) == JZ_FLAGCODE_OFF) {
// memcpy(TempBuffer, FrameBuffer, FrameBufferLen); // 零拷贝优化见方案2
// atomic_store(&FrameBuffer_UseFlag, JZ_FLAGCODE_OFF);
// JZC1_IrcDeal(TempBuffer, FrameBufferLen);
// JZSDK_LOG_INFO("deal");
// }
// // 高精度休眠
// clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &next, NULL);
// }
// }
static T_JZsdkReturnCode JZC1_IrcDataSave(unsigned char *data, unsigned int data_len)
{
... ... @@ -567,7 +602,7 @@ static T_JZsdkReturnCode JZsdk_JZC1_Irc_Data_Init()
T_JZsdkReturnCode ret;
//初始化接收的usb口
ret = JZsdk_HalUsbBulk_Init(&g_usb_index, 0, 0, LINUX_USB_PID, LINUX_USB_VID, USB_IN_POINT, USB_OUT_POINT);
ret = JZsdk_HalUsbBulk_Init(&g_usb_index, 0, 0, JZSDK_USB_PID, JZSDK_USB_VID, USB_IN_POINT, USB_OUT_POINT);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
return ret;
... ... @@ -1010,9 +1045,107 @@ T_JZsdkReturnCode JZC1_SetNextFrame_IDR(unsigned int index)
#endif
static int save_int_to_file(const char* filename, int value)
{
FILE* file = fopen(filename, "wb");
if (!file) {
perror("fopen failed");
return -1;
}
size_t written = fwrite(&value, sizeof(int), 1, file);
fclose(file);
if (written != 1) {
fprintf(stderr, "Failed to write integer\n");
return -1;
}
return 0;
}
static int read_int_from_file(const char* filename) {
FILE* file = fopen(filename, "rb");
if (!file) {
perror("fopen failed");
return 0;
}
int value = 0;
size_t read = fread(&value, sizeof(int), 1, file);
fclose(file);
if (read != 1) {
fprintf(stderr, "Failed to read integer\n");
return 0;
}
return value;
}
T_JZsdkReturnCode JZC1_PowerOff_Save()
{
JZSDK_LOG_INFO("开始关机保存");
JZsdk_Osal_Mkdir("/root/ValueSave");
//获取校正类型
int correction_type;
Camera_param(JZ_FLAGCODE_GET, CAMERA_CORRCTION_MODE, &correction_type);
//保存
save_int_to_file("/root/ValueSave/correction_type", correction_type);
JZSDK_LOG_INFO("已存储校正类型:%d", correction_type);
//保存单点校正模式
int single_point_correction_mode;
Proc_IRC_param(JZ_FLAGCODE_GET, JZSDK_WIDGET_SPC_MODE, &single_point_correction_mode);
//保存
save_int_to_file("/root/ValueSave/single_point_correction_mode", single_point_correction_mode);
JZSDK_LOG_INFO("已存储单点校正模式:%d", single_point_correction_mode);
//保存两点校正模式
int double_point_correction_mode;
Proc_IRC_param(JZ_FLAGCODE_GET, JZSDK_WIDGET_TPC_MODE, &double_point_correction_mode);
//保存
save_int_to_file("/root/ValueSave/double_point_correction_mode", double_point_correction_mode);
JZSDK_LOG_INFO("已存储两点校正模式:%d", double_point_correction_mode);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static T_JZsdkReturnCode JZC1_PowerOn_Read()
{
//读取校正类型
int correction_type = read_int_from_file("/root/ValueSave/correction_type");
//设置校正类型
UIcontrol_CameraCorrectionMode(NO_SPECIFIED ,correction_type);
//读取单点校正模式
int single_point_correction_mode = read_int_from_file("/root/ValueSave/single_point_correction_mode");
//设置单点校正模式
UIcontrol_Set_SPCmode(NO_SPECIFIED, single_point_correction_mode);
//读取两点校正模式
int double_point_correction_mode = read_int_from_file("/root/ValueSave/double_point_correction_mode");
//设置两点校正模式
UIcontrol_Set_TpcMode(NO_SPECIFIED, double_point_correction_mode);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//c1的实际初始化函数
T_JZsdkReturnCode JZC1_Init()
T_JZsdkReturnCode JZC1_Init(int mode)
{
//网口初始化
if (mode == APP_UART)
{
//网口初始化
JZsdk_NetWork_Init();
}
#ifdef RTK_MPP_STATUS_ON
T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
... ... @@ -1113,7 +1246,8 @@ T_JZsdkReturnCode JZC1_Init()
memcpy(g_JZC1_info.Opt_Camera_info->CmeraDevPath, JZ_C1_OPT_DEV_PATH, strlen(JZ_C1_OPT_DEV_PATH));
g_JZC1_info.Opt_Camera_info->SingleDataOutput = JZC1_OptDeal;
ret = Camera_Init_2(g_JZC1_info.Opt_Camera_info);
ret = Camera_Init(g_JZC1_info.Opt_Camera_info);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("光学相机启动失败");
... ... @@ -1182,6 +1316,12 @@ T_JZsdkReturnCode JZC1_Init()
#endif
//注册保存的回调函数
PowerManager_RegisterPowerOffCallback(JZC1_PowerOff_Save);
//注册读取保存的回调函数
PowerManager_RegisterPowerOnCallback(JZC1_PowerOn_Read);
JZSDK_LOG_INFO("JZC1_Init success");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
... ...
... ... @@ -25,7 +25,7 @@ extern "C" {
/* Exported types ------------------------------------------------------------*/
T_JZsdkReturnCode JZC1_Init();
T_JZsdkReturnCode JZC1_Init(int mode);
#ifdef __cplusplus
... ...
... ... @@ -2,6 +2,11 @@
#include "BaseConfig.h"
#include <pthread.h>
#include "JZsdk_Hal.h"
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
/****************************
*
* h10 h10t 初始化
... ...
/**
********************************************************************
* @file JZ_h10.h
* JZ_h10.h的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZ_h10_H
#define JZ_h10_H
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
T_JZsdkReturnCode JZ_h10_init(int mode);
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -2,6 +2,12 @@
#include "BaseConfig.h"
#include <pthread.h>
#include "JZsdk_Hal.h"
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
/****************************
*
* h10 h10t 初始化
... ...
/**
********************************************************************
* @file JZ_h10.h
* JZ_h10.h的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZ_h10_H
#define JZ_h10_H
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
T_JZsdkReturnCode JZ_h10_init(int mode);
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -2,6 +2,60 @@
#include "BaseConfig.h"
#include <pthread.h>
#include "JZsdk_Hal.h"
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
#include "MediaProc/MediaProc.h"
typedef struct T_H150S_Info
{
JZsdk_CameraInfo *CamereInfo;
}T_H150S_Info;
static T_H150S_Info g_H150S_Info;
#define JZ_H150S_OPT_WIDTH 1920
#define JZ_H150S_OPT_HEIGHT 1080
#define JZ_H150S_OPT_FRAMERATE 25
#define JZ_H150S_OPT_INDEX VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST
#define JZ_H150S_OPT_DEV_PATH ("/dev/video0")
#define JZ_H150S_OPT_PIXEL V4L2_PIX_FMT_H264
#define JZ_H150S_OPT_BRIGHTNESS (80) //亮度,该摄像头亮度范围为 1-255 默认128
#define JZ_H150S_OPT_CONTRAST (155) //对比度,摄像头对比度范围为 1-255 默认128
#define JZ_H150S_OPT_SATURATION (128) //饱和度 摄像头饱和度范围为 1-255 默认128
static T_JZsdkReturnCode JZ_h150s_h150t_PushFrame(int CameraIndex,unsigned char *data, int data_len)
{
int currentIndex = VideoMgmt_GetVideoStreamFlowIndexNum(); //获取当前视频流索引
//无视频流
if (currentIndex == 0)
{
//不推送视频
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//相机
if (currentIndex == JZ_H150S_OPT_INDEX && CameraIndex == JZ_H150S_OPT_INDEX)
{
//推送数据到流转模块
VideoMgmt_Single_FrameIn(data, data_len);
}
}
static T_JZsdkReturnCode JZ_h150s_h150t_Opt_deal(unsigned char *buf, int len)
{
JZ_h150s_h150t_PushFrame(VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST, buf, len);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/****************************
*
* h150s h150t 初始化
... ... @@ -11,10 +65,12 @@
* ****************************/
T_JZsdkReturnCode JZ_h150s_h150t_init(int mode)
{
T_JZsdkReturnCode ret;
//音频库初始化
AudioDeal_Init();
if (mode == APP_PSDK)
if (mode == APP_UART)
{
//串口设备1初始化
int value[1];
... ... @@ -31,12 +87,51 @@ T_JZsdkReturnCode JZ_h150s_h150t_init(int mode)
JZsdk_HalPort_Init(UART_4G, value);
}
if (mode == APP_UART)
{
//网口初始化
JZsdk_NetWork_Init();
}
//喊话器初始化
Megaphone_Init();
//云台初始化
Gimbal_Init(JZ_MODULE_CONTROL_WAY_INDEPENDENT);
//视频流模块初始化
T_JZsdkVideoMgmtHandler VideoMgmtHandler = {
.SetNextFrame_IDR = NULL,
};
VideoMgmt_Init(VideoMgmtHandler);
//相机初始化
MediaProc_Init();
g_H150S_Info.CamereInfo = (JZsdk_CameraInfo *)malloc(sizeof(JZsdk_CameraInfo));
if (g_H150S_Info.CamereInfo == NULL)
{
JZSDK_LOG_ERROR("malloc error");
}
memset(g_H150S_Info.CamereInfo, 0, sizeof(JZsdk_CameraInfo));
g_H150S_Info.CamereInfo->width = JZ_H150S_OPT_WIDTH;
g_H150S_Info.CamereInfo->height = JZ_H150S_OPT_HEIGHT;
g_H150S_Info.CamereInfo->FrameNum = JZ_H150S_OPT_FRAMERATE;
g_H150S_Info.CamereInfo->CameraFormat = JZ_H150S_OPT_PIXEL;
memcpy(g_H150S_Info.CamereInfo->CmeraDevPath, JZ_H150S_OPT_DEV_PATH, strlen(JZ_H150S_OPT_DEV_PATH));
g_H150S_Info.CamereInfo->ThreadMode = JZSDK_SINGLE_THREAD;
g_H150S_Info.CamereInfo->SingleDataOutput = JZ_h150s_h150t_Opt_deal;
g_H150S_Info.CamereInfo->CameraParam.Brightness = JZ_H150S_OPT_BRIGHTNESS;
g_H150S_Info.CamereInfo->CameraParam.Contrast = JZ_H150S_OPT_CONTRAST;
g_H150S_Info.CamereInfo->CameraParam.Saturation = JZ_H150S_OPT_SATURATION;
ret = Camera_Init(g_H150S_Info.CamereInfo);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("光学相机启动失败");
}
VideoMgmt_VideoStreamFlowIndex(JZ_H150S_OPT_INDEX);
JZSDK_LOG_INFO("Module Init success");
}
\ No newline at end of file
... ...
/**
********************************************************************
* @file JZ_h150s_h150t.h
* JZ_h150s_h150t.h的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZ_H150S_H150T_H
#define JZ_H150S_H150T_H
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
T_JZsdkReturnCode JZ_h150s_h150t_init(int mode);
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -2,6 +2,10 @@
#include "BaseConfig.h"
#include <pthread.h>
#include "JZsdk_Hal.h"
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
/****************************
*
* h1e 初始化
... ... @@ -11,26 +15,19 @@
* ****************************/
T_JZsdkReturnCode JZ_h1e_init(int mode)
{
int value[5] = {0};
//音频库初始化
AudioDeal_Init();
if (mode == APP_UART)
{
//串口设备1初始化
int value[1] = {0};
value[0] = UART_DEV1_BITRATE;
JZsdk_HalPort_Init(UART_DEV_1, value);
}
//4g设备初始化
value[0] = COMM_4G_UART_BITRATE;
JZsdk_HalPort_Init(UART_4G, value);
//喊话器初始化
Megaphone_Init();
//云台初始化
Gimbal_Init(JZ_MODULE_CONTROL_WAY_TRANSPARENT);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
... ...
/**
********************************************************************
* @file JZ_h1e.h
* JZ_h1e.h的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZ_H1E_H
#define JZ_H1E_H
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
T_JZsdkReturnCode JZ_h1e_init(int mode);
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -2,6 +2,11 @@
#include "BaseConfig.h"
#include <pthread.h>
#include "JZsdk_Hal.h"
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
/****************************
*
* h15tt 初始化
... ... @@ -11,7 +16,7 @@
* ****************************/
T_JZsdkReturnCode JZ_h1t_init(int mode)
{
int value[1] = {0};
int value[5] = {0};
//音频库初始化
AudioDeal_Init();
... ...
/**
********************************************************************
* @file JZ_h1t.h
* JZ_h1t.h的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZ_H1T_H
#define JZ_H1T_H
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
T_JZsdkReturnCode JZ_h1t_init(int mode);
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -2,6 +2,12 @@
#include "BaseConfig.h"
#include <pthread.h>
#include "JZsdk_Hal.h"
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
/****************************
*
* u3 初始化
... ...
/**
********************************************************************
* @file JZ_u3.h
* JZ_u3.h的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZ_u3_H
#define JZ_u3_H
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
T_JZsdkReturnCode JZ_u3_init(int mode);
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -2,6 +2,12 @@
#include "BaseConfig.h"
#include <pthread.h>
#include "JZsdk_Hal.h"
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
/****************************
*
* u30 初始化
... ...
/**
********************************************************************
* @file JZ_u30.h
* JZ_u30.h的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZ_u30_H
#define JZ_u30_H
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
T_JZsdkReturnCode JZ_u30_init(int mode);
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -2,6 +2,12 @@
#include "BaseConfig.h"
#include <pthread.h>
#include "JZsdk_Hal.h"
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
/****************************
*
* u3d 初始化
... ...
/**
********************************************************************
* @file JZ_u3d.h
* JZ_u3d.h的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZ_u3d_H
#define JZ_u3d_H
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
T_JZsdkReturnCode JZ_u3d_init(int mode);
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -2,6 +2,12 @@
#include "BaseConfig.h"
#include <pthread.h>
#include "JZsdk_Hal.h"
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
#include "SideLaser/SideLaser.h"
/****************************
*
* u3s 初始化
... ...
/**
********************************************************************
* @file JZ_u3s.h
* JZ_u3s.h的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZ_u3s_H
#define JZ_u3s_H
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
T_JZsdkReturnCode JZ_u3s_init(int mode);
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -2,6 +2,12 @@
#include "BaseConfig.h"
#include <pthread.h>
#include "JZsdk_Hal.h"
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
/****************************
*
* a1 初始化
... ... @@ -9,7 +15,7 @@
* mode psdk为psdk模式 uart为串口模式
*
* ****************************/
T_JZsdkReturnCode JZ_a1_init(int mode)
T_JZsdkReturnCode TF_a1_init(int mode)
{
//音频库初始化
AudioDeal_Init();
... ...
/**
********************************************************************
* @file tf_a1.h
* tf_a1.h的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef TF_A1_H
#define TF_A1_H
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
T_JZsdkReturnCode TF_a1_init(int mode);
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -19,7 +19,7 @@
#define MAJOR_VERSION 0x01
#define MINOR_VERSION 0x03
#define MODIFY_VERSION 0x10
#define DEBUG_VERSION 0x01
#define DEBUG_VERSION 0x04
//禁止修改行 滤波方式
#define FILTERING_TYPE HIGH_PASS_FILTERING
... ... @@ -38,6 +38,11 @@
//这个开关可以方便日常代码编写的跳转功能
#ifdef COMPILE_MODE_MODULE
//是否开启音频库功能
#ifdef MACRO_AUDIODEAL_MODULE
#define AUDIODEAL_CONFIG_STATUS_ON
#endif
//是否开启喊话器功能
#ifdef MACRO_MEGAPHONE_MODULE
#define MEGAPHONE_CONFIG_STATUS_ON
... ... @@ -89,6 +94,10 @@
#endif
#else //这里用于方便调试使用,不是实际加载的模组
//是否开启音频库功能
#define AUDIODEAL_CONFIG_STATUS_ON
//是否开启喊话器功能
#define MEGAPHONE_CONFIG_STATUS_ON
... ...
... ... @@ -60,6 +60,10 @@ int HalRecv_type1_PreliminaryScreeningOfData(unsigned char *Data, int DataLen, i
//JZSDK_LOG_INFO("hal-数据传输,接受到数据+未处理数据的长度len: %d", DataLen);
break;
case NET_DEV_1:
//JZSDK_LOG_INFO("网络-设备1号,接受到数据+未处理数据的长度len: %d", DataLen);
break;
/********** 未报备的接口 ************/
default:
ResidualLength = 0;
... ...
... ... @@ -25,9 +25,13 @@
#include "Megaphone/Music/AudioFile/Megaphone_AudioFile.h"
#include "Megaphone/Opus/Megaphone_Opus.h"
#include "Megaphone/PcmAudio/PcmAudioFile.h"
#endif
#ifdef AUDIODEAL_CONFIG_STATUS_ON
#include "AudioDeal/AudioDeal.h"
#endif
static int HalRecvMode = JZ_FLAGCODE_OFF; //接收模式,主要是为了限制不同设备同时要求hal层做出 同一个数据接收相关功能 ,目前做法是只限定一个hal设备使用一种数据接收模式
static int HalRecvDataLen = 0; //用于计算接收数据长度
... ... @@ -895,12 +899,12 @@ static T_JZsdkReturnCode RecvDeal_audio_GetMusicList(int Port, char *getbuf)
#ifdef MEGAPHONE_CONFIG_STATUS_ON
//刷新歌曲列表
ret = Megaphone_Flush_MusicList();
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
// ret = Megaphone_Flush_MusicList();
// if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
// {
// HalSend_type1Send_Reply_Failure(Port, FrameSequence);
// return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
// }
//解析获取的类型
int type = getbuf[9];
... ... @@ -1640,6 +1644,8 @@ static T_JZsdkReturnCode RecvDeal_Delete_Audio(int Port, char *getbuf)
memcpy(FileName, &getbuf[9], FileName_Length);
FileName[FileName_Length] = '\0'; // 确保文件名以null结尾
JZSDK_LOG_INFO("删除音频:%s", FileName);
//3、拼接指令
char FilePath[512];
snprintf(FilePath, 512 ,"/root/sdcard/audio/%s", FileName);
... ... @@ -3063,6 +3069,8 @@ static T_JZsdkReturnCode RecvDeal_SearchLight_SubscriptionControl(int Port, char
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
UIcontrol_Set_SearchLight_MessageSubscribe(Port, value);
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
... ... @@ -3332,8 +3340,305 @@ static T_JZsdkReturnCode RecvDeal_Upgrade_End(int Port, char *getbuf)
return ret;
}
/*******************************************************************************************************************************
*
* 视频流部分
*
* *******************************************************************************************************************************/
T_JZsdkReturnCode RecvDeal_Set_VideoPushIndex(int Port, char *getbuf)
{
JZSDK_LOG_INFO("%s,视频推送索引",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//1、通过数据帧,获取控制值
int value = getbuf[9];
T_JZsdkReturnCode ret = UIcontrol_Set_VideoMgmtPushIndex(Port, value);
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
}
else
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
return ret;
}
T_JZsdkReturnCode RecvDeal_Set_ShutterControl(int Port, char *getbuf)
{
JZSDK_LOG_INFO("%s,快门控制",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//1、通过数据帧,获取控制值
int value = getbuf[9];
T_JZsdkReturnCode ret = UIcontrol_Set_ShutterSwitch(Port, value);
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
}
else
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
return ret;
}
T_JZsdkReturnCode RecvDeal_Set_FreezeControl(int Port, char *getbuf)
{
JZSDK_LOG_INFO("%s,冻结控制",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//1、通过数据帧,获取控制值
int value = getbuf[9];
T_JZsdkReturnCode ret = UIcontrol_FreezeVideo(Port, value);
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
}
else
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
return ret;
}
T_JZsdkReturnCode RecvDeal_Set_IRCCorrectWay(int Port, char *getbuf)
{
JZSDK_LOG_INFO("%s,红外校正方式",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//1、通过数据帧,获取控制值
int value = getbuf[10];
T_JZsdkReturnCode ret = UIcontrol_CameraCorrectionMode(Port, value);
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
}
else
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
return ret;
}
T_JZsdkReturnCode RecvDeal_Set_IRCCorrectSPCParam(int Port, char *getbuf)
{
JZSDK_LOG_INFO("%s,红外spc控制",JZsdk_DefineCode_GetPortName(Port));
T_JZsdkReturnCode ret;
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//1、通过数据帧,获取控制值
int mode = getbuf[9];
int value = getbuf[10];
//单点档位
if (mode == 0x00)
{
ret = UIcontrol_Set_SPCmode(Port, value);
}
//单点校正模式
else if (mode == 0x01)
{
ret = UIcontrol_Camera_SPC_ResetSwitch(Port, value);
}
//修改自动校正时间
else if (mode == 0x02)
{
ret = UIcontrol_Set_SpcAutoTime(Port, value);
}
else
{
ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
}
else
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
return ret;
}
T_JZsdkReturnCode RecvDeal_Set_IRCCorrectTPCParam(int Port, char *getbuf)
{
JZSDK_LOG_INFO("%s,红外tpc控制",JZsdk_DefineCode_GetPortName(Port));
T_JZsdkReturnCode ret;
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//1、通过数据帧,获取控制值
int mode = getbuf[9];
int value = getbuf[10];
//单点档位
if (mode == 0x00)
{
ret = UIcontrol_Set_TpcMode(Port, value);
}
//修改两点校正数据组
else if (mode == 0x01)
{
ret = UI_control_IrcMarkLowAndHighTemp(Port, value);
}
else
{
ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
}
else
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
return ret;
}
T_JZsdkReturnCode RecvDeal_Set_IRCCorrectColorOutputMode(int Port, char *getbuf)
{
JZSDK_LOG_INFO("%s,红外校正颜色输出模式",JZsdk_DefineCode_GetPortName(Port));
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//1、通过数据帧,获取控制值
int value = getbuf[10];
T_JZsdkReturnCode ret = UIcontrol_Set_PixelColorMode(Port, value);
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
}
else
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
return ret;
}
T_JZsdkReturnCode RecvDeal_Set_IRCCorrectPseudoColorParam(int Port, char *getbuf)
{
JZSDK_LOG_INFO("%s,红外伪彩参数",JZsdk_DefineCode_GetPortName(Port));
T_JZsdkReturnCode ret;
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//1、通过数据帧,获取控制值
int mode = getbuf[9];
int value = getbuf[10];
//修改伪彩颜色
if(mode == 0x00)
{
ret = UIcontrol_Set_PseudoColor(Port, value);
}
else
{
ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
}
else
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
return ret;
}
T_JZsdkReturnCode RecvDeal_Set_IRCCorrectGasEnhanceParam(int Port, char *getbuf)
{
JZSDK_LOG_INFO("%s,红外气体增强参数",JZsdk_DefineCode_GetPortName(Port));
T_JZsdkReturnCode ret;
//获取帧的序列号
int FrameSequence = JZsdk_Get_FrameSequence(getbuf);
//1、通过数据帧,获取控制值
int mode = getbuf[9];
int value = getbuf[10];
//修改气体增强颜色
if(mode == 0x00)
{
ret = UIcontrol_Set_GasEnhancementColor(Port, value);
}
else if (mode == 0x01)
{
ret = UIcontrol_GasEnhancementCorrect(Port, value);
}
else
{
ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
HalSend_type1Send_Reply_Success(Port, FrameSequence);
}
else
{
//回复操作失败
HalSend_type1Send_Reply_Failure(Port, FrameSequence);
}
return ret;
}
/*******************************************************************************************************************************
*
... ... @@ -4152,11 +4457,15 @@ static T_JZsdkReturnCode RecvDeal_SetSpecialParameters(int Port, char *getbuf)
//0x01设置滤波
case 0x01:
{
ret = Main_M30_all_filter_mode(&value);
#ifdef MEGAPHONE_CONFIG_STATUS_ON
ret = AudioDeal_SetFilterMode(value);
if(ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("特参一失败");
}
#endif
}
break;
... ... @@ -4209,11 +4518,11 @@ static T_JZsdkReturnCode RecvDeal_CheckSpecialParameters(int Port, char *getbuf)
//0x01设置滤波
case 0x01:
{
ret = Main_M30_all_filter_mode(&value);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("特参一获取失败");
}
#ifdef MEGAPHONE_CONFIG_STATUS_ON
value = AudioDeal_GetFilterMode();
ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
#endif
}
break;
... ... @@ -4853,6 +5162,50 @@ static T_JZsdkReturnCode RecvDeal_InstructInput(int Port, int Receive_mode, unsi
RecvDeal_Upgrade_End(Port,getbuf);
break;
//设置推流索引值
case JZ_INSCODE_5AFRAME_CAMERA_VIDEO_PUSH_INDEX:
RecvDeal_Set_VideoPushIndex(Port,getbuf);
break;
//设置快门控制
case JZ_INSCODE_5AFRAME_CAMERA_SHUTTER_CONTROL:
RecvDeal_Set_ShutterControl(Port,getbuf);
break;
//冻结控制
case JZ_INSCODE_5AFRAME_CAMERA_FREEZE_CONTROL:
RecvDeal_Set_FreezeControl(Port,getbuf);
break;
//红外校正方式
case JZ_INSOCDE_5AFRAME_IRC_CORRECT_WAY:
RecvDeal_Set_IRCCorrectWay(Port,getbuf);
break;
//红外单点参数
case JZ_INSCODE_5AFRAME_IRC_SPC_PARAM:
RecvDeal_Set_IRCCorrectSPCParam(Port,getbuf);
break;
//红外两点参数
case JZ_INSCODE_5AFRAME_IRC_TPC_PARAM:
RecvDeal_Set_IRCCorrectTPCParam(Port,getbuf);
break;
//红外色彩输出模式
case JZ_INSOCDE_5AFRAME_IRC_OUTPUT_COLOR_MODE:
RecvDeal_Set_IRCCorrectColorOutputMode(Port,getbuf);
break;
//红外伪彩输出控制
case JZ_INSCODE_5AFRAME_IRC_PSEUDO_COLOR_PARAM:
RecvDeal_Set_IRCCorrectPseudoColorParam(Port,getbuf);
break;
//红外气体增强控制
case JZ_INSCODE_5AFRAME_IRC_GAS_ENHANCE_PARAM:
RecvDeal_Set_IRCCorrectGasEnhanceParam(Port,getbuf);
break;
/*******************************************************************************************************************************
*
... ...
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <termios.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <termios.h>
#include "BaseConfig.h"
#include "version_choose.h"
#include "JZsdkLib.h"
#include "./JZsdk_network.h"
#include "../Hal_Recv/HalRecv.h"
#define LINUX_CMD_STR_MAX_SIZE (128)
#define LINUX_NETWORK_DEV "eth0"
#define UDP_SERVER_PORT (23003)
#define TCP_SERVER_PORT (23004)
#define MAX_LISTEN_NUM (5)
#define MAX_SEND_FRAME_LENTH (60000)
#define JZSDK_UTIL_MIN(a, b) (((a) < (b)) ? (a) : (b))
static int udp_socket = 0;
static struct sockaddr_in udp_server_addr;
typedef struct T_JZsdk_network_Info
{
//udp套接字
int udp_socket;
//udp服务器地址
struct sockaddr_in udp_server_addr;
//udp端口
int udp_port;
//tcp套接字
int tcp_socket;
//tcp服务器地址
struct sockaddr_in tcp_server_addr;
//tcp端口
int tcp_port;
}T_JZsdk_network_Info;
T_JZsdk_network_Info g_JZsdk_network_Info;
static int NetworkMode = JZ_FLAGCODE_OFF; //网络模式
static T_JZsdkReturnCode JZsdk_NetWork_UdpInit()
{
//创建UDP socket 套接字
g_JZsdk_network_Info.udp_socket = socket(AF_INET, SOCK_DGRAM, 0);
if (g_JZsdk_network_Info.udp_socket == -1) {
JZSDK_LOG_ERROR("网口套接字注册失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//配置udp服务器地址
memset(&g_JZsdk_network_Info.udp_server_addr, 0, sizeof(g_JZsdk_network_Info.udp_server_addr));
g_JZsdk_network_Info.udp_server_addr.sin_family = AF_INET;
g_JZsdk_network_Info.udp_server_addr.sin_port = htons(g_JZsdk_network_Info.udp_port);
if(inet_aton(NET_WORK_TARGET_IPADDR, &g_JZsdk_network_Info.udp_server_addr.sin_addr) == 0)
{
JZSDK_LOG_ERROR("udp服务器配置失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
}
static T_JZsdkReturnCode handle_client(int client_socket, int port)
{
char buffer[4096] = {0}; // 初始化接收缓冲区
ssize_t bytes_read;
// 读取客户端发送的数据
bytes_read = read(client_socket, buffer, 4096 - 1);
if (bytes_read > 0)
{
//printf("%s\n", buffer);
// 检查是否是 OPTIONS 请求
if (strstr(buffer, "OPTIONS / HTTP/1.1") != NULL) {
// 返回允许跨域的响应头
const char *options_response =
"HTTP/1.1 200 OK\r\n"
"Access-Control-Allow-Origin: *\r\n"
"Access-Control-Allow-Methods: POST, OPTIONS\r\n"
"Access-Control-Allow-Headers: Content-Type\r\n"
"Content-Length: 0\r\n"
"\r\n";
write(client_socket, options_response, strlen(options_response));
close(client_socket);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
// 解析 HTTP 请求头中的 Content-Length
char *content_length = strstr(buffer, "Content-Length: ");
if (content_length) {
int len = atoi(content_length + 16); // 跳过 "Content-Length: " 的16个字符
unsigned char *body = strstr(buffer, "\r\n\r\n") + 4; // 定位消息体起始位置
//JZSDK_LOG_INFO("[Port %d] Received: %d%s\n", port, len, body); // 打印消息体内容
HalRecv_type1_PreliminaryScreeningOfData(body, len, NET_DEV_1);
}
}
// 发送固定 HTTP 响应
const char *response =
"HTTP/1.1 200 OK\r\n"
"Access-Control-Allow-Origin: *\r\n"
"Content-Length: 19\r\n"
"\r\n"
"Data received successfully";
write(client_socket, response, strlen(response));
close(client_socket); // 关闭客户端连接
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static void *JZsdk_Tcp_RecvThread(void *arg)
{
while (1)
{
struct sockaddr_in client_addr;
socklen_t client_addr_len = sizeof(client_addr);
int client_socket = accept(g_JZsdk_network_Info.tcp_socket, (struct sockaddr *)&client_addr, &client_addr_len);
if(client_socket == -1)
{
JZSDK_LOG_ERROR("tcp服务器接收失败");
continue;
}
handle_client(client_socket, g_JZsdk_network_Info.tcp_port); // 处理客户端请求
}
}
static T_JZsdkReturnCode JZsdk_NetWork_TcpInit()
{
T_JZsdkOsalHandler *osal_handler = JZsdk_Platform_GetOsalHandler();
if(osal_handler == NULL)
{
JZSDK_LOG_ERROR("osal_handler is NULL");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//创建tcp socket套接字
g_JZsdk_network_Info.tcp_socket = socket(AF_INET, SOCK_STREAM, 0);
if (g_JZsdk_network_Info.tcp_socket == -1)
{
JZSDK_LOG_ERROR("网口套接字注册失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//配置tcp服务器
memset(&g_JZsdk_network_Info.tcp_server_addr, 0, sizeof(g_JZsdk_network_Info.tcp_server_addr));
g_JZsdk_network_Info.tcp_server_addr.sin_family = AF_INET;
g_JZsdk_network_Info.tcp_server_addr.sin_port = htons(g_JZsdk_network_Info.tcp_port);
g_JZsdk_network_Info.tcp_server_addr.sin_addr.s_addr = inet_addr("192.168.5.3");
//把tcp套接字绑定到指定地址
if(bind(g_JZsdk_network_Info.tcp_socket, (struct sockaddr *)&g_JZsdk_network_Info.tcp_server_addr, sizeof(g_JZsdk_network_Info.tcp_server_addr)) == -1)
{
JZSDK_LOG_ERROR("tcp服务器配置失败");
close(g_JZsdk_network_Info.tcp_socket);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//进入监听状态
if(listen(g_JZsdk_network_Info.tcp_socket, MAX_LISTEN_NUM) == -1)
{
JZSDK_LOG_ERROR("tcp服务器监听失败");
close(g_JZsdk_network_Info.tcp_socket);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
T_JZTaskHandle g_tcp_server_task = NULL;
//创建监听线程
osal_handler->TaskCreate("tcp_server", JZsdk_Tcp_RecvThread, 8192, NULL, &g_tcp_server_task);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode JZsdk_NetWork_Init()
{
T_JZsdkReturnCode ret;
... ... @@ -35,6 +201,9 @@ T_JZsdkReturnCode JZsdk_NetWork_Init()
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
g_JZsdk_network_Info.udp_port = UDP_SERVER_PORT;
g_JZsdk_network_Info.tcp_port = TCP_SERVER_PORT;
//1、打开网卡设备
memset(cmdStr, 0, sizeof(cmdStr));
snprintf(cmdStr, sizeof(cmdStr), "ifconfig %s up", LINUX_NETWORK_DEV);
... ... @@ -46,7 +215,7 @@ T_JZsdkReturnCode JZsdk_NetWork_Init()
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//2、打开网络
//2、配置IP地址
memset(cmdStr, 0, sizeof(cmdStr));
snprintf(cmdStr, sizeof(cmdStr), "ifconfig %s %s netmask %s", LINUX_NETWORK_DEV, NET_WORK_IPADDR, NET_WORK_NETMASK);
ret = system(cmdStr);
... ... @@ -57,22 +226,11 @@ T_JZsdkReturnCode JZsdk_NetWork_Init()
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//3、创建UDP socket 套接字
udp_socket = socket(AF_INET, SOCK_DGRAM, 0);
if (udp_socket == -1) {
JZSDK_LOG_ERROR("网口套接字注册失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//udp初始化
JZsdk_NetWork_UdpInit();
//4、配置udp服务器地址
memset(&udp_server_addr, 0, sizeof(udp_server_addr));
udp_server_addr.sin_family = AF_INET;
udp_server_addr.sin_port = htons(UDP_SERVER_PORT);
if(inet_aton(NET_WORK_TARGET_IPADDR, &udp_server_addr.sin_addr) == 0)
{
JZSDK_LOG_ERROR("udp服务器配置失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//tcp初始化
JZsdk_NetWork_TcpInit();
NetworkMode = JZ_FLAGCODE_ON;
... ... @@ -87,8 +245,8 @@ T_JZsdkReturnCode JZsdk_NetWork_DeInit()
static T_JZsdkReturnCode JZsdk_NetWork_Sent(const unsigned char *data, const int data_len)
{
int bytes_sent = sendto(udp_socket, data, data_len, 0,
(struct sockaddr *) &udp_server_addr, sizeof(udp_server_addr));
int bytes_sent = sendto(g_JZsdk_network_Info.udp_socket, data, data_len, 0,
(struct sockaddr *) &g_JZsdk_network_Info.udp_server_addr, sizeof(g_JZsdk_network_Info.udp_server_addr));
if (bytes_sent == -1)
{
... ...
... ... @@ -17,8 +17,8 @@
extern "C" {
#endif
#define LINUX_USB_VID (0x04b4)
#define LINUX_USB_PID (0x00f1)
#define JZSDK_USB_VID (0x04b4)
#define JZSDK_USB_PID (0x00f1)
#define USB_OUT_POINT (0x02)
#define USB_IN_POINT (0x86)
... ...
... ... @@ -89,6 +89,14 @@ T_JZsdkReturnCode AudioDeal_SetFilterMode(int mode)
FF_Filter_Set_FilterMode(mode);
}
/*
获取音频库的滤波模式
0x00 默认滤波 0x01 M30滤波
*/
T_JZsdkReturnCode AudioDeal_GetFilterMode()
{
return FF_Filter_Get_FilterMode();
}
/******************************
... ...
... ... @@ -102,6 +102,8 @@ int AudioDeal_GetPauseAndContinuePlayStatus();
T_JZsdkReturnCode Get_AudioDealStatus();
T_JZsdkReturnCode AudioDeal_SetFilterMode(int mode);
T_JZsdkReturnCode AudioDeal_GetFilterMode();
T_JZsdkReturnCode AudioDeal_Mp3DataStop();
#ifdef __cplusplus
... ...
... ... @@ -440,3 +440,8 @@ T_JZsdkReturnCode FF_Filter_Set_FilterMode(int mode)
g_FilterMode = mode;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode FF_Filter_Get_FilterMode()
{
return g_FilterMode;
}
\ No newline at end of file
... ...
... ... @@ -21,6 +21,7 @@ T_JZsdkReturnCode FF_Filter_Init(struct AudioDealInfo *AD_Info, int AudioType);
T_JZsdkReturnCode FF_Filter_push_frame_to_fliter(struct AudioDealInfo *AD_Info ,AVFrame* in_frame);
T_JZsdkReturnCode FF_Filter_get_frame_from_filter(struct AudioDealInfo *AD_Info ,AVFrame* out_frame);
T_JZsdkReturnCode FF_Filter_Set_FilterMode(int mode);
T_JZsdkReturnCode FF_Filter_Get_FilterMode();
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
... ...
... ... @@ -4,21 +4,76 @@
#define POWER_STATUS_OFF 0
#define POWER_STATUS_REBOOT 1
//电源管理初始化
T_JZsdkReturnCode PowerManger_Init()
// 使用static限制全局变量可见范围
static T_JZsdkReturnCode (*g_PoweroffCallback)(void) = NULL;
static T_JZsdkReturnCode (*g_PoweronCallback)(void) = NULL;
T_JZsdkReturnCode PowerManager_RegisterPowerOffCallback(T_JZsdkReturnCode (*callback)(void))
{
if (!callback)
{
JZSDK_LOG_ERROR("Invalid NULL callback");
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
g_PoweroffCallback = callback;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode PowerManager_RegisterPowerOnCallback(T_JZsdkReturnCode (*callback)(void))
{
if (!callback)
{
JZSDK_LOG_ERROR("Invalid NULL callback");
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
g_PoweronCallback = callback;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//电源开关
T_JZsdkReturnCode PowerManger_PowerOff()
{
JZSDK_LOG_INFO("执行关闭电源");
if (g_PoweroffCallback) {
T_JZsdkReturnCode callbackRet = g_PoweroffCallback();
if (callbackRet != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("关机任务未正常执行");
}
}
JZsdk_RunSystemCmd("poweroff");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//电源开机时的任务 //这意味着已经完成所有初始化
T_JZsdkReturnCode PowerManger_PowerOn()
{
JZSDK_LOG_INFO("执行开机任务");
if (g_PoweronCallback) {
T_JZsdkReturnCode callbackRet = g_PoweronCallback();
if (callbackRet != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("开机任务未正常执行");
}
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//电源管理初始化
T_JZsdkReturnCode PowerManger_Init()
{
}
//电源重启
T_JZsdkReturnCode PowerManger_PowerReboot()
... ...
... ... @@ -25,6 +25,9 @@ extern "C" {
/* Exported functions --------------------------------------------------------*/
T_JZsdkReturnCode PowerManger_SetPowerStatus(int status);
T_JZsdkReturnCode PowerManager_RegisterPowerOffCallback(T_JZsdkReturnCode (*callback)(void));
T_JZsdkReturnCode PowerManager_RegisterPowerOnCallback(T_JZsdkReturnCode (*callback)(void));
T_JZsdkReturnCode PowerManger_PowerOn();
#ifdef __cplusplus
... ...
... ... @@ -293,7 +293,14 @@ static T_JZsdkReturnCode DeviceMessage_Enter_Debug(unsigned char *message)
memset(old_message, 0, MESSAGE_MAX_LEN);
memset(new_message, 0, MESSAGE_MAX_LEN);
if (g_MessageLanguage == DEVICE_MESSAGE_CHINESE)
{
snprintf(new_message,MESSAGE_MAX_LEN,"调试界面\n");
}
else
{
snprintf(new_message,MESSAGE_MAX_LEN,"Debug-Perspective\n");
}
snprintf(old_message,MESSAGE_MAX_LEN,"%s",message);
snprintf(message,MESSAGE_MAX_LEN,"%s%s",old_message,new_message);
... ...
... ... @@ -26,6 +26,8 @@ static int WarningLight_Mode; //警灯模式
static int WarningLight_Color1; //警灯颜色1
static int WarningLight_Color2; //警灯颜色2
static int g_SearchLight_Subscription_Flag = JZ_FLAGCODE_ON; //消息订阅状态
#define MAX(a,b) ( (a>b) ?a:b )
T_JZsdkReturnCode Lighting_Init()
... ... @@ -421,3 +423,26 @@ 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
... ...
... ... @@ -55,6 +55,11 @@ T_JZsdkReturnCode Lighting_CheckStatus_WarningLightColor(int *ValueColor1, int *
T_JZsdkReturnCode JZsdk_SearchLight_FlushLumen(int InputLumen);
int JZsdk_SearchLight_GetMessageSubFlag(void);
T_JZsdkReturnCode JZsdk_SearchLight_SetMessageSubFlag(int InputFlag);
#ifdef __cplusplus
}
#endif
... ...
... ... @@ -147,6 +147,8 @@ T_JZsdkReturnCode JZsdk_FrameCatch_Single(JZsdk_CameraInfo *CameraInfo)
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
JZSDK_LOG_INFO("创建相机抓取并处理初始化线程成功!");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ...
... ... @@ -31,62 +31,25 @@ int g_CameraRegionBox_FirstPixel[2] = {0, 0}; // 初始化第一点坐标(x, y)
int g_CameraRegionBox_SecondPixel[2] = {0, 0}; // 初始化第二点坐标(x, y)为(0, 0)
int g_CameraRegionBox_ClickTime = 0;
/******************************
*
* 相机初始化
* ThreadMode: 0为单线程 1为多线程
* width: 宽
* height: 高
* frame_num: 帧数
*
* ******************************/
T_JZsdkReturnCode Camera_Init(int ThreadMode, int width, int height, int frame_num)
T_JZsdkReturnCode Camera_Init(JZsdk_CameraInfo *CameraInfo)
{
T_JZsdkReturnCode ret;
//初始化摄像头
ret = V4l2_Camarainit(&g_CameraFd,width,height,frame_num);
ret = V4L2_CameraInit_2(CameraInfo);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
return ret;
}
#if DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T
//初始化摄像头参数
ret = V4L2_Parameter_Setting(g_CameraFd);
ret = V4L2_Parameter_Setting(CameraInfo);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("摄像头参数调整失败");
return ret;
}
#endif
//根据线程模式初始化抓取和初步处理的线程
JZsdk_FrameCatch_Init(ThreadMode);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode Camera_Init_2(JZsdk_CameraInfo *CameraInfo)
{
T_JZsdkReturnCode ret;
//初始化摄像头
ret = V4L2_CameraInit_2(CameraInfo);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
return ret;
}
// //初始化摄像头参数
// ret = V4L2_Parameter_Setting(CameraInfo->CameraFd);
// if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
// {
// JZSDK_LOG_ERROR("摄像头参数调整失败");
// return ret;
// }
if (CameraInfo->ThreadMode == JZSDK_SINGLE_THREAD && CameraInfo->SingleDataOutput != NULL)
{
... ... @@ -173,6 +136,7 @@ T_JZsdkReturnCode JZsdk_CameraSPC_ResetSwitch()
* **************************/
T_JZsdkReturnCode JZsdk_Camera_GasEnhancementCorrectSwitch()
{
JZSDK_LOG_INFO("气体增强打档");
IRC_SetDGCE_ResetFlag();
}
... ... @@ -243,17 +207,21 @@ static T_JZsdkReturnCode Camera_CorrectionMode(int mode)
{
case 0:
RealMode = JZ_FLAGCODE_OFF;
JZSDK_LOG_INFO("无校正");
break;
case 1:
RealMode = IRC_CORRCTION_SPC;
JZSDK_LOG_INFO("单点校正");
break;
case 2:
RealMode = IRC_CORRCTION_TPC;
JZSDK_LOG_INFO("两点校正");
break;
default:
JZSDK_LOG_INFO("模式错误:%d",mode);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
break;
}
... ... @@ -279,18 +247,22 @@ static T_JZsdkReturnCode Camera_GasEnhancementColor(int mode)
switch (mode)
{
case 0:
JZSDK_LOG_INFO("气体增强红色");
RealMode = IRC_GAS_ENHANCEMENT_RED;
break;
case 1:
JZSDK_LOG_INFO("气体增强绿色");
RealMode = IRC_GAS_ENHANCEMENT_GREEN;
break;
case 2:
JZSDK_LOG_INFO("气体增强蓝色");
RealMode = IRC_GAS_ENHANCEMENT_BLUE;
break;
default:
JZSDK_LOG_ERROR("气体增强错误:%d",mode);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
break;
}
... ...
... ... @@ -38,8 +38,7 @@ T_JZsdkReturnCode JZsdk_Camera_BadPixelSwitch();
T_JZsdkReturnCode JZsdk_CameraSPC_ResetSwitch();
T_JZsdkReturnCode JZsdk_Camera_GasEnhancementCorrectSwitch();
T_JZsdkReturnCode Camera_Init(int ThreadMode, int width, int height, int frame_num);
T_JZsdkReturnCode Camera_Init_2(JZsdk_CameraInfo *CameraInfo);
T_JZsdkReturnCode Camera_Init(JZsdk_CameraInfo *CameraInfo);
#ifdef __cplusplus
... ...
... ... @@ -16,36 +16,48 @@
#include <linux/videodev2.h>
#include "./V4L2_CameraParameterSetting.h"
#include "JZsdkLib.h"
#include "../Camera.h"
#include "MediaProc/MediaParm.h"
T_JZsdkReturnCode V4L2_Parameter_Setting(int cam_fd)
T_JZsdkReturnCode V4L2_Parameter_Setting(JZsdk_CameraInfo *CameraInfo)
{
struct v4l2_control ctrl;
//设置亮度*
if (CameraInfo->CameraParam.Brightness != 0)
{
ctrl.id= V4L2_CID_BRIGHTNESS;
ctrl.value = BRIGHTNESS;
if(ioctl(cam_fd,VIDIOC_S_CTRL,&ctrl)==-1)
ctrl.value = CameraInfo->CameraParam.Brightness;
if(ioctl(CameraInfo->CameraFd,VIDIOC_S_CTRL,&ctrl)==-1)
{
JZSDK_LOG_INFO("相机亮度设置失败");
}
}
//设置对比度
if (CameraInfo->CameraParam.Contrast != 0)
{
ctrl.id = V4L2_CID_CONTRAST;
ctrl.value= CONTRAST;
if(ioctl(cam_fd,VIDIOC_S_CTRL,&ctrl)==-1)
ctrl.value= CameraInfo->CameraParam.Contrast;
if(ioctl(CameraInfo->CameraFd,VIDIOC_S_CTRL,&ctrl)==-1)
{
JZSDK_LOG_INFO("相机对比度设置失败");
}
}
//设置饱和度
if (CameraInfo->CameraParam.Saturation != 0)
{
ctrl.id = V4L2_CID_SATURATION;
ctrl.value= SATURATION;
if(ioctl(cam_fd,VIDIOC_S_CTRL,&ctrl)==-1)
ctrl.value= CameraInfo->CameraParam.Saturation;
if(ioctl(CameraInfo->CameraFd,VIDIOC_S_CTRL,&ctrl)==-1)
{
perror("相机饱和度设置失败");
}
}
/*
//设置色度
ctrl.id = V4L2_CID_HUE;
... ... @@ -104,6 +116,7 @@ T_JZsdkReturnCode V4L2_Parameter_Setting(int cam_fd)
exit(EXIT_FAILURE);
}
*/
JZSDK_LOG_INFO("V4L2_Parameter_Setting success");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ...
... ... @@ -12,7 +12,7 @@
/* Includes ------------------------------------------------------------------*/
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
#include "../CameraDef.h"
#ifdef __cplusplus
extern "C" {
... ... @@ -26,7 +26,7 @@ extern "C" {
/* Exported functions --------------------------------------------------------*/
T_JZsdkReturnCode V4L2_Parameter_Setting(int cam_fd);
T_JZsdkReturnCode V4L2_Parameter_Setting(JZsdk_CameraInfo *CameraInfo);
#ifdef __cplusplus
... ...
... ... @@ -49,20 +49,19 @@ T_JZsdkReturnCode IRC_LowT_CycleCalibration(U16_t *ImageData,struct IRC_param *d
if (dealInfo->LowT_flag == JZ_FLAGCODE_ON)
{
JZSDK_LOG_DEBUG("开始低温标定");
memset(dealInfo->LowT_NineFrameAdd, 0, dealInfo->PixelNum);
//清空存储数组
for (int i = 0; i < dealInfo->PixelNum; i++)
{
dealInfo->LowT_NineFrameAdd[i] += ImageData[i];
dealInfo->LowT_NineFrameAdd[i] = 0;
}
dealInfo->LowT_flag++;
}
else if (dealInfo->LowT_flag == JZ_FLAGCODE_OFF)
{
//不是,你这不是都没打开吗
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
else
{
//否则累加存储数组
for (int i = 0; i < dealInfo->PixelNum; i++)
{
... ... @@ -70,8 +69,6 @@ T_JZsdkReturnCode IRC_LowT_CycleCalibration(U16_t *ImageData,struct IRC_param *d
}
dealInfo->LowT_flag++;
}
JZSDK_LOG_DEBUG("低温标定基准值已存入%d组",dealInfo->LowT_flag - 1);
if (dealInfo->LowT_flag > 9) //已经存储了9组数据
... ... @@ -106,28 +103,25 @@ T_JZsdkReturnCode IRC_HighT_CycleCalibration(U16_t *ImageData, struct IRC_param
if (dealInfo->HighT_flag == JZ_FLAGCODE_ON)
{
JZSDK_LOG_DEBUG("开始高温标定");
memset(dealInfo->HighT_NineFrameAdd, 0, dealInfo->PixelNum);
//清空存储数组
for (int i = 0; i < dealInfo->PixelNum; i++)
{
dealInfo->HighT_NineFrameAdd[i] += ImageData[i];
dealInfo->HighT_NineFrameAdd[i] = 0;
}
dealInfo->HighT_flag++;
}
else if (dealInfo->HighT_flag == JZ_FLAGCODE_OFF)
{
//不是,你这不是都没打开吗
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
else
{
//否则累加存储数组
for (int i = 0; i < dealInfo->PixelNum; i++)
{
dealInfo->HighT_NineFrameAdd[i] += ImageData[i];
}
dealInfo->HighT_flag++;
}
JZSDK_LOG_DEBUG("高温标定基准值已存入%d组",dealInfo->HighT_flag - 1);
... ...
... ... @@ -252,7 +252,12 @@ static T_JZsdkReturnCode IRC_data_PreliminaryDeal(U16_t *rawData ,unsigned int *
{
//写入出厂的低温数据
case 0:
#if APP_VERSION == APP_PSDK
JZSDK_LOG_DEBUG("无法覆盖出厂的低温数据");
#elif APP_VERSION == APP_UART
IRC_LocalFrame_DataWrite(FACTORY_LOW_TEMP,dealInfo, dealInfo->HighT_NineFrame_Avg, dealInfo->PixelNum);
#endif
break;
//写入手动数据1
... ... @@ -309,7 +314,12 @@ static T_JZsdkReturnCode IRC_data_PreliminaryDeal(U16_t *rawData ,unsigned int *
{
//写入出厂的高温数据
case 0:
#if APP_VERSION == APP_PSDK
JZSDK_LOG_DEBUG("无法覆盖出厂的高温数据");
#elif APP_VERSION == APP_UART
IRC_LocalFrame_DataWrite(FACTORY_HIGH_TEMP,dealInfo, dealInfo->HighT_NineFrame_Avg, dealInfo->PixelNum);
#endif
break;
//写入手动数据1
... ... @@ -425,7 +435,7 @@ static T_JZsdkReturnCode IRC_data_PreliminaryDeal(U16_t *rawData ,unsigned int *
IRC_LocalFrame_DataWrite(SPC_MARK_DATA, dealInfo, (U16_t *)dealInfo->SPC_Mark_Data, dealInfo->PixelNum);
//如果开启开启的昆腾库,则载入昆腾数据
if (g_IRC_Param->DealWay == IRC_DEALMODE_KTLIB && dealInfo->SPC_mode == 1)
if (g_IRC_Param->DealWay == IRC_DEALMODE_KTLIB && (dealInfo->SPC_mode == 1 || dealInfo->SPC_mode == 2))
{
#ifdef KTIRC_LIB_STATUS_ON
KtLib_writeMarkData(SPC_MARK_DATA ,dealInfo->SPC_Mark_Data, dealInfo->PixelNum);
... ... @@ -698,7 +708,6 @@ T_JZsdkReturnCode IRC_FrameDeal(U16_t *rawData ,unsigned int dataSize, unsigned
// fflush(temp_fp);
// }
//2、数据前处理,将原始数据和16位数据 合成为rgb数据
U8_t *RGB_data = NULL;
unsigned int RGB_dataSize = 0;
... ... @@ -836,6 +845,8 @@ T_JZsdkReturnCode LowAndHigh_MarkRest(int mode)
JZSDK_LOG_INFO("低温标定");
g_IRC_Param->LowT_flag = JZ_FLAGCODE_ON;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -869,6 +880,7 @@ T_JZsdkReturnCode IRC_SetGrayPixel_ResetFlag()
T_JZsdkReturnCode IRC_SetSPC_ResetFlag()
{
g_IRC_Param->SPC_ResetFlag = JZ_FLAGCODE_ON;
JZSDK_LOG_INFO("spc打档重置");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -905,6 +917,25 @@ T_JZsdkReturnCode IRC_Set_OutputPixelColorMode(int value)
g_IRC_Param->First_DGCE_flag = JZ_FLAGCODE_OFF;
}
switch (value)
{
case 0x00:
JZSDK_LOG_INFO("红外默认灰色输出");
break;
case 0x01:
JZSDK_LOG_INFO("红外伪彩数据输出");
break;
case 0x02:
JZSDK_LOG_INFO("红外气体增强输出");
break;
default:
JZSDK_LOG_ERROR("红外输出模式出错");
break;
}
g_IRC_Param->OutputPixelColorMode = value;
... ... @@ -1079,6 +1110,8 @@ static T_JZsdkReturnCode IRC_Set_SpcTime(int timebase)
time = 3000;
}
JZSDK_LOG_INFO("设置spc自动打档时间 %dms", time);
g_IRC_Param->SPC_auto_time_tpye = timebase;
g_IRC_Param->SPC_auto_time = time;
... ... @@ -1290,6 +1323,7 @@ static T_JZsdkReturnCode IRC_param_Init(struct IRC_param **index, int height, in
else if (IrcDealCfg->DealWay == IRC_DEALMODE_KTLIB)
{
IrcDealCfg->Filp_V = JZ_FLAGCODE_ON;
IrcDealCfg->Filp_H = JZ_FLAGCODE_ON;
}
//否则都不翻转
else
... ... @@ -1472,3 +1506,4 @@ static T_JZsdkReturnCode IRC_param_Init(struct IRC_param **index, int height, in
}
... ...
... ... @@ -377,6 +377,7 @@ T_JZsdkReturnCode KtLib_DataDeal(U16_t* U16_data, unsigned int U16_dataSize,
}
bool_ret = GetImageSynchronous(inputDataChar, inputDataSize, (char *)*RGB_data, dealInfo->PixelNum*3, (int *)RGB_dataSize); //同步处理数据
}
break;
... ...
... ... @@ -33,6 +33,8 @@ T_JZsdkReturnCode PseudoColor_256Gray2Rgb_ResetColor(int value)
{
P_Color_FinishFlag = JZ_FLAGCODE_OFF;
JZSDK_LOG_INFO("设置伪彩颜色为%d",value);
unsigned char Path[256];
memset(Path,0,256);
... ...
... ... @@ -16,15 +16,15 @@
//单线程方案
static T_JZsdkReturnCode MediaProc_SingleThreading()
{
//如果是150S相机 150T相机
if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T)
{
//1、相机初始化
Camera_Init(0,FIRST_WIDTH, FIRST_HEIGHT, FIRST_FRAME_NUM);
//2、转码模块初始化
VideoStreamTransCode_Init();
}
// //如果是150S相机 150T相机
// if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T)
// {
// //1、相机初始化
// Camera_Init(0,FIRST_WIDTH, FIRST_HEIGHT, FIRST_FRAME_NUM);
// //2、转码模块初始化
// VideoStreamTransCode_Init();
// }
}
//多线程方案
... ... @@ -53,9 +53,5 @@ static T_JZsdkReturnCode MediaProc_MultiThreading()
T_JZsdkReturnCode MediaProc_Init()
{
#if DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T
MediaProc_SingleThreading();
#endif
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
... ...
... ... @@ -448,5 +448,7 @@ T_JZsdkReturnCode VideoMgmt_Init(T_JZsdkVideoMgmtHandler handler)
JZSDK_LOG_ERROR("创建冻结计时线程失败!");
}
JZSDK_LOG_INFO("videoMgmt Init Success");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
... ...
... ... @@ -1290,13 +1290,13 @@ T_JZsdkReturnCode Megaphone_SetVolume(int value, int mode)//设置音é‡ï¼ŒéŸ³é‡
now_volume=value;//获取当前音量
//v3s自设系统 10T要提高30初始音量
if (DEVICE_VERSION == JZ_H10T || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
if (value > 0)
{
value = 30 + value * 10/7;
}
}
// if (DEVICE_VERSION == JZ_H10T || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
// {
// if (value > 0)
// {
// value = 30 + value * 10/7;
// }
// }
if(value<=0)
{
... ... @@ -1343,13 +1343,13 @@ static T_JZsdkReturnCode Megaphone_SetTTSvolume()
printf("TTS音量修改\n");
//v3s自设系统 10T要提高30初始音量
if (DEVICE_VERSION == JZ_H10T || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
if (value > 0)
{
value = 30 + value * 10/7;
}
}
// if (DEVICE_VERSION == JZ_H10T || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
// {
// if (value > 0)
// {
// value = 30 + value * 10/7;
// }
// }
if(value<=0)
... ... @@ -1619,7 +1619,7 @@ T_JZsdkReturnCode Megaphone_PresetTask()
//逐步提高音量
int volume = 30; //初始音量
while (PrsetTask_GetPrsetTaskFlag() == JZ_FLAGCODE_ON && volume < 100)
while (PrsetTask_GetPrsetTaskFlag() == JZ_FLAGCODE_ON && volume <=100)
{
UIcontrol_SetVolume(NO_SPECIFIED, volume);
volume += 10;
... ...
... ... @@ -732,7 +732,7 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileStop(int checkFlag, unsigned char *Chec
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
// 命令执行失败,处理错误
JZSDK_LOG_ERROR("mp3存储失败");
JZSDK_LOG_ERROR("mp3存储失败 %s %s", SAVE_FILE_DIR, MP2_SaveFile);
AudioFile_save_flag = JZ_FLAGCODE_OFF;
ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
... ...
... ... @@ -208,6 +208,7 @@ static T_JZsdkReturnCode UI_control_WidgetSet(int type, int value)
case JZSDK_WIDGET_TPC_MODE:
case JZSDK_WIDGET_BAD_PIXEL_CORRECT_MODE:
case JZSDK_WIDGET_ZOOM_SIZE:
case JZSDK_WIDGET_CAMERA_CORRECT_MODE:
UI_control_WidgetArraySet(index, value);
break;
... ... @@ -1006,6 +1007,8 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_WarningLightMode(int wheather_control, in
{
T_JZsdkReturnCode ret;
//控件值 0 关闭 1快闪 2 满闪 3齐闪
int mode = 0;
int Switch = 0;
if (value >= 1)
... ... @@ -1537,6 +1540,29 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_GasEnhancementCorrect(int wheather_ChangeWidg
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/**********************
*
* 高低温标定
*
*
********************/
T_JZsdkReturnCode JZsdk_Psdk_UI_io_IrcMarkLowAndHighTemp(int wheather_ChangeWidget, int wheather_control, int value)
{
//如果修改控件
if (wheather_ChangeWidget == JZ_FLAGCODE_ON)
{
//无控件变化
}
//如果进行控制
if (wheather_control == JZ_FLAGCODE_ON)
{
UI_control_IrcMarkLowAndHighTemp(DEVICE_PSDK, value);
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/***********************************************************************************************************
*
* 侧面激光部分
... ...
... ... @@ -155,6 +155,7 @@ T_JZsdkReturnCode JZsdK_SetFocusTarget(int PointX, int PointY);
T_JZsdkReturnCode JZsdk_Psdk_UI_io_CameraCorrectMode(int wheather_ChangeWidget, int wheather_control, int value);
T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_GasEnhancementColor(int wheather_ChangeWidget, int wheather_control, int value);
T_JZsdkReturnCode JZsdk_Psdk_UI_io_GasEnhancementCorrect(int wheather_ChangeWidget, int wheather_control, int value);
T_JZsdkReturnCode JZsdk_Psdk_UI_io_IrcMarkLowAndHighTemp(int wheather_ChangeWidget, int wheather_control, int value);
//psdk spc模式
T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_SPCmode(int wheather_ChangeWidget, int wheather_control, int value);
... ...
... ... @@ -1290,6 +1290,21 @@ T_JZsdkReturnCode UIcontrol_CheckStatus_SearchLightTemperture(int *ValueLeftTemp
#endif
}
/***********************
*
* 设置探照灯消息订阅
*
*
******************/
T_JZsdkReturnCode UIcontrol_Set_SearchLight_MessageSubscribe(int DeviceName, int value)
{
#ifdef LIGHTING_STATUS_ON
//调用探照灯的接口
T_JZsdkReturnCode ret = JZsdk_SearchLight_SetMessageSubFlag(value);
#endif
}
/****************************************************************************************************************************************
*
* 警灯相关
... ... @@ -1624,8 +1639,11 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Lumen(int DeviceName, int LeftLume
//如果设备1有启动
if ( (JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_1) )
{
if (JZsdk_SearchLight_GetMessageSubFlag() == JZ_FLAGCODE_ON)
{
HalSend_type1Send_SearchLight_Lumen(UART_DEV_1, LeftLumen, RightLumen);
}
}
//如果设备2有启动
if ( (JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_2) )
{
... ... @@ -1661,7 +1679,15 @@ T_JZsdkReturnCode UIcontrol_ObtainSearchLight_Temperature(int DeviceName, int Le
//如果设备1有启动
if ( (JZsdk_HalPort_UseFlag(UART_DEV_1) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_1) )
{
#ifdef LIGHTING_STATUS_ON
if (JZsdk_SearchLight_GetMessageSubFlag() == JZ_FLAGCODE_ON)
{
HalSend_type1Send_SearchLight_Temperature(UART_DEV_1, LeftTemperature, RightTemperature);
}
#else
HalSend_type1Send_SearchLight_Temperature(UART_DEV_1, LeftTemperature, RightTemperature);
#endif
}
//如果设备2有启动
if ( (JZsdk_HalPort_UseFlag(UART_DEV_2) == JZ_FLAGCODE_ON) && (DeviceName != UART_DEV_2) )
... ... @@ -2099,6 +2125,7 @@ T_JZsdkReturnCode UIcontrol_Set_SPCmode(int DeviceName, int value)
//如果psdk接口已经使用
if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
{
JZsdk_Psdk_UI_io_Set_SPCmode(JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, value);
}
#endif
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
... ... @@ -2171,6 +2198,7 @@ T_JZsdkReturnCode UIcontrol_Set_TpcMode(int DeviceName, int value)
//如果psdk接口已经使用
if ( (JZsdk_HalPort_UseFlag(DEVICE_PSDK) == JZ_FLAGCODE_ON) && DeviceName != DEVICE_PSDK )
{
JZsdk_Psdk_UI_io_Set_TpcMode(JZ_FLAGCODE_ON, JZ_FLAGCODE_OFF, value);
}
#endif
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
... ... @@ -2310,6 +2338,26 @@ T_JZsdkReturnCode UIcontrol_GasEnhancementCorrect(int DeviceName, int value)
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*****************************
*
* 高低温标定
*
*
* ***********************/
T_JZsdkReturnCode UI_control_IrcMarkLowAndHighTemp(int DeviceName, int value)
{
T_JZsdkReturnCode ret;
#ifdef MEDIA_PROC_CONFIG_STATUS_ON
//1、设置推流索引值
ret = LowAndHigh_MarkRest(value);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
return ret;
}
#endif
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********
*
... ...
... ... @@ -77,6 +77,7 @@ T_JZsdkReturnCode UIcontrol_SearchLightControl(int DeviceName, int mode);
T_JZsdkReturnCode UIcontrol_Set_SearchLightLumen(int DeviceName, int WeatherFlush, int value1, int value2);
T_JZsdkReturnCode UIcontrol_CheckStatus_SearchLightLightAttribute(int *ValueFrequency, int *ValueMode, int *ValueLeftLumen, int *ValueRightLumen);
T_JZsdkReturnCode UIcontrol_CheckStatus_SearchLightTemperture(int *ValueLeftTemperature, int *ValueRightTemperaturen);
T_JZsdkReturnCode UIcontrol_Set_SearchLight_MessageSubscribe(int DeviceName, int value);
//警灯类
T_JZsdkReturnCode UIcontrol_Set_WarningLight_ModeControl(int DeviceName, int value1, int value2);
... ... @@ -117,7 +118,7 @@ T_JZsdkReturnCode UIcontrol_CameraRegionbox(int DeviceName, int value1, int valu
T_JZsdkReturnCode UIcontrol_CameraCorrectionMode(int DeviceName, int value);
T_JZsdkReturnCode UIcontrol_Set_GasEnhancementColor(int DeviceName, int value);
T_JZsdkReturnCode UIcontrol_GasEnhancementCorrect(int DeviceName, int value);
T_JZsdkReturnCode UI_control_IrcMarkLowAndHighTemp(int DeviceName, int value);
T_JZsdkReturnCode UIcontrol_ObtainGimbal_Pitch(int DeviceName, int GimbalPitchAngle);
... ...
... ... @@ -113,6 +113,10 @@ static int WidgetMgMT_Control_WorkFuntion(int Inscode, int value)
JZsdk_Psdk_UI_io_GasEnhancementCorrect(JZ_FLAGCODE_ON, JZ_FLAGCODE_ON, value);
break;
case JZSDK_WIDGET_IRC_MARK_LOW_AND_HIGH_DATA:
JZsdk_Psdk_UI_io_IrcMarkLowAndHighTemp(JZ_FLAGCODE_ON, JZ_FLAGCODE_ON, value);
break;
case JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT_HIGH_CALIBRATION:
printf("未设置");
... ...
... ... @@ -961,8 +961,8 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value)
if (value == 1 && num_flag == 3)
{
printf("高温标定\n");
JZSDK_WidgetMgMT_ConrtrolInputTask(JZSDK_WIDGET_IRC_MARK_LOW_AND_HIGH_DATA, 0);
LowAndHigh_MarkRest(0);
}
//JZSDK_WidgetMgMT_ConrtrolInputTask(JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT_HIGH_CALIBRATION, value);
... ... @@ -975,7 +975,7 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value)
{
printf("低温标定\n");
LowAndHigh_MarkRest(1);
JZSDK_WidgetMgMT_ConrtrolInputTask(JZSDK_WIDGET_IRC_MARK_LOW_AND_HIGH_DATA, 1);
}
//JZSDK_WidgetMgMT_ConrtrolInputTask(JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT_LOW_CALIBRATION, value);
break;
... ...
... ... @@ -46,10 +46,16 @@ extern "C" {
#define USER_DEVELOPER_ACCOUNT "dev@tfan.cn"
#define USER_BAUD_RATE "230400"
#else
#define USER_APP_NAME "H110"
#define USER_APP_ID "107188"
#define USER_APP_KEY "33df9ca77f3e8dc1df4d06cbd6237d3"
#define USER_APP_LICENSE "qHRtELC2A04PRBt1xOJ1pqkowJ2OZqwdAUPqOVc7WcWwVIR3Fnadjakhl0i7F1wnFNUKELlDLaDsCYLIhkzOd0kDPQcCksVk3Dla498xLD3Z1b5BcI+hlZXETwTmi+7Td0k1E3Rnt9OPGdqrA8W9mBg333EGGjARFGDfaK2BHhDexUE8yLoVhwkqk3t/0wV8kbyrlZzKsvo0kMUifbALCoLPoCO622Rdu056z+opYUX1OlXCGhDxVSDD43Oaab5bupcC4CGrmkpfiCvS78H7Uinc9b9Xf5Ocy373Cpoet7blux66DOiH5muSQVcrY3gnVKQVk7GRnO6piQh9mKHDdQ=="
// #define USER_APP_NAME "H110"
// #define USER_APP_ID "107188"
// #define USER_APP_KEY "33df9ca77f3e8dc1df4d06cbd6237d3"
// #define USER_APP_LICENSE "qHRtELC2A04PRBt1xOJ1pqkowJ2OZqwdAUPqOVc7WcWwVIR3Fnadjakhl0i7F1wnFNUKELlDLaDsCYLIhkzOd0kDPQcCksVk3Dla498xLD3Z1b5BcI+hlZXETwTmi+7Td0k1E3Rnt9OPGdqrA8W9mBg333EGGjARFGDfaK2BHhDexUE8yLoVhwkqk3t/0wV8kbyrlZzKsvo0kMUifbALCoLPoCO622Rdu056z+opYUX1OlXCGhDxVSDD43Oaab5bupcC4CGrmkpfiCvS78H7Uinc9b9Xf5Ocy373Cpoet7blux66DOiH5muSQVcrY3gnVKQVk7GRnO6piQh9mKHDdQ=="
// #define USER_DEVELOPER_ACCOUNT "jizhisdk@163.com"
#define USER_APP_NAME "T30V2"
#define USER_APP_ID "157783"
#define USER_APP_KEY "da4b1f33362243ec2f5d684c7d4d904"
#define USER_APP_LICENSE "jxtZU+COCz+nC6iQHpKY0NUKR7t3r6Uy0pcG9dIl+bfJ/tVREvRauRM+eo/MyvuIS2zzt0dGHMg7BmlnI8L42apzDwjN7jseLkP3/3qOczuwZgCTuMQziaItBloa7UjIdBAlDdKuiA92mcGc8BOKZTOIuCMfnNFNd3oD6V6RzAEf2D5WuofyXvc4N0/dVwH5oGvBuA/v+3Yt142xl0lhugfT5Rd9NjUIZ+9EXYMwImceUmNZjmbFNPwBVUPEGaA4HooN2yRDmfZl2qQMQsVgkEytg/kjgRkTOwcT+4h5Vw4VyXZXyeNqLOqJdy1fg0QdlT4YO6vVLo7uJHuRqz89nA=="
#define USER_DEVELOPER_ACCOUNT "jizhisdk@163.com"
#if (DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_H1E || DEVICE_VERSION == JZ_U3|| DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
... ...
... ... @@ -46,6 +46,8 @@ extern "C" {
#define CONFIG_HARDWARE_CONNECTION DJI_USE_UART_AND_NETWORK_DEVICE
#elif (DEVICE_VERSION == JZ_U3 && ALLWINNER_CEDAR == VERSION_SWITCH_ON)
#define CONFIG_HARDWARE_CONNECTION DJI_USE_UART_AND_NETWORK_DEVICE
// #elif (DEVICE_VERSION == JZ_H10 && SPECIAL_VERSION == SPECIAL_H10_M300)
// #define CONFIG_HARDWARE_CONNECTION DJI_USE_UART_AND_USB_BULK_DEVICE
#else
#define CONFIG_HARDWARE_CONNECTION DJI_USE_ONLY_UART
#endif
... ... @@ -83,6 +85,7 @@ extern "C" {
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
int Set_Main_g_M300ConnectFailureFlag_ON();
#ifdef __cplusplus
}
... ...
... ... @@ -64,6 +64,11 @@
#include "version_choose.h"
#include "Psdk_UI_io.h"
#include "DeviceInfo/DeviceInfo.h"
#include "CommonMod/PowerManger/PowerManger.h"
#ifdef AUDIODEAL_CONFIG_STATUS_ON
#include "AudioDeal/AudioDeal.h"
#endif
/* Private constants ---------------------------------------------------------*/
#define DJI_LOG_PATH "/root/sdcard/Logs/"
... ... @@ -171,6 +176,7 @@ int main(int argc, char *argv[])
}
USER_LOG_INFO("DjiCore_Init");
work_mode=1;//进入工作模式
// 获得基础信息
returnCode = DjiAircraftInfo_GetBaseInfo(&aircraftInfoBaseInfo);
... ... @@ -184,11 +190,12 @@ int main(int argc, char *argv[])
//m30和m30t有滤波锁
if (aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M30 || aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M30T)
{
int filter_mode = JZ_FLAGCODE_ON;
Main_M30_all_filter_mode(&filter_mode);
}
#ifdef AUDIODEAL_CONFIG_STATUS_ON
work_mode=1;//进入工作模式
AudioDeal_SetFilterMode(0x01);
#endif
}
if (aircraftInfoBaseInfo.mountPositionType != DJI_MOUNT_POSITION_TYPE_PAYLOAD_PORT) {
returnCode = DjiAircraftInfo_GetAircraftVersion(&aircraftInfoVersion);
... ... @@ -580,6 +587,8 @@ int main(int argc, char *argv[])
return DJI_ERROR_SYSTEM_MODULE_CODE_SYSTEM_ERROR;
}
/*!< Step 5: Tell the DJI Pilot you are ready. */
returnCode = DjiCore_ApplicationStart();
if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
... ... @@ -595,6 +604,9 @@ int main(int argc, char *argv[])
// USER_LOG_ERROR("set name for monitor task fail.");
// }
//初始化任务
PowerManger_PowerOn();
while (1) {
sleep(1);
}
... ... @@ -1058,6 +1070,15 @@ static void DjiUser_NormalExitHandler(int signalNum)
#pragma GCC diagnostic pop
/****************** (C) COPYRIGHT DJI Innovations *****END OF FILE****/
static T_JZsdkReturnCode g_M300ConnectFailureFlag = JZ_FLAGCODE_OFF;
int Set_Main_g_M300ConnectFailureFlag_ON()
{
g_M300ConnectFailureFlag = JZ_FLAGCODE_ON;
return 0;
}
void *getworkmodeTask(void *arg)
{
int i=0;
... ... @@ -1069,9 +1090,17 @@ void *getworkmodeTask(void *arg)
USER_LOG_INFO("wait %d work_mode=%d.....\n",i,work_mode);
sleep(1);//延迟一秒钟
i++;
if(i == JZsdk_ParamterParsing_GetTimeOutTime() )
if (g_M300ConnectFailureFlag == JZ_FLAGCODE_ON)
{
USER_LOG_INFO("串口连接模式\n",work_mode);
i+=10;
USER_LOG_INFO("SDK连接失败 with uart error\n",work_mode);
g_M300ConnectFailureFlag = JZ_FLAGCODE_OFF;
}
if(i >= JZsdk_ParamterParsing_GetTimeOutTime())
{
USER_LOG_INFO("SDK连接失败goto urat_mode work_mode=%d.....\n",work_mode);
returnCode = DjiUser_CleanSystemEnvironment();
if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
... ... @@ -1079,9 +1108,9 @@ void *getworkmodeTask(void *arg)
perror("Clean up system environment failed.");
}
//退出程序
exit(0);
USER_LOG_INFO("SDK连接失败goto urat_mode work_mode=%d.....\n",work_mode);
break;
}
}
... ...
... ... @@ -25,6 +25,7 @@
/* Includes ------------------------------------------------------------------*/
#include <dji_logger.h>
#include "hal_uart.h"
#include "version_choose.h"
/* Private constants ---------------------------------------------------------*/
#define UART_DEV_NAME_STR_SIZE (128)
... ... @@ -236,6 +237,9 @@ T_DjiReturnCode HalUart_ReadData(T_DjiUartHandle uartHandle, uint8_t *buf, uint3
if (ret >= 0) {
*realLen = ret;
} else {
#if (DEVICE_VERSION == JZ_H10 && SPECIAL_VERSION == SPECIAL_H10_M300)
Set_Main_g_M300ConnectFailureFlag_ON();
#endif
return DJI_ERROR_SYSTEM_MODULE_CODE_SYSTEM_ERROR;
}
... ...
... ... @@ -38,7 +38,10 @@
#include "stdlib.h"
#include "dji_platform.h"
//额外添加的
#include "BaseConfig.h"
#include "dji_sdk_config.h"
#ifdef __cplusplus
extern "C" {
... ...
... ... @@ -65,8 +65,10 @@ extern "C" {
#define LINUX_USB_BULK2_END_POINT_IN (0x84)
#define LINUX_USB_BULK2_END_POINT_OUT (3)
//大疆的x86id
//#define LINUX_USB_VID (0x0B95)
//#define LINUX_USB_PID (0x1790)
//linux设备的uid
#define LINUX_USB_VID (0x0955)
#define LINUX_USB_PID (0x7020)
... ...