作者 ookk303

音频修改

#include <stdio.h>
#include "./JZsdk_DeviceCode.h"
/*************************
*
* 获取设备名称
*
*
* ************************/
unsigned char *JZsdk_GetDeviceName()
{
return
}
... ...
... ... @@ -63,6 +63,10 @@ typedef enum {
} JZ_CheckCode; //检查校验码
typedef enum {
JZ_ERROR_SYSTEM_MODULE_CODE_NO_UPGRADE_FILE = 0x6000, //没有升级文件
}JZ_Ugrade_ErrorCode;
/* Exported functions --------------------------------------------------------*/
#ifdef __cplusplus
... ...
#include <stdio.h>
#include <pthread.h>
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
#include "JZsdkLib.h"
#include "JZsdk_Hal.h"
T_JZsdkReturnCode HeartBeat_Uart1Check()
{
//1、获取串口1连接状态
//1、获取hal的使用状态
int JZsdk_HalPort_UseFlag(UART_DEV_1);
}
... ... @@ -22,18 +24,18 @@ static void *HeartBeatTask(void *arg)
{
delayS(10);
HeartBeat_Uart1Check();
HeartBeat_HalCheck();
}
}
/*****************
*
* 心跳帧初始化
* 心跳帧主设备类型的初始化
*
*
* *************************/
T_JZsdkReturnCode HeartBeat_Init()
static T_JZsdkReturnCode HeartBeat_Main()
{
pthread_t PowerMangerTask;
pthread_attr_t task_attribute; //线程属性
... ... @@ -48,3 +50,16 @@ T_JZsdkReturnCode HeartBeat_Init()
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*****************
*
* 心跳帧初始化
*
*
* *************************/
T_JZsdkReturnCode HeartBeat_Init()
{
HeartBeat_Main();
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
\ No newline at end of file
... ...
... ... @@ -3,10 +3,13 @@
#include "BaseConfig.h"
#define UPGRADE_FILE_DIR "/root/ugradeFile"
#define UPGRADE_FILE_STATUS_A "/root/ugradeFile/upgrade_status_a"
#define UPGRADE_FILE_STATUS_B "/root/ugradeFile/upgrade_status_b"
#define REMOTE_UPGRADE_FILE_DIR "/root/ugradeFile/remote_ugradeFile.tar"
static int Upgrade_status = JZ_FLAGCODE_OFF;
/************************************
... ... @@ -17,21 +20,30 @@ static int Upgrade_status = JZ_FLAGCODE_OFF;
* *************************************/
T_JZsdkReturnCode Upgrade_PackageParse()
{
//解析升级包
//1、分析是否存在linux自身的升级包
unsigned char upgradeFileName[128];
int upgradeFileNameLen = 0;
//拼接为升级包的名字
memcpy(upgradeFileName, )
T_JZsdkReturnCode ret;
unsigned char cmd[128] = {0};
if (JZsdk_check_file_exists(UPGRADE_FILE_DIR))
//分析是否存在升级包
if (JZsdk_check_file_exists(REMOTE_UPGRADE_FILE_DIR) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("Upgrade_PackageParse: upgrade file not exists");
return JZ_ERROR_SYSTEM_MODULE_CODE_NO_UPGRADE_FILE;
}
//分解升级包
memseyt(cmd, 0, sizeof(cmd));
sprintf(cmd, "tar -xvf %s -C %s", REMOTE_UPGRADE_FILE_DIR, UPGRADE_FILE_DIR);
ret = JZsdk_RunSystemCmd(cmd);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("Upgrade_PackageParse: RunSystemCmd failed");
return ret;
}
//2、分析是否存在其他模块的升级包
//解析升级包
//首先分析本机的升级包
unsigned char upgrade_file_name[128] = {0};
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
... ... @@ -66,7 +78,7 @@ T_JZsdkReturnCode Upgrade_Init()
//检查是否还存在升级包
//
}
... ...
... ... @@ -19,7 +19,7 @@ extern "C" {
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
#include "JZsdkLib.h"
#include "./AudioFile_Param.h"
#include "./AudioMange_Param.h"
/* Exported types ------------------------------------------------------------*/
... ...
... ... @@ -11,7 +11,7 @@
#include "AudioDeal/AudioDealThread/AudioDealThread.h"
#include "./AudioFile_PlayDeal.h"
#include "./AudioMange.h"
#include "Megaohone/AudioMange/AudioMange.h"
#include "Megaphone/Megaphone.h"
#define AUDIO_DIR "/root/sdcard/audio"
... ... @@ -571,7 +571,7 @@ T_JZsdkReturnCode AudioFile_SaveAudioFileStart(char *FileName)
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
g_AudioFile_SaveAudioFile_NameFp = fopen(SAVE_FILE_DIR, "w");
g_AudioFile_SaveAudioFile_NameFp = fopen(SAVE_FILE_DIR, "wb");
if (g_AudioFile_SaveAudioFile_NameFp == NULL)
{
JZSDK_LOG_INFO("上传audio文件创建失败");
... ...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <dirent.h>
#include <sys/stat.h>
#include "JZsdkLib.h"
#include "Megaphone/AudioMange/AudioMange.h"
#define OPUS_DIR "/root/sdcard/opus"
//创建一个opus节点
static struct AudioMange_Node *g_OpusList = NULL;
static struct AudioMange_Node *g_OpusListtail = NULL; // 用于跟踪链表的尾部
static int g_OpusListNum = 0; //用于记录链表中的节点数量
static int g_OpusList_CurrentNum = 0; //用于记录链表中当前节点位置
/*********
*
* opus文件链表注销
*
**********/
static T_JZsdkReturnCode OpusFile_FreeAudioList()
{
//清空尾部指针
g_OpusListtail = NULL;
//清空歌曲数量
g_OpusListNum = 0; //记录链表中一共有几首歌
g_OpusList_CurrentNum = 0; //记录播放当前第几首歌
//释放掉整个链表
Jzsdk_Free_AndioMange_Node(&g_OpusList);
g_OpusList = NULL;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********
*
* opus文件链表刷新
*
**********/
T_JZsdkReturnCode OpusFile_FlushList()
{
//读取audio文件夹,并将歌曲名放入音频列表
DIR *dir;
struct dirent *entry;
struct stat fileStat;
//创建一个临时opus节点
struct AudioMange_audio_struct OpusInfo;
T_JZsdkReturnCode ret;
//检查是否存在opus文件夹,没有则创建一个
if(JZsdk_check_directory_exists_posix(OPUS_DIR) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("不存在opus文件夹,创建一个");
JZsdk_Osal_Mkdir(OPUS_DIR);
}
//确定音频文件夹存在
if ((dir = opendir(OPUS_DIR)) == NULL)
{
JZSDK_LOG_ERROR("音频文件夹获取失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
}
//查看歌曲存放链表是否有注册过
if (g_OpusList != NULL)
{
OpusFile_FreeAudioList();
}
while ((entry = readdir(dir)) != NULL)
{
const unsigned char *filename = entry->d_name;
unsigned int fileSize;
int len = strlen(filename);
// // 获取文件状态信息,包括大小
// if (stat(filename, &fileStat) == 0)
// {
// fileSize = (unsigned long long)fileStat.st_size;
// }
// else
// {
// JZSDK_LOG_ERROR("%s文件信息获取错误",filename);
// fileSize = 0;
// continue;
// }
// 跳过目录和隐藏文件,并检查文件扩展名
if (entry->d_type != DT_DIR && strcmp(filename, ".") != 0 && strcmp(filename, "..") != 0)
{
//printf("获取到%s\n",filename);
// 检查后缀
if (JZsdk_strings_suffix_comparison_withLen((const unsigned char *)filename, len, (const unsigned char *)".opus") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
// 处理文件
memset(&OpusInfo, 0, sizeof(OpusInfo)); // 清除audioInfo结构
//写入文件名
strncpy(OpusInfo.FileName, entry->d_name, JZSDK_FILENAME_SIZE);
unsigned char fileDir [256];
snprintf(fileDir, sizeof(fileDir), "/root/sdcard/opus/%s", filename);
//写入文件大小
JZsdk_Fs_ReadFileSize(fileDir, &(OpusInfo.FileSize));
//根据文件大小写入时长信息
//int temp_time = (OpusInfo.FileSize * 8) / (16000 * 16 * 1); #这条是pcm算时长,超准确
int temp_time = (OpusInfo.FileSize * 8) / (16000);
OpusInfo.Time = temp_time;
//写入文件名长度
OpusInfo.FileNameLen = len;
// 创建新节点
struct AudioMange_Node *newNode = NULL;
ret = Jzsdk_Create_AndioMange_Node(&newNode, OpusInfo);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("存放音乐 %s 失败", entry->d_name);
continue;
}
// 将新节点添加到链表末尾
Jzsdk_AddAudioNodeToCircularList(&g_OpusList, &g_OpusListtail, &newNode);
// 歌曲计数+1
g_OpusListNum++;
}
}
}
closedir(dir);
//设置默认播放歌曲
g_OpusList_CurrentNum = 0;
//打印一遍已加载的音乐
JZsdk_PrintfAuidoNode_AudioList(g_OpusList);
JZSDK_LOG_INFO("刷新opus列表已完成");
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********
*
* opus文件初始化
*
**********/
T_JZsdkReturnCode Megaphone_OpusFile_Init()
{
//刷新opus列表
OpusFile_FlushList();
}
\ No newline at end of file
... ...
#include <stdio.h>
#include "JZsdkLib.h"
static int g_OpusFile_SaveLen = 0;
static FILE *g_OpusFile_SaveFp = NULL;
static int g_OpusFile_SaveFlag = JZ_FLAGCODE_OFF;
#define OPUS_FILE_DIR "/root/sdcard/opus"
#define OPUS_TEMP_SAVE_DIR "/root/opusFileTemp.opus"
static unsigned char opus_SaveFile[128];
/******************
*
*
* 开始存储opus文件
*
*
* **********************/
T_JZsdkReturnCode OpusFile_SaveOpusFileStart(unsigned char *FileName)
{
g_OpusFile_SaveLen = 0;
memset(opus_SaveFile, 0, sizeof(opus_SaveFile));
sprintf(opus_SaveFile, "%s/%s",OPUS_FILE_DIR, FileName);
JZSDK_LOG_INFO("上传的opus文件存储路径为:%s", opus_SaveFile);
if (g_OpusFile_SaveFp != NULL)
{
JZSDK_LOG_ERROR("要保存的opus文件已经打开,请先关闭保存功能");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
g_OpusFile_SaveFp = fopen(OPUS_TEMP_SAVE_DIR, "wb");
if (g_OpusFile_SaveFp == NULL)
{
JZSDK_LOG_ERROR("打开opus文件失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
g_OpusFile_SaveFlag = JZ_FLAGCODE_ON;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/******************
*
*
* 存储opus流中
*
*
* **********************/
T_JZsdkReturnCode OpusFile_SaveOpusFileStream(unsigned char *Stream, int StreamLen)
{
if (g_OpusFile_SaveFlag == JZ_FLAGCODE_OFF)
{
JZSDK_LOG_ERROR("没有打开opus文件保存功能");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
if (g_OpusFile_SaveFp == NULL)
{
JZSDK_LOG_ERROR("要保存的opus文件未打开");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
fseek(g_OpusFile_SaveFp, g_OpusFile_SaveLen, SEEK_SET);
int writeLen = fwrite(Stream, 1, StreamLen, g_OpusFile_SaveFp);
if (writeLen != StreamLen)
{
JZSDK_LOG_ERROR("opus文件写入失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
g_OpusFile_SaveLen += StreamLen;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/******************
*
*
* 结束存储opus文件
*
*
* **********************/
T_JZsdkReturnCode OpusFile_SaveOpusFileEnd()
\ No newline at end of file
... ...