/**************************************************************************** NAME usbFileName DESCRIPTION Get file name from USB root RETURNS void */ static void usbFileName(usb_file_info* root, usb_file_name_info* result) { Source source = StreamFileSource(root->index); usb_file_name* file = (usb_file_name*)SourceMap(source); result->size = 0; if(file) { memmove(result->name, file->name, USB_NAME_SIZE); for(result->size = 0; result->size < USB_NAME_SIZE; result->size++) if(file->name[result->size] == ' ') break; *(result->name + result->size) = '.'; result->size++; memmove(result->name + result->size, file->ext, USB_EXT_SIZE); result->size += USB_EXT_SIZE; SourceClose(source); } #ifdef DEBUG_USB { uint8 count; USB_DEBUG(("USB: File Name ")); for(count = 0; count < result->size; count++) USB_DEBUG(("%c", result->name[count])); USB_DEBUG(("\n")); } #endif }
/**************************************************************************** NAME usbFileInfo DESCRIPTION Get file info (index and size) for a given file name. RETURNS void */ static void usbFileInfo(const char* name, uint8 size_name, usb_file_info* info) { Source source; info->index = FileFind(FILE_ROOT, name, size_name); source = StreamFileSource(info->index); info->size = SourceSize(source); SourceClose(source); }
/************************************************************************* NAME InitPreAmp DESCRIPTION Enable the Pre Amp if configured to do so channel contains the audio channel that you want to enable the pre amp on RETURNS */ static void initPreAmp( audio_channel channel ) { Source source = NULL ; source = StreamAudioSource(AUDIO_HARDWARE_CODEC, AUDIO_INSTANCE_0, channel); if( ((channel == AUDIO_CHANNEL_A) && (theSink.conf1->PIOIO.digital.mic_a.pre_amp)) || ((channel == AUDIO_CHANNEL_B)&& (theSink.conf1->PIOIO.digital.mic_b.pre_amp)) ) { /* Use the microphone pre-amp */ if(!SourceConfigure(source, STREAM_CODEC_MIC_INPUT_GAIN_ENABLE,TRUE )) { INIT_DEBUG(("INIT: Init Pre Amp FAIL [%x]\n" , (int)channel )) ; } } /* Close the Source*/ SourceClose(source); }
/** * @brief Free the resources used in the reading fixed file module. * * Process flow * -# Release self->buffer * * @param void * @return void */ static int64 BinaryParserTerm(BinaryParser *self) { int64 skip; skip = self->offset; if (self->source) SourceClose(self->source); if (self->buffer) pfree(self->buffer); if (self->fields) pfree(self->fields); FilterTerm(&self->filter); TupleFormerTerm(&self->former); pfree(self); return skip; }
void A2dpStartKalimbaStreaming(const A2DP *a2dp, uint16 media_sink) { FILE_INDEX index = FILE_NONE; #ifdef BUILD_FOR_23FW Transform t; #else Transform t, l_t, r_t; Source l_src = StreamAudioSource(AUDIO_HARDWARE_CODEC, AUDIO_INSTANCE_0, AUDIO_CHANNEL_A); Source r_src = StreamAudioSource(AUDIO_HARDWARE_CODEC, AUDIO_INSTANCE_1, AUDIO_CHANNEL_B); Sink l_snk = StreamAudioSink(AUDIO_HARDWARE_CODEC, AUDIO_INSTANCE_0, AUDIO_CHANNEL_A); Sink r_snk = StreamAudioSink(AUDIO_HARDWARE_CODEC, AUDIO_INSTANCE_1, AUDIO_CHANNEL_B); #endif /* load SBC codec */ index = FileFind(FILE_ROOT, sbc_encoder, sizeof(sbc_encoder)-1); if (!KalimbaLoad(index)) /* codec load failure, Panic as the test isn't going to work now */ Panic(); /* Init and configure RTP */ t = TransformRtpSbcEncode(StreamKalimbaSource(0), (Sink)media_sink); TransformConfigure(t, VM_TRANSFORM_RTP_SBC_ENCODE_PACKET_SIZE, 668); TransformConfigure(t, VM_TRANSFORM_RTP_SBC_ENCODE_MANAGE_TIMING, FALSE); (void)TransformStart(t); /* Configure SBC encoding format */ (void)PanicFalse(KalimbaSendMessage(KALIMBA_MSG_SBCENC_SET_PARAMS, 0x00bd, 0, 0, 0)); (void)PanicFalse(KalimbaSendMessage(KALIMBA_MSG_SBCENC_SET_BITPOOL, 0x0030, 0, 0, 0)); #ifdef BUILD_FOR_23FW StreamDisconnect(StreamPcmSource(0), StreamPcmSink(0)); StreamDisconnect(StreamPcmSource(1), StreamPcmSink(1)); /* set up ADCs */ (void)PcmClearAllRouting(); (void)PanicFalse(PcmRateAndRoute(0, PCM_NO_SYNC, 44100, 44100, VM_PCM_INTERNAL_A)); (void)PanicFalse(PcmRateAndRoute(1, 0, 44100, 44100, VM_PCM_INTERNAL_B)); (void)PanicFalse(StreamConnect(StreamPcmSource(0),StreamKalimbaSink(0))); (void)PanicFalse(StreamConnect(StreamPcmSource(1),StreamKalimbaSink(1))); #else SourceClose(l_src); SourceClose(r_src); SinkClose(l_snk); SinkClose(r_snk); (void) SourceConfigure(l_src, STREAM_CODEC_INPUT_RATE, 44100); (void) SourceConfigure(r_src, STREAM_CODEC_INPUT_RATE, 44100); (void) SourceSynchronise(l_src, r_src); /* set up ADCs */ l_t = StreamConnect(l_src, StreamKalimbaSink(0)); r_t = StreamConnect(r_src, StreamKalimbaSink(1)); (void)TransformStart(l_t); (void)TransformStart(r_t); #endif /* Start decode */ (void) PanicFalse(KalimbaSendMessage(KALIMBA_MSG_GO,0,0,0,0)); }
/**************************************************************************** DESCRIPTION Plays back a voice prompt once DSP has loaded */ static Source csrVoicePresencesGetPrompt(voice_prompt* prompt, koovox_phrase_data_T * pData) { const uint8* rx_array; Source lSource = NULL; uint16 index; char file_name[17]; PRINT(("***check_the_source***\n")); if(!pData) return NULL; /* Must be a prompt, work out the index of the prompt */ index = pData->prompt_id; /* Adjust for language */ index += (pData->language * present_header.no_prompts_per_lang); PRINT(("***check prompt id***\n")); /* Sanity checking */ if(index >= present_header.no_prompts || !prompt ) return NULL; PRINT(("PRESENT: Play prompt %d of %d\n", index+1, present_header.no_prompts)); /* Get the header file name */ sprintf(file_name, "headers/%d.idx", index); lSource = StreamFileSource(FileFind(FILE_ROOT, file_name, strlen(file_name))); /* Check source created successfully */ if(SourceSize(lSource) < SIZE_PROMPT_DATA) { /* Finished with header source, close it */ SourceClose(lSource); return NULL; } /* Map in header */ rx_array = SourceMap(lSource); /* Pack data into result */ /* rx_array[0] not used*/ /* rx_array[1] index, not used */ prompt->stereo = rx_array[4]; prompt->size = ((uint32)rx_array[5] << 24) | ((uint32)rx_array[6] << 16) | ((uint16)rx_array[7] << 8) | (rx_array[8]); prompt->decompression = rx_array[9]; prompt->playback_rate = ((uint16)rx_array[10] << 8) | (rx_array[11]); /* The size of the prompt must be limited to 16 bits for I2C and SPI as the firmware traps only support a 16 bit size */ if (prompt->size > PRESENT_MAX_SIZE) { prompt->size = PRESENT_MAX_SIZE; PRINT(("Prompt size adjusted to 16 bit maximum\n")); } /* Get the prompt file name */ sprintf(file_name, "prompts/%d.prm", index); PRINT(("File Prompt: %s dec %X rate 0x%x stereo %u size 0x%lx \n", file_name, prompt->decompression,prompt->playback_rate,prompt->stereo,prompt->size)); /* Finished with header source, close it */ if(!SourceClose(lSource)) Panic(); return StreamFileSource(FileFind(FILE_ROOT, file_name, strlen(file_name))); }