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)
 | |
| 
 | 
