正在显示
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 |
-
请 注册 或 登录 后发表评论