/** Copies data in memory. Copies data in memory. @param[out] dst Pointer to the destination memory @param[in] src Pointer to the source memory @param[in] size size of data to be copied @return None. @sa bam_osal_malloc. */ void bam_osal_memcpy(void *dst, void* src, uint32 size) { #ifdef BAM_MBA memcpy(dst, src, size); #else DALSYS_memcpy(dst, src, size); #endif }
AUDIO_FTM_STS_T audio_ftm_toneplay_attach ( void *pParam, /* Input: parameters */ AUDIO_FTM_DRIVER_HANDLE_T *pDriverHdl /* Output: driver handle */ ) { /************* Context creation ***********/ Aud_FTM_DevCtxt_T *pDeviceCtxt; Aud_FTM_DrvCtxt_T *pDriverCtxt; Aud_FTM_HW_INIT_PARAM_T hw_param; int16 freq1,freq2, sampling_freq; AUDIO_FTM_STS_T sts; if (g_bDriverInitialized) { DALSYS_Log_Err("%s: error: already initialized\n", __func__); return AUDIO_FTM_ERROR; // already inited, } DALSYS_Log_Info("Attach TonePlay Driver\n"); /****************** create context object ******************/ if((DAL_SUCCESS != DALSYS_Malloc(sizeof(Aud_FTM_DevCtxt_T), (void **)&pDeviceCtxt)) || (pDeviceCtxt == NULL)) { DALSYS_Log_Err("Memory allocation fail\n"); return AUDIO_FTM_ERR_MEM_ALLOC_FAIL; } DALSYS_memset(pDeviceCtxt,0,sizeof(Aud_FTM_DevCtxt_T)); if((DAL_SUCCESS != DALSYS_Malloc(sizeof(Aud_FTM_DrvCtxt_T), (void **)&pDriverCtxt)) || (pDriverCtxt == NULL)) { DALSYS_Log_Err("Memory allocation fail\n"); DALSYS_Free(pDeviceCtxt); return AUDIO_FTM_ERR_MEM_ALLOC_FAIL; } DALSYS_memset(pDriverCtxt,0,sizeof(Aud_FTM_DevCtxt_T)); DALSYS_atomic_init(&pDriverCtxt->dwOpenCount); pDriverCtxt->pDevCtxt=pDeviceCtxt; pDeviceCtxt->pDrvCtxt=pDriverCtxt; /************* Create Critical Section ***********/ if(DAL_SUCCESS != DALSYS_SyncCreate(DALSYS_SYNC_ATTR_RESOURCE, &(pDriverCtxt->hClientSync), NULL)) { DALSYS_Log_Err("hClientSync creation fail\n"); return AUDIO_FTM_ERROR; } if(DAL_SUCCESS != DALSYS_EventCreate(DALSYS_EVENT_ATTR_WORKLOOP_EVENT, //Not used for work loops &(pDriverCtxt->hReq_Data_Event), //Return event handle NULL)) { DALSYS_Log_Err("%s: failed to create event\n", __func__); DALSYS_SyncLeave(pDriverCtxt->hClientSync); DALSYS_Free(pDriverCtxt->hClientSync); return AUDIO_FTM_ERROR; } /************* hardware initialization ***********/ DALSYS_memcpy((uint8*)&(pDriverCtxt->client_param), (uint8*)pParam, sizeof(AUD_FTM_TONE_PLAY_PARAM_T)); hw_param.inpath=AUDIO_FTM_IN_INVALID; hw_param.outpath=pDriverCtxt->client_param.path.outpath; hw_param.rate=AUDIO_FTM_PCM_RATE_8K; hw_param.width=AUDIO_FTM_BIT_WIDTH_16; hw_param.channel=AUDIO_FTM_CHN_1; hw_param.gain=pDriverCtxt->client_param.gain; hw_param.bLoopbackCase=FALSE; sts=aud_ftm_hw_init(pDeviceCtxt, &hw_param); if(sts != AUDIO_FTM_SUCCESS) { DALSYS_Log_Err("%s: failed to init hw\n", __func__); return AUDIO_FTM_ERROR; } /* Tone generator init */ freq1=((AUD_FTM_TONE_PLAY_PARAM_T*)pParam)->dtmf_low; freq2=((AUD_FTM_TONE_PLAY_PARAM_T*)pParam)->dtmf_hi; sampling_freq=8000; audio_ftm_dtmf_tone_init(&(pDriverCtxt->dtmfGen),freq1,freq2,sampling_freq); pDriverCtxt->nDTMF_Gain = vol_map[3]; /***** end of Init *****/ pDriverCtxt->bOpened=FALSE; g_bDriverInitialized=TRUE; *pDriverHdl=(AUDIO_FTM_DRIVER_HANDLE_T)pDriverCtxt; return AUDIO_FTM_SUCCESS; }