正在显示
18 个修改的文件
包含
318 行增加
和
19 行删除
1 | #include <stdio.h> | 1 | #include <stdio.h> |
2 | #include "./JZsdk_DeviceCode.h" | 2 | #include "./JZsdk_DeviceCode.h" |
3 | 3 | ||
4 | +/************************* | ||
5 | + * | ||
6 | + * 获取设备名称 | ||
7 | + * | ||
8 | + * | ||
9 | + * ************************/ | ||
4 | unsigned char *JZsdk_GetDeviceName() | 10 | unsigned char *JZsdk_GetDeviceName() |
5 | { | 11 | { |
12 | + | ||
13 | + | ||
6 | return | 14 | return |
7 | } | 15 | } |
@@ -63,6 +63,10 @@ typedef enum { | @@ -63,6 +63,10 @@ typedef enum { | ||
63 | 63 | ||
64 | } JZ_CheckCode; //检查校验码 | 64 | } JZ_CheckCode; //检查校验码 |
65 | 65 | ||
66 | +typedef enum { | ||
67 | + JZ_ERROR_SYSTEM_MODULE_CODE_NO_UPGRADE_FILE = 0x6000, //没有升级文件 | ||
68 | +}JZ_Ugrade_ErrorCode; | ||
69 | + | ||
66 | /* Exported functions --------------------------------------------------------*/ | 70 | /* Exported functions --------------------------------------------------------*/ |
67 | 71 | ||
68 | #ifdef __cplusplus | 72 | #ifdef __cplusplus |
1 | #include <stdio.h> | 1 | #include <stdio.h> |
2 | #include <pthread.h> | 2 | #include <pthread.h> |
3 | -#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | 3 | + |
4 | #include "JZsdkLib.h" | 4 | #include "JZsdkLib.h" |
5 | +#include "JZsdk_Hal.h" | ||
5 | 6 | ||
6 | T_JZsdkReturnCode HeartBeat_Uart1Check() | 7 | T_JZsdkReturnCode HeartBeat_Uart1Check() |
7 | { | 8 | { |
8 | - //1、获取串口1连接状态 | 9 | + //1、获取hal的使用状态 |
10 | + int JZsdk_HalPort_UseFlag(UART_DEV_1); | ||
9 | 11 | ||
10 | 12 | ||
11 | } | 13 | } |
@@ -22,18 +24,18 @@ static void *HeartBeatTask(void *arg) | @@ -22,18 +24,18 @@ static void *HeartBeatTask(void *arg) | ||
22 | { | 24 | { |
23 | delayS(10); | 25 | delayS(10); |
24 | 26 | ||
25 | - HeartBeat_Uart1Check(); | 27 | + HeartBeat_HalCheck(); |
26 | } | 28 | } |
27 | 29 | ||
28 | } | 30 | } |
29 | 31 | ||
30 | /***************** | 32 | /***************** |
31 | * | 33 | * |
32 | - * 心跳帧初始化 | 34 | + * 心跳帧主设备类型的初始化 |
33 | * | 35 | * |
34 | * | 36 | * |
35 | * *************************/ | 37 | * *************************/ |
36 | -T_JZsdkReturnCode HeartBeat_Init() | 38 | +static T_JZsdkReturnCode HeartBeat_Main() |
37 | { | 39 | { |
38 | pthread_t PowerMangerTask; | 40 | pthread_t PowerMangerTask; |
39 | pthread_attr_t task_attribute; //线程属性 | 41 | pthread_attr_t task_attribute; //线程属性 |
@@ -48,3 +50,16 @@ T_JZsdkReturnCode HeartBeat_Init() | @@ -48,3 +50,16 @@ T_JZsdkReturnCode HeartBeat_Init() | ||
48 | 50 | ||
49 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 51 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
50 | } | 52 | } |
53 | + | ||
54 | +/***************** | ||
55 | + * | ||
56 | + * 心跳帧初始化 | ||
57 | + * | ||
58 | + * | ||
59 | + * *************************/ | ||
60 | +T_JZsdkReturnCode HeartBeat_Init() | ||
61 | +{ | ||
62 | + HeartBeat_Main(); | ||
63 | + | ||
64 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
65 | +} |
@@ -3,10 +3,13 @@ | @@ -3,10 +3,13 @@ | ||
3 | 3 | ||
4 | #include "BaseConfig.h" | 4 | #include "BaseConfig.h" |
5 | 5 | ||
6 | + | ||
6 | #define UPGRADE_FILE_DIR "/root/ugradeFile" | 7 | #define UPGRADE_FILE_DIR "/root/ugradeFile" |
7 | #define UPGRADE_FILE_STATUS_A "/root/ugradeFile/upgrade_status_a" | 8 | #define UPGRADE_FILE_STATUS_A "/root/ugradeFile/upgrade_status_a" |
8 | #define UPGRADE_FILE_STATUS_B "/root/ugradeFile/upgrade_status_b" | 9 | #define UPGRADE_FILE_STATUS_B "/root/ugradeFile/upgrade_status_b" |
9 | 10 | ||
11 | +#define REMOTE_UPGRADE_FILE_DIR "/root/ugradeFile/remote_ugradeFile.tar" | ||
12 | + | ||
10 | static int Upgrade_status = JZ_FLAGCODE_OFF; | 13 | static int Upgrade_status = JZ_FLAGCODE_OFF; |
11 | 14 | ||
12 | /************************************ | 15 | /************************************ |
@@ -17,21 +20,30 @@ static int Upgrade_status = JZ_FLAGCODE_OFF; | @@ -17,21 +20,30 @@ static int Upgrade_status = JZ_FLAGCODE_OFF; | ||
17 | * *************************************/ | 20 | * *************************************/ |
18 | T_JZsdkReturnCode Upgrade_PackageParse() | 21 | T_JZsdkReturnCode Upgrade_PackageParse() |
19 | { | 22 | { |
20 | - //解析升级包 | ||
21 | - | ||
22 | - //1、分析是否存在linux自身的升级包 | ||
23 | - unsigned char upgradeFileName[128]; | ||
24 | - int upgradeFileNameLen = 0; | ||
25 | - | ||
26 | - //拼接为升级包的名字 | ||
27 | - memcpy(upgradeFileName, ) | 23 | + T_JZsdkReturnCode ret; |
24 | + unsigned char cmd[128] = {0}; | ||
28 | 25 | ||
29 | - if (JZsdk_check_file_exists(UPGRADE_FILE_DIR)) | 26 | + //分析是否存在升级包 |
27 | + if (JZsdk_check_file_exists(REMOTE_UPGRADE_FILE_DIR) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
30 | { | 28 | { |
29 | + JZSDK_LOG_ERROR("Upgrade_PackageParse: upgrade file not exists"); | ||
30 | + return JZ_ERROR_SYSTEM_MODULE_CODE_NO_UPGRADE_FILE; | ||
31 | + } | ||
31 | 32 | ||
33 | + //分解升级包 | ||
34 | + memseyt(cmd, 0, sizeof(cmd)); | ||
35 | + sprintf(cmd, "tar -xvf %s -C %s", REMOTE_UPGRADE_FILE_DIR, UPGRADE_FILE_DIR); | ||
36 | + ret = JZsdk_RunSystemCmd(cmd); | ||
37 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
38 | + { | ||
39 | + JZSDK_LOG_ERROR("Upgrade_PackageParse: RunSystemCmd failed"); | ||
40 | + return ret; | ||
32 | } | 41 | } |
33 | 42 | ||
34 | - //2、分析是否存在其他模块的升级包 | 43 | + //解析升级包 |
44 | + //首先分析本机的升级包 | ||
45 | + unsigned char upgrade_file_name[128] = {0}; | ||
46 | + | ||
35 | 47 | ||
36 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 48 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
37 | } | 49 | } |
@@ -66,7 +78,7 @@ T_JZsdkReturnCode Upgrade_Init() | @@ -66,7 +78,7 @@ T_JZsdkReturnCode Upgrade_Init() | ||
66 | 78 | ||
67 | //检查是否还存在升级包 | 79 | //检查是否还存在升级包 |
68 | 80 | ||
69 | - | 81 | + // |
70 | } | 82 | } |
71 | 83 | ||
72 | 84 |
@@ -19,7 +19,7 @@ extern "C" { | @@ -19,7 +19,7 @@ extern "C" { | ||
19 | /* Exported constants --------------------------------------------------------*/ | 19 | /* Exported constants --------------------------------------------------------*/ |
20 | /* 常亮定义*/ | 20 | /* 常亮定义*/ |
21 | #include "JZsdkLib.h" | 21 | #include "JZsdkLib.h" |
22 | -#include "./AudioFile_Param.h" | 22 | +#include "./AudioMange_Param.h" |
23 | 23 | ||
24 | /* Exported types ------------------------------------------------------------*/ | 24 | /* Exported types ------------------------------------------------------------*/ |
25 | 25 |
Module/Megaphone/Megaphone_Param.h
已删除
100644 → 0
@@ -11,7 +11,7 @@ | @@ -11,7 +11,7 @@ | ||
11 | #include "AudioDeal/AudioDealThread/AudioDealThread.h" | 11 | #include "AudioDeal/AudioDealThread/AudioDealThread.h" |
12 | #include "./AudioFile_PlayDeal.h" | 12 | #include "./AudioFile_PlayDeal.h" |
13 | 13 | ||
14 | -#include "./AudioMange.h" | 14 | +#include "Megaohone/AudioMange/AudioMange.h" |
15 | #include "Megaphone/Megaphone.h" | 15 | #include "Megaphone/Megaphone.h" |
16 | 16 | ||
17 | #define AUDIO_DIR "/root/sdcard/audio" | 17 | #define AUDIO_DIR "/root/sdcard/audio" |
@@ -571,7 +571,7 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileStart(char *FileName) | @@ -571,7 +571,7 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileStart(char *FileName) | ||
571 | return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | 571 | return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; |
572 | } | 572 | } |
573 | 573 | ||
574 | - g_AudioFile_SaveAudioFile_NameFp = fopen(SAVE_FILE_DIR, "w"); | 574 | + g_AudioFile_SaveAudioFile_NameFp = fopen(SAVE_FILE_DIR, "wb"); |
575 | if (g_AudioFile_SaveAudioFile_NameFp == NULL) | 575 | if (g_AudioFile_SaveAudioFile_NameFp == NULL) |
576 | { | 576 | { |
577 | JZSDK_LOG_INFO("上传audio文件创建失败"); | 577 | JZSDK_LOG_INFO("上传audio文件创建失败"); |
Module/Megaphone/opus/OpusFile/OpusFile.c
0 → 100644
1 | +#include <stdio.h> | ||
2 | +#include <stdlib.h> | ||
3 | +#include <string.h> | ||
4 | +#include <pthread.h> | ||
5 | +#include <dirent.h> | ||
6 | +#include <sys/stat.h> | ||
7 | + | ||
8 | +#include "JZsdkLib.h" | ||
9 | +#include "Megaphone/AudioMange/AudioMange.h" | ||
10 | + | ||
11 | +#define OPUS_DIR "/root/sdcard/opus" | ||
12 | + | ||
13 | +//创建一个opus节点 | ||
14 | +static struct AudioMange_Node *g_OpusList = NULL; | ||
15 | +static struct AudioMange_Node *g_OpusListtail = NULL; // 用于跟踪链表的尾部 | ||
16 | + | ||
17 | +static int g_OpusListNum = 0; //用于记录链表中的节点数量 | ||
18 | +static int g_OpusList_CurrentNum = 0; //用于记录链表中当前节点位置 | ||
19 | + | ||
20 | +/********* | ||
21 | + * | ||
22 | + * opus文件链表注销 | ||
23 | + * | ||
24 | +**********/ | ||
25 | +static T_JZsdkReturnCode OpusFile_FreeAudioList() | ||
26 | +{ | ||
27 | + //清空尾部指针 | ||
28 | + g_OpusListtail = NULL; | ||
29 | + | ||
30 | + //清空歌曲数量 | ||
31 | + g_OpusListNum = 0; //记录链表中一共有几首歌 | ||
32 | + g_OpusList_CurrentNum = 0; //记录播放当前第几首歌 | ||
33 | + | ||
34 | + //释放掉整个链表 | ||
35 | + Jzsdk_Free_AndioMange_Node(&g_OpusList); | ||
36 | + | ||
37 | + g_OpusList = NULL; | ||
38 | + | ||
39 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
40 | +} | ||
41 | + | ||
42 | +/********* | ||
43 | + * | ||
44 | + * opus文件链表刷新 | ||
45 | + * | ||
46 | +**********/ | ||
47 | +T_JZsdkReturnCode OpusFile_FlushList() | ||
48 | +{ | ||
49 | + //读取audio文件夹,并将歌曲名放入音频列表 | ||
50 | + DIR *dir; | ||
51 | + struct dirent *entry; | ||
52 | + struct stat fileStat; | ||
53 | + | ||
54 | + //创建一个临时opus节点 | ||
55 | + struct AudioMange_audio_struct OpusInfo; | ||
56 | + T_JZsdkReturnCode ret; | ||
57 | + | ||
58 | + //检查是否存在opus文件夹,没有则创建一个 | ||
59 | + if(JZsdk_check_directory_exists_posix(OPUS_DIR) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
60 | + { | ||
61 | + JZSDK_LOG_ERROR("不存在opus文件夹,创建一个"); | ||
62 | + JZsdk_Osal_Mkdir(OPUS_DIR); | ||
63 | + } | ||
64 | + | ||
65 | + //确定音频文件夹存在 | ||
66 | + if ((dir = opendir(OPUS_DIR)) == NULL) | ||
67 | + { | ||
68 | + JZSDK_LOG_ERROR("音频文件夹获取失败"); | ||
69 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
70 | + } | ||
71 | + | ||
72 | + //查看歌曲存放链表是否有注册过 | ||
73 | + if (g_OpusList != NULL) | ||
74 | + { | ||
75 | + OpusFile_FreeAudioList(); | ||
76 | + } | ||
77 | + | ||
78 | + | ||
79 | + while ((entry = readdir(dir)) != NULL) | ||
80 | + { | ||
81 | + const unsigned char *filename = entry->d_name; | ||
82 | + unsigned int fileSize; | ||
83 | + int len = strlen(filename); | ||
84 | + | ||
85 | + // // 获取文件状态信息,包括大小 | ||
86 | + // if (stat(filename, &fileStat) == 0) | ||
87 | + // { | ||
88 | + // fileSize = (unsigned long long)fileStat.st_size; | ||
89 | + // } | ||
90 | + // else | ||
91 | + // { | ||
92 | + // JZSDK_LOG_ERROR("%s文件信息获取错误",filename); | ||
93 | + // fileSize = 0; | ||
94 | + // continue; | ||
95 | + // } | ||
96 | + | ||
97 | + // 跳过目录和隐藏文件,并检查文件扩展名 | ||
98 | + if (entry->d_type != DT_DIR && strcmp(filename, ".") != 0 && strcmp(filename, "..") != 0) | ||
99 | + { | ||
100 | + //printf("获取到%s\n",filename); | ||
101 | + | ||
102 | + // 检查后缀 | ||
103 | + if (JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".opus") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
104 | + { | ||
105 | + // 处理文件 | ||
106 | + memset(&OpusInfo, 0, sizeof(OpusInfo)); // 清除audioInfo结构 | ||
107 | + | ||
108 | + //写入文件名 | ||
109 | + strncpy(OpusInfo.FileName, entry->d_name, JZSDK_FILENAME_SIZE); | ||
110 | + | ||
111 | + unsigned char fileDir [256]; | ||
112 | + snprintf(fileDir, sizeof(fileDir), "/root/sdcard/opus/%s", filename); | ||
113 | + | ||
114 | + //写入文件大小 | ||
115 | + JZsdk_Fs_ReadFileSize(fileDir, &(OpusInfo.FileSize)); | ||
116 | + | ||
117 | + //根据文件大小写入时长信息 | ||
118 | + //int temp_time = (OpusInfo.FileSize * 8) / (16000 * 16 * 1); #这条是pcm算时长,超准确 | ||
119 | + int temp_time = (OpusInfo.FileSize * 8) / (16000); | ||
120 | + OpusInfo.Time = temp_time; | ||
121 | + | ||
122 | + //写入文件名长度 | ||
123 | + OpusInfo.FileNameLen = len; | ||
124 | + | ||
125 | + // 创建新节点 | ||
126 | + struct AudioMange_Node *newNode = NULL; | ||
127 | + ret = Jzsdk_Create_AndioMange_Node(&newNode, OpusInfo); | ||
128 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
129 | + { | ||
130 | + JZSDK_LOG_ERROR("存放音乐 %s 失败", entry->d_name); | ||
131 | + continue; | ||
132 | + } | ||
133 | + | ||
134 | + // 将新节点添加到链表末尾 | ||
135 | + Jzsdk_AddAudioNodeToCircularList(&g_OpusList, &g_OpusListtail, &newNode); | ||
136 | + | ||
137 | + // 歌曲计数+1 | ||
138 | + g_OpusListNum++; | ||
139 | + } | ||
140 | + } | ||
141 | + } | ||
142 | + | ||
143 | + closedir(dir); | ||
144 | + | ||
145 | + //设置默认播放歌曲 | ||
146 | + g_OpusList_CurrentNum = 0; | ||
147 | + | ||
148 | + //打印一遍已加载的音乐 | ||
149 | + JZsdk_PrintfAuidoNode_AudioList(g_OpusList); | ||
150 | + | ||
151 | + JZSDK_LOG_INFO("刷新opus列表已完成"); | ||
152 | + | ||
153 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
154 | +} | ||
155 | + | ||
156 | + | ||
157 | + | ||
158 | + | ||
159 | + | ||
160 | + | ||
161 | + | ||
162 | + | ||
163 | + | ||
164 | +/********* | ||
165 | + * | ||
166 | + * opus文件初始化 | ||
167 | + * | ||
168 | +**********/ | ||
169 | +T_JZsdkReturnCode Megaphone_OpusFile_Init() | ||
170 | +{ | ||
171 | + //刷新opus列表 | ||
172 | + OpusFile_FlushList(); | ||
173 | +} |
1 | +#include <stdio.h> | ||
2 | +#include "JZsdkLib.h" | ||
3 | + | ||
4 | +static int g_OpusFile_SaveLen = 0; | ||
5 | +static FILE *g_OpusFile_SaveFp = NULL; | ||
6 | +static int g_OpusFile_SaveFlag = JZ_FLAGCODE_OFF; | ||
7 | + | ||
8 | +#define OPUS_FILE_DIR "/root/sdcard/opus" | ||
9 | +#define OPUS_TEMP_SAVE_DIR "/root/opusFileTemp.opus" | ||
10 | +static unsigned char opus_SaveFile[128]; | ||
11 | + | ||
12 | +/****************** | ||
13 | + * | ||
14 | + * | ||
15 | + * 开始存储opus文件 | ||
16 | + * | ||
17 | + * | ||
18 | + * **********************/ | ||
19 | +T_JZsdkReturnCode OpusFile_SaveOpusFileStart(unsigned char *FileName) | ||
20 | +{ | ||
21 | + g_OpusFile_SaveLen = 0; | ||
22 | + | ||
23 | + memset(opus_SaveFile, 0, sizeof(opus_SaveFile)); | ||
24 | + sprintf(opus_SaveFile, "%s/%s",OPUS_FILE_DIR, FileName); | ||
25 | + | ||
26 | + JZSDK_LOG_INFO("上传的opus文件存储路径为:%s", opus_SaveFile); | ||
27 | + | ||
28 | + if (g_OpusFile_SaveFp != NULL) | ||
29 | + { | ||
30 | + JZSDK_LOG_ERROR("要保存的opus文件已经打开,请先关闭保存功能"); | ||
31 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
32 | + } | ||
33 | + | ||
34 | + g_OpusFile_SaveFp = fopen(OPUS_TEMP_SAVE_DIR, "wb"); | ||
35 | + if (g_OpusFile_SaveFp == NULL) | ||
36 | + { | ||
37 | + JZSDK_LOG_ERROR("打开opus文件失败"); | ||
38 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
39 | + } | ||
40 | + | ||
41 | + g_OpusFile_SaveFlag = JZ_FLAGCODE_ON; | ||
42 | + | ||
43 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
44 | +} | ||
45 | + | ||
46 | +/****************** | ||
47 | + * | ||
48 | + * | ||
49 | + * 存储opus流中 | ||
50 | + * | ||
51 | + * | ||
52 | + * **********************/ | ||
53 | +T_JZsdkReturnCode OpusFile_SaveOpusFileStream(unsigned char *Stream, int StreamLen) | ||
54 | +{ | ||
55 | + if (g_OpusFile_SaveFlag == JZ_FLAGCODE_OFF) | ||
56 | + { | ||
57 | + JZSDK_LOG_ERROR("没有打开opus文件保存功能"); | ||
58 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
59 | + } | ||
60 | + | ||
61 | + if (g_OpusFile_SaveFp == NULL) | ||
62 | + { | ||
63 | + JZSDK_LOG_ERROR("要保存的opus文件未打开"); | ||
64 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
65 | + } | ||
66 | + | ||
67 | + fseek(g_OpusFile_SaveFp, g_OpusFile_SaveLen, SEEK_SET); | ||
68 | + int writeLen = fwrite(Stream, 1, StreamLen, g_OpusFile_SaveFp); | ||
69 | + if (writeLen != StreamLen) | ||
70 | + { | ||
71 | + JZSDK_LOG_ERROR("opus文件写入失败"); | ||
72 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
73 | + } | ||
74 | + | ||
75 | + g_OpusFile_SaveLen += StreamLen; | ||
76 | + | ||
77 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
78 | +} | ||
79 | + | ||
80 | +/****************** | ||
81 | + * | ||
82 | + * | ||
83 | + * 结束存储opus文件 | ||
84 | + * | ||
85 | + * | ||
86 | + * **********************/ | ||
87 | +T_JZsdkReturnCode OpusFile_SaveOpusFileEnd() |
-
请 注册 或 登录 后发表评论