152 lines
3.9 KiB
C
Executable File
152 lines
3.9 KiB
C
Executable File
#include "PrjCfg.h"
|
|
#if (VOICE_MODE == ENABLE)
|
|
#include "ImageApp/ImageApp_Voice.h"
|
|
#include "NamingRule/NameRule_Custom.h"
|
|
#include "GxTime.h"
|
|
#include "UIWnd/UIFlow.h"
|
|
#include "kwrap/debug.h"
|
|
|
|
#define FILE_SN_MAX 999999
|
|
UINT32 g_IAVoiceFileSerialNum = 0;
|
|
|
|
IAVOICE_AUDIO_INFO UIVoice_Audio_Info = {
|
|
.aud_rate = HD_AUDIO_SR_32000,
|
|
.aud_ch = _IAVOICE_CFG_AUDIO_CH_RIGHT,
|
|
.aud_ch_num = 1,
|
|
};
|
|
|
|
static void VoiceExe_FileNamingCB(UINT32 id, char *pFileName)
|
|
{
|
|
static struct tm CurDateTime = {0};
|
|
|
|
g_IAVoiceFileSerialNum ++;
|
|
|
|
if (g_IAVoiceFileSerialNum > FILE_SN_MAX) {
|
|
g_IAVoiceFileSerialNum = FILE_SN_MAX;
|
|
Ux_PostEvent(NVTEVT_CB_MOVIE_FULL, 0);
|
|
}
|
|
|
|
GxTime_GetTime(&CurDateTime);
|
|
snprintf(pFileName, NMC_TOTALFILEPATH_MAX_LEN, "A:\\%04d%02d%02d%02d%02d%02d_%06d.wav",
|
|
CurDateTime.tm_year, CurDateTime.tm_mon, CurDateTime.tm_mday,
|
|
CurDateTime.tm_hour, CurDateTime.tm_min, CurDateTime.tm_sec, g_IAVoiceFileSerialNum);
|
|
}
|
|
|
|
static void VoiceExe_UserEventCb(UINT32 id, IAVOICE_USER_CB_EVENT event_id, UINT32 value)
|
|
{
|
|
switch ((UINT32)event_id) {
|
|
case IAVOICE_USER_CB_EVENT_FILENAMING_CB: {
|
|
CHAR *pFileName = (CHAR *) value;
|
|
// Make custome file name
|
|
VoiceExe_FileNamingCB(id, pFileName);
|
|
break;
|
|
}
|
|
|
|
case IAVOICE_USER_CB_EVENT_APLAY_DONE: {
|
|
Ux_PostEvent(NVTEVT_VOICE_PLAYSTOP, 0);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
INT32 VoiceExe_OnOpen(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
|
|
{
|
|
// update aout drv cfg
|
|
extern HD_PATH_ID gxsound_ctrl_id;
|
|
HD_AUDIOOUT_DRV_CONFIG audio_driver_cfg = {0};
|
|
hd_audioout_get(gxsound_ctrl_id, HD_AUDIOOUT_PARAM_DRV_CONFIG, &audio_driver_cfg);
|
|
UIVoice_Audio_Info.aud_out_mono = audio_driver_cfg.mono;
|
|
UIVoice_Audio_Info.adu_out_type = audio_driver_cfg.output;
|
|
|
|
// Set audio config
|
|
ImageApp_Voice_Config(IAVOICE_CONFIG_AUDIO_INFO, (UINT32)&UIVoice_Audio_Info);
|
|
|
|
// Set user callback
|
|
ImageApp_Voice_RegUserCB(VoiceExe_UserEventCb);
|
|
|
|
// Open ImageApp
|
|
ImageApp_Voice_Open();
|
|
|
|
return NVTEVT_CONSUME;
|
|
}
|
|
|
|
INT32 VoiceExe_OnClose(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
|
|
{
|
|
ImageApp_Voice_Close();
|
|
|
|
return NVTEVT_CONSUME;
|
|
}
|
|
|
|
INT32 VoiceExe_OnRecStart(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
|
|
{
|
|
return NVTEVT_CONSUME;
|
|
}
|
|
|
|
INT32 VoiceExe_OnRecStop(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
|
|
{
|
|
return NVTEVT_CONSUME;
|
|
}
|
|
|
|
INT32 VoiceExe_OnPlay(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
|
|
{
|
|
IAVOICE_AUDIO_PLAY_INFO play_info = {0};
|
|
|
|
if (paramNum > 0) {
|
|
memcpy((VOID *)&play_info, (VOID *)paramArray[0], sizeof(IAVOICE_AUDIO_PLAY_INFO));
|
|
} else {
|
|
DBG_ERR("File handle is not assigned\r\n");
|
|
return NVTEVT_CONSUME;
|
|
}
|
|
ImageApp_Voice_PlayStart(0, &play_info);
|
|
|
|
return NVTEVT_CONSUME;
|
|
}
|
|
|
|
INT32 VoiceExe_OnPlayStop(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
|
|
{
|
|
ImageApp_Voice_PlayStop(0);
|
|
return NVTEVT_CONSUME;
|
|
}
|
|
|
|
INT32 VoiceExe_OnPlayPause(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
|
|
{
|
|
ImageApp_Voice_PlayPause(0);
|
|
return NVTEVT_CONSUME;
|
|
}
|
|
|
|
INT32 VoiceExe_OnPlayResume(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
|
|
{
|
|
ImageApp_Voice_PlayResume(0);
|
|
return NVTEVT_CONSUME;
|
|
}
|
|
|
|
INT32 VoiceExe_OnPlayVolume(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
|
|
{
|
|
UINT32 volume;
|
|
|
|
if (paramNum > 0) {
|
|
volume = paramArray[0];
|
|
ImageApp_Voice_SetParam(0, IAVOICE_PARAM_AUD_AOUT_VOL, volume);
|
|
}
|
|
return NVTEVT_CONSUME;
|
|
}
|
|
|
|
EVENT_ENTRY CustomVoiceObjCmdMap[] =
|
|
{
|
|
{NVTEVT_EXE_OPEN, VoiceExe_OnOpen },
|
|
{NVTEVT_EXE_CLOSE, VoiceExe_OnClose },
|
|
{NVTEVT_VOICE_RECORD, VoiceExe_OnRecStart },
|
|
{NVTEVT_VOICE_RECORDSTOP, VoiceExe_OnRecStop },
|
|
{NVTEVT_VOICE_PLAY, VoiceExe_OnPlay },
|
|
{NVTEVT_VOICE_PLAYSTOP, VoiceExe_OnPlayStop },
|
|
{NVTEVT_VOICE_PLAYPAUSE, VoiceExe_OnPlayPause },
|
|
{NVTEVT_VOICE_PLAYRESUME, VoiceExe_OnPlayResume },
|
|
{NVTEVT_VOICE_PLAYVOLUME, VoiceExe_OnPlayVolume },
|
|
{NVTEVT_NULL, 0 }, //End of Command Map
|
|
};
|
|
|
|
CREATE_APP(CustomVoiceObj,APP_SETUP)
|
|
|
|
#endif // #if (VOICE_MODE == ENABLE)
|
|
|