FreeCalypso > hg > freecalypso-sw
comparison gsm-fw/L1/audio_cfile/l1audio_init.c @ 606:c5286d24539e
gsm-fw/L1/audio_cfile: initial import from LoCosto source
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Fri, 29 Aug 2014 03:25:51 +0000 |
parents | |
children | 3121e35f422c |
comparison
equal
deleted
inserted
replaced
605:527956ce73c7 | 606:c5286d24539e |
---|---|
1 /************* Revision Controle System Header ************* | |
2 * GSM Layer 1 software | |
3 * L1AUDIO_INIT.C | |
4 * | |
5 * Filename l1audio_init.c | |
6 * Copyright 2003 (C) Texas Instruments | |
7 * | |
8 ************* Revision Controle System Header *************/ | |
9 | |
10 /************************************/ | |
11 /* Include files... */ | |
12 /************************************/ | |
13 | |
14 #include "l1_macro.h" | |
15 #include "l1_confg.h" | |
16 | |
17 | |
18 #include "l1_types.h" | |
19 #include "sys_types.h" | |
20 | |
21 #if (CODE_VERSION == SIMULATION) && (AUDIO_SIMULATION) | |
22 | |
23 | |
24 #include <stdlib.h> | |
25 #include <string.h> | |
26 | |
27 #include "iq.h" // Debug / Init hardware ("eva3.lib") | |
28 #include "l1_ver.h" | |
29 #include "l1_const.h" | |
30 #include "l1_signa.h" | |
31 | |
32 #if TESTMODE | |
33 #include "l1tm_defty.h" | |
34 #endif | |
35 | |
36 #include "l1audio_const.h" | |
37 #include "l1audio_cust.h" | |
38 #include "l1audio_defty.h" | |
39 #include "l1audio_msgty.h" | |
40 #include "l1audio_varex.h" | |
41 | |
42 #if (L1_GTT == 1) | |
43 #include "l1gtt_const.h" | |
44 #include "l1gtt_defty.h" | |
45 #endif | |
46 //added here from e-sample for AAC | |
47 #if (L1_DYN_DSP_DWNLD == 1) | |
48 #include "l1_dyn_dwl_const.h" | |
49 #include "l1_dyn_dwl_defty.h" | |
50 #endif | |
51 #if (L1_MP3 == 1) | |
52 #include "l1mp3_defty.h" | |
53 #endif | |
54 | |
55 #if (L1_MIDI == 1) | |
56 #include "l1midi_defty.h" | |
57 #endif | |
58 //added here from e-sample for AAC | |
59 #if (L1_AAC == 1) | |
60 #include "l1aac_defty.h" | |
61 #endif | |
62 #include "l1_defty.h" | |
63 #include "cust_os.h" | |
64 #include "l1_msgty.h" | |
65 #include "l1_varex.h" | |
66 #include "l1_mftab.h" | |
67 #include "l1_tabs.h" | |
68 #include "l1_ctl.h" | |
69 | |
70 #include "l1_time.h" | |
71 #include "l1_scen.h" | |
72 #else // NOT SIMULATION | |
73 | |
74 // Layer1 and debug include files. | |
75 #include <ctype.h> | |
76 #include <math.h> | |
77 #include "l1_ver.h" | |
78 #include "l1_const.h" | |
79 #include "l1_signa.h" | |
80 | |
81 #if TESTMODE | |
82 #include "l1tm_defty.h" | |
83 #endif | |
84 | |
85 #include "l1audio_const.h" | |
86 #include "l1audio_cust.h" | |
87 #include "l1audio_defty.h" | |
88 #include "l1audio_msgty.h" | |
89 #include "l1audio_varex.h" | |
90 | |
91 #if (L1_GTT == 1) | |
92 #include "l1gtt_const.h" | |
93 #include "l1gtt_defty.h" | |
94 #endif | |
95 //added here from e-sample for AAC | |
96 #if (L1_DYN_DSP_DWNLD == 1) | |
97 #include "l1_dyn_dwl_const.h" | |
98 #include "l1_dyn_dwl_defty.h" | |
99 #endif | |
100 #if (L1_MP3 == 1) | |
101 #include "l1mp3_defty.h" | |
102 #endif | |
103 | |
104 #if (L1_MIDI == 1) | |
105 #include "l1midi_defty.h" | |
106 #endif | |
107 //added here from e-sample for AAC | |
108 #if (L1_AAC == 1) | |
109 #include "l1aac_defty.h" | |
110 #endif | |
111 | |
112 #include "l1_defty.h" | |
113 #include "cust_os.h" | |
114 #include "l1_msgty.h" | |
115 #include "tpudrv.h" // TPU drivers. ("eva3.lib") | |
116 #include "l1_varex.h" | |
117 #include "l1_proto.h" | |
118 #include "l1_mftab.h" | |
119 #include "l1_tabs.h" | |
120 #include "mem.h" | |
121 #include "armio.h" | |
122 #include "timer.h" | |
123 #include "timer1.h" | |
124 #include "dma.h" | |
125 #include "inth.h" | |
126 #include "ulpd.h" | |
127 #include "rhea_arm.h" | |
128 #include "clkm.h" // Clockm ("eva3.lib") | |
129 #include "l1_ctl.h" | |
130 #include "l1_time.h" | |
131 | |
132 #if L2_L3_SIMUL | |
133 #include "l1_scen.h" | |
134 #endif | |
135 #endif // NOT_SIMULATION | |
136 | |
137 #if (L1_DRC == 1) | |
138 extern T_DRC_MCU_DSP *drc_ndb; | |
139 #if (CODE_VERSION == SIMULATION) | |
140 extern T_DRC_MCU_DSP drc_ndb_sim; | |
141 #endif | |
142 #endif | |
143 #if(L1_BT_AUDIO ==1) | |
144 extern T_L1_BT_AUDIO bt_audio; | |
145 #endif | |
146 /**************************************/ | |
147 /* Prototypes for L1 initialization */ | |
148 /**************************************/ | |
149 void l1audio_dsp_init (void); | |
150 void l1audio_initialize_var (void); | |
151 | |
152 /**************************************/ | |
153 /* External prototypes */ | |
154 /**************************************/ | |
155 | |
156 /*-------------------------------------------------------*/ | |
157 /* l1audio_dsp_init() */ | |
158 /*-------------------------------------------------------*/ | |
159 /* */ | |
160 /* Parameters : */ | |
161 /* */ | |
162 /* Return : */ | |
163 /* */ | |
164 /* Description : Initialize the part of the API */ | |
165 /* dedicated to the audio task. */ | |
166 /* */ | |
167 /*-------------------------------------------------------*/ | |
168 void l1audio_dsp_init(void) | |
169 { | |
170 UWORD8 i, j; | |
171 | |
172 #if (KEYBEEP) | |
173 l1s_dsp_com.dsp_ndb_ptr->d_k_x1_kt0 = 0; // keybeep variable | |
174 l1s_dsp_com.dsp_ndb_ptr->d_k_x1_kt1 = 0; // keybeep variable | |
175 l1s_dsp_com.dsp_ndb_ptr->d_dur_kb = 0; // keybeep variable | |
176 #endif | |
177 | |
178 #if ((TONE) || (VOICE_MEMO)) | |
179 l1s_dsp_com.dsp_ndb_ptr->d_k_x1_t0 = 0; // tone variable | |
180 l1s_dsp_com.dsp_ndb_ptr->d_k_x1_t1 = 0; // tone variable | |
181 l1s_dsp_com.dsp_ndb_ptr->d_k_x1_t2 = 0; // tone variable | |
182 l1s_dsp_com.dsp_ndb_ptr->d_pe_rep = 0; // tone variable | |
183 l1s_dsp_com.dsp_ndb_ptr->d_pe_off = 0; // tone variable | |
184 l1s_dsp_com.dsp_ndb_ptr->d_se_off = 0; // tone variable | |
185 l1s_dsp_com.dsp_ndb_ptr->d_bu_off = 0; // tone variable | |
186 l1s_dsp_com.dsp_ndb_ptr->d_t0_on = 0; // tone variable | |
187 l1s_dsp_com.dsp_ndb_ptr->d_t0_off = 0; // tone variable | |
188 l1s_dsp_com.dsp_ndb_ptr->d_t1_on = 0; // tone variable | |
189 l1s_dsp_com.dsp_ndb_ptr->d_t1_off = 0; // tone variable | |
190 l1s_dsp_com.dsp_ndb_ptr->d_t2_on = 0; // tone variable | |
191 l1s_dsp_com.dsp_ndb_ptr->d_t2_off = 0; // tone variable | |
192 | |
193 l1s_dsp_com.dsp_ndb_ptr->d_shiftul = 0x100; | |
194 l1s_dsp_com.dsp_ndb_ptr->d_shiftdl = 0x100; | |
195 #endif // (TONE) || (VOICE_MEMO) | |
196 #if (L1_PCM_EXTRACTION) | |
197 l1s_dsp_com.dsp_ndb_ptr->d_pcm_api_upload = 0; | |
198 l1s_dsp_com.dsp_ndb_ptr->d_pcm_api_download = 0; | |
199 l1s_dsp_com.dsp_ndb_ptr->d_pcm_api_error = 0; | |
200 #endif | |
201 | |
202 // Correction of PR G23M/L1_MCU-SPR-15494 | |
203 #if ((CHIPSET == 12) || (CHIPSET == 15)) | |
204 #if (DSP == 35) || (DSP == 36) || (DSP == 37) || (DSP == 38) || (DSP == 39) | |
205 l1s_dsp_com.dsp_ndb_ptr->d_cport_init = 0; | |
206 l1s_dsp_com.dsp_ndb_ptr->d_cport_ctrl = 0; | |
207 l1s_dsp_com.dsp_ndb_ptr->a_cport_cfr[0] = 0; | |
208 l1s_dsp_com.dsp_ndb_ptr->a_cport_cfr[1] = 0; | |
209 l1s_dsp_com.dsp_ndb_ptr->d_cport_tcl_tadt = 0; | |
210 l1s_dsp_com.dsp_ndb_ptr->d_cport_tdat = 0; | |
211 l1s_dsp_com.dsp_ndb_ptr->d_cport_tvs = 0; | |
212 #endif | |
213 #endif | |
214 | |
215 #if (L1_VOICE_MEMO_AMR) | |
216 l1s_dsp_com.dsp_ndb_ptr->d_shiftul = 0x100; | |
217 #endif // L1_VOICE_MEMO_AMR | |
218 | |
219 #if (MELODY_E1) | |
220 l1s_dsp_com.dsp_ndb_ptr->d_melo_osc_used = 0; | |
221 l1s_dsp_com.dsp_ndb_ptr->d_melo_osc_active = 0; | |
222 | |
223 l1s_dsp_com.dsp_ndb_ptr->a_melo_note0[0] = SC_END_OSCILLATOR_MASK; | |
224 l1s_dsp_com.dsp_ndb_ptr->a_melo_note1[0] = SC_END_OSCILLATOR_MASK; | |
225 l1s_dsp_com.dsp_ndb_ptr->a_melo_note2[0] = SC_END_OSCILLATOR_MASK; | |
226 l1s_dsp_com.dsp_ndb_ptr->a_melo_note3[0] = SC_END_OSCILLATOR_MASK; | |
227 l1s_dsp_com.dsp_ndb_ptr->a_melo_note4[0] = SC_END_OSCILLATOR_MASK; | |
228 l1s_dsp_com.dsp_ndb_ptr->a_melo_note5[0] = SC_END_OSCILLATOR_MASK; | |
229 l1s_dsp_com.dsp_ndb_ptr->a_melo_note6[0] = SC_END_OSCILLATOR_MASK; | |
230 l1s_dsp_com.dsp_ndb_ptr->a_melo_note7[0] = SC_END_OSCILLATOR_MASK; | |
231 #endif // MELODY_E1 | |
232 | |
233 // Initialize the FIR as an all band pass | |
234 // IMPORTANT NOTE: FIR/DL parameters are also initialized for DSP 36 when L1_IIR == 1 because | |
235 // in FIR loop mode, the old FIR API is still used | |
236 #if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36) || (DSP == 37) || (DSP == 38) || (DSP == 39)// The FIR coefficents are in param memory | |
237 l1s_dsp_com.dsp_param_ptr->a_fir31_downlink[0] = 0x4000; | |
238 l1s_dsp_com.dsp_param_ptr->a_fir31_uplink[0] = 0x4000; | |
239 #else | |
240 l1s_dsp_com.dsp_ndb_ptr->a_fir31_downlink[0] = 0x4000; | |
241 l1s_dsp_com.dsp_ndb_ptr->a_fir31_uplink[0] = 0x4000; | |
242 #endif | |
243 | |
244 for (i=1; i<MAX_FIR_COEF; i++) | |
245 { | |
246 #if (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36) || (DSP == 37) || (DSP == 38) || (DSP == 39)// The FIR coefficents are in param memory | |
247 l1s_dsp_com.dsp_param_ptr->a_fir31_downlink[i] = 0; | |
248 l1s_dsp_com.dsp_param_ptr->a_fir31_uplink[i] = 0; | |
249 #else | |
250 l1s_dsp_com.dsp_ndb_ptr->a_fir31_downlink[i] = 0; | |
251 l1s_dsp_com.dsp_ndb_ptr->a_fir31_uplink[i] = 0; | |
252 #endif | |
253 } | |
254 #if (DSP == 17) || (DSP == 32) | |
255 // start the FIR task | |
256 l1s_dsp_com.dsp_ndb_ptr->d_audio_init |= B_FIR_START; | |
257 #endif | |
258 | |
259 #if (L1_IIR == 1) | |
260 // IIR enabled by default | |
261 // Set the default configuration (all band pass - FIR only mode) | |
262 l1s_dsp_com.dsp_ndb_ptr->d_iir_nb_iir_blocks = 0; | |
263 l1s_dsp_com.dsp_ndb_ptr->d_iir_nb_fir_coefs = 0x1f; | |
264 | |
265 l1s_dsp_com.dsp_ndb_ptr->a_iir_fir_coefs[0] = 0x4000; | |
266 for (i=1; i < (l1s_dsp_com.dsp_ndb_ptr->d_iir_nb_fir_coefs - 1); i++) | |
267 l1s_dsp_com.dsp_ndb_ptr->a_iir_fir_coefs[i] = 0; | |
268 | |
269 l1s_dsp_com.dsp_ndb_ptr->d_iir_input_scaling = 0; | |
270 l1s_dsp_com.dsp_ndb_ptr->d_iir_fir_scaling = 0; | |
271 l1s_dsp_com.dsp_ndb_ptr->d_iir_input_gain_scaling = 0; | |
272 l1s_dsp_com.dsp_ndb_ptr->d_iir_output_gain_scaling = 0; | |
273 l1s_dsp_com.dsp_ndb_ptr->d_iir_output_gain = 0xffff; | |
274 l1s_dsp_com.dsp_ndb_ptr->d_iir_feedback = 0; | |
275 #endif | |
276 | |
277 #if (AUDIO_MODE) | |
278 // Reset the FIR loopback and the audio mode | |
279 l1s_dsp_com.dsp_ndb_ptr->d_audio_init &= ~(B_FIR_LOOP | B_GSM_ONLY | B_BT_HEADSET | B_BT_CORDLESS); | |
280 // Set the GSM mode | |
281 l1s_dsp_com.dsp_ndb_ptr->d_audio_init |= B_GSM_ONLY; | |
282 #else | |
283 // Reset the loopback | |
284 l1s_dsp_com.dsp_ndb_ptr->d_audio_init &= ~(B_FIR_LOOP); | |
285 #endif | |
286 | |
287 #if (W_A_DSP_SR_BGD) | |
288 // Initialize the DSP speech reco background task | |
289 | |
290 // DSP background enabled for SR. | |
291 l1s_dsp_com.dsp_param_ptr->d_gsm_bgd_mgt = (B_DSPBGD_RECO | B_DSPBGD_UPD); | |
292 l1s_dsp_com.dsp_ndb_ptr->d_max_background = 7; | |
293 | |
294 // TEMPORARY: Init DSP background interface for RECO. | |
295 if (l1s_dsp_com.dsp_param_ptr->d_gsm_bgd_mgt & B_DSPBGD_RECO) | |
296 { | |
297 l1s_dsp_com.dsp_ndb_ptr->d_background_enable &= ~(1 << C_BGD_RECOGN); | |
298 l1s_dsp_com.dsp_ndb_ptr->d_background_abort &= ~(1 << C_BGD_RECOGN); | |
299 l1s_dsp_com.dsp_ndb_ptr->a_background_tasks[C_BGD_RECOGN] = (C_BGD_RECOGN<<11) | 1; | |
300 l1s_dsp_com.dsp_ndb_ptr->a_back_task_io[C_BGD_RECOGN] = (API)(0x0000); // Not used by Recognition task. | |
301 } | |
302 if (l1s_dsp_com.dsp_param_ptr->d_gsm_bgd_mgt & B_DSPBGD_UPD) | |
303 { | |
304 l1s_dsp_com.dsp_ndb_ptr->d_background_enable &= ~(1 << C_BGD_ALIGN); | |
305 l1s_dsp_com.dsp_ndb_ptr->d_background_abort &= ~(1 << C_BGD_ALIGN); | |
306 l1s_dsp_com.dsp_ndb_ptr->a_background_tasks[C_BGD_ALIGN] = (C_BGD_ALIGN<<11) | 1; | |
307 l1s_dsp_com.dsp_ndb_ptr->a_back_task_io[C_BGD_ALIGN] = (API)(0x0000); // Not used by Alignement task. | |
308 } | |
309 #elif (DSP == 33) || (DSP == 34) || (DSP == 35) || (DSP == 36) || (DSP == 37) || (DSP == 38) || (DSP == 39) | |
310 // DSP background task through pending task queue | |
311 l1s_dsp_com.dsp_param_ptr->d_gsm_bgd_mgt = 0; | |
312 #endif | |
313 | |
314 #if (MELODY_E2) | |
315 // Initalize the Audio compressor used for E2 | |
316 l1s_dsp_com.dsp_ndb_ptr->d_audio_compressor_ctrl = 0x0401; | |
317 | |
318 // Initialize the melody E2 variables | |
319 l1s_dsp_com.dsp_ndb_ptr->d_melody_e2_osc_stop = 0x0000; | |
320 l1s_dsp_com.dsp_ndb_ptr->d_melody_e2_osc_active = 0x0000; | |
321 l1s_dsp_com.dsp_ndb_ptr->d_melody_e2_semaphore = 0x0000; | |
322 for(i=0; i<SC_MELODY_E2_NUMBER_OF_OSCILLATOR; i++) | |
323 { | |
324 l1s_dsp_com.dsp_ndb_ptr->a_melody_e2_osc[i][0] = 0x0000; | |
325 } | |
326 l1s_dsp_com.dsp_ndb_ptr->d_melody_e2_globaltimefactor = 0x0000; | |
327 | |
328 for (i=0; i<(SC_AUDIO_MELODY_E2_MAX_NUMBER_OF_INSTRUMENT); i++) | |
329 { | |
330 l1s_dsp_com.dsp_ndb_ptr->a_melody_e2_instrument_ptr[i] = 0x0000; | |
331 } | |
332 | |
333 // Reset the flag to know if the DSP melody E2 task runs | |
334 l1s.melody_e2.dsp_task = FALSE; | |
335 #endif // MELODY_E2 | |
336 | |
337 #if ((DSP==33) || (DSP == 34) || (DSP==35) || (DSP==36) || (DSP == 37) || (DSP == 38) || (DSP == 39)) | |
338 // Linked to E2 melody | |
339 // In case of WCP, there is a WCP variable at this address | |
340 l1s_dsp_com.dsp_ndb_ptr->d_melody_selection = NO_MELODY_SELECTED; | |
341 #endif | |
342 | |
343 //----------------------------------- | |
344 // AUDIO control words initialization | |
345 //----------------------------------- | |
346 l1s_dsp_com.dsp_ndb_ptr->d_toneskb_init = 0; // MCU/DSP audio task com. register | |
347 l1s_dsp_com.dsp_ndb_ptr->d_toneskb_status = 0; // MCU/DSP audio task com. register | |
348 | |
349 | |
350 #if ((CHIPSET == 4) || (CHIPSET == 12) || (CHIPSET == 15) || ((CHIPSET==10) && (OP_WCP==1))) && ((DSP == 36) || (DSP == 37) || (DSP == 38) || (DSP == 39)) | |
351 l1s_dsp_com.dsp_ndb_ptr->d_es_ctrl = 0; // ES control | |
352 l1s_dsp_com.dsp_ndb_ptr->d_anr_ul_ctrl = 0; // ANR control | |
353 #if (L1_IIR == 1) | |
354 l1s_dsp_com.dsp_ndb_ptr->d_iir_dl_ctrl = B_IIR_ENABLE; // IIR control: enabled by default | |
355 #else | |
356 l1s_dsp_com.dsp_ndb_ptr->d_iir_dl_ctrl = 0; | |
357 #endif | |
358 l1s_dsp_com.dsp_ndb_ptr->d_lim_dl_ctrl = 0; // Limiter control | |
359 | |
360 #endif | |
361 | |
362 | |
363 | |
364 #if (DSP == 38) || (DSP == 39) | |
365 | |
366 //----------------------------------- | |
367 // AUDIO control words initialization | |
368 //----------------------------------- | |
369 | |
370 l1s_dsp_com.dsp_ndb_ptr->d_es_ctrl = 0; // ES control | |
371 l1s_dsp_com.dsp_ndb_ptr->d_anr_ul_ctrl = 0; // ANR control | |
372 l1s_dsp_com.dsp_ndb_ptr->d_aec_ul_ctrl = 0; // AEC control | |
373 l1s_dsp_com.dsp_ndb_ptr->d_agc_ul_ctrl = 0; // AGC control | |
374 | |
375 #if (L1_IIR == 1) | |
376 l1s_dsp_com.dsp_ndb_ptr->d_iir_dl_ctrl = B_IIR_ENABLE; // IIR control: enabled by default | |
377 #else | |
378 l1s_dsp_com.dsp_ndb_ptr->d_iir_dl_ctrl = 0; | |
379 #endif | |
380 l1s_dsp_com.dsp_ndb_ptr->d_lim_dl_ctrl = 0; // Limiter control | |
381 l1s_dsp_com.dsp_ndb_ptr->d_drc_dl_ctrl = 0; // DRC control | |
382 l1s_dsp_com.dsp_ndb_ptr->d_agc_dl_ctrl = 0; // AGC control | |
383 l1s_dsp_com.dsp_ndb_ptr->d_audio_apps_ctrl = 0; // WCM control | |
384 l1s_dsp_com.dsp_ndb_ptr->d_audio_apps_status = 0; // WCM status | |
385 l1s_dsp_com.dsp_ndb_ptr->d_aqi_status = 0; // Initialise the status word | |
386 | |
387 #if(L1_ANR == 2) | |
388 l1s_dsp_com.dsp_ndb_ptr->d_anr_control = (API) 0; | |
389 l1s_dsp_com.dsp_ndb_ptr->d_anr_ns_level = (API) 0; | |
390 l1s_dsp_com.dsp_ndb_ptr->d_anr_tone_ene_th = (API) 0; | |
391 l1s_dsp_com.dsp_ndb_ptr->d_anr_tone_cnt_th = (API) 0; | |
392 #endif | |
393 | |
394 | |
395 #if(L1_IIR == 2) | |
396 // Set IIR parameters | |
397 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_control = (API) 0; | |
398 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_frame_size = (API) 0; | |
399 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_fir_swap = (API) 0; | |
400 | |
401 // Set parameter os FIR part | |
402 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_fir_enable = (API) 0; | |
403 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_fir_length = (API) 0; | |
404 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_fir_shift = (API) 0; | |
405 | |
406 for (i=0; i < IIR_4X_FIR_MAX_LENGTH; i++) | |
407 { | |
408 l1s_dsp_com.dsp_ndb_ptr->a_iir4x_fir_taps[i] = (API) 0; | |
409 } | |
410 | |
411 // Set parameters for IIR part | |
412 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_enable = (API) 0; | |
413 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_number = (API) 0; | |
414 | |
415 // Set parameters for IIR part - SOS 1 | |
416 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_fact_1 = (API) 0; | |
417 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_fact_form_1 = (API) 0; | |
418 | |
419 for (j=0; j < IIR_4X_ORDER_OF_SECTION; j++) | |
420 { | |
421 l1s_dsp_com.dsp_ndb_ptr->a_iir4x_sos_den_1[j] = (API) 0; | |
422 } | |
423 for (j=0; j < (IIR_4X_ORDER_OF_SECTION + 1); j++) | |
424 { | |
425 l1s_dsp_com.dsp_ndb_ptr->a_iir4x_sos_num_1[j] = (API) 0; | |
426 } | |
427 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_num_form_1 = (API) 0; | |
428 | |
429 | |
430 // Set parameters for IIR part - SOS 2 | |
431 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_fact_2 = (API) 0; | |
432 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_fact_form_2 = (API) 0; | |
433 | |
434 for (j=0; j < IIR_4X_ORDER_OF_SECTION; j++) | |
435 { | |
436 l1s_dsp_com.dsp_ndb_ptr->a_iir4x_sos_den_2[j] = (API) 0; | |
437 } | |
438 for (j=0; j < (IIR_4X_ORDER_OF_SECTION + 1); j++) | |
439 { | |
440 l1s_dsp_com.dsp_ndb_ptr->a_iir4x_sos_num_2[j] = (API) 0; | |
441 } | |
442 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_num_form_2 = (API) 0; | |
443 | |
444 | |
445 // Set parameters for IIR part - SOS 3 | |
446 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_fact_3 = (API) 0; | |
447 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_fact_form_3 = (API) 0; | |
448 | |
449 for (j=0; j < IIR_4X_ORDER_OF_SECTION; j++) | |
450 { | |
451 l1s_dsp_com.dsp_ndb_ptr->a_iir4x_sos_den_3[j] = (API) 0; | |
452 } | |
453 for (j=0; j < (IIR_4X_ORDER_OF_SECTION + 1); j++) | |
454 { | |
455 l1s_dsp_com.dsp_ndb_ptr->a_iir4x_sos_num_3[j] = (API) 0; | |
456 } | |
457 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_num_form_3 = (API) 0; | |
458 | |
459 | |
460 // Set parameters for IIR part - SOS 4 | |
461 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_fact_4 = (API) 0; | |
462 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_fact_form_4 = (API) 0; | |
463 | |
464 for (j=0; j < IIR_4X_ORDER_OF_SECTION; j++) | |
465 { | |
466 l1s_dsp_com.dsp_ndb_ptr->a_iir4x_sos_den_4[j] = (API) 0; | |
467 } | |
468 for (j=0; j < (IIR_4X_ORDER_OF_SECTION + 1); j++) | |
469 { | |
470 l1s_dsp_com.dsp_ndb_ptr->a_iir4x_sos_num_4[j] = (API) 0; | |
471 } | |
472 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_num_form_4 = (API) 0; | |
473 | |
474 | |
475 // Set parameters for IIR part - SOS 5 | |
476 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_fact_5 = (API) 0; | |
477 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_fact_form_5 = (API) 0; | |
478 | |
479 for (j=0; j < IIR_4X_ORDER_OF_SECTION; j++) | |
480 { | |
481 l1s_dsp_com.dsp_ndb_ptr->a_iir4x_sos_den_5[j] = (API) 0; | |
482 } | |
483 for (j=0; j < (IIR_4X_ORDER_OF_SECTION + 1); j++) | |
484 { | |
485 l1s_dsp_com.dsp_ndb_ptr->a_iir4x_sos_num_5[j] = (API) 0; | |
486 } | |
487 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_num_form_5 = (API) 0; | |
488 | |
489 | |
490 // Set parameters for IIR part - SOS 6 | |
491 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_fact_6 = (API) 0; | |
492 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_fact_form_6 = (API) 0; | |
493 | |
494 for (j=0; j < IIR_4X_ORDER_OF_SECTION; j++) | |
495 { | |
496 l1s_dsp_com.dsp_ndb_ptr->a_iir4x_sos_den_6[j] = (API) 0; | |
497 } | |
498 for (j=0; j < (IIR_4X_ORDER_OF_SECTION + 1); j++) | |
499 { | |
500 l1s_dsp_com.dsp_ndb_ptr->a_iir4x_sos_num_6[j] = (API) 0; | |
501 } | |
502 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_sos_num_form_6 = (API) 0; | |
503 | |
504 | |
505 | |
506 l1s_dsp_com.dsp_ndb_ptr->d_iir4x_gain = (API) 0; | |
507 | |
508 #endif | |
509 | |
510 #if(L1_AGC_UL == 1) | |
511 l1s_dsp_com.dsp_ndb_ptr->d_agc_ul_control = (API) 0; | |
512 l1s_dsp_com.dsp_ndb_ptr->d_agc_ul_frame_size = (API) 0; | |
513 l1s_dsp_com.dsp_ndb_ptr->d_agc_ul_targeted_level = (API) 0; | |
514 l1s_dsp_com.dsp_ndb_ptr->d_agc_ul_signal_up = (API) 0; | |
515 l1s_dsp_com.dsp_ndb_ptr->d_agc_ul_signal_down = (API) 0; | |
516 l1s_dsp_com.dsp_ndb_ptr->d_agc_ul_max_scale = (API) 0; | |
517 l1s_dsp_com.dsp_ndb_ptr->d_agc_ul_gain_smooth_alpha = (API) 0; | |
518 l1s_dsp_com.dsp_ndb_ptr->d_agc_ul_gain_smooth_alpha_fast = (API) 0; | |
519 l1s_dsp_com.dsp_ndb_ptr->d_agc_ul_gain_smooth_beta = (API) 0; | |
520 l1s_dsp_com.dsp_ndb_ptr->d_agc_ul_gain_smooth_beta_fast = (API) 0; | |
521 l1s_dsp_com.dsp_ndb_ptr->d_agc_ul_gain_intp_flag = (API) 0; | |
522 #endif | |
523 | |
524 #if(L1_AGC_DL == 1) | |
525 l1s_dsp_com.dsp_ndb_ptr->d_agc_dl_control = (API) 0; | |
526 l1s_dsp_com.dsp_ndb_ptr->d_agc_dl_frame_size = (API) 0; | |
527 l1s_dsp_com.dsp_ndb_ptr->d_agc_dl_targeted_level = (API) 0; | |
528 l1s_dsp_com.dsp_ndb_ptr->d_agc_dl_signal_up = (API) 0; | |
529 l1s_dsp_com.dsp_ndb_ptr->d_agc_dl_signal_down = (API) 0; | |
530 l1s_dsp_com.dsp_ndb_ptr->d_agc_dl_max_scale = (API) 0; | |
531 l1s_dsp_com.dsp_ndb_ptr->d_agc_dl_gain_smooth_alpha = (API) 0; | |
532 l1s_dsp_com.dsp_ndb_ptr->d_agc_dl_gain_smooth_alpha_fast = (API) 0; | |
533 l1s_dsp_com.dsp_ndb_ptr->d_agc_dl_gain_smooth_beta = (API) 0; | |
534 l1s_dsp_com.dsp_ndb_ptr->d_agc_dl_gain_smooth_beta_fast = (API) 0; | |
535 l1s_dsp_com.dsp_ndb_ptr->d_agc_dl_gain_intp_flag = (API) 0; | |
536 #endif | |
537 | |
538 #if(L1_WCM == 1) | |
539 | |
540 l1s_dsp_com.dsp_ndb_ptr->d_wcm_mode = (API) 0; | |
541 l1s_dsp_com.dsp_ndb_ptr->d_wcm_frame_size = (API) 0; | |
542 l1s_dsp_com.dsp_ndb_ptr->d_wcm_num_sub_frames = (API) 0; | |
543 l1s_dsp_com.dsp_ndb_ptr->d_wcm_ratio = (API) 0; | |
544 l1s_dsp_com.dsp_ndb_ptr->d_wcm_threshold = (API) 0; | |
545 #endif | |
546 | |
547 #endif // DSP 38 | |
548 | |
549 } | |
550 | |
551 | |
552 #if (AUDIO_TASK == 1) | |
553 | |
554 /*-------------------------------------------------------*/ | |
555 /* l1audio_initialize_var() */ | |
556 /*-------------------------------------------------------*/ | |
557 /* */ | |
558 /* Parameters : */ | |
559 /* */ | |
560 /* Return : */ | |
561 /* */ | |
562 /* Description : Initialize the part of l1a, l1s and */ | |
563 /* l1a_l1s_com dedicated to the audio task.*/ | |
564 /* */ | |
565 /*-------------------------------------------------------*/ | |
566 void l1audio_initialize_var(void) | |
567 { | |
568 UWORD8 i, j; | |
569 | |
570 // Initialize the state of the L1S maanger... | |
571 //-------------------------------------------- | |
572 for(i=0; i<NBR_AUDIO_MANAGER; i++) | |
573 { | |
574 l1s.audio_state[i] = 0; | |
575 } | |
576 | |
577 #if (L1_EXTERNAL_AUDIO_VOICE_ONOFF == 1) | |
578 l1a_l1s_com.audio_onoff_task.parameters.onoff_value = FALSE; | |
579 #endif | |
580 l1a_l1s_com.audio_forced_by_l1s = FALSE; | |
581 | |
582 #if (MELODY_E1) | |
583 l1s.melody0.oscillator[0] = &(l1s_dsp_com.dsp_ndb_ptr->a_melo_note0[0]); | |
584 l1s.melody0.oscillator[1] = &(l1s_dsp_com.dsp_ndb_ptr->a_melo_note1[0]); | |
585 l1s.melody0.oscillator[2] = &(l1s_dsp_com.dsp_ndb_ptr->a_melo_note2[0]); | |
586 l1s.melody0.oscillator[3] = &(l1s_dsp_com.dsp_ndb_ptr->a_melo_note3[0]); | |
587 l1s.melody0.oscillator[4] = &(l1s_dsp_com.dsp_ndb_ptr->a_melo_note4[0]); | |
588 l1s.melody0.oscillator[5] = &(l1s_dsp_com.dsp_ndb_ptr->a_melo_note5[0]); | |
589 l1s.melody0.oscillator[6] = &(l1s_dsp_com.dsp_ndb_ptr->a_melo_note6[0]); | |
590 l1s.melody0.oscillator[7] = &(l1s_dsp_com.dsp_ndb_ptr->a_melo_note7[0]); | |
591 | |
592 l1s.melody1.oscillator[0] = &(l1s_dsp_com.dsp_ndb_ptr->a_melo_note0[0]); | |
593 l1s.melody1.oscillator[1] = &(l1s_dsp_com.dsp_ndb_ptr->a_melo_note1[0]); | |
594 l1s.melody1.oscillator[2] = &(l1s_dsp_com.dsp_ndb_ptr->a_melo_note2[0]); | |
595 l1s.melody1.oscillator[3] = &(l1s_dsp_com.dsp_ndb_ptr->a_melo_note3[0]); | |
596 l1s.melody1.oscillator[4] = &(l1s_dsp_com.dsp_ndb_ptr->a_melo_note4[0]); | |
597 l1s.melody1.oscillator[5] = &(l1s_dsp_com.dsp_ndb_ptr->a_melo_note5[0]); | |
598 l1s.melody1.oscillator[6] = &(l1s_dsp_com.dsp_ndb_ptr->a_melo_note6[0]); | |
599 l1s.melody1.oscillator[7] = &(l1s_dsp_com.dsp_ndb_ptr->a_melo_note7[0]); | |
600 #endif // MELODY_E1 | |
601 | |
602 #if (MELODY_E2) | |
603 // Initialization ofthe audio background melody E2 load insturment variable | |
604 audioback_melody_e2.allowed_size = | |
605 SC_AUDIO_MELODY_E2_MAX_SIZE_OF_INSTRUMENT; | |
606 audioback_melody_e2.API_address = | |
607 l1s_dsp_com.dsp_ndb_ptr->a_melody_e2_instrument_wave; | |
608 | |
609 for (i=0; i < SC_AUDIO_MELODY_E2_MAX_NUMBER_OF_INSTRUMENT; i++) | |
610 { | |
611 audioback_melody_e2.number_of_user[i] = 0; | |
612 } | |
613 #endif // MELODY_E2 | |
614 | |
615 #if (L1_STEREOPATH == 1) | |
616 // Reset the stereopath L1S commands | |
617 l1a_l1s_com.stereopath_drv_task.command.start = FALSE; | |
618 l1a_l1s_com.stereopath_drv_task.command.stop = FALSE; | |
619 #endif | |
620 | |
621 // Triton Audio ON/OFF Changes | |
622 #if (L1_AUDIO_MCU_ONOFF == 1) | |
623 l1s.audio_on_off_ctl.l1_audio_switch_on_ul_request = 0; | |
624 l1s.audio_on_off_ctl.l1_audio_switch_on_dl_request = 0; | |
625 | |
626 l1s.audio_on_off_ctl.l1_audio_ul_on2off_hold_time = | |
627 L1_AUDIO_ON2OFF_UL_HOLD_TIME; | |
628 l1s.audio_on_off_ctl.l1_audio_dl_on2off_hold_time = | |
629 L1_AUDIO_ON2OFF_DL_HOLD_TIME; | |
630 | |
631 l1s.audio_on_off_ctl.l1_audio_ul_action = L1_AUDIO_NO_ACTION; | |
632 l1s.audio_on_off_ctl.l1_audio_dl_action = L1_AUDIO_NO_ACTION; | |
633 | |
634 l1s.audio_on_off_ctl.l1_audio_ul_switched_on = FALSE; | |
635 l1s.audio_on_off_ctl.l1_audio_dl_switched_on = FALSE; | |
636 | |
637 l1s.audio_on_off_ctl.l1_audio_ul_switched_off = TRUE; | |
638 l1s.audio_on_off_ctl.l1_audio_dl_switched_off = TRUE; | |
639 #endif // L1_AUDIO_MCU_ONOFF | |
640 | |
641 | |
642 #if (L1_DRC == 1) | |
643 | |
644 // init DRC NDB | |
645 drc_ndb = (T_DRC_MCU_DSP *)API_address_dsp2mcu(C_DRC_API_BASE_ADDRESS); | |
646 #if (CODE_VERSION == SIMULATION) | |
647 { | |
648 drc_ndb = &drc_ndb_sim; | |
649 } | |
650 #endif | |
651 | |
652 drc_ndb->d_drc_speech_mode_samp_f =(API)0; | |
653 drc_ndb->d_drc_num_subbands =(API)0; | |
654 drc_ndb->d_drc_frame_len =(API)0; | |
655 drc_ndb->d_drc_expansion_knee_fb_bs =(API)0; | |
656 drc_ndb->d_drc_expansion_knee_md_hg =(API)0; | |
657 drc_ndb->d_drc_expansion_ratio_fb_bs =(API)0; | |
658 drc_ndb->d_drc_expansion_ratio_md_hg =(API)0; | |
659 drc_ndb->d_drc_max_amplification_fb_bs =(API)0; | |
660 drc_ndb->d_drc_max_amplification_md_hg =(API)0; | |
661 drc_ndb->d_drc_compression_knee_fb_bs =(API)0; | |
662 drc_ndb->d_drc_compression_knee_md_hg =(API)0; | |
663 drc_ndb->d_drc_compression_ratio_fb_bs =(API)0; | |
664 drc_ndb->d_drc_compression_ratio_md_hg =(API)0; | |
665 drc_ndb->d_drc_energy_limiting_th_fb_bs =(API)0; | |
666 drc_ndb->d_drc_energy_limiting_th_md_hg =(API)0; | |
667 drc_ndb->d_drc_limiter_threshold_fb =(API)0; | |
668 drc_ndb->d_drc_limiter_threshold_bs =(API)0; | |
669 drc_ndb->d_drc_limiter_threshold_md =(API)0; | |
670 drc_ndb->d_drc_limiter_threshold_hg =(API)0; | |
671 drc_ndb->d_drc_limiter_hangover_spect_preserve =(API)0; | |
672 drc_ndb->d_drc_limiter_release_fb_bs =(API)0; | |
673 drc_ndb->d_drc_limiter_release_md_hg =(API)0; | |
674 drc_ndb->d_drc_gain_track_fb_bs =(API)0; | |
675 drc_ndb->d_drc_gain_track_md_hg =(API)0; | |
676 for (j=0; j < DRC_LPF_LENGTH; j++) | |
677 { | |
678 drc_ndb->a_drc_low_pass_filter[j] = (API)0; | |
679 } | |
680 for (j=0; j < DRC_BPF_LENGTH; j++) | |
681 { | |
682 drc_ndb->a_drc_mid_band_filter[j] = (API)0; | |
683 } | |
684 #endif | |
685 | |
686 l1a_l1s_com.outen_cfg_task.outen1 = | |
687 l1a_l1s_com.outen_cfg_task.outen2 = | |
688 l1a_l1s_com.outen_cfg_task.outen3 = | |
689 l1a_l1s_com.outen_cfg_task.command_requested = | |
690 l1a_l1s_com.outen_cfg_task.command_commited = 0; | |
691 //voice and stereo path configuration for L1 standalone mode CQ- OMAPS00088143 | |
692 #if (OP_L1_STANDALONE == 1) | |
693 // Voice path and Stereo path | |
694 l1a_l1s_com.outen_cfg_task.outen3 = 0; | |
695 l1a_l1s_com.outen_cfg_task.outen2 = 0x03; | |
696 l1a_l1s_com.outen_cfg_task.outen1 = 0; | |
697 #endif | |
698 #if(L1_BT_AUDIO ==1) | |
699 bt_audio.pcm_data_pending = 0; | |
700 bt_audio.pcm_data_end = 0; | |
701 bt_audio.pcm_data_ready = 0; | |
702 bt_audio.pcm_data_failed = 0; | |
703 bt_audio.connected_status = FALSE; | |
704 #endif | |
705 } | |
706 | |
707 #endif // AUDIO_TASK |