//audio task void AudioTask() { OS_STATUS os_status; UBYTE os_err; AUDIO_STATUS audio; USHORT actualflagmask; GBOOL audioStatus = GFALSE; U8 tsInput; U32 rx,wx; U32 offset; OSSemPend(driver_sync_sem, 0, &os_err); /* Do initialisation that requires the OS to be running or interrupts enabled*/ /* None of the Core/Verifier or Application tasks are running */ OSSemPost(driver_sync_sem); tsInput = GH_BM_getm_ReadEnable_HW_BUF_SEL(); if(tsInput == GD_TSD_2) offset = GH_BM2_get_BufferSize(GD_TSD_AUDIO_PES); else offset = GH_BM1_get_BufferSize(GD_TSD_AUDIO_PES); while(1) { os_status = OSFlagPend(eventflagmask, eventflagtype, 0, &actualflagmask); //SYS_DEBUG_INFO(DEBL0_NSTR, (CSTR*)"8 actualflagmask ",actualflagmask,0,0); if((actualflagmask&AUDIO_FILE_PLAYED) == AUDIO_FILE_PLAYED) { OSFlagClear(eventflagmask, &actualflagmask); SYS_DEBUG_INFO(DEBL0_NSTR, (CSTR*)"8 actualflagmask1 ",actualflagmask,0,0); while(dataIndex < memDataSize) { OSTimeDly(50); GD_TSD_GetBufferPointer(GD_TSD_AUDIO_PES, tsInput, &rx, &wx); GHA_ResumeFeedData(memDataAddr, memDataSize, &dataIndex, &lastDataIndex, &pesLen, wx, rx-1); if(rx == 0) wx =offset; else wx =rx-1; if(tsInput == GD_TSD_2 ) GH_BM2_set_BufferWritePointer(GD_TSD_AUDIO_PES, wx); else GH_BM1_set_BufferWritePointer(GD_TSD_AUDIO_PES, wx); } if(soundFileFlag == AUDIO_PLAYED) { //OSQPostToCore(HDI_PL_AUDIO_FILE_COMPLETED_XT, (void*)&loadcompleted, sizeof(HDI_PL_AUDIO_FILE_COMPLETED_XT)); SYS_DEBUG_INFO(DEBL0_NSTR, (CSTR*)"8 loadcompleted.event_qualifier: ",loadcompleted.event_qualifier,0,0); } soundFileFlag = AUDIO_COMPLETED; GD_AUD_Stop(); GD_AUD_Close(); if(audioStatus == GTRUE) { HDIStartAudio(); SYS_DEBUG_INFO(DEBL0_NSTR, (CSTR*)" start audio",0,0,0); } } else if((actualflagmask&AUDIO_FILE_STOPPED) == AUDIO_FILE_STOPPED) { OSFlagClear(eventflagmask, &actualflagmask); SYS_DEBUG_INFO(DEBL0_NSTR, (CSTR*)"8 actualflagmask2 ",actualflagmask,0,0); SYS_DEBUG_INFO(DEBL0_NSTR, (CSTR*)"8 loadcompleted.event_qualifier: ",loadcompleted.event_qualifier,0,0); } else if((actualflagmask&AUDIO_STATUS_STARTED) == AUDIO_STATUS_STARTED) { OSFlagClear(eventflagmask, &actualflagmask); SYS_DEBUG_INFO(DEBL0_NSTR, (CSTR*)"8 actualflagmask3 ",actualflagmask,0,0); if(audioStatus == GFALSE) { audioStatus = GTRUE; aoparameter.change_mask |= 0x01; aoparameter.audio_state.state = AUDIO_RUNNING; audio.standard_id = MPEG; audio.parameters.mpeg_status.layer = aoparameter.audio_state.parameters.mpeg_status.layer; audio.parameters.mpeg_status.bitrate_index = aoparameter.audio_state.parameters.mpeg_status.bitrate_index; audio.parameters.mpeg_status.sampling_frequency = aoparameter.audio_state.parameters.mpeg_status.sampling_frequency; audio.parameters.mpeg_status.mode = aoparameter.audio_state.parameters.mpeg_status.mode; audio.parameters.mpeg_status.emphasis = aoparameter.audio_state.parameters.mpeg_status.emphasis; OSTimeDly(30); HDIGetAudioStatus(&audio); SYS_DEBUG_INFO(DEBL0_NSTR, (CSTR*)"8 aoparameter.change_mask ",aoparameter.change_mask,0,0); if((aoparameter.audio_state.parameters.mpeg_status.layer!=audio.parameters.mpeg_status.layer)|| (aoparameter.audio_state.parameters.mpeg_status.bitrate_index!=audio.parameters.mpeg_status.bitrate_index)|| (aoparameter.audio_state.parameters.mpeg_status.sampling_frequency!=audio.parameters.mpeg_status.sampling_frequency)|| (aoparameter.audio_state.parameters.mpeg_status.mode!=audio.parameters.mpeg_status.mode)|| (aoparameter.audio_state.parameters.mpeg_status.emphasis!=audio.parameters.mpeg_status.emphasis)) { aoparameter.change_mask |= 0x04; aoparameter.audio_state.parameters.mpeg_status.layer = audio.parameters.mpeg_status.layer; aoparameter.audio_state.parameters.mpeg_status.bitrate_index = audio.parameters.mpeg_status.bitrate_index; aoparameter.audio_state.parameters.mpeg_status.sampling_frequency = audio.parameters.mpeg_status.sampling_frequency; aoparameter.audio_state.parameters.mpeg_status.mode = audio.parameters.mpeg_status.mode; aoparameter.audio_state.parameters.mpeg_status.emphasis = audio.parameters.mpeg_status.emphasis; } //OSQPostToCore(HDI_EV_AUDIO_STATUS_CHANGED, (void*)&aoparameter, sizeof(HDI_PL_AUDIO_STATUS_CHANGED_XT)); } aoparameter.change_mask = 0; } else if((actualflagmask&AUDIO_STATUS_STOPPED) == AUDIO_STATUS_STOPPED) { OSFlagClear(eventflagmask, &actualflagmask); SYS_DEBUG_INFO(DEBL0_NSTR, (CSTR*)"8 actualflagmask4 ",actualflagmask,0,0); if(audioStatus == GTRUE) { audioStatus = GFALSE; aoparameter.change_mask |= 0x01; aoparameter.audio_state.state = AUDIO_STOPPED; //OSQPostToCore(HDI_EV_AUDIO_STATUS_CHANGED, (void*)&aoparameter, sizeof(HDI_PL_AUDIO_STATUS_CHANGED_XT)); } aoparameter.change_mask = 0; } else if((actualflagmask&AUDIO_TUNER_RECONNECTED) == AUDIO_TUNER_RECONNECTED) { OSFlagClear(eventflagmask, &actualflagmask); SYS_DEBUG_INFO(DEBL0_NSTR, (CSTR*)"8 actualflagmask5 ",actualflagmask,0,0); if(audioStatus == GTRUE) { audioStatus = GFALSE; aoparameter.change_mask |= 0x01; aoparameter.audio_state.state = AUDIO_STOPPED; //OSQPostToCore(HDI_EV_AUDIO_STATUS_CHANGED, (void*)&aoparameter, sizeof(HDI_PL_AUDIO_STATUS_CHANGED_XT)); } } else if((actualflagmask&AUDIO_TUNER_REMOVED) == AUDIO_TUNER_REMOVED) { OSFlagClear(eventflagmask, &actualflagmask); SYS_DEBUG_INFO(DEBL0_NSTR, (CSTR*)"8 actualflagmask6 ",actualflagmask,0,0); if(audioStatus == GFALSE) { audioStatus = GTRUE; aoparameter.change_mask |= 0x01; aoparameter.audio_state.state = AUDIO_RUNNING; //OSQPostToCore(HDI_EV_AUDIO_STATUS_CHANGED, (void*)&aoparameter, sizeof(HDI_PL_AUDIO_STATUS_CHANGED_XT)); } } } }
void UserMain(void * pd) { int x; DWORD flag = 0; int cnt; InitializeStack(); GetDHCPAddressIfNecessary(); if (EthernetIP == 0) GetDHCPAddress(); OSChangePrio(MAIN_PRIO); EnableAutoUpdate(); #ifdef _DEBUG /* InitializeNetworkGDB_and_Wait(); */ InitializeNetworkGDB(); #endif /* note, this may not work in all cases. 1) all systems might boot at the same time 2) when they get to this point, they may not have an ip yet */ /* init our acn stack */ acn_port_protect_startup(); #if CONFIG_NSK srand(GetPreciseTime() + netx_getmyip(0)); netx_init(); netx_startup(); #endif #if CONFIG_SLP slp_init(); slp_open(); slp_active_discovery_start(); #endif #if CONFIG_RLP rlp_init(); #if CONFIG_SDT sdt_init(); /* indirectly calls sdtm_init(), rlp_init(), rlpm_init() */ sdt_startup(true); #endif #if CONFIG_DMP /* dmp_startup(); */ #endif #endif /* RLP */ CreateTasks(); x = OSChangePrio( DEBUG_TERM_PRIORITY ); if (x) { PRINTF("%s","OUCH\n"); } PRINTF("%s","Hello ACN World\n"); ioctl( 0, IOCTL_CLR | IOCTL_RX_ECHO ); /* turn sdtin echo off */ process_keys(); /* shut things down - these require the threads to continue run... */ #if CONFIG_SDT sdt_shutdown(); #endif #if CONFIG_SLP slp_close(); #endif #if CONFIG_DMP /* dmp_shutdown() */ #endif /* shut down receive thread */ OSFlagClear(&recv_flag, 1); PRINTF("%s","Waiting for task to recv to shut down.."); cnt = 0; flag = 0; while (!flag) { cnt++; if (cnt == 80) { cnt = 0; PRINTF("%s","\n"); } PRINTF("%s","."); flag = OSFlagState(&recv_flag); } /* shut down tick thread */ OSFlagClear(&tick_flag, 1); PRINTF("%s","Waiting for task to tick to shut down.."); cnt = 0; flag = 0; while (!flag) { cnt++; if (cnt == 80) { cnt = 0; PRINTF("%s","\n"); } PRINTF("%s","."); flag = OSFlagState(&tick_flag); } #if CONFIG_NSK netx_shutdown(); #endif acn_port_protect_shutdown(); slp_stats(); sdt_stats(); PRINTF("%s","========================\n"); PRINTF("%s","\nDone....\n"); while (1) { OSTimeDly(20); } }