正在显示
39 个修改的文件
包含
551 行增加
和
126 行删除
@@ -111,7 +111,10 @@ | @@ -111,7 +111,10 @@ | ||
111 | "jzsdk_framecomparsion_6aframe.h": "c", | 111 | "jzsdk_framecomparsion_6aframe.h": "c", |
112 | "jzsdk_uart.h": "c", | 112 | "jzsdk_uart.h": "c", |
113 | "audiomange.h": "c", | 113 | "audiomange.h": "c", |
114 | - "pcmaudiofile.h": "c" | 114 | + "pcmaudiofile.h": "c", |
115 | + "megaphone_playback.h": "c", | ||
116 | + "audiomange_param.h": "c", | ||
117 | + "jzsdk_platform.h": "c" | ||
115 | }, | 118 | }, |
116 | "Codegeex.GenerationPreference": "automatic", | 119 | "Codegeex.GenerationPreference": "automatic", |
117 | "C_Cpp.dimInactiveRegions": false | 120 | "C_Cpp.dimInactiveRegions": false |
1 | # 编译链的配置 | 1 | # 编译链的配置 |
2 | 2 | ||
3 | #1、编译链与设备类型的选择 | 3 | #1、编译链与设备类型的选择 |
4 | -set(DEVICE_NAME JZ_H1T) | 4 | +set(DEVICE_NAME JZ_H10T) |
5 | #上一行为禁止修改行 | 5 | #上一行为禁止修改行 |
6 | 6 | ||
7 | message("**************************JZSDK构建编译开始***************************\n") | 7 | message("**************************JZSDK构建编译开始***************************\n") |
@@ -56,6 +56,8 @@ typedef void *T_JZsdkMutexHandle; | @@ -56,6 +56,8 @@ typedef void *T_JZsdkMutexHandle; | ||
56 | typedef void *T_JZsdkSemaHandle; | 56 | typedef void *T_JZsdkSemaHandle; |
57 | //文件权柄 | 57 | //文件权柄 |
58 | typedef void *T_JZsdkFileHandle; | 58 | typedef void *T_JZsdkFileHandle; |
59 | +//目录权柄 | ||
60 | +typedef void *T_JZsdkDirHandle; | ||
59 | 61 | ||
60 | 62 | ||
61 | /* Exported types ------------------------------------------------------------*/ | 63 | /* Exported types ------------------------------------------------------------*/ |
@@ -166,7 +166,7 @@ T_JZsdkReturnCode JZsdk_Osal_FileClose(T_JZsdkFileHandle fileObj) | @@ -166,7 +166,7 @@ T_JZsdkReturnCode JZsdk_Osal_FileClose(T_JZsdkFileHandle fileObj) | ||
166 | 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示写入成功, | 166 | 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示写入成功, |
167 | JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示写入失败 | 167 | JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示写入失败 |
168 | * *******************************/ | 168 | * *******************************/ |
169 | -T_JZsdkReturnCode JZsdk_Osal_FileWrite(T_JZsdkFileHandle fileObj, const U8_t *buf, U32_t len, U32_t *realLen) | 169 | +T_JZsdkReturnCode JZsdk_Osal_FileWrite_U8(T_JZsdkFileHandle fileObj, const U8_t *buf, U32_t len, U32_t *realLen) |
170 | { | 170 | { |
171 | int32_t ret; | 171 | int32_t ret; |
172 | 172 | ||
@@ -192,7 +192,7 @@ T_JZsdkReturnCode JZsdk_Osal_FileWrite(T_JZsdkFileHandle fileObj, const U8_t *bu | @@ -192,7 +192,7 @@ T_JZsdkReturnCode JZsdk_Osal_FileWrite(T_JZsdkFileHandle fileObj, const U8_t *bu | ||
192 | 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示读取成功, | 192 | 返回值:JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS表示读取成功, |
193 | JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示读取失败 | 193 | JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE表示读取失败 |
194 | * *******************************/ | 194 | * *******************************/ |
195 | -T_JZsdkReturnCode JZsdk_Osal_FileRead(T_JZsdkFileHandle fileObj, U8_t *buf, U32_t len, U32_t *realLen) | 195 | +T_JZsdkReturnCode JZsdk_Osal_FileRead_U8(T_JZsdkFileHandle fileObj, U8_t *buf, U32_t len, U32_t *realLen) |
196 | { | 196 | { |
197 | int32_t ret; | 197 | int32_t ret; |
198 | 198 | ||
@@ -680,4 +680,81 @@ T_JZsdkReturnCode JZsdk_Sync() | @@ -680,4 +680,81 @@ T_JZsdkReturnCode JZsdk_Sync() | ||
680 | { | 680 | { |
681 | sync(); | 681 | sync(); |
682 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 682 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
683 | +} | ||
684 | + | ||
685 | +T_JZsdkReturnCode JZsdk_Osal_DirOpen(const char *filePath, T_JZsdkDirHandle *dirObj) | ||
686 | +{ | ||
687 | + if (filePath == NULL) { | ||
688 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
689 | + } | ||
690 | + | ||
691 | + *dirObj = opendir(filePath); | ||
692 | + if (*dirObj == NULL) { | ||
693 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
694 | + } | ||
695 | + | ||
696 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
697 | +} | ||
698 | + | ||
699 | +T_JZsdkReturnCode JZsdk_Osal_DirClose(T_JZsdkDirHandle dirObj) | ||
700 | +{ | ||
701 | + int32_t ret; | ||
702 | + | ||
703 | + if (dirObj == NULL) { | ||
704 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
705 | + } | ||
706 | + | ||
707 | + ret = closedir((DIR *) dirObj); | ||
708 | + if (ret < 0) { | ||
709 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
710 | + } | ||
711 | + | ||
712 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
713 | +} | ||
714 | + | ||
715 | +T_JZsdkReturnCode JZsdk_Osal_DirRead(T_JZsdkDirHandle dirObj, T_JZsdkFileInfo *fileInfo) | ||
716 | +{ | ||
717 | + struct dirent *dirent; | ||
718 | + | ||
719 | + if (dirObj == NULL || fileInfo == NULL) { | ||
720 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
721 | + } | ||
722 | + | ||
723 | + dirent = readdir((DIR *) dirObj); | ||
724 | + if (!dirent) { | ||
725 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
726 | + } | ||
727 | + | ||
728 | + if (dirent->d_type == DT_DIR) { | ||
729 | + fileInfo->isDir = true; | ||
730 | + } else { | ||
731 | + fileInfo->isDir = false; | ||
732 | + } | ||
733 | + strcpy(fileInfo->path, dirent->d_name); | ||
734 | + | ||
735 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
736 | +} | ||
737 | + | ||
738 | + | ||
739 | +T_JZsdkReturnCode JZsdk_Osal_Unlink(const char *filePath) | ||
740 | +{ | ||
741 | + int32_t ret; | ||
742 | + | ||
743 | + if (filePath == NULL) { | ||
744 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
745 | + } | ||
746 | + | ||
747 | + if (filePath[strlen(filePath) - 1] == '/') { | ||
748 | + ret = rmdir(filePath); | ||
749 | + if (ret < 0) { | ||
750 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
751 | + } | ||
752 | + } else { | ||
753 | + ret = unlink(filePath); | ||
754 | + if (ret < 0) { | ||
755 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
756 | + } | ||
757 | + } | ||
758 | + | ||
759 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
683 | } | 760 | } |
@@ -22,6 +22,59 @@ extern "C" { | @@ -22,6 +22,59 @@ extern "C" { | ||
22 | /* Exported constants --------------------------------------------------------*/ | 22 | /* Exported constants --------------------------------------------------------*/ |
23 | /* 常亮定义*/ | 23 | /* 常亮定义*/ |
24 | 24 | ||
25 | +/* | ||
26 | + 用途:用于读取文件内容。 | ||
27 | + 权限:只允许读取文件,不允许写入或修改文件内容。 | ||
28 | + 文件存在性:如果文件不存在,打开操作会失败,并返回一个错误。 | ||
29 | + 文件指针位置:文件打开后,文件指针位于文件的开头。 | ||
30 | +*/ | ||
31 | +#define FS_ONLY_READ "rb" | ||
32 | + | ||
33 | +/* | ||
34 | + 用途:用于读取和写入文件内容。 | ||
35 | + 权限:允许读取和写入文件内容。 | ||
36 | + 文件存在性:如果文件不存在,打开操作会失败,并返回一个错误。 | ||
37 | + 文件指针位置:文件打开后,文件指针位于文件的开头。 | ||
38 | + 注意事项:在写入文件时,会覆盖文件中对应位置的内容,但不会删除文件的其他内容。 | ||
39 | +*/ | ||
40 | +#define FS_READ_AND_WRITE "r+b" | ||
41 | + | ||
42 | +/* | ||
43 | + 用途:用于写入文件内容。 | ||
44 | + 权限:只允许写入文件内容,不允许读取。 | ||
45 | + 文件存在性:如果文件存在,其内容会被清空;如果文件不存在,会创建一个新文件。 | ||
46 | + 文件指针位置:文件打开后,文件指针位于文件的开头,准备写入新内容。 | ||
47 | + 注意事项:使用w模式打开文件时,会丢失文件中的原有内容。 | ||
48 | +*/ | ||
49 | +#define FS_ONLT_WRITE "wb" | ||
50 | + | ||
51 | +/* | ||
52 | + 用途:用于读取和写入文件内容,但会先清空文件。 | ||
53 | + 权限:允许读取和写入文件内容。 | ||
54 | + 文件存在性:如果文件存在,其内容会被清空;如果文件不存在,会创建一个新文件。 | ||
55 | + 文件指针位置:文件打开后,文件指针位于文件的开头,准备写入新内容。 | ||
56 | + 注意事项:使用w+模式打开文件时,会丢失文件中的原有内容。但在写入新内容后,仍然可以读取文件内容。 | ||
57 | +*/ | ||
58 | +#define FS_READ_AND_WRITE_CLEAR "w+b" | ||
59 | + | ||
60 | +/* | ||
61 | + 用途:用于在文件末尾追加内容。 | ||
62 | + 权限:只允许写入文件内容,不允许读取。 | ||
63 | + 文件存在性:如果文件存在,写入操作会追加到文件末尾;如果文件不存在,会创建一个新文件。 | ||
64 | + 文件指针位置:文件打开后,文件指针位于文件末尾,准备追加新内容。 | ||
65 | +*/ | ||
66 | +#define FS_APPEND "ab" | ||
67 | + | ||
68 | +/* | ||
69 | + 用途:用于读取和写入文件内容,但写入操作会追加到文件末尾。 | ||
70 | + 权限:允许读取和写入文件内容。 | ||
71 | + 文件存在性:如果文件存在,写入操作会追加到文件末尾;如果文件不存在,会创建一个新文件。 | ||
72 | + 文件指针位置:文件打开后,文件指针位于文件末尾,但可以通过fseek等函数移动到文件的其他位置进行读取或写入。 | ||
73 | +*/ | ||
74 | +#define FS_READ_AND_APPEND "a+b" | ||
75 | + | ||
76 | + | ||
77 | + | ||
25 | /* Exported types ------------------------------------------------------------*/ | 78 | /* Exported types ------------------------------------------------------------*/ |
26 | 79 | ||
27 | 80 | ||
@@ -47,12 +100,18 @@ T_JZsdkReturnCode JZsdk_Osal_Rename(const char *oldFilePath, const char *newFile | @@ -47,12 +100,18 @@ T_JZsdkReturnCode JZsdk_Osal_Rename(const char *oldFilePath, const char *newFile | ||
47 | 100 | ||
48 | T_JZsdkReturnCode JZsdk_Osal_FileOpen(const char *fileName, const char *fileMode, T_JZsdkFileHandle *fileObj); | 101 | T_JZsdkReturnCode JZsdk_Osal_FileOpen(const char *fileName, const char *fileMode, T_JZsdkFileHandle *fileObj); |
49 | T_JZsdkReturnCode JZsdk_Osal_FileClose(T_JZsdkFileHandle fileObj); | 102 | T_JZsdkReturnCode JZsdk_Osal_FileClose(T_JZsdkFileHandle fileObj); |
50 | -T_JZsdkReturnCode JZsdk_Osal_FileWrite(T_JZsdkFileHandle fileObj, const U8_t *buf, U32_t len, U32_t *realLen); | ||
51 | -T_JZsdkReturnCode JZsdk_Osal_FileRead(T_JZsdkFileHandle fileObj, U8_t *buf, U32_t len, U32_t *realLen); | 103 | +T_JZsdkReturnCode JZsdk_Osal_FileWrite_U8(T_JZsdkFileHandle fileObj, const U8_t *buf, U32_t len, U32_t *realLen); |
104 | +T_JZsdkReturnCode JZsdk_Osal_FileRead_U8(T_JZsdkFileHandle fileObj, U8_t *buf, U32_t len, U32_t *realLen); | ||
52 | T_JZsdkReturnCode JZsdk_Osal_FileSeek(T_JZsdkFileHandle fileObj, U32_t offset); | 105 | T_JZsdkReturnCode JZsdk_Osal_FileSeek(T_JZsdkFileHandle fileObj, U32_t offset); |
53 | T_JZsdkReturnCode JZsdk_Osal_FileSync(T_JZsdkFileHandle fileObj); | 106 | T_JZsdkReturnCode JZsdk_Osal_FileSync(T_JZsdkFileHandle fileObj); |
54 | 107 | ||
55 | 108 | ||
109 | +T_JZsdkReturnCode JZsdk_Osal_DirOpen(const char *filePath, T_JZsdkDirHandle *dirObj); | ||
110 | +T_JZsdkReturnCode JZsdk_Osal_DirClose(T_JZsdkDirHandle dirObj); | ||
111 | +T_JZsdkReturnCode JZsdk_Osal_DirRead(T_JZsdkDirHandle dirObj, T_JZsdkFileInfo *fileInfo); | ||
112 | +T_JZsdkReturnCode JZsdk_Osal_Unlink(const char *filePath); | ||
113 | + | ||
114 | + | ||
56 | #ifdef __cplusplus | 115 | #ifdef __cplusplus |
57 | } | 116 | } |
58 | #endif | 117 | #endif |
@@ -4,7 +4,8 @@ | @@ -4,7 +4,8 @@ | ||
4 | 4 | ||
5 | 5 | ||
6 | 6 | ||
7 | -static T_JZsdkOsalHandler* g_osalHandler = NULL; | 7 | +static T_JZsdkOsalHandler *g_osalHandler = NULL; |
8 | +static T_JZsdkFSHandler *g_FsHandler = NULL; | ||
8 | 9 | ||
9 | static T_JZsdkReturnCode JZsdk_Platform_RegOsalHandler(const T_JZsdkOsalHandler *osalHandler) | 10 | static T_JZsdkReturnCode JZsdk_Platform_RegOsalHandler(const T_JZsdkOsalHandler *osalHandler) |
10 | { | 11 | { |
@@ -23,6 +24,25 @@ T_JZsdkOsalHandler *JZsdk_Platform_GetOsalHandler(void) | @@ -23,6 +24,25 @@ T_JZsdkOsalHandler *JZsdk_Platform_GetOsalHandler(void) | ||
23 | return g_osalHandler; // 返回已注册的 OSAL 处理器 | 24 | return g_osalHandler; // 返回已注册的 OSAL 处理器 |
24 | } | 25 | } |
25 | 26 | ||
27 | + | ||
28 | +static T_JZsdkReturnCode JZsdk_RegFsHandler(const T_JZsdkFSHandler *FsHandler) | ||
29 | +{ | ||
30 | + g_FsHandler = malloc(sizeof(T_JZsdkFSHandler)); | ||
31 | + if (g_FsHandler == NULL) { | ||
32 | + return JZ_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED; // 处理内存分配失败的情况 | ||
33 | + } | ||
34 | + | ||
35 | + memcpy(g_FsHandler, FsHandler, sizeof(T_JZsdkFSHandler)); | ||
36 | + | ||
37 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
38 | +} | ||
39 | + | ||
40 | +T_JZsdkFSHandler *JZsdk_GetFsHandler(void) | ||
41 | +{ | ||
42 | + return g_FsHandler; // 返回已注册的 FS 处理器 | ||
43 | +} | ||
44 | + | ||
45 | + | ||
26 | T_JZsdkReturnCode JZsdk_OsalInit() | 46 | T_JZsdkReturnCode JZsdk_OsalInit() |
27 | { | 47 | { |
28 | T_JZsdkOsalHandler osalHandler = { | 48 | T_JZsdkOsalHandler osalHandler = { |
@@ -45,7 +65,27 @@ T_JZsdkReturnCode JZsdk_OsalInit() | @@ -45,7 +65,27 @@ T_JZsdkReturnCode JZsdk_OsalInit() | ||
45 | .GetRandomNum = JZsdk_Osal_GetRandomNum, | 65 | .GetRandomNum = JZsdk_Osal_GetRandomNum, |
46 | }; | 66 | }; |
47 | 67 | ||
68 | + T_JZsdkFSHandler fileSystemHandler = { | ||
69 | + .FileOpen = JZsdk_Osal_FileOpen, | ||
70 | + .FileClose = JZsdk_Osal_FileClose, | ||
71 | + .FileWrite_U8 = JZsdk_Osal_FileWrite_U8, | ||
72 | + .FileRead_U8 = JZsdk_Osal_FileRead_U8, | ||
73 | + .FileSync = JZsdk_Osal_FileSync, | ||
74 | + .FileSeek = JZsdk_Osal_FileSeek, | ||
75 | + .DirOpen = JZsdk_Osal_DirOpen, | ||
76 | + .DirClose = JZsdk_Osal_DirClose, | ||
77 | + .DirRead = JZsdk_Osal_DirRead, | ||
78 | + .Mkdir = JZsdk_Osal_Mkdir, | ||
79 | + .Unlink = JZsdk_Osal_Unlink, | ||
80 | + .Rename = JZsdk_Osal_Rename, | ||
81 | + .Stat = JZsdk_Osal_Stat, | ||
82 | + }; | ||
83 | + | ||
48 | JZsdk_Platform_RegOsalHandler(&osalHandler); | 84 | JZsdk_Platform_RegOsalHandler(&osalHandler); |
85 | + printf("JZsdk Osal handler registered\n"); | ||
86 | + | ||
87 | + JZsdk_RegFsHandler(&fileSystemHandler); | ||
88 | + printf("JZsdk File system handler registered\n"); | ||
49 | 89 | ||
50 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 90 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
51 | } | 91 | } |
@@ -73,6 +73,40 @@ typedef struct { | @@ -73,6 +73,40 @@ typedef struct { | ||
73 | } T_JZsdkOsalHandler; | 73 | } T_JZsdkOsalHandler; |
74 | 74 | ||
75 | 75 | ||
76 | +/**************** | ||
77 | + * | ||
78 | + * filesysterm 文件系统权柄 | ||
79 | + * | ||
80 | + * | ||
81 | + * ******************/ | ||
82 | +typedef struct { | ||
83 | + T_JZsdkReturnCode (*FileOpen)(const char *fileName, const char *fileMode, T_JZsdkFileHandle *fileObj); | ||
84 | + | ||
85 | + T_JZsdkReturnCode (*FileClose)(T_JZsdkFileHandle fileObj); | ||
86 | + | ||
87 | + T_JZsdkReturnCode (*FileWrite_U8)(T_JZsdkFileHandle fileObj, const U8_t *buf, U32_t len, U32_t *realLen); | ||
88 | + | ||
89 | + T_JZsdkReturnCode (*FileRead_U8)(T_JZsdkFileHandle fileObj, U8_t *buf, U32_t len, U32_t *realLen); | ||
90 | + | ||
91 | + T_JZsdkReturnCode (*FileSeek)(T_JZsdkFileHandle fileObj, U32_t offset); | ||
92 | + | ||
93 | + T_JZsdkReturnCode (*FileSync)(T_JZsdkFileHandle fileObj); | ||
94 | + | ||
95 | + T_JZsdkReturnCode (*DirOpen)(const char *filePath, T_JZsdkDirHandle *dirObj); | ||
96 | + | ||
97 | + T_JZsdkReturnCode (*DirClose)(T_JZsdkDirHandle dirObj); | ||
98 | + | ||
99 | + T_JZsdkReturnCode (*DirRead)(T_JZsdkDirHandle dirObj, T_JZsdkFileInfo *fileInfo); | ||
100 | + | ||
101 | + T_JZsdkReturnCode (*Mkdir)(const char *filePath); | ||
102 | + | ||
103 | + T_JZsdkReturnCode (*Unlink)(const char *filePath); | ||
104 | + | ||
105 | + T_JZsdkReturnCode (*Rename)(const char *oldFilePath, const char *newFilePath); | ||
106 | + | ||
107 | + T_JZsdkReturnCode (*Stat)(const char *filePath, T_JZsdkFileInfo *fileInfo); | ||
108 | +} T_JZsdkFSHandler; | ||
109 | + | ||
76 | 110 | ||
77 | /* Exported macro ------------------------------------------------------------*/ | 111 | /* Exported macro ------------------------------------------------------------*/ |
78 | 112 | ||
@@ -83,6 +117,7 @@ typedef struct { | @@ -83,6 +117,7 @@ typedef struct { | ||
83 | /* Exported functions --------------------------------------------------------*/ | 117 | /* Exported functions --------------------------------------------------------*/ |
84 | T_JZsdkReturnCode JZsdk_OsalInit(); | 118 | T_JZsdkReturnCode JZsdk_OsalInit(); |
85 | T_JZsdkOsalHandler *JZsdk_Platform_GetOsalHandler(void); | 119 | T_JZsdkOsalHandler *JZsdk_Platform_GetOsalHandler(void); |
120 | +T_JZsdkFSHandler *JZsdk_GetFsHandler(void); | ||
86 | 121 | ||
87 | 122 | ||
88 | #ifdef __cplusplus | 123 | #ifdef __cplusplus |
@@ -21,6 +21,7 @@ | @@ -21,6 +21,7 @@ | ||
21 | #include "MediaProc/MediaProc.h" | 21 | #include "MediaProc/MediaProc.h" |
22 | #include "UI_control/WidegMgmt/JZsdk_Widget.h" | 22 | #include "UI_control/WidegMgmt/JZsdk_Widget.h" |
23 | #include "DeviceConfig/DeviceConfig.h" | 23 | #include "DeviceConfig/DeviceConfig.h" |
24 | +#include "CommonMod/CommonMod.h" | ||
24 | 25 | ||
25 | #include "JZsdk_Hal.h" | 26 | #include "JZsdk_Hal.h" |
26 | 27 | ||
@@ -210,7 +211,7 @@ T_JZsdkReturnCode Main_APP_Psdk() | @@ -210,7 +211,7 @@ T_JZsdkReturnCode Main_APP_Psdk() | ||
210 | 211 | ||
211 | //4g设备初始化 | 212 | //4g设备初始化 |
212 | value[0] = COMM_4G_UART_BITRATE; | 213 | value[0] = COMM_4G_UART_BITRATE; |
213 | - JZsdk_HalPort_Init(UART_DEV_1, value); | 214 | + JZsdk_HalPort_Init(UART_4G, value); |
214 | 215 | ||
215 | //喊话器初始化 | 216 | //喊话器初始化 |
216 | Megaphone_Init(); | 217 | Megaphone_Init(); |
@@ -229,7 +230,7 @@ T_JZsdkReturnCode Main_APP_Psdk() | @@ -229,7 +230,7 @@ T_JZsdkReturnCode Main_APP_Psdk() | ||
229 | { | 230 | { |
230 | //4g设备初始化 | 231 | //4g设备初始化 |
231 | value[0] = COMM_4G_UART_BITRATE; | 232 | value[0] = COMM_4G_UART_BITRATE; |
232 | - JZsdk_HalPort_Init(UART_DEV_1, value); | 233 | + JZsdk_HalPort_Init(UART_4G, value); |
233 | } | 234 | } |
234 | 235 | ||
235 | //喊话器初始化 | 236 | //喊话器初始化 |
@@ -263,7 +264,7 @@ T_JZsdkReturnCode Main_APP_Psdk() | @@ -263,7 +264,7 @@ T_JZsdkReturnCode Main_APP_Psdk() | ||
263 | 264 | ||
264 | //4g设备初始化 | 265 | //4g设备初始化 |
265 | value[0] = COMM_4G_UART_BITRATE; | 266 | value[0] = COMM_4G_UART_BITRATE; |
266 | - JZsdk_HalPort_Init(UART_DEV_1, value); | 267 | + JZsdk_HalPort_Init(UART_4G, value); |
267 | 268 | ||
268 | //喊话器初始化 | 269 | //喊话器初始化 |
269 | Megaphone_Init(); | 270 | Megaphone_Init(); |
@@ -672,7 +673,7 @@ int Main_TestAPP() | @@ -672,7 +673,7 @@ int Main_TestAPP() | ||
672 | 673 | ||
673 | //串口设备1初始化 | 674 | //串口设备1初始化 |
674 | value[0] = UART_DEV1_BITRATE; | 675 | value[0] = UART_DEV1_BITRATE; |
675 | - JZsdk_HalPort_Init(UART_4G, value); | 676 | + JZsdk_HalPort_Init(UART_DEV_1, value); |
676 | } | 677 | } |
677 | 678 | ||
678 | //JZ_FLAGCODE_GET为返回工作值,其他值为设置 | 679 | //JZ_FLAGCODE_GET为返回工作值,其他值为设置 |
@@ -77,7 +77,7 @@ T_JZsdkReturnCode JZsdk_ParamterParsing(int argc, char *argv[], unsigned int *mo | @@ -77,7 +77,7 @@ T_JZsdkReturnCode JZsdk_ParamterParsing(int argc, char *argv[], unsigned int *mo | ||
77 | int insCode = 0; //指令码 | 77 | int insCode = 0; //指令码 |
78 | 78 | ||
79 | //获取短选项 | 79 | //获取短选项 |
80 | - static char *opt_storage = "t:f:"; | 80 | + static char *opt_storage = "t:f:d:b"; |
81 | 81 | ||
82 | //解析参数 | 82 | //解析参数 |
83 | while (1) | 83 | while (1) |
@@ -7,19 +7,19 @@ | @@ -7,19 +7,19 @@ | ||
7 | #define VERSION_CHOOSE_H | 7 | #define VERSION_CHOOSE_H |
8 | #include "JZsdk_Base/JZsdk_Code/JZsdk_DeviceCode.h" | 8 | #include "JZsdk_Base/JZsdk_Code/JZsdk_DeviceCode.h" |
9 | //1~10行 除了D可以修改版本选择 禁止动任何东西 | 9 | //1~10行 除了D可以修改版本选择 禁止动任何东西 |
10 | -#define DEVICE_VERSION JZ_H1T | 10 | +#define DEVICE_VERSION JZ_H10T |
11 | 11 | ||
12 | //禁止修改行 选择是串口程序 还是 psdk程序 | 12 | //禁止修改行 选择是串口程序 还是 psdk程序 |
13 | -#define APP_VERSION APP_UART | 13 | +#define APP_VERSION APP_PSDK |
14 | 14 | ||
15 | //禁止修改行 板子型号 | 15 | //禁止修改行 板子型号 |
16 | #define PLATFORM_VERSION PLATFORM_V3S | 16 | #define PLATFORM_VERSION PLATFORM_V3S |
17 | 17 | ||
18 | //禁止修改行 串口连接程序的软件版本号 | 18 | //禁止修改行 串口连接程序的软件版本号 |
19 | -#define MAJOR_VERSION 0x00 | ||
20 | -#define MINOR_VERSION 0x00 | ||
21 | -#define MODIFY_VERSION 0x02 | ||
22 | -#define DEBUG_VERSION 0x13 | 19 | +#define MAJOR_VERSION 0x01 |
20 | +#define MINOR_VERSION 0x03 | ||
21 | +#define MODIFY_VERSION 0x10 | ||
22 | +#define DEBUG_VERSION 0x00 | ||
23 | 23 | ||
24 | //禁止修改行 滤波方式 | 24 | //禁止修改行 滤波方式 |
25 | #define FILTERING_TYPE HIGH_PASS_FILTERING | 25 | #define FILTERING_TYPE HIGH_PASS_FILTERING |
@@ -82,6 +82,11 @@ T_JZsdkReturnCode JZsdk_Hal_Init() | @@ -82,6 +82,11 @@ T_JZsdkReturnCode JZsdk_Hal_Init() | ||
82 | * *********************/ | 82 | * *********************/ |
83 | int JZsdk_HalPort_UseFlag(int PortName) | 83 | int JZsdk_HalPort_UseFlag(int PortName) |
84 | { | 84 | { |
85 | + if(g_HalInfo == NULL) | ||
86 | + { | ||
87 | + return JZ_FLAGCODE_OFF; | ||
88 | + } | ||
89 | + | ||
85 | return g_HalInfo->HalPort[PortName].UseFlag; | 90 | return g_HalInfo->HalPort[PortName].UseFlag; |
86 | } | 91 | } |
87 | 92 |
Module/CommonMod/PresetTask/PresetTask.c
0 → 100644
1 | +#include "JZsdkLib.h" | ||
2 | + | ||
3 | +#include "BaseConfig.h" | ||
4 | + | ||
5 | +#define PRESET_TASK_FALG_PATH "/root/preset_task_flag" | ||
6 | + | ||
7 | +static U8_t g_PrsetTask_Flag = JZ_FLAGCODE_OFF; //预设任务的开启标志位 | ||
8 | +static U8_t g_PrsetTask_FinishFlag = JZ_FLAGCODE_OFF; //预设任务执行步骤 | ||
9 | + | ||
10 | +/******************* | ||
11 | + * | ||
12 | + * 创建一个预设任务 | ||
13 | + * | ||
14 | + * | ||
15 | + * ***************/ | ||
16 | +T_JZsdkReturnCode PrsetTask_CreatePrsetTask() | ||
17 | +{ | ||
18 | + T_JZsdkReturnCode ret; | ||
19 | + | ||
20 | + | ||
21 | + | ||
22 | +#ifdef MEGAPHONE_CONFIG_STATUS_ON | ||
23 | + | ||
24 | + JZSDK_LOG_INFO("喊话器配置已已打开,创建一个喊话器预设任务"); | ||
25 | + | ||
26 | +#endif | ||
27 | + | ||
28 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
29 | +} | ||
30 | + | ||
31 | +/******************* | ||
32 | + * | ||
33 | + * 开启关闭预设任务 | ||
34 | + * | ||
35 | + * ***************/ | ||
36 | +T_JZsdkReturnCode PrsetTask_SetPrsetTaskFlag(U8_t flag) | ||
37 | +{ | ||
38 | + T_JZsdkReturnCode ret; | ||
39 | + int realLen; | ||
40 | + | ||
41 | + T_JZsdkFSHandler *FSHandler = JZsdk_Platform_GetFSHandler(); | ||
42 | + T_JZsdkFileHandle FileHandle; | ||
43 | + | ||
44 | + ret = FSHandler->FileOpen(PRESET_TASK_FALG_PATH, FS_READ_AND_WRITE_CLEAR, &FileHandle); | ||
45 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
46 | + { | ||
47 | + JZSDK_LOG_ERROR("预设任务标志位文件打开失败"); | ||
48 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
49 | + } | ||
50 | + | ||
51 | + ret = FSHandler->FileWrite_U8(FileHandle, &flag, 1, &realLen); | ||
52 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
53 | + { | ||
54 | + JZSDK_LOG_ERROR("预设任务标志位写入失败"); | ||
55 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
56 | + } | ||
57 | + | ||
58 | + ret = FSHandler->FileClose(FileHandle); | ||
59 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
60 | + { | ||
61 | + JZSDK_LOG_ERROR("预设任务标志位文件关闭失败"); | ||
62 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
63 | + } | ||
64 | + | ||
65 | + //将开启关闭放入 | ||
66 | + g_PrsetTask_Flag = flag; | ||
67 | + | ||
68 | + if () | ||
69 | + { | ||
70 | + /* code */ | ||
71 | + } | ||
72 | + | ||
73 | + | ||
74 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
75 | +} | ||
76 | + | ||
77 | +T_JZsdkReturnCode PrsetTask_Init() | ||
78 | +{ | ||
79 | + T_JZsdkReturnCode ret; | ||
80 | + int realLen; | ||
81 | + | ||
82 | + T_JZsdkOsalHandler *OsalHandler = JZsdk_Platform_GetOsalHandler(); | ||
83 | + T_JZsdkFSHandler *FSHandler = JZsdk_Platform_GetFSHandler(); | ||
84 | + | ||
85 | + //1、读取本地的预设任务标志位 | ||
86 | + T_JZsdkFileHandle FileHandle; | ||
87 | + ret = FSHandler->FileOpen(PRESET_TASK_FALG_PATH, FS_ONLY_READ, &FileHandle); | ||
88 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
89 | + { | ||
90 | + JZSDK_LOG_ERROR("预设任务标志位获取失败,没有预设的任务"); | ||
91 | + ret = FSHandler->FileOpen(PRESET_TASK_FALG_PATH, FS_READ_AND_WRITE_CLEAR, &FileHandle); | ||
92 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
93 | + { | ||
94 | + JZSDK_LOG_ERROR("预设任务标志位文件创建失败"); | ||
95 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
96 | + } | ||
97 | + | ||
98 | + ret = FSHandler->FileWrite_U8(FileHandle, &g_PrsetTask_Flag, 1, &realLen); | ||
99 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
100 | + { | ||
101 | + JZSDK_LOG_ERROR("预设任务标志位写入失败"); | ||
102 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
103 | + } | ||
104 | + | ||
105 | + g_PrsetTask_Flag = JZ_FLAGCODE_OFF; | ||
106 | + return ret; | ||
107 | + } | ||
108 | + | ||
109 | + //2、读取标志位 | ||
110 | + ret = FSHandler->FileRead_U8(FileHandle, &g_PrsetTask_Flag, 1, &realLen); | ||
111 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
112 | + { | ||
113 | + JZSDK_LOG_ERROR("预设任务标志位读取失败"); | ||
114 | + g_PrsetTask_Flag = JZ_FLAGCODE_OFF; | ||
115 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
116 | + } | ||
117 | + | ||
118 | + //3、关闭文件 | ||
119 | + ret = FSHandler->FileClose(FileHandle); | ||
120 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
121 | + { | ||
122 | + JZSDK_LOG_ERROR("预设任务标志位文件关闭失败"); | ||
123 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
124 | + } | ||
125 | + | ||
126 | + return ret; | ||
127 | +} |
@@ -852,7 +852,7 @@ static void *MixedVideo_Thread(void *args) | @@ -852,7 +852,7 @@ static void *MixedVideo_Thread(void *args) | ||
852 | * | 852 | * |
853 | * | 853 | * |
854 | * ********************/ | 854 | * ********************/ |
855 | -static JZC1_MixedVideo_Init() | 855 | +static T_JZsdkReturnCode JZC1_MixedVideo_Init() |
856 | { | 856 | { |
857 | g_MixedIrc_Buffer = (unsigned char *)malloc(JZ_ALIGN(FIRST_WIDTH, 16)*JZ_ALIGN(FIRST_HEIGHT, 16)*3/2); | 857 | g_MixedIrc_Buffer = (unsigned char *)malloc(JZ_ALIGN(FIRST_WIDTH, 16)*JZ_ALIGN(FIRST_HEIGHT, 16)*3/2); |
858 | g_MixedOpt_Buffer = (unsigned char *)malloc(JZ_ALIGN(SECOND_WIDTH, 16)*JZ_ALIGN(SECOND_HEIGHT, 16)*3/2); | 858 | g_MixedOpt_Buffer = (unsigned char *)malloc(JZ_ALIGN(SECOND_WIDTH, 16)*JZ_ALIGN(SECOND_HEIGHT, 16)*3/2); |
@@ -838,12 +838,14 @@ static T_JZsdkReturnCode Gimbal_Init_IndependentControl() | @@ -838,12 +838,14 @@ static T_JZsdkReturnCode Gimbal_Init_IndependentControl() | ||
838 | { | 838 | { |
839 | g_Gimbal_Mode = JZ_MODULE_CONTROL_WAY_INDEPENDENT; | 839 | g_Gimbal_Mode = JZ_MODULE_CONTROL_WAY_INDEPENDENT; |
840 | 840 | ||
841 | - | ||
842 | //舵机初始化 | 841 | //舵机初始化 |
843 | Gimal_MotorInit(); | 842 | Gimal_MotorInit(); |
844 | 843 | ||
845 | //云台微调初始化 | 844 | //云台微调初始化 |
846 | MotorFineTuning_Init(&g_MotorFineTuningPitch, &g_MotorFineTuningYaw, &g_MotorFineTuningRoll); | 845 | MotorFineTuning_Init(&g_MotorFineTuningPitch, &g_MotorFineTuningYaw, &g_MotorFineTuningRoll); |
846 | + | ||
847 | + //云台角度初始化 | ||
848 | + Gimbal_Flush_Pitch(); | ||
847 | 849 | ||
848 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 850 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
849 | } | 851 | } |
@@ -8,6 +8,7 @@ | @@ -8,6 +8,7 @@ | ||
8 | #include "JZsdk_TaskManagement/TaskManagement.h" | 8 | #include "JZsdk_TaskManagement/TaskManagement.h" |
9 | #include "Gimbal_SpecialUart/Gimbal_SpecialUart.h" | 9 | #include "Gimbal_SpecialUart/Gimbal_SpecialUart.h" |
10 | #include "../Gimbal_Param.h" | 10 | #include "../Gimbal_Param.h" |
11 | +#include "Gimbal/Gimbal.h" | ||
11 | 12 | ||
12 | #include "Hal_Send/HalSend.h" | 13 | #include "Hal_Send/HalSend.h" |
13 | #include "JZsdk_uart/JZsdk_Uart.h" | 14 | #include "JZsdk_uart/JZsdk_Uart.h" |
@@ -211,51 +212,69 @@ T_JZsdkReturnCode Gimbal_DataDeal_SetPitchRange(int Range) | @@ -211,51 +212,69 @@ T_JZsdkReturnCode Gimbal_DataDeal_SetPitchRange(int Range) | ||
211 | 212 | ||
212 | //因为PWM写的时候是按90度写的,所以分母是900,不是设定的600 | 213 | //因为PWM写的时候是按90度写的,所以分母是900,不是设定的600 |
213 | int base_offset = g_Gimbal_Pitch_BaseOffset; | 214 | int base_offset = g_Gimbal_Pitch_BaseOffset; |
214 | - | 215 | + |
215 | //先通过角度 得出目前的PWM值 | 216 | //先通过角度 得出目前的PWM值 |
216 | int angle = Gimbal_Get_PitchRealPitchAngle(); | 217 | int angle = Gimbal_Get_PitchRealPitchAngle(); |
217 | 218 | ||
218 | //在最大的角度弄的 | 219 | //在最大的角度弄的 |
219 | if (Range == 0xFF) | 220 | if (Range == 0xFF) |
220 | { | 221 | { |
221 | - //先得出目前pwm值 | ||
222 | - int angle_PWM = 820 + base_offset + (angle * (120)/(MAX_PITCH - MIN_PITCH)); //820是0度 | ||
223 | - | ||
224 | - //通过最大值的计算方式 得出新的offset值 | ||
225 | - //g_Gimbal_Pitch_BaseOffset = angle_PWM - ((MAX_PITCH*195)/(MAX_PITCH - MIN_PITCH)) - base_offset; | ||
226 | - g_Gimbal_Pitch_BaseOffset = angle_PWM - 820 - ((MAX_PITCH*120)/(MAX_PITCH - MIN_PITCH)) - base_offset; | ||
227 | - | ||
228 | - //下限600,上限830 | ||
229 | - if (g_Gimbal_Pitch_BaseOffset <= - 100) | ||
230 | - { | ||
231 | - g_Gimbal_Pitch_BaseOffset = - 100; | ||
232 | - } | ||
233 | - else if (g_Gimbal_Pitch_BaseOffset >= 20) | ||
234 | - { | ||
235 | - g_Gimbal_Pitch_BaseOffset = 20; | ||
236 | - } | 222 | + g_Gimbal_Pitch_BaseOffset++; |
237 | } | 223 | } |
238 | - | ||
239 | //在最小的角度弄的 | 224 | //在最小的角度弄的 |
240 | else if (Range == 0x00) | 225 | else if (Range == 0x00) |
241 | { | 226 | { |
242 | - //先通过角度 得出目前的PWM值 | ||
243 | - int angle = Gimbal_Get_PitchRealPitchAngle(); | ||
244 | - int angle_PWM = 820 + base_offset + (angle * (120)/(900)); //820是0度 | 227 | + g_Gimbal_Pitch_BaseOffset--; |
228 | + } | ||
245 | 229 | ||
246 | - //通过最小值的计算方式 得出offset值 | ||
247 | - g_Gimbal_Pitch_BaseOffset = angle_PWM - 820 - ((MAX_PITCH*120)/(MAX_PITCH - MIN_PITCH)) - base_offset; | ||
248 | 230 | ||
249 | - //下限600,上限830 | ||
250 | - if (g_Gimbal_Pitch_BaseOffset <= - 100) | ||
251 | - { | ||
252 | - g_Gimbal_Pitch_BaseOffset = - 100; | ||
253 | - } | ||
254 | - else if (g_Gimbal_Pitch_BaseOffset >= 20) | ||
255 | - { | ||
256 | - g_Gimbal_Pitch_BaseOffset = 20; | ||
257 | - } | ||
258 | - } | 231 | + // //因为PWM写的时候是按90度写的,所以分母是900,不是设定的600 |
232 | + // int base_offset = g_Gimbal_Pitch_BaseOffset; | ||
233 | + | ||
234 | + // //先通过角度 得出目前的PWM值 | ||
235 | + // int angle = Gimbal_Get_PitchRealPitchAngle(); | ||
236 | + | ||
237 | + // //在最大的角度弄的 | ||
238 | + // if (Range == 0xFF) | ||
239 | + // { | ||
240 | + // //先得出目前pwm值 | ||
241 | + // int angle_PWM = 820 + base_offset + (angle * (120)/(MAX_PITCH - MIN_PITCH)); //820是0度 | ||
242 | + | ||
243 | + // //通过最大值的计算方式 得出新的offset值 | ||
244 | + // //g_Gimbal_Pitch_BaseOffset = angle_PWM - ((MAX_PITCH*195)/(MAX_PITCH - MIN_PITCH)) - base_offset; | ||
245 | + // g_Gimbal_Pitch_BaseOffset = angle_PWM - 820 - ((MAX_PITCH*120)/(MAX_PITCH - MIN_PITCH)) - base_offset; | ||
246 | + | ||
247 | + // //下限600,上限830 | ||
248 | + // if (g_Gimbal_Pitch_BaseOffset <= - 100) | ||
249 | + // { | ||
250 | + // g_Gimbal_Pitch_BaseOffset = - 100; | ||
251 | + // } | ||
252 | + // else if (g_Gimbal_Pitch_BaseOffset >= 20) | ||
253 | + // { | ||
254 | + // g_Gimbal_Pitch_BaseOffset = 20; | ||
255 | + // } | ||
256 | + // } | ||
257 | + | ||
258 | + // //在最小的角度弄的 | ||
259 | + // else if (Range == 0x00) | ||
260 | + // { | ||
261 | + // //先通过角度 得出目前的PWM值 | ||
262 | + // int angle = Gimbal_Get_PitchRealPitchAngle(); | ||
263 | + // int angle_PWM = 820 + base_offset + (angle * (120)/(900)); //820是0度 | ||
264 | + | ||
265 | + // //通过最小值的计算方式 得出offset值 | ||
266 | + // g_Gimbal_Pitch_BaseOffset = angle_PWM - 820 - ((MAX_PITCH*120)/(MAX_PITCH - MIN_PITCH)) - base_offset; | ||
267 | + | ||
268 | + // //下限600,上限830 | ||
269 | + // if (g_Gimbal_Pitch_BaseOffset <= - 100) | ||
270 | + // { | ||
271 | + // g_Gimbal_Pitch_BaseOffset = - 100; | ||
272 | + // } | ||
273 | + // else if (g_Gimbal_Pitch_BaseOffset >= 20) | ||
274 | + // { | ||
275 | + // g_Gimbal_Pitch_BaseOffset = 20; | ||
276 | + // } | ||
277 | + // } | ||
259 | 278 | ||
260 | JZSDK_LOG_INFO("设置pitch的offset值:%d",g_Gimbal_Pitch_BaseOffset); | 279 | JZSDK_LOG_INFO("设置pitch的offset值:%d",g_Gimbal_Pitch_BaseOffset); |
261 | 280 | ||
@@ -292,10 +311,10 @@ static T_JZsdkReturnCode Gimbal_DataDeal_Read_PitchBaseOffset(int *offset) | @@ -292,10 +311,10 @@ static T_JZsdkReturnCode Gimbal_DataDeal_Read_PitchBaseOffset(int *offset) | ||
292 | { | 311 | { |
293 | FILE *fp = NULL; | 312 | FILE *fp = NULL; |
294 | 313 | ||
295 | - fp = fopen(PITCH_OFFSET_FILE_PATH, "rb+"); | 314 | + fp = fopen(PITCH_OFFSET_FILE_PATH, "r+b"); |
296 | if (fp == NULL) | 315 | if (fp == NULL) |
297 | { | 316 | { |
298 | - fp = fopen(PITCH_OFFSET_FILE_PATH, "wb+"); | 317 | + fp = fopen(PITCH_OFFSET_FILE_PATH, "w+b"); |
299 | if (fp == NULL) | 318 | if (fp == NULL) |
300 | { | 319 | { |
301 | *offset = 0; | 320 | *offset = 0; |
@@ -319,9 +338,8 @@ static T_JZsdkReturnCode Gimbal_DataDeal_Read_PitchBaseOffset(int *offset) | @@ -319,9 +338,8 @@ static T_JZsdkReturnCode Gimbal_DataDeal_Read_PitchBaseOffset(int *offset) | ||
319 | } | 338 | } |
320 | else | 339 | else |
321 | { | 340 | { |
322 | - JZSDK_LOG_ERROR("Pitch BaseOffset=%d",*offset); | ||
323 | - *offset = 0; | ||
324 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | 341 | + JZSDK_LOG_INFO("Pitch BaseOffset=%d",*offset); |
342 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
325 | } | 343 | } |
326 | } | 344 | } |
327 | 345 | ||
@@ -337,7 +355,7 @@ static T_JZsdkReturnCode Gimbal_DataDeal_Write_PitchBaseOffset(int offset) | @@ -337,7 +355,7 @@ static T_JZsdkReturnCode Gimbal_DataDeal_Write_PitchBaseOffset(int offset) | ||
337 | { | 355 | { |
338 | FILE *fp = NULL; | 356 | FILE *fp = NULL; |
339 | 357 | ||
340 | - fp = fopen(PITCH_OFFSET_FILE_PATH, "wb+"); | 358 | + fp = fopen(PITCH_OFFSET_FILE_PATH, "w+b"); |
341 | if (fp == NULL) | 359 | if (fp == NULL) |
342 | { | 360 | { |
343 | return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | 361 | return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; |
@@ -353,6 +371,8 @@ static T_JZsdkReturnCode Gimbal_DataDeal_Write_PitchBaseOffset(int offset) | @@ -353,6 +371,8 @@ static T_JZsdkReturnCode Gimbal_DataDeal_Write_PitchBaseOffset(int offset) | ||
353 | JZSDK_LOG_DEBUG("Pitch BaseOffset=%d\n",offset); | 371 | JZSDK_LOG_DEBUG("Pitch BaseOffset=%d\n",offset); |
354 | } | 372 | } |
355 | 373 | ||
374 | + fflush(fp); | ||
375 | + | ||
356 | fclose(fp); | 376 | fclose(fp); |
357 | 377 | ||
358 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 378 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
@@ -156,7 +156,7 @@ int V3s_PWM_contrl(int PWM_num) | @@ -156,7 +156,7 @@ int V3s_PWM_contrl(int PWM_num) | ||
156 | (*pwm_base_map) &= ~((uint32_t)1 << 19); //先将第4位置0 ---> disable | 156 | (*pwm_base_map) &= ~((uint32_t)1 << 19); //先将第4位置0 ---> disable |
157 | (*pwm_base_map) |= (uint32_t)1 << 19; //将第4位置1 ---> enable pwm1 | 157 | (*pwm_base_map) |= (uint32_t)1 << 19; //将第4位置1 ---> enable pwm1 |
158 | 158 | ||
159 | - printf("V3s_Pwm_control:%d\n",PWM_num); | 159 | + //printf("V3s_Pwm_control:%d\n",PWM_num); |
160 | 160 | ||
161 | return 0; | 161 | return 0; |
162 | } | 162 | } |
@@ -25,7 +25,7 @@ | @@ -25,7 +25,7 @@ | ||
25 | #include "Megaphone/Music/RealTimeMP2/Megaphone_RealTimeMP2.h" | 25 | #include "Megaphone/Music/RealTimeMP2/Megaphone_RealTimeMP2.h" |
26 | #include "Megaphone/opus/Megaphone_Opus.h" | 26 | #include "Megaphone/opus/Megaphone_Opus.h" |
27 | #include "Megaphone/PcmAudio/PcmAudioFile.h" | 27 | #include "Megaphone/PcmAudio/PcmAudioFile.h" |
28 | - | 28 | +#include "Megaphone/Megaphone.h" |
29 | 29 | ||
30 | int MegPlayStatusUnChange_flag = JZ_FLAGCODE_OFF; | 30 | int MegPlayStatusUnChange_flag = JZ_FLAGCODE_OFF; |
31 | static MegaphonePlayStatus g_Megaphone_Play_Status = AUDIO_PLAY_STATUS_IDLE; | 31 | static MegaphonePlayStatus g_Megaphone_Play_Status = AUDIO_PLAY_STATUS_IDLE; |
@@ -200,6 +200,7 @@ static T_JZsdkReturnCode Megaphone_Play(struct MegaphoneInfo *IndexInfo, enum Me | @@ -200,6 +200,7 @@ static T_JZsdkReturnCode Megaphone_Play(struct MegaphoneInfo *IndexInfo, enum Me | ||
200 | //opus播放 | 200 | //opus播放 |
201 | ret = OpusFile_PlayFixedFile(); | 201 | ret = OpusFile_PlayFixedFile(); |
202 | } | 202 | } |
203 | + break; | ||
203 | 204 | ||
204 | case AUDIO_PLAY_STATUS_PCM_LIST: | 205 | case AUDIO_PLAY_STATUS_PCM_LIST: |
205 | { | 206 | { |
@@ -208,6 +209,7 @@ static T_JZsdkReturnCode Megaphone_Play(struct MegaphoneInfo *IndexInfo, enum Me | @@ -208,6 +209,7 @@ static T_JZsdkReturnCode Megaphone_Play(struct MegaphoneInfo *IndexInfo, enum Me | ||
208 | //pcm播放 | 209 | //pcm播放 |
209 | ret = PcmAudioPlay_Play(IndexInfo->str, IndexInfo->str_len); | 210 | ret = PcmAudioPlay_Play(IndexInfo->str, IndexInfo->str_len); |
210 | } | 211 | } |
212 | + break; | ||
211 | 213 | ||
212 | default: | 214 | default: |
213 | break; | 215 | break; |
@@ -7,6 +7,7 @@ | @@ -7,6 +7,7 @@ | ||
7 | 7 | ||
8 | #include "JZsdkLib.h" | 8 | #include "JZsdkLib.h" |
9 | #include "Megaphone/AudioMange/AudioMange.h" | 9 | #include "Megaphone/AudioMange/AudioMange.h" |
10 | +#include "Megaphone/PcmAudio/PcmAudioFile.h" | ||
10 | 11 | ||
11 | #define PCM_DIR "/root/sdcard/pcm" | 12 | #define PCM_DIR "/root/sdcard/pcm" |
12 | 13 |
1 | /** | 1 | /** |
2 | ******************************************************************** | 2 | ******************************************************************** |
3 | - * @file OpusFile.h | ||
4 | - * OpusFile.c OpusFileSave.c 的头文件 | 3 | + * @file PcmAudioFile.h |
4 | + * PcmAudioFile.c PcmAudioPlay.c 的头文件 | ||
5 | * | 5 | * |
6 | ********************************************************************* | 6 | ********************************************************************* |
7 | */ | 7 | */ |
8 | 8 | ||
9 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | 9 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ |
10 | -#ifndef OPUS_FILE_H | ||
11 | -#define OPUS_FILE_H | 10 | +#ifndef PCM_AUDIO_FILE_H |
11 | +#define PCM_AUDIO_FILE_H | ||
12 | 12 | ||
13 | /* Includes ------------------------------------------------------------------*/ | 13 | /* Includes ------------------------------------------------------------------*/ |
14 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | 14 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" |
@@ -4,10 +4,12 @@ | @@ -4,10 +4,12 @@ | ||
4 | #include <pthread.h> | 4 | #include <pthread.h> |
5 | #include <dirent.h> | 5 | #include <dirent.h> |
6 | #include <sys/stat.h> | 6 | #include <sys/stat.h> |
7 | +#include <math.h> | ||
7 | 8 | ||
8 | #include "JZsdkLib.h" | 9 | #include "JZsdkLib.h" |
9 | #include "Megaphone/PcmAudio/PcmAudioFile.h" | 10 | #include "Megaphone/PcmAudio/PcmAudioFile.h" |
10 | #include "Megaphone/Megaphone.h" | 11 | #include "Megaphone/Megaphone.h" |
12 | +#include "AudioDeal/AudioDeal.h" | ||
11 | 13 | ||
12 | #define PCM_DIR "/root/sdcard/pcm" | 14 | #define PCM_DIR "/root/sdcard/pcm" |
13 | static int g_opus_sampleRate = 16000; //解码采样率 | 15 | static int g_opus_sampleRate = 16000; //解码采样率 |
@@ -29,7 +31,10 @@ static T_JZsdkReturnCode PcmPlay_Interface(t_PcmParam *PcmParam) | @@ -29,7 +31,10 @@ static T_JZsdkReturnCode PcmPlay_Interface(t_PcmParam *PcmParam) | ||
29 | double total_duration = 0; | 31 | double total_duration = 0; |
30 | int last_printed_second = -1; // 上次打印的秒数,初始化为-1表示还没有打印过 | 32 | int last_printed_second = -1; // 上次打印的秒数,初始化为-1表示还没有打印过 |
31 | 33 | ||
32 | - FILE *Pcm_fp = fopen("%s/%s", "rb", PCM_DIR, PcmParam->FileName); | 34 | + unsigned char PcmPath[JZSDK_FILE_PATH_SIZE_MAX]; |
35 | + snprintf(PcmPath, JZSDK_FILE_PATH_SIZE_MAX, "%s/%s", PCM_DIR, PcmParam->FileName); | ||
36 | + | ||
37 | + FILE *Pcm_fp = fopen(PcmPath, "rb"); | ||
33 | if (Pcm_fp == NULL) | 38 | if (Pcm_fp == NULL) |
34 | { | 39 | { |
35 | JZSDK_LOG_ERROR("PcmPlay_Interface: fopen failed, file name = %s", PcmParam->FileName); | 40 | JZSDK_LOG_ERROR("PcmPlay_Interface: fopen failed, file name = %s", PcmParam->FileName); |
@@ -234,7 +234,7 @@ T_JZsdkReturnCode OpusFile_SaveOpusFileEnd(int CheckFlag, unsigned char *CheckCo | @@ -234,7 +234,7 @@ T_JZsdkReturnCode OpusFile_SaveOpusFileEnd(int CheckFlag, unsigned char *CheckCo | ||
234 | if (g_OpusSaveMode != JZ_FLAGCODE_OFF) | 234 | if (g_OpusSaveMode != JZ_FLAGCODE_OFF) |
235 | { | 235 | { |
236 | //将opus解码,并存储到指定目录 | 236 | //将opus解码,并存储到指定目录 |
237 | - ret = OpusFile_DecodeOpusAndSave(g_OpusSaveMode ,g_OpusSaveMode, opus_SaveFile); | 237 | + ret = OpusFile_DecodeOpusAndSave(g_OpusSaveMode ,OPUS_TEMP_SAVE_DIR, opus_SaveFile); |
238 | } | 238 | } |
239 | 239 | ||
240 | // if (g_OpusSaveMode != JZ_FLAGCODE_OFF) | 240 | // if (g_OpusSaveMode != JZ_FLAGCODE_OFF) |
@@ -19,13 +19,11 @@ | @@ -19,13 +19,11 @@ | ||
19 | #include "widget/test_widget_speaker.h" | 19 | #include "widget/test_widget_speaker.h" |
20 | #include "./Dji_Control/DJI_VideoDeal.h" | 20 | #include "./Dji_Control/DJI_VideoDeal.h" |
21 | 21 | ||
22 | - extern int Firstsong_flag ; | ||
23 | #elif APP_VERSION == APP_UART || APP_VERSION == APP_TEST | 22 | #elif APP_VERSION == APP_UART || APP_VERSION == APP_TEST |
24 | int Get_Opus_PlayMode() | 23 | int Get_Opus_PlayMode() |
25 | { | 24 | { |
26 | return JZ_FLAGCODE_OFF; | 25 | return JZ_FLAGCODE_OFF; |
27 | } | 26 | } |
28 | - int Firstsong_flag ; | ||
29 | #endif | 27 | #endif |
30 | 28 | ||
31 | #define AUTO_CONTROL 0x02 | 29 | #define AUTO_CONTROL 0x02 |
@@ -221,7 +219,6 @@ static T_JZsdkReturnCode UI_control_WidgetSet(int type, int value) | @@ -221,7 +219,6 @@ static T_JZsdkReturnCode UI_control_WidgetSet(int type, int value) | ||
221 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_Reply_PlayStatus_end() | 219 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_Reply_PlayStatus_end() |
222 | { | 220 | { |
223 | UI_control_WidgetSet(PSDK_UI_WIDGET_PLAYSTATUS, 1); | 221 | UI_control_WidgetSet(PSDK_UI_WIDGET_PLAYSTATUS, 1); |
224 | - Firstsong_flag = 0; | ||
225 | } | 222 | } |
226 | 223 | ||
227 | 224 |
@@ -36,6 +36,7 @@ | @@ -36,6 +36,7 @@ | ||
36 | 36 | ||
37 | #include "Psdk_UI_io.h" | 37 | #include "Psdk_UI_io.h" |
38 | #include "BaseConfig.h" | 38 | #include "BaseConfig.h" |
39 | +#include "UI_control/UI_control.h" | ||
39 | 40 | ||
40 | /* Private constants ---------------------------------------------------------*/ | 41 | /* Private constants ---------------------------------------------------------*/ |
41 | #define PAYLOAD_CAMERA_EMU_TASK_FREQ (100) | 42 | #define PAYLOAD_CAMERA_EMU_TASK_FREQ (100) |
@@ -962,15 +963,7 @@ static T_DjiReturnCode DjiTest_CameraRotationGimbal(T_TestCameraGimbalRotationAr | @@ -962,15 +963,7 @@ static T_DjiReturnCode DjiTest_CameraRotationGimbal(T_TestCameraGimbalRotationAr | ||
962 | return returnCode; | 963 | return returnCode; |
963 | } | 964 | } |
964 | 965 | ||
965 | - if (aircraftBaseInfo.djiAdapterType == DJI_SDK_ADAPTER_TYPE_SKYPORT_V2 || | ||
966 | - aircraftBaseInfo.djiAdapterType == DJI_SDK_ADAPTER_TYPE_NONE) { | ||
967 | - returnCode = DjiTest_GimbalRotate(gimbalRotationArgument.rotationMode, gimbalRotationArgument.rotationProperty, | ||
968 | - gimbalRotationArgument.rotationValue); | ||
969 | - if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { | ||
970 | - USER_LOG_ERROR("rotate gimbal error: 0x%08llX.", returnCode); | ||
971 | - return returnCode; | ||
972 | - } | ||
973 | - } else if (aircraftBaseInfo.djiAdapterType == DJI_SDK_ADAPTER_TYPE_XPORT) { | 966 | + if (aircraftBaseInfo.djiAdapterType == DJI_SDK_ADAPTER_TYPE_XPORT) { |
974 | returnCode = DjiXPort_RotateSync(gimbalRotationArgument.rotationMode, gimbalRotationArgument.rotationProperty, | 967 | returnCode = DjiXPort_RotateSync(gimbalRotationArgument.rotationMode, gimbalRotationArgument.rotationProperty, |
975 | gimbalRotationArgument.rotationValue); | 968 | gimbalRotationArgument.rotationValue); |
976 | if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { | 969 | if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { |
@@ -74,6 +74,8 @@ static const T_DjiTestCameraTypeStr s_cameraTypeStrList[] = { | @@ -74,6 +74,8 @@ static const T_DjiTestCameraTypeStr s_cameraTypeStrList[] = { | ||
74 | {DJI_CAMERA_TYPE_M3TD, "M3TD Camera"}, | 74 | {DJI_CAMERA_TYPE_M3TD, "M3TD Camera"}, |
75 | {DJI_CAMERA_TYPE_H30, "H30 Camera"}, | 75 | {DJI_CAMERA_TYPE_H30, "H30 Camera"}, |
76 | {DJI_CAMERA_TYPE_H30T, "H30T Camera"}, | 76 | {DJI_CAMERA_TYPE_H30T, "H30T Camera"}, |
77 | + {DJI_CAMERA_TYPE_M4T, "M4T Camera"}, | ||
78 | + {DJI_CAMERA_TYPE_M4E, "M4E Camera"}, | ||
77 | }; | 79 | }; |
78 | 80 | ||
79 | static FILE *s_downloadMediaFile = NULL; | 81 | static FILE *s_downloadMediaFile = NULL; |
@@ -846,12 +848,14 @@ T_DjiReturnCode DjiTest_CameraManagerRunSample(E_DjiMountPosition mountPosition, | @@ -846,12 +848,14 @@ T_DjiReturnCode DjiTest_CameraManagerRunSample(E_DjiMountPosition mountPosition, | ||
846 | case E_DJI_TEST_CAMERA_MANAGER_SAMPLE_SELECT_SET_CAMERA_SHUTTER_SPEED: { | 848 | case E_DJI_TEST_CAMERA_MANAGER_SAMPLE_SELECT_SET_CAMERA_SHUTTER_SPEED: { |
847 | USER_LOG_INFO("--> Function a: Set camera shutter speed to 1/100 s"); | 849 | USER_LOG_INFO("--> Function a: Set camera shutter speed to 1/100 s"); |
848 | DjiTest_WidgetLogAppend("--> Function a: Set camera shutter speed to 1/100 s"); | 850 | DjiTest_WidgetLogAppend("--> Function a: Set camera shutter speed to 1/100 s"); |
849 | - if (cameraType == DJI_CAMERA_TYPE_H20 || cameraType == DJI_CAMERA_TYPE_H20T || | ||
850 | - cameraType == DJI_CAMERA_TYPE_H20N || cameraType == DJI_CAMERA_TYPE_M30 || | ||
851 | - cameraType == DJI_CAMERA_TYPE_M30T || cameraType == DJI_CAMERA_TYPE_M3E || | ||
852 | - cameraType == DJI_CAMERA_TYPE_M3T || cameraType == DJI_CAMERA_TYPE_M3D || | ||
853 | - cameraType == DJI_CAMERA_TYPE_M3TD || cameraType == DJI_CAMERA_TYPE_H30 || | ||
854 | - cameraType == DJI_CAMERA_TYPE_H30T) { | 851 | + if (DJI_CAMERA_TYPE_H20 == cameraType || DJI_CAMERA_TYPE_H20T == cameraType |
852 | + || DJI_CAMERA_TYPE_H20N == cameraType | ||
853 | + || DJI_CAMERA_TYPE_M30 == cameraType || DJI_CAMERA_TYPE_M30T == cameraType | ||
854 | + || DJI_CAMERA_TYPE_M3E == cameraType || DJI_CAMERA_TYPE_M3T == cameraType | ||
855 | + || DJI_CAMERA_TYPE_M3D == cameraType || DJI_CAMERA_TYPE_M3TD == cameraType | ||
856 | + || DJI_CAMERA_TYPE_M4T == cameraType || DJI_CAMERA_TYPE_M4E == cameraType | ||
857 | + || DJI_CAMERA_TYPE_H30 == cameraType || DJI_CAMERA_TYPE_H30T == cameraType | ||
858 | + ) { | ||
855 | USER_LOG_INFO("Set mounted position %d camera's exposure mode to manual mode.", | 859 | USER_LOG_INFO("Set mounted position %d camera's exposure mode to manual mode.", |
856 | mountPosition); | 860 | mountPosition); |
857 | returnCode = DjiTest_CameraManagerSetExposureMode(mountPosition, | 861 | returnCode = DjiTest_CameraManagerSetExposureMode(mountPosition, |
@@ -887,12 +891,14 @@ T_DjiReturnCode DjiTest_CameraManagerRunSample(E_DjiMountPosition mountPosition, | @@ -887,12 +891,14 @@ T_DjiReturnCode DjiTest_CameraManagerRunSample(E_DjiMountPosition mountPosition, | ||
887 | case E_DJI_TEST_CAMERA_MANAGER_SAMPLE_SELECT_SET_CAMERA_APERTURE: { | 891 | case E_DJI_TEST_CAMERA_MANAGER_SAMPLE_SELECT_SET_CAMERA_APERTURE: { |
888 | USER_LOG_INFO("--> Function b: Set camera aperture to 400(F/4)"); | 892 | USER_LOG_INFO("--> Function b: Set camera aperture to 400(F/4)"); |
889 | DjiTest_WidgetLogAppend("--> Function b: Set camera aperture to 400(F/4)"); | 893 | DjiTest_WidgetLogAppend("--> Function b: Set camera aperture to 400(F/4)"); |
890 | - if (cameraType == DJI_CAMERA_TYPE_H20 || cameraType == DJI_CAMERA_TYPE_H20N | ||
891 | - || cameraType == DJI_CAMERA_TYPE_H20T || cameraType == DJI_CAMERA_TYPE_M30 | ||
892 | - || cameraType == DJI_CAMERA_TYPE_M30T || cameraType == DJI_CAMERA_TYPE_M3E | ||
893 | - || cameraType == DJI_CAMERA_TYPE_M3T || cameraType == DJI_CAMERA_TYPE_M3D | ||
894 | - || cameraType == DJI_CAMERA_TYPE_M3TD || cameraType == DJI_CAMERA_TYPE_H30 | ||
895 | - || cameraType == DJI_CAMERA_TYPE_H30T) { | 894 | + if (DJI_CAMERA_TYPE_H20 == cameraType || DJI_CAMERA_TYPE_H20T == cameraType |
895 | + || DJI_CAMERA_TYPE_H20N == cameraType | ||
896 | + || DJI_CAMERA_TYPE_M30 == cameraType || DJI_CAMERA_TYPE_M30T == cameraType | ||
897 | + || DJI_CAMERA_TYPE_M3E == cameraType || DJI_CAMERA_TYPE_M3T == cameraType | ||
898 | + || DJI_CAMERA_TYPE_M3D == cameraType || DJI_CAMERA_TYPE_M3TD == cameraType | ||
899 | + || DJI_CAMERA_TYPE_M4T == cameraType || DJI_CAMERA_TYPE_M4E == cameraType | ||
900 | + || DJI_CAMERA_TYPE_H30 == cameraType || DJI_CAMERA_TYPE_H30T == cameraType | ||
901 | + ) { | ||
896 | USER_LOG_INFO("Set mounted position %d camera's exposure mode to manual mode.", | 902 | USER_LOG_INFO("Set mounted position %d camera's exposure mode to manual mode.", |
897 | mountPosition); | 903 | mountPosition); |
898 | returnCode = DjiTest_CameraManagerSetExposureMode(mountPosition, | 904 | returnCode = DjiTest_CameraManagerSetExposureMode(mountPosition, |
@@ -1185,11 +1191,14 @@ T_DjiReturnCode DjiTest_CameraManagerRunSample(E_DjiMountPosition mountPosition, | @@ -1185,11 +1191,14 @@ T_DjiReturnCode DjiTest_CameraManagerRunSample(E_DjiMountPosition mountPosition, | ||
1185 | E_DjiCameraManagerNightSceneMode nightSceneMode; | 1191 | E_DjiCameraManagerNightSceneMode nightSceneMode; |
1186 | T_DjiCameraManagerRangeList nightSceneModeRange; | 1192 | T_DjiCameraManagerRangeList nightSceneModeRange; |
1187 | 1193 | ||
1188 | - if (cameraType == DJI_CAMERA_TYPE_XT2 || cameraType == DJI_CAMERA_TYPE_XTS || | ||
1189 | - cameraType == DJI_CAMERA_TYPE_H20 || cameraType == DJI_CAMERA_TYPE_P1 || | ||
1190 | - cameraType == DJI_CAMERA_TYPE_L1 || cameraType == DJI_CAMERA_TYPE_L2 || | ||
1191 | - cameraType == DJI_CAMERA_TYPE_M3E || cameraType == DJI_CAMERA_TYPE_M3T || | ||
1192 | - cameraType == DJI_CAMERA_TYPE_M3D || cameraType == DJI_CAMERA_TYPE_M3TD) { | 1194 | + if (DJI_CAMERA_TYPE_XT2 == cameraType || DJI_CAMERA_TYPE_XTS == cameraType |
1195 | + || DJI_CAMERA_TYPE_H20 == cameraType | ||
1196 | + || DJI_CAMERA_TYPE_P1 == cameraType | ||
1197 | + || DJI_CAMERA_TYPE_L1 == cameraType || DJI_CAMERA_TYPE_L2 == cameraType | ||
1198 | + || DJI_CAMERA_TYPE_M3E == cameraType || DJI_CAMERA_TYPE_M3T == cameraType | ||
1199 | + || DJI_CAMERA_TYPE_M3D == cameraType || DJI_CAMERA_TYPE_M3TD == cameraType | ||
1200 | + || DJI_CAMERA_TYPE_M4T == cameraType || DJI_CAMERA_TYPE_M4E == cameraType | ||
1201 | + ) { | ||
1193 | USER_LOG_INFO("Camera type %s does not support night scene mode!", | 1202 | USER_LOG_INFO("Camera type %s does not support night scene mode!", |
1194 | s_cameraTypeStrList[DjiTest_CameraManagerGetCameraTypeIndex(cameraType)].cameraTypeStr); | 1203 | s_cameraTypeStrList[DjiTest_CameraManagerGetCameraTypeIndex(cameraType)].cameraTypeStr); |
1195 | goto exitCameraModule; | 1204 | goto exitCameraModule; |
@@ -1923,7 +1932,8 @@ T_DjiReturnCode DjiTest_CameraManagerRunSample(E_DjiMountPosition mountPosition, | @@ -1923,7 +1932,8 @@ T_DjiReturnCode DjiTest_CameraManagerRunSample(E_DjiMountPosition mountPosition, | ||
1923 | cameraType == DJI_CAMERA_TYPE_H20 || cameraType == DJI_CAMERA_TYPE_P1 || | 1932 | cameraType == DJI_CAMERA_TYPE_H20 || cameraType == DJI_CAMERA_TYPE_P1 || |
1924 | cameraType == DJI_CAMERA_TYPE_L1 || cameraType == DJI_CAMERA_TYPE_M30 || | 1933 | cameraType == DJI_CAMERA_TYPE_L1 || cameraType == DJI_CAMERA_TYPE_M30 || |
1925 | cameraType == DJI_CAMERA_TYPE_M3E || cameraType == DJI_CAMERA_TYPE_M3D || | 1934 | cameraType == DJI_CAMERA_TYPE_M3E || cameraType == DJI_CAMERA_TYPE_M3D || |
1926 | - cameraType == DJI_CAMERA_TYPE_L2 || cameraType == DJI_CAMERA_TYPE_H30) { | 1935 | + cameraType == DJI_CAMERA_TYPE_L2 || cameraType == DJI_CAMERA_TYPE_H30 || |
1936 | + cameraType == DJI_CAMERA_TYPE_M4T) { | ||
1927 | USER_LOG_WARN("Camera type %s don't support FFC function.", | 1937 | USER_LOG_WARN("Camera type %s don't support FFC function.", |
1928 | s_cameraTypeStrList[DjiTest_CameraManagerGetCameraTypeIndex(cameraType)].cameraTypeStr); | 1938 | s_cameraTypeStrList[DjiTest_CameraManagerGetCameraTypeIndex(cameraType)].cameraTypeStr); |
1929 | goto exitCameraModule; | 1939 | goto exitCameraModule; |
@@ -1969,7 +1979,8 @@ T_DjiReturnCode DjiTest_CameraManagerRunSample(E_DjiMountPosition mountPosition, | @@ -1969,7 +1979,8 @@ T_DjiReturnCode DjiTest_CameraManagerRunSample(E_DjiMountPosition mountPosition, | ||
1969 | cameraType == DJI_CAMERA_TYPE_H20 || cameraType == DJI_CAMERA_TYPE_P1 || | 1979 | cameraType == DJI_CAMERA_TYPE_H20 || cameraType == DJI_CAMERA_TYPE_P1 || |
1970 | cameraType == DJI_CAMERA_TYPE_L1 || cameraType == DJI_CAMERA_TYPE_M30 || | 1980 | cameraType == DJI_CAMERA_TYPE_L1 || cameraType == DJI_CAMERA_TYPE_M30 || |
1971 | cameraType == DJI_CAMERA_TYPE_M3E || cameraType == DJI_CAMERA_TYPE_M3D || | 1981 | cameraType == DJI_CAMERA_TYPE_M3E || cameraType == DJI_CAMERA_TYPE_M3D || |
1972 | - cameraType == DJI_CAMERA_TYPE_L2 || cameraType == DJI_CAMERA_TYPE_H30) { | 1982 | + cameraType == DJI_CAMERA_TYPE_L2 || cameraType == DJI_CAMERA_TYPE_H30 || |
1983 | + cameraType == DJI_CAMERA_TYPE_M4T) { | ||
1973 | USER_LOG_WARN("Camera type %s don't support infrared function.", | 1984 | USER_LOG_WARN("Camera type %s don't support infrared function.", |
1974 | s_cameraTypeStrList[DjiTest_CameraManagerGetCameraTypeIndex(cameraType)].cameraTypeStr); | 1985 | s_cameraTypeStrList[DjiTest_CameraManagerGetCameraTypeIndex(cameraType)].cameraTypeStr); |
1975 | goto exitCameraModule; | 1986 | goto exitCameraModule; |
@@ -95,8 +95,10 @@ T_DjiReturnCode DjiTest_DataTransmissionStartService(void) | @@ -95,8 +95,10 @@ T_DjiReturnCode DjiTest_DataTransmissionStartService(void) | ||
95 | return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN; | 95 | return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN; |
96 | } | 96 | } |
97 | 97 | ||
98 | - if (s_aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M30 || | ||
99 | - s_aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M30T) { | 98 | + if (s_aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M30 || |
99 | + s_aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M30T || | ||
100 | + s_aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M3D || | ||
101 | + s_aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M3TD) { | ||
100 | channelAddress = DJI_CHANNEL_ADDRESS_CLOUD_API; | 102 | channelAddress = DJI_CHANNEL_ADDRESS_CLOUD_API; |
101 | djiStat = DjiLowSpeedDataChannel_RegRecvDataCallback(channelAddress, ReceiveDataFromCloud); | 103 | djiStat = DjiLowSpeedDataChannel_RegRecvDataCallback(channelAddress, ReceiveDataFromCloud); |
102 | if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { | 104 | if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { |
@@ -208,8 +210,10 @@ static void *UserDataTransmission_Task(void *arg) | @@ -208,8 +210,10 @@ static void *UserDataTransmission_Task(void *arg) | ||
208 | USER_LOG_ERROR("get send to mobile channel state error."); | 210 | USER_LOG_ERROR("get send to mobile channel state error."); |
209 | } | 211 | } |
210 | 212 | ||
211 | - if (s_aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M30 || | ||
212 | - s_aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M30T) { | 213 | + if (s_aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M30 || |
214 | + s_aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M30T || | ||
215 | + s_aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M3D || | ||
216 | + s_aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M3TD) { | ||
213 | channelAddress = DJI_CHANNEL_ADDRESS_CLOUD_API; | 217 | channelAddress = DJI_CHANNEL_ADDRESS_CLOUD_API; |
214 | djiStat = DjiLowSpeedDataChannel_SendData(channelAddress, dataToBeSent, sizeof(dataToBeSent)); | 218 | djiStat = DjiLowSpeedDataChannel_SendData(channelAddress, dataToBeSent, sizeof(dataToBeSent)); |
215 | if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | 219 | if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) |
@@ -459,7 +459,7 @@ static void *Subscription_GimbalAngels_task(void *arg) | @@ -459,7 +459,7 @@ static void *Subscription_GimbalAngels_task(void *arg) | ||
459 | //printf("消息订阅联动\n"); | 459 | //printf("消息订阅联动\n"); |
460 | JZsdk_Psdk_Ui_io_Gimbal_PitchAngleControlMode(NowGimbalPitch); | 460 | JZsdk_Psdk_Ui_io_Gimbal_PitchAngleControlMode(NowGimbalPitch); |
461 | LastGimbalPitch = NowGimbalPitch; | 461 | LastGimbalPitch = NowGimbalPitch; |
462 | - } | 462 | + } |
463 | 463 | ||
464 | } | 464 | } |
465 | } | 465 | } |
@@ -899,8 +899,6 @@ T_DjiReturnCode DjiTest_TriggerFtsEventCallback(void) | @@ -899,8 +899,6 @@ T_DjiReturnCode DjiTest_TriggerFtsEventCallback(void) | ||
899 | USER_LOG_WARN("Note: This is an empty implementation, and the FTS signal needs to be triggered by the PWM signal."); | 899 | USER_LOG_WARN("Note: This is an empty implementation, and the FTS signal needs to be triggered by the PWM signal."); |
900 | return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 900 | return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
901 | } | 901 | } |
902 | - | ||
903 | - return DJI_ERROR_SYSTEM_MODULE_CODE_SYSTEM_ERROR; | ||
904 | } | 902 | } |
905 | 903 | ||
906 | void DjiTest_FlightControlPassiveTriggerFtsSample(void) | 904 | void DjiTest_FlightControlPassiveTriggerFtsSample(void) |
@@ -1304,10 +1302,11 @@ bool DjiTest_FlightControlGoHomeAndConfirmLanding(void) | @@ -1304,10 +1302,11 @@ bool DjiTest_FlightControlGoHomeAndConfirmLanding(void) | ||
1304 | DjiTest_FlightControlGetValueOfFlightStatus() == DJI_FC_SUBSCRIPTION_FLIGHT_STATUS_IN_AIR) { | 1302 | DjiTest_FlightControlGetValueOfFlightStatus() == DJI_FC_SUBSCRIPTION_FLIGHT_STATUS_IN_AIR) { |
1305 | T_DjiFcSubscriptionHeightFusion heightFusion = DjiTest_FlightControlGetValueOfHeightFusion(); | 1303 | T_DjiFcSubscriptionHeightFusion heightFusion = DjiTest_FlightControlGetValueOfHeightFusion(); |
1306 | s_osalHandler->TaskSleepMs(1000); | 1304 | s_osalHandler->TaskSleepMs(1000); |
1307 | - if (aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M3E || | ||
1308 | - aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M3T || | ||
1309 | - aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M3D || | ||
1310 | - aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M3TD) { | 1305 | + if (DJI_AIRCRAFT_TYPE_M3E == aircraftInfoBaseInfo.aircraftType || DJI_AIRCRAFT_TYPE_M3T == aircraftInfoBaseInfo.aircraftType |
1306 | + || DJI_AIRCRAFT_TYPE_M3D == aircraftInfoBaseInfo.aircraftType || DJI_AIRCRAFT_TYPE_M3TD == aircraftInfoBaseInfo.aircraftType | ||
1307 | + || DJI_AIRCRAFT_TYPE_M4T == aircraftInfoBaseInfo.aircraftType | ||
1308 | + || DJI_AIRCRAFT_TYPE_M4E == aircraftInfoBaseInfo.aircraftType | ||
1309 | + ) { | ||
1311 | if ((dji_f64_t) 0.45 < heightFusion && heightFusion < (dji_f64_t) 0.55) { | 1310 | if ((dji_f64_t) 0.45 < heightFusion && heightFusion < (dji_f64_t) 0.55) { |
1312 | break; | 1311 | break; |
1313 | } | 1312 | } |
@@ -140,8 +140,11 @@ T_DjiReturnCode DjiTest_GimbalManagerRunSample(E_DjiMountPosition mountPosition, | @@ -140,8 +140,11 @@ T_DjiReturnCode DjiTest_GimbalManagerRunSample(E_DjiMountPosition mountPosition, | ||
140 | 140 | ||
141 | rotation = s_rotationActionList[i].rotation; | 141 | rotation = s_rotationActionList[i].rotation; |
142 | 142 | ||
143 | - if (aircraftSeries == DJI_AIRCRAFT_SERIES_M3 || aircraftSeries == DJI_AIRCRAFT_SERIES_M30 | ||
144 | - || aircraftSeries == DJI_AIRCRAFT_SERIES_M3D) { | 143 | + if (DJI_AIRCRAFT_SERIES_M30 == aircraftSeries |
144 | + || DJI_AIRCRAFT_SERIES_M3 == aircraftSeries | ||
145 | + || DJI_AIRCRAFT_SERIES_M3D == aircraftSeries | ||
146 | + || DJI_AIRCRAFT_SERIES_M4 == aircraftSeries | ||
147 | + ) { | ||
145 | if (s_rotationActionList[i].rotation.rotationMode == DJI_GIMBAL_ROTATION_MODE_ABSOLUTE_ANGLE) { | 148 | if (s_rotationActionList[i].rotation.rotationMode == DJI_GIMBAL_ROTATION_MODE_ABSOLUTE_ANGLE) { |
146 | T_DjiFcSubscriptionGimbalAngles gimbalAngles = {0}; | 149 | T_DjiFcSubscriptionGimbalAngles gimbalAngles = {0}; |
147 | T_DjiDataTimestamp timestamp = {0}; | 150 | T_DjiDataTimestamp timestamp = {0}; |
@@ -51,11 +51,14 @@ | @@ -51,11 +51,14 @@ | ||
51 | static const char *oldReplaceAlarmIdStr = "%alarmid"; | 51 | static const char *oldReplaceAlarmIdStr = "%alarmid"; |
52 | static const char *oldReplaceIndexStr = "%index"; | 52 | static const char *oldReplaceIndexStr = "%index"; |
53 | static const char *oldReplaceComponentIndexStr = "%component_index"; | 53 | static const char *oldReplaceComponentIndexStr = "%component_index"; |
54 | +static bool isHmsManagerInit = false; | ||
54 | static T_DjiHmsFileBinaryArray s_EnHmsTextConfigFileBinaryArrayList[] = { | 55 | static T_DjiHmsFileBinaryArray s_EnHmsTextConfigFileBinaryArrayList[] = { |
55 | {hms_text_config_json_fileName, hms_text_config_json_fileSize, hms_text_config_json_fileBinaryArray}, | 56 | {hms_text_config_json_fileName, hms_text_config_json_fileSize, hms_text_config_json_fileBinaryArray}, |
56 | }; | 57 | }; |
57 | static uint8_t *s_hmsJsonData = NULL; | 58 | static uint8_t *s_hmsJsonData = NULL; |
58 | static E_DjiMobileAppLanguage s_hmsLanguage = DJI_MOBILE_APP_LANGUAGE_ENGLISH; | 59 | static E_DjiMobileAppLanguage s_hmsLanguage = DJI_MOBILE_APP_LANGUAGE_ENGLISH; |
60 | +static bool s_isHmsConfigFileDirPathConfigured = false; | ||
61 | +static char s_hmsConfigFileDirPath[DJI_FILE_PATH_SIZE_MAX] = {0}; | ||
59 | 62 | ||
60 | /* Private functions declaration ---------------------------------------------*/ | 63 | /* Private functions declaration ---------------------------------------------*/ |
61 | static T_DjiReturnCode DjiTest_HmsManagerInit(void); | 64 | static T_DjiReturnCode DjiTest_HmsManagerInit(void); |
@@ -132,7 +135,11 @@ T_DjiReturnCode DjiTest_HmsCustomizationStartService(void) | @@ -132,7 +135,11 @@ T_DjiReturnCode DjiTest_HmsCustomizationStartService(void) | ||
132 | return returnCode; | 135 | return returnCode; |
133 | } | 136 | } |
134 | 137 | ||
135 | - snprintf(tempPath, HMS_DIR_PATH_LEN_MAX, "%shms_text/en", curFileDirPath); | 138 | + if (s_isHmsConfigFileDirPathConfigured == true) { |
139 | + snprintf(tempPath, HMS_DIR_PATH_LEN_MAX, "%shms_text/en", s_hmsConfigFileDirPath); | ||
140 | + } else { | ||
141 | + snprintf(tempPath, HMS_DIR_PATH_LEN_MAX, "%shms_text/en", curFileDirPath); | ||
142 | + } | ||
136 | 143 | ||
137 | //set default hms text config path | 144 | //set default hms text config path |
138 | returnCode = DjiHmsCustomization_RegDefaultHmsTextConfigByDirPath(tempPath); | 145 | returnCode = DjiHmsCustomization_RegDefaultHmsTextConfigByDirPath(tempPath); |
@@ -150,7 +157,12 @@ T_DjiReturnCode DjiTest_HmsCustomizationStartService(void) | @@ -150,7 +157,12 @@ T_DjiReturnCode DjiTest_HmsCustomizationStartService(void) | ||
150 | } | 157 | } |
151 | 158 | ||
152 | //set hms text config for Chinese language | 159 | //set hms text config for Chinese language |
153 | - snprintf(tempPath, HMS_DIR_PATH_LEN_MAX, "%shms_text/cn", curFileDirPath); | 160 | + if (s_isHmsConfigFileDirPathConfigured == true) { |
161 | + snprintf(tempPath, HMS_DIR_PATH_LEN_MAX, "%shms_text/cn", s_hmsConfigFileDirPath); | ||
162 | + } else { | ||
163 | + snprintf(tempPath, HMS_DIR_PATH_LEN_MAX, "%shms_text/cn", curFileDirPath); | ||
164 | + } | ||
165 | + | ||
154 | returnCode = DjiHmsCustomization_RegHmsTextConfigByDirPath(DJI_MOBILE_APP_LANGUAGE_CHINESE, | 166 | returnCode = DjiHmsCustomization_RegHmsTextConfigByDirPath(DJI_MOBILE_APP_LANGUAGE_CHINESE, |
155 | tempPath); | 167 | tempPath); |
156 | if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { | 168 | if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { |
@@ -174,11 +186,22 @@ T_DjiReturnCode DjiTest_HmsCustomizationStartService(void) | @@ -174,11 +186,22 @@ T_DjiReturnCode DjiTest_HmsCustomizationStartService(void) | ||
174 | 186 | ||
175 | #if DJI_CUSTOM_HMS_CODE_INJECT_ON | 187 | #if DJI_CUSTOM_HMS_CODE_INJECT_ON |
176 | DjiHmsCustomization_InjectHmsErrorCode(0x1E020000, DJI_HMS_ERROR_LEVEL_FATAL); | 188 | DjiHmsCustomization_InjectHmsErrorCode(0x1E020000, DJI_HMS_ERROR_LEVEL_FATAL); |
189 | + DjiHmsCustomization_InjectHmsErrorCode(0x1E020001, DJI_HMS_ERROR_LEVEL_CRITICAL); | ||
190 | + DjiHmsCustomization_InjectHmsErrorCode(0x1E020002, DJI_HMS_ERROR_LEVEL_WARN); | ||
191 | + DjiHmsCustomization_InjectHmsErrorCode(0x1E020003, DJI_HMS_ERROR_LEVEL_HINT); | ||
177 | #endif | 192 | #endif |
178 | 193 | ||
179 | return returnCode; | 194 | return returnCode; |
180 | } | 195 | } |
181 | 196 | ||
197 | +T_DjiReturnCode DjiTest_HmsCustomizationSetConfigFilePath(const char *path) | ||
198 | +{ | ||
199 | + memset(s_hmsConfigFileDirPath, 0, sizeof(s_hmsConfigFileDirPath)); | ||
200 | + memcpy(s_hmsConfigFileDirPath, path, USER_UTIL_MIN(strlen(path), sizeof(s_hmsConfigFileDirPath) - 1)); | ||
201 | + s_isHmsConfigFileDirPathConfigured = true; | ||
202 | + | ||
203 | + return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
204 | +} | ||
182 | /* Private functions definition-----------------------------------------------*/ | 205 | /* Private functions definition-----------------------------------------------*/ |
183 | static T_DjiReturnCode DjiTest_HmsManagerInit(void) | 206 | static T_DjiReturnCode DjiTest_HmsManagerInit(void) |
184 | { | 207 | { |
@@ -199,13 +222,13 @@ static T_DjiReturnCode DjiTest_HmsManagerInit(void) | @@ -199,13 +222,13 @@ static T_DjiReturnCode DjiTest_HmsManagerInit(void) | ||
199 | returnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_STATUS_FLIGHT, | 222 | returnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_STATUS_FLIGHT, |
200 | DJI_DATA_SUBSCRIPTION_TOPIC_10_HZ, | 223 | DJI_DATA_SUBSCRIPTION_TOPIC_10_HZ, |
201 | NULL); | 224 | NULL); |
202 | - | ||
203 | if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { | 225 | if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { |
204 | USER_LOG_ERROR("HMS sample subscribe topic flight status error, error code:0x%08llX", returnCode); | 226 | USER_LOG_ERROR("HMS sample subscribe topic flight status error, error code:0x%08llX", returnCode); |
205 | return returnCode; | 227 | return returnCode; |
206 | } | 228 | } |
207 | 229 | ||
208 | #ifdef SYSTEM_ARCH_LINUX | 230 | #ifdef SYSTEM_ARCH_LINUX |
231 | + | ||
209 | returnCode = DjiUserUtil_GetCurrentFileDirPath(__FILE__, HMS_DIR_PATH_LEN_MAX, curFileDirPath); | 232 | returnCode = DjiUserUtil_GetCurrentFileDirPath(__FILE__, HMS_DIR_PATH_LEN_MAX, curFileDirPath); |
210 | if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { | 233 | if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { |
211 | USER_LOG_ERROR("Get file current path error, stat = 0x%08llX", returnCode); | 234 | USER_LOG_ERROR("Get file current path error, stat = 0x%08llX", returnCode); |
@@ -230,6 +253,8 @@ static T_DjiReturnCode DjiTest_HmsManagerInit(void) | @@ -230,6 +253,8 @@ static T_DjiReturnCode DjiTest_HmsManagerInit(void) | ||
230 | UtilFile_GetFileDataByPath(tempFileDirPath, 0, fileSize, s_hmsJsonData, &readRealSize); | 253 | UtilFile_GetFileDataByPath(tempFileDirPath, 0, fileSize, s_hmsJsonData, &readRealSize); |
231 | #endif | 254 | #endif |
232 | 255 | ||
256 | + isHmsManagerInit = true; | ||
257 | + | ||
233 | return DjiHmsManager_Init(); | 258 | return DjiHmsManager_Init(); |
234 | } | 259 | } |
235 | 260 | ||
@@ -249,6 +274,8 @@ static T_DjiReturnCode DjiTest_HmsManagerDeInit(void) | @@ -249,6 +274,8 @@ static T_DjiReturnCode DjiTest_HmsManagerDeInit(void) | ||
249 | osalHandler->Free(s_hmsJsonData); | 274 | osalHandler->Free(s_hmsJsonData); |
250 | #endif | 275 | #endif |
251 | 276 | ||
277 | + isHmsManagerInit = false; | ||
278 | + | ||
252 | return DjiHmsManager_DeInit(); | 279 | return DjiHmsManager_DeInit(); |
253 | } | 280 | } |
254 | 281 | ||
@@ -258,6 +285,10 @@ static T_DjiFcSubscriptionFlightStatus DjiTest_GetValueOfFlightStatus(void) | @@ -258,6 +285,10 @@ static T_DjiFcSubscriptionFlightStatus DjiTest_GetValueOfFlightStatus(void) | ||
258 | T_DjiFcSubscriptionFlightStatus flightStatus; | 285 | T_DjiFcSubscriptionFlightStatus flightStatus; |
259 | T_DjiDataTimestamp flightStatusTimestamp = {0}; | 286 | T_DjiDataTimestamp flightStatusTimestamp = {0}; |
260 | 287 | ||
288 | + if (isHmsManagerInit == false) { | ||
289 | + return DJI_FC_SUBSCRIPTION_FLIGHT_STATUS_ON_GROUND; | ||
290 | + } | ||
291 | + | ||
261 | returnCode = DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_STATUS_FLIGHT, | 292 | returnCode = DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_STATUS_FLIGHT, |
262 | (uint8_t *) &flightStatus, | 293 | (uint8_t *) &flightStatus, |
263 | sizeof(T_DjiFcSubscriptionFlightStatus), | 294 | sizeof(T_DjiFcSubscriptionFlightStatus), |
@@ -41,6 +41,7 @@ extern "C" { | @@ -41,6 +41,7 @@ extern "C" { | ||
41 | /* Exported functions --------------------------------------------------------*/ | 41 | /* Exported functions --------------------------------------------------------*/ |
42 | T_DjiReturnCode DjiTest_HmsManagerRunSample(E_DjiMobileAppLanguage language); | 42 | T_DjiReturnCode DjiTest_HmsManagerRunSample(E_DjiMobileAppLanguage language); |
43 | T_DjiReturnCode DjiTest_HmsCustomizationStartService(void); | 43 | T_DjiReturnCode DjiTest_HmsCustomizationStartService(void); |
44 | +T_DjiReturnCode DjiTest_HmsCustomizationSetConfigFilePath(const char *path); | ||
44 | 45 | ||
45 | #ifdef __cplusplus | 46 | #ifdef __cplusplus |
46 | } | 47 | } |
@@ -277,8 +277,10 @@ T_DjiReturnCode DjiTest_LiveviewRunSample(E_DjiMountPosition mountPosition) | @@ -277,8 +277,10 @@ T_DjiReturnCode DjiTest_LiveviewRunSample(E_DjiMountPosition mountPosition) | ||
277 | USER_LOG_INFO("Fpv stream is saved to file: %s", s_fpvCameraStreamFilePath); | 277 | USER_LOG_INFO("Fpv stream is saved to file: %s", s_fpvCameraStreamFilePath); |
278 | USER_LOG_INFO("Payload%d stream is saved to file: %s\r\n", mountPosition, s_payloadCameraStreamFilePath); | 278 | USER_LOG_INFO("Payload%d stream is saved to file: %s\r\n", mountPosition, s_payloadCameraStreamFilePath); |
279 | 279 | ||
280 | - if (aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M3T || | ||
281 | - aircraftInfoBaseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M3TD) { | 280 | + if (DJI_AIRCRAFT_TYPE_M3T == aircraftInfoBaseInfo.aircraftType |
281 | + || DJI_AIRCRAFT_TYPE_M3TD == aircraftInfoBaseInfo.aircraftType | ||
282 | + || DJI_AIRCRAFT_TYPE_M4T == aircraftInfoBaseInfo.aircraftType | ||
283 | + ) { | ||
282 | USER_LOG_INFO("--> Start h264 stream of the fpv and selected payload\r\n"); | 284 | USER_LOG_INFO("--> Start h264 stream of the fpv and selected payload\r\n"); |
283 | 285 | ||
284 | localTime = localtime(¤tTime); | 286 | localTime = localtime(¤tTime); |
@@ -180,7 +180,7 @@ REWAIT: | @@ -180,7 +180,7 @@ REWAIT: | ||
180 | } | 180 | } |
181 | 181 | ||
182 | sendDataCount++; | 182 | sendDataCount++; |
183 | - memset(sendBuf, sendDataCount, TEST_MOP_CHANNEL_NORMAL_TRANSFOR_SEND_BUFFER); | 183 | + memset(sendBuf, 'A' - 1 + (sendDataCount % 26), TEST_MOP_CHANNEL_NORMAL_TRANSFOR_SEND_BUFFER); |
184 | returnCode = DjiMopChannel_SendData(s_testMopChannelNormalOutHandle, sendBuf, | 184 | returnCode = DjiMopChannel_SendData(s_testMopChannelNormalOutHandle, sendBuf, |
185 | TEST_MOP_CHANNEL_NORMAL_TRANSFOR_SEND_BUFFER, &realLen); | 185 | TEST_MOP_CHANNEL_NORMAL_TRANSFOR_SEND_BUFFER, &realLen); |
186 | if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { | 186 | if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { |
@@ -89,9 +89,9 @@ T_DjiReturnCode DjiTest_PowerManagementStartService(void) | @@ -89,9 +89,9 @@ T_DjiReturnCode DjiTest_PowerManagementStartService(void) | ||
89 | return returnCode; | 89 | return returnCode; |
90 | } | 90 | } |
91 | 91 | ||
92 | - if (((baseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M300_RTK || baseInfo.aircraftType == DJI_AIRCRAFT_TYPE_M350_RTK) && | ||
93 | - (baseInfo.djiAdapterType == DJI_SDK_ADAPTER_TYPE_SKYPORT_V2 || baseInfo.djiAdapterType == DJI_SDK_ADAPTER_TYPE_XPORT)) || | ||
94 | - baseInfo.aircraftType == DJI_AIRCRAFT_TYPE_FC30) { | 92 | + if (baseInfo.djiAdapterType == DJI_SDK_ADAPTER_TYPE_SKYPORT_V2 || |
93 | + baseInfo.djiAdapterType == DJI_SDK_ADAPTER_TYPE_XPORT || | ||
94 | + baseInfo.aircraftType == DJI_AIRCRAFT_TYPE_FC30) { | ||
95 | // apply high power | 95 | // apply high power |
96 | if (s_applyHighPowerHandler.pinInit == NULL) { | 96 | if (s_applyHighPowerHandler.pinInit == NULL) { |
97 | USER_LOG_ERROR("apply high power pin init interface is NULL error"); | 97 | USER_LOG_ERROR("apply high power pin init interface is NULL error"); |
@@ -71,6 +71,7 @@ typedef struct { | @@ -71,6 +71,7 @@ typedef struct { | ||
71 | uint8_t usbBulk2InterfaceNum; | 71 | uint8_t usbBulk2InterfaceNum; |
72 | uint8_t usbBulk2EndpointIn; | 72 | uint8_t usbBulk2EndpointIn; |
73 | uint8_t usbBulk2EndpointOut; | 73 | uint8_t usbBulk2EndpointOut; |
74 | + | ||
74 | } usbBulkConfig; | 75 | } usbBulkConfig; |
75 | } T_DjiUserLinkConfig; | 76 | } T_DjiUserLinkConfig; |
76 | 77 |
@@ -88,7 +88,7 @@ T_DjiReturnCode DjiTest_WaypointV3RunSample(void) | @@ -88,7 +88,7 @@ T_DjiReturnCode DjiTest_WaypointV3RunSample(void) | ||
88 | /*! Attention: suggest use the exported kmz file by DJI pilot. If use this test file, you need set the longitude as | 88 | /*! Attention: suggest use the exported kmz file by DJI pilot. If use this test file, you need set the longitude as |
89 | * 113.94255, latitude as 22.57765 on DJI Assistant 2 simulator */ | 89 | * 113.94255, latitude as 22.57765 on DJI Assistant 2 simulator */ |
90 | snprintf(tempPath, DJI_TEST_WAYPOINT_V3_KMZ_FILE_PATH_LEN_MAX, "%s/waypoint_file/waypoint_v3_test_file.kmz", | 90 | snprintf(tempPath, DJI_TEST_WAYPOINT_V3_KMZ_FILE_PATH_LEN_MAX, "%s/waypoint_file/waypoint_v3_test_file.kmz", |
91 | - curFileDirPath); | 91 | + curFileDirPath); |
92 | 92 | ||
93 | kmzFile = fopen(tempPath, "r"); | 93 | kmzFile = fopen(tempPath, "r"); |
94 | if (kmzFile == NULL) { | 94 | if (kmzFile == NULL) { |
@@ -44,7 +44,7 @@ | @@ -44,7 +44,7 @@ | ||
44 | 44 | ||
45 | #include "UI_control/WidegMgmt/JZsdk_Widget.h" | 45 | #include "UI_control/WidegMgmt/JZsdk_Widget.h" |
46 | #include "UI_control/UI_control.h" | 46 | #include "UI_control/UI_control.h" |
47 | - | 47 | +#include "JZsdkLib.h" |
48 | 48 | ||
49 | #include "MediaProc/MediaProc.h" | 49 | #include "MediaProc/MediaProc.h" |
50 | #include "DeviceInfo/DeviceInfo.h" | 50 | #include "DeviceInfo/DeviceInfo.h" |
@@ -254,7 +254,7 @@ T_DjiReturnCode DjiTest_WidgetStartService(void) | @@ -254,7 +254,7 @@ T_DjiReturnCode DjiTest_WidgetStartService(void) | ||
254 | if (JZsdk_check_file_exists("/root/ShakedownTest") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | 254 | if (JZsdk_check_file_exists("/root/ShakedownTest") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) |
255 | { | 255 | { |
256 | JZSDK_LOG_INFO("开启调试模式"); | 256 | JZSDK_LOG_INFO("开启调试模式"); |
257 | - if(JZsdk_delete_file("/root/ShakedownTest") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | 257 | + if(JZsdk_Osal_delete("/root/ShakedownTest") != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) |
258 | { | 258 | { |
259 | JZSDK_LOG_ERROR("关闭调试模式失败"); | 259 | JZSDK_LOG_ERROR("关闭调试模式失败"); |
260 | } | 260 | } |
@@ -461,8 +461,8 @@ static void *DjiTest_WidgetInteractionTask(void *arg) | @@ -461,8 +461,8 @@ static void *DjiTest_WidgetInteractionTask(void *arg) | ||
461 | USER_LOG_INFO("--------------------------------------------------------------------------------------------->"); | 461 | USER_LOG_INFO("--------------------------------------------------------------------------------------------->"); |
462 | DjiTest_WidgetLogAppend("-> Sample Start"); | 462 | DjiTest_WidgetLogAppend("-> Sample Start"); |
463 | 463 | ||
464 | - if (s_aircraftInfoBaseInfo.mountPosition == DJI_MOUNT_POSITION_EXTENSION_PORT | ||
465 | - || DJI_MOUNT_POSITION_EXTENSION_LITE_PORT == s_aircraftInfoBaseInfo.mountPosition) { | 464 | + if (s_aircraftInfoBaseInfo.mountPositionType == DJI_MOUNT_POSITION_TYPE_EXTENSION_PORT || |
465 | + s_aircraftInfoBaseInfo.mountPositionType == DJI_MOUNT_POSITION_TYPE_EXTENSION_LITE_PORT) { | ||
466 | switch (s_extensionPortSampleIndex) { | 466 | switch (s_extensionPortSampleIndex) { |
467 | case E_DJI_SAMPLE_INDEX_WAYPOINT_V2: | 467 | case E_DJI_SAMPLE_INDEX_WAYPOINT_V2: |
468 | if (s_isallowRunFlightControlSample == true) { | 468 | if (s_isallowRunFlightControlSample == true) { |
1 | # cmake 最低版本要求 第三行名字不能动 | 1 | # cmake 最低版本要求 第三行名字不能动 |
2 | cmake_minimum_required(VERSION 2.8) | 2 | cmake_minimum_required(VERSION 2.8) |
3 | -project(JZ_C1) | 3 | +project(JZ_H10T) |
4 | 4 | ||
5 | set(CMAKE_C_FLAGS "-pthread -std=gnu99 -lm -ldl -lstdc++") | 5 | set(CMAKE_C_FLAGS "-pthread -std=gnu99 -lm -ldl -lstdc++") |
6 | #"-pthread":指定在编译时链接POSIX线程库,以支持多线程程序。 | 6 | #"-pthread":指定在编译时链接POSIX线程库,以支持多线程程序。 |
@@ -429,6 +429,10 @@ int main(int argc, char *argv[]) | @@ -429,6 +429,10 @@ int main(int argc, char *argv[]) | ||
429 | if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { | 429 | if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { |
430 | USER_LOG_ERROR("data subscription sample init error\n"); | 430 | USER_LOG_ERROR("data subscription sample init error\n"); |
431 | } | 431 | } |
432 | + else | ||
433 | + { | ||
434 | + USER_LOG_INFO("DjiTest_FcSubscriptionStartService初始化"); | ||
435 | + } | ||
432 | #endif | 436 | #endif |
433 | 437 | ||
434 | #ifdef CONFIG_MODULE_SAMPLE_LIVEVIEW_ON | 438 | #ifdef CONFIG_MODULE_SAMPLE_LIVEVIEW_ON |
-
请 注册 或 登录 后发表评论