FreeCalypso > hg > leo2moko-debug
comparison chipsetsw/services/Audio/audio_api.h @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:509db1a7b7b8 |
---|---|
1 /****************************************************************************/ | |
2 /* */ | |
3 /* File Name: audio_api.h */ | |
4 /* */ | |
5 /* Purpose: This file contains data structures and functions prototypes */ | |
6 /* used to send events to the AUDIO SWE. */ | |
7 /* */ | |
8 /* Version 0.1 */ | |
9 /* */ | |
10 /* Date Modification */ | |
11 /* ------------------------------------ */ | |
12 /* 18 May 2001 Create */ | |
13 /* */ | |
14 /* Author Francois Mazard - Stephanie Gerthoux */ | |
15 /* */ | |
16 /* (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved*/ | |
17 /****************************************************************************/ | |
18 | |
19 | |
20 | |
21 #ifndef __AUDIO_API_H_ | |
22 #define __AUDIO_API_H_ | |
23 | |
24 #ifdef __cplusplus | |
25 extern "C" | |
26 { | |
27 #endif | |
28 | |
29 #define AUDIO_EVENTS_MASK (0x3000) | |
30 #define AUDIO_EVENT_EXTERN (0x0C00) | |
31 | |
32 /* Immediat return */ | |
33 typedef INT8 T_AUDIO_RET; | |
34 | |
35 /* possible values */ | |
36 #define AUDIO_OK (0) | |
37 #define AUDIO_ERROR (-1) | |
38 #define AUDIO_MODE_ERROR (-2) | |
39 /* Bad acquisition of the word. The word is too long or too short */ | |
40 #define AUDIO_BAD_ACQUISITION (-3) | |
41 /* The DSP task to acquire the word takes to much time */ | |
42 #define AUDIO_TIME_OUT (-4) | |
43 /* Bad update of the model. The model from the database is too different */ | |
44 /* than the model built during the acquisition. */ | |
45 #define AUDIO_BAD_UPDATE (-5) | |
46 /* This word is out of vocabulary or the best words are too close */ | |
47 #define AUDIO_BAD_RECOGNITION (-6) | |
48 /* A word generated by the CTO algorithm is the best word. */ | |
49 #define AUDIO_CTO_WORD (-7) | |
50 /* The best word isn't the word to update. */ | |
51 #define AUDIO_CHECK_ERROR (-8) | |
52 #define AUDIO_NOT_ENOUGH_OSCILLATOR (-9) | |
53 | |
54 /******************************* AUDIO DRIVER *****************************/ | |
55 #define AUDIO_VM_AMR_RECORD_SESSION_ID (10) | |
56 #define AUDIO_VM_AMR_PLAY_SESSION_ID (11) | |
57 #define AUDIO_MIDI_SESSION_ID (12) | |
58 | |
59 /******************************* KEY BEEP REGISTRATION *****************************/ | |
60 /* Definition of no_beep */ | |
61 #define NO_BEEP (0) | |
62 | |
63 /* Parameters */ | |
64 typedef struct | |
65 { | |
66 UINT16 frequency_beep[2]; /* Frequency of the 2 beeps */ | |
67 INT8 amplitude_beep[2]; /* Amplitude of the 2 beeps */ | |
68 UINT16 duration; | |
69 } T_AUDIO_KEYBEEP_PARAMETER; | |
70 | |
71 /* Prototype */ | |
72 T_AUDIO_RET audio_keybeep_start (T_AUDIO_KEYBEEP_PARAMETER parameter, | |
73 T_RV_RETURN return_path); | |
74 | |
75 /* Event return */ | |
76 #define AUDIO_KEYBEEP_STATUS_MSG (0x0001 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
77 typedef struct | |
78 { | |
79 T_RV_HDR os_hdr; | |
80 INT8 status; | |
81 } T_AUDIO_KEYBEEP_STATUS; | |
82 | |
83 /* Prototype */ | |
84 T_AUDIO_RET audio_keybeep_stop (T_RV_RETURN return_path); | |
85 | |
86 /******************************* TONES REGISTRATION *****************************/ | |
87 | |
88 /* Definition of no_tone and tone_infinite */ | |
89 #define NO_TONE (0) | |
90 #define TONE_INFINITE (0xFFFF) | |
91 | |
92 /* Parameters */ | |
93 typedef struct | |
94 { | |
95 UINT16 start_tone; /* start date of the tone */ | |
96 UINT16 stop_tone; /* stop date of the tone */ | |
97 UINT16 frequency_tone; /* frequency of the tone */ | |
98 INT8 amplitude_tone; /* amplitude of the tone */ | |
99 } T_AUDIO_TONE_DESC; | |
100 | |
101 typedef struct | |
102 { | |
103 T_AUDIO_TONE_DESC tones[3]; /* Description of the 3 tones */ | |
104 UINT16 frame_duration; /* Duration of the tones frame */ | |
105 UINT16 sequence_duration; /* Duration of the sequence */ | |
106 UINT16 period_duration; /* Duration of the period */ | |
107 UINT16 repetition; /* number of period */ | |
108 } T_AUDIO_TONES_PARAMETER; | |
109 | |
110 /* Prototype */ | |
111 T_AUDIO_RET audio_tones_start (T_AUDIO_TONES_PARAMETER* p_parameter, | |
112 T_RV_RETURN return_path); | |
113 | |
114 /* Event return */ | |
115 #define AUDIO_TONES_STATUS_MSG (0x0002 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
116 typedef struct | |
117 { | |
118 T_RV_HDR os_hdr; | |
119 INT8 status; | |
120 } T_AUDIO_TONES_STATUS; | |
121 | |
122 /* Prototype */ | |
123 T_AUDIO_RET audio_tones_stop (T_RV_RETURN return_path); | |
124 | |
125 /******************************* AUDIO DRIVER REGISTRATION ************************/ | |
126 | |
127 T_AUDIO_RET audio_driver_start_session(UINT8 channel_id, T_RV_RETURN notification_return_path); | |
128 | |
129 T_AUDIO_RET audio_driver_stop_session(UINT8 channel_id); | |
130 | |
131 T_AUDIO_RET audio_driver_free_session(UINT8 channel_id, T_RV_RETURN return_path); | |
132 | |
133 T_AUDIO_RET audio_driver_get_play_buffer(UINT8 channel_id, UINT8 **pp_buffer); | |
134 T_AUDIO_RET audio_driver_play_buffer(UINT8 channel_id, UINT8 *p_buffer); | |
135 | |
136 #define AUDIO_DRIVER_INIT_STATUS_MSG (0x0003 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
137 typedef struct | |
138 { | |
139 T_RV_HDR os_hdr; | |
140 INT8 status; | |
141 UINT8 channel_id; | |
142 UINT8 session_id; | |
143 } T_AUDIO_DRIVER_INIT_STATUS; | |
144 | |
145 #define AUDIO_DRIVER_NOTIFICATION_MSG (0x0004 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
146 typedef struct | |
147 { | |
148 T_RV_HDR header; | |
149 UINT8 channel_id; | |
150 UINT16 *p_buffer; | |
151 } | |
152 T_AUDIO_DRIVER_NOTIFICATION; | |
153 | |
154 #define AUDIO_DRIVER_LAST_NOTIFICATION_MSG (0x0005 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
155 typedef struct | |
156 { | |
157 T_RV_HDR header; | |
158 UINT8 channel_id; | |
159 UINT16 *p_buffer; | |
160 UINT32 recorded_size; | |
161 } | |
162 T_AUDIO_DRIVER_LAST_NOTIFICATION; | |
163 | |
164 #define AUDIO_DRIVER_STATUS_MSG (0x0006 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
165 typedef struct | |
166 { | |
167 T_RV_HDR os_hdr; | |
168 INT8 status; | |
169 UINT8 status_type; | |
170 UINT8 channel_id; | |
171 } T_AUDIO_DRIVER_STATUS; | |
172 | |
173 #define AUDIO_START_STATUS (1) | |
174 #define AUDIO_STOP_STATUS (2) | |
175 #define AUDIO_FREE_STATUS (3) | |
176 | |
177 typedef struct | |
178 { | |
179 UINT16 buffer_size; | |
180 UINT8 nb_buffer; | |
181 } T_AUDIO_DRIVER_PARAMETER; | |
182 | |
183 /******************************* MELODY AND VOICE MEMO REGISTRATION *****************************/ | |
184 /* Definition of the maximum size of the path name */ | |
185 #define AUDIO_PATH_NAME_MAX_SIZE (20) | |
186 /* Definition of the maximum number of instruments */ | |
187 #define AUDIO_MELODY_E2_MAX_NUMBER_OF_INSTRUMENT (128) | |
188 | |
189 /******************************* MELODY REGISTRATION *****************************/ | |
190 | |
191 /* Definition of loopback melody mode */ | |
192 #define AUDIO_MELODY_NO_LOOPBACK (0) | |
193 #define AUDIO_MELODY_LOOPBACK (1) | |
194 | |
195 /* Definition ofthe mode of melody */ | |
196 #define AUDIO_MELODY_GAME_MODE (0) | |
197 #define AUDIO_MELODY_NORMAL_MODE (1) | |
198 | |
199 /******** Melody E1 ********/ | |
200 | |
201 /* Parameters */ | |
202 typedef struct | |
203 { | |
204 char melody_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the melody */ | |
205 BOOLEAN loopback; /* the melody is played indefinitely */ | |
206 BOOLEAN melody_mode; /* mode of the melody */ | |
207 } T_AUDIO_MELODY_E1_PARAMETER; | |
208 | |
209 typedef struct | |
210 { | |
211 char melody_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the melody */ | |
212 } | |
213 T_AUDIO_MELODY_E1_STOP_PARAMETER; | |
214 | |
215 /* Prototype */ | |
216 T_AUDIO_RET audio_melody_E1_start (T_AUDIO_MELODY_E1_PARAMETER *parameter, | |
217 T_RV_RETURN return_path); | |
218 | |
219 /* Event return */ | |
220 #define AUDIO_MELODY_E1_STATUS_MSG (0x0007 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
221 typedef struct | |
222 { | |
223 T_RV_HDR os_hdr; | |
224 INT8 status; | |
225 } T_AUDIO_MELODY_E1_STATUS; | |
226 | |
227 /* Prototype */ | |
228 T_AUDIO_RET audio_melody_E1_stop (T_AUDIO_MELODY_E1_STOP_PARAMETER *parameter, | |
229 T_RV_RETURN return_path); | |
230 | |
231 /******** Melody E2 ********/ | |
232 | |
233 /* Parameters */ | |
234 typedef struct | |
235 { | |
236 char melody_E2_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the melody */ | |
237 BOOLEAN E2_loopback; /* the melody is played indefinitely */ | |
238 BOOLEAN melody_E2_mode; /* mode of the melody (Game/Normal)*/ | |
239 } T_AUDIO_MELODY_E2_PARAMETER; | |
240 | |
241 typedef struct | |
242 { | |
243 char melody_E2_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the melody */ | |
244 } T_AUDIO_MELODY_E2_STOP_PARAMETER; | |
245 | |
246 typedef struct | |
247 { | |
248 char melody_E2_file_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the melody */ | |
249 } T_AUDIO_MELODY_E2_LOAD_FILE_INSTR_PARAMETER; | |
250 | |
251 | |
252 /* Prototype */ | |
253 T_AUDIO_RET audio_melody_E2_load_file_instruments ( | |
254 T_AUDIO_MELODY_E2_LOAD_FILE_INSTR_PARAMETER *p_parameter); | |
255 | |
256 T_AUDIO_RET audio_melody_E2_start (T_AUDIO_MELODY_E2_PARAMETER *p_parameter, | |
257 T_RV_RETURN return_path); | |
258 T_AUDIO_RET audio_melody_E2_stop (T_AUDIO_MELODY_E2_STOP_PARAMETER *parameter, | |
259 T_RV_RETURN return_path); | |
260 | |
261 /* Event return */ | |
262 /* For melody_E2 */ | |
263 #define AUDIO_MELODY_E2_STATUS_MSG (0x0008 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
264 | |
265 typedef struct | |
266 { | |
267 T_RV_HDR os_hdr; | |
268 INT8 status; | |
269 } T_AUDIO_MELODY_E2_STATUS; | |
270 | |
271 | |
272 | |
273 /******************************* VOICE MEMO REGISTRATION *****************************/ | |
274 | |
275 /* ---------------------------- */ | |
276 /* Voice memo PLAY */ | |
277 /* ---------------------------- */ | |
278 | |
279 /* Parameters */ | |
280 typedef struct | |
281 { | |
282 char memo_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the Voice Memo play */ | |
283 } T_AUDIO_VM_PLAY_PARAMETER; | |
284 | |
285 /* Prototype */ | |
286 T_AUDIO_RET audio_vm_play_start(T_AUDIO_VM_PLAY_PARAMETER *p_parameter, | |
287 T_RV_RETURN return_path); | |
288 | |
289 /* Event return */ | |
290 #define AUDIO_VM_PLAY_STATUS_MSG (0x0009 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
291 typedef struct | |
292 { | |
293 T_RV_HDR os_hdr; | |
294 INT8 status; | |
295 } T_AUDIO_VM_PLAY_STATUS; | |
296 | |
297 /* Prototype */ | |
298 T_AUDIO_RET audio_vm_play_stop (T_RV_RETURN return_path); | |
299 | |
300 /* ---------------------------- */ | |
301 /* Voice memo RECORD */ | |
302 /* ---------------------------- */ | |
303 | |
304 /* Definition of compression mode */ | |
305 #define AUDIO_VM_NO_COMPRESSION_MODE (0) | |
306 #define AUDIO_VM_COMPRESSION_MODE (1) | |
307 | |
308 /* Parameters */ | |
309 typedef struct | |
310 { | |
311 char memo_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the Voice Memo play */ | |
312 UINT32 memo_duration; /* maximum duration of the voice memo */ | |
313 BOOL compression_mode; /* activate the compression */ | |
314 UINT16 microphone_gain; /* recording gain applies to microphone */ | |
315 UINT16 network_gain; /* gain applies to the network voice */ | |
316 } T_AUDIO_VM_RECORD_PARAMETER; | |
317 | |
318 /* Prototype */ | |
319 T_AUDIO_RET audio_vm_record_start( T_AUDIO_VM_RECORD_PARAMETER *p_record_parameter, | |
320 T_AUDIO_TONES_PARAMETER *p_tones_parameter, | |
321 T_RV_RETURN return_path); | |
322 | |
323 /* Event return */ | |
324 #define AUDIO_VM_RECORD_STATUS_MSG (0x000A | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
325 typedef struct | |
326 { | |
327 T_RV_HDR os_hdr; | |
328 INT8 status; | |
329 UINT16 recorded_duration; | |
330 } T_AUDIO_VM_RECORD_STATUS; | |
331 | |
332 /* Prototype */ | |
333 T_AUDIO_RET audio_vm_record_stop (T_RV_RETURN return_path); | |
334 | |
335 /******************************* VOICE MEMO DRIVER AMR REGISTRATION *****************************/ | |
336 | |
337 /* ---------------------------- */ | |
338 /* Voice memo AMR PLAY */ | |
339 /* ---------------------------- */ | |
340 | |
341 /* Parameters */ | |
342 typedef struct | |
343 { | |
344 char memo_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the Voice Memo AMR play */ | |
345 } T_AUDIO_AMR_PLAY_FROM_FFS_PARAMETER; | |
346 | |
347 typedef T_AUDIO_AMR_PLAY_FROM_FFS_PARAMETER T_AUDIO_MMS_PLAY_FROM_FFS_PARAMETER; | |
348 | |
349 typedef struct | |
350 { | |
351 UINT8 *p_buffer; /* pointer on buffer to copy from */ | |
352 UINT16 buffer_size; /* size of buffer */ | |
353 } T_AUDIO_AMR_PLAY_FROM_RAM_PARAMETER; | |
354 | |
355 #define AUDIO_AMR_PLAY_FROM_MEM_STATUS_MSG (0x000B | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
356 typedef struct | |
357 { | |
358 T_RV_HDR os_hdr; | |
359 INT8 status; | |
360 } T_AUDIO_AMR_PLAY_STATUS; | |
361 | |
362 /* Prototype */ | |
363 T_AUDIO_RET audio_amr_play_from_ffs_start (T_AUDIO_AMR_PLAY_FROM_FFS_PARAMETER *p_record_parameter, | |
364 T_RV_RETURN return_path); | |
365 T_AUDIO_RET audio_amr_play_from_ffs_stop (void); | |
366 | |
367 T_AUDIO_RET audio_mms_play_from_ffs_start (T_AUDIO_MMS_PLAY_FROM_FFS_PARAMETER *p_record_parameter, | |
368 T_RV_RETURN return_path); | |
369 T_AUDIO_RET audio_mms_play_from_ffs_stop (void); | |
370 | |
371 T_AUDIO_RET audio_amr_play_from_ram_start (T_AUDIO_AMR_PLAY_FROM_RAM_PARAMETER *p_record_parameter, | |
372 T_RV_RETURN return_path); | |
373 T_AUDIO_RET audio_amr_play_from_ram_stop (void); | |
374 | |
375 T_AUDIO_RET audio_driver_init_vm_amr_play_session(T_AUDIO_DRIVER_PARAMETER *p_driver_parameter, T_RV_RETURN return_path); | |
376 | |
377 /* ---------------------------- */ | |
378 /* Voice memo AMR RECORD */ | |
379 /* ---------------------------- */ | |
380 | |
381 /* Definition of compression mode */ | |
382 #define AUDIO_AMR_NO_COMPRESSION_MODE (0) | |
383 #define AUDIO_AMR_COMPRESSION_MODE (1) | |
384 | |
385 /* Definition of AMR vocoders */ | |
386 #define AUDIO_AMR_VOCODER_4_75 (0) | |
387 #define AUDIO_AMR_VOCODER_5_15 (1) | |
388 #define AUDIO_AMR_VOCODER_5_90 (2) | |
389 #define AUDIO_AMR_VOCODER_6_70 (3) | |
390 #define AUDIO_AMR_VOCODER_7_40 (4) | |
391 #define AUDIO_AMR_VOCODER_7_95 (5) | |
392 #define AUDIO_AMR_VOCODER_10_2 (6) | |
393 #define AUDIO_AMR_VOCODER_12_2 (7) | |
394 | |
395 /* Parameters */ | |
396 typedef struct | |
397 { | |
398 char memo_name[AUDIO_PATH_NAME_MAX_SIZE]; /* File name of the Voice Memo AMR play */ | |
399 UINT32 memo_duration; /* maximum duration of the voice memo */ | |
400 BOOL compression_mode; /* activate the compression */ | |
401 UINT16 microphone_gain; /* recording gain applies to microphone */ | |
402 UINT8 amr_vocoder; /* AMR codec */ | |
403 } T_AUDIO_AMR_RECORD_TO_FFS_PARAMETER; | |
404 | |
405 typedef T_AUDIO_AMR_RECORD_TO_FFS_PARAMETER T_AUDIO_MMS_RECORD_TO_FFS_PARAMETER; | |
406 | |
407 typedef struct | |
408 { | |
409 UINT8 *p_buffer; /* pointer on buffer to copy to, length must be > memo_duration */ | |
410 UINT32 memo_duration; /* maximum duration of the voice memo */ | |
411 BOOL compression_mode; /* activate the compression */ | |
412 UINT16 microphone_gain; /* recording gain applies to microphone */ | |
413 UINT8 amr_vocoder; /* AMR codec */ | |
414 } T_AUDIO_AMR_RECORD_TO_RAM_PARAMETER; | |
415 | |
416 /* Parameters */ | |
417 typedef struct | |
418 { | |
419 UINT32 memo_duration; /* maximum duration of the voice memo */ | |
420 BOOL compression_mode; /* activate the compression */ | |
421 UINT16 microphone_gain; /* recording gain applies to microphone */ | |
422 UINT8 amr_vocoder; /* AMR codec */ | |
423 } T_AUDIO_DRIVER_VM_AMR_RECORD_PARAMETER; | |
424 | |
425 #define AUDIO_AMR_RECORD_TO_MEM_STATUS_MSG (0x000C | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
426 typedef struct | |
427 { | |
428 T_RV_HDR os_hdr; | |
429 INT8 status; | |
430 UINT32 recorded_duration; | |
431 } T_AUDIO_AMR_RECORD_STATUS; | |
432 | |
433 /* Prototype */ | |
434 T_AUDIO_RET audio_amr_record_to_ffs_start (T_AUDIO_AMR_RECORD_TO_FFS_PARAMETER *p_record_parameter, | |
435 T_RV_RETURN return_path); | |
436 T_AUDIO_RET audio_amr_record_to_ffs_stop (void); | |
437 | |
438 T_AUDIO_RET audio_mms_record_to_ffs_start (T_AUDIO_MMS_RECORD_TO_FFS_PARAMETER *p_record_parameter, | |
439 T_RV_RETURN return_path); | |
440 T_AUDIO_RET audio_mms_record_to_ffs_stop (void); | |
441 | |
442 T_AUDIO_RET audio_amr_record_to_ram_start (T_AUDIO_AMR_RECORD_TO_RAM_PARAMETER *p_record_parameter, | |
443 T_RV_RETURN return_path); | |
444 T_AUDIO_RET audio_amr_record_to_ram_stop (void); | |
445 | |
446 T_AUDIO_RET audio_driver_init_vm_amr_record_session(T_AUDIO_DRIVER_VM_AMR_RECORD_PARAMETER *p_record_parameter, | |
447 T_AUDIO_DRIVER_PARAMETER *p_driver_parameter, | |
448 T_RV_RETURN return_path); | |
449 | |
450 /******************************* AUDIO SPEECH RECOGNITION REGISTRATION ************************/ | |
451 | |
452 /* ---------------------------- */ | |
453 /* Start Enrollment */ | |
454 /* ---------------------------- */ | |
455 | |
456 /* Symbolic constant */ | |
457 #define AUDIO_SR_RECORD_SPEECH (1) | |
458 #define AUDIO_SR_NO_RECORD_SPEECH (0) | |
459 | |
460 /* maximum number of vocabulary name */ | |
461 #define AUDIO_SR_MAX_VOCABULARY_NAME (10) | |
462 | |
463 /* Parameters */ | |
464 typedef struct { | |
465 char enroll_name[AUDIO_PATH_NAME_MAX_SIZE]; /* name and path of the word to enroll */ | |
466 BOOL record_speech; /* speech sample must be recorded or not */ | |
467 }T_AUDIO_SR_ENROLL_PARAMETER; | |
468 | |
469 /* Prototype */ | |
470 T_AUDIO_RET audio_sr_enroll_start (T_AUDIO_SR_ENROLL_PARAMETER *p_parameter, | |
471 T_RV_RETURN return_path); | |
472 | |
473 /* Event return */ | |
474 #define AUDIO_SR_ENROLL_STATUS_MSG (0x000D | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
475 typedef struct | |
476 { | |
477 T_RV_HDR os_hdr; | |
478 INT8 status; | |
479 } T_AUDIO_SR_ENROLL_STATUS; | |
480 | |
481 /* ---------------------------- */ | |
482 /* Stop Enrollment */ | |
483 /* ---------------------------- */ | |
484 | |
485 /* Symbolic constant */ | |
486 | |
487 /* Parameters */ | |
488 | |
489 /* Prototype */ | |
490 T_AUDIO_RET audio_sr_enroll_stop ( T_RV_RETURN return_path ); | |
491 | |
492 /* Event return */ | |
493 | |
494 /* ---------------------------- */ | |
495 /* Start Update */ | |
496 /* ---------------------------- */ | |
497 | |
498 /* Symbolic constant */ | |
499 | |
500 /* Parameters */ | |
501 typedef struct { | |
502 char update_name[AUDIO_PATH_NAME_MAX_SIZE]; /* name and path of the word to update */ | |
503 BOOL record_speech; /* speech sample must be recorded or not */ | |
504 }T_AUDIO_SR_UPDATE_PARAMETER; | |
505 | |
506 /* Prototype */ | |
507 T_AUDIO_RET audio_sr_update_start (T_AUDIO_SR_UPDATE_PARAMETER *p_parameter, | |
508 T_RV_RETURN return_path); | |
509 | |
510 /* Event return */ | |
511 #define AUDIO_SR_UPDATE_STATUS_MSG (0x000E | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
512 typedef struct | |
513 { | |
514 T_RV_HDR os_hdr; | |
515 INT8 status; | |
516 } T_AUDIO_SR_UPDATE_STATUS; | |
517 | |
518 /* ---------------------------- */ | |
519 /* Stop Update */ | |
520 /* ---------------------------- */ | |
521 | |
522 /* Symbolic constant */ | |
523 | |
524 /* Parameters */ | |
525 | |
526 /* Prototype */ | |
527 T_AUDIO_RET audio_sr_update_stop ( T_RV_RETURN return_path ); | |
528 | |
529 /* Event return */ | |
530 | |
531 /* ---------------------------- */ | |
532 /* Start Update */ | |
533 /* ---------------------------- */ | |
534 | |
535 /* Symbolic constant */ | |
536 | |
537 /* Parameters */ | |
538 typedef struct { | |
539 /* directory of the vocabulary database */ | |
540 char database_directory[AUDIO_PATH_NAME_MAX_SIZE]; | |
541 }T_AUDIO_SR_RECO_PARAMETER; | |
542 | |
543 /* Prototype */ | |
544 T_AUDIO_RET audio_sr_reco_start (T_AUDIO_SR_RECO_PARAMETER *p_parameter, | |
545 T_RV_RETURN return_path); | |
546 | |
547 /* Event return */ | |
548 #define AUDIO_SR_RECO_STATUS_MSG (0x000F | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
549 typedef struct { | |
550 T_RV_HDR os_hdr; | |
551 /* status about the recognition task */ | |
552 INT8 status; | |
553 /*path ofthe recognized word */ | |
554 char word_recognized[AUDIO_PATH_NAME_MAX_SIZE]; | |
555 } T_AUDIO_SR_RECO_STATUS; | |
556 | |
557 /* ---------------------------- */ | |
558 /* Stop reco */ | |
559 /* ---------------------------- */ | |
560 | |
561 /* Symbolic constant */ | |
562 | |
563 /* Parameters */ | |
564 | |
565 /* Prototype */ | |
566 T_AUDIO_RET audio_sr_reco_stop ( T_RV_RETURN return_path ); | |
567 | |
568 /* Event return */ | |
569 | |
570 | |
571 | |
572 /******************************* MIDI REGISTRATION *****************************/ | |
573 | |
574 // Parameters | |
575 typedef struct | |
576 { | |
577 char midi_name[AUDIO_PATH_NAME_MAX_SIZE]; // File name of the MIDI to play | |
578 } T_AUDIO_MIDI_PARAMETER; | |
579 | |
580 // Prototype | |
581 T_AUDIO_RET audio_midi_start(T_AUDIO_MIDI_PARAMETER *parameter, T_RV_RETURN *p_return_path); | |
582 | |
583 // Event return | |
584 #define AUDIO_MIDI_STATUS_MSG (0x0010 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
585 typedef struct | |
586 { | |
587 T_RV_HDR os_hdr; | |
588 INT8 status; | |
589 } T_AUDIO_MIDI_STATUS; | |
590 | |
591 // Prototype | |
592 T_AUDIO_RET audio_midi_stop(void); | |
593 | |
594 T_AUDIO_RET audio_driver_init_midi_session(T_AUDIO_DRIVER_PARAMETER *p_driver_parameter, T_RV_RETURN *p_return_path); | |
595 | |
596 | |
597 /******************************* AUDIO CONFIGURATION REGISTRATION *****************************/ | |
598 | |
599 /******************/ | |
600 /*** Voice path ***/ | |
601 /******************/ | |
602 | |
603 /* Parameters */ | |
604 | |
605 /* Voice path selection */ | |
606 #define AUDIO_GSM_VOICE_PATH (0) | |
607 #define AUDIO_BLUETOOTH_CORDLESS_VOICE_PATH (1) | |
608 #define AUDIO_BLUETOOTH_HEADSET (2) | |
609 #define AUDIO_DAI_ENCODER (12) | |
610 #define AUDIO_DAI_DECODER (11) | |
611 #define AUDIO_DAI_ACOUSTIC (14) | |
612 | |
613 /* Structure */ | |
614 /* audio path used */ | |
615 typedef UINT8 T_AUDIO_VOICE_PATH_SETTING; | |
616 | |
617 /********************************/ | |
618 /*** Microphone configuration ***/ | |
619 /********************************/ | |
620 | |
621 /* Parameters */ | |
622 /* Mode */ | |
623 #define AUDIO_MICROPHONE_HANDHELD (0) | |
624 #define AUDIO_MICROPHONE_HANDFREE (1) | |
625 #define AUDIO_MICROPHONE_HEADSET (2) | |
626 | |
627 /* gain */ | |
628 #define AUDIO_MICROPHONE_MUTE (13) | |
629 | |
630 /* output_bias */ | |
631 #define AUDIO_MICROPHONE_OUTPUT_BIAS_2_0V (0) | |
632 #define AUDIO_MICROPHONE_OUTPUT_BIAS_2_5V (1) | |
633 | |
634 /* extra gain */ | |
635 #define AUDIO_MICROPHONE_AUX_GAIN_28_2dB (0) | |
636 #define AUDIO_MICROPHONE_AUX_GAIN_4_6dB (1) | |
637 | |
638 /* Structure */ | |
639 typedef struct | |
640 { | |
641 UINT16 coefficient[31]; | |
642 } | |
643 T_AUDIO_FIR_COEF; | |
644 | |
645 typedef struct | |
646 { | |
647 /* gain of the microphone */ | |
648 INT8 gain; | |
649 /* microphone output bias */ | |
650 INT8 output_bias; | |
651 /* coefficients of the microphone FIR */ | |
652 T_AUDIO_FIR_COEF fir; | |
653 } | |
654 T_AUDIO_MICROPHONE_MODE_HANDHELD; | |
655 | |
656 typedef struct { | |
657 /* gain of the microphone */ | |
658 INT8 gain; | |
659 /* extra gain of the microphone */ | |
660 INT8 extra_gain; | |
661 /* microphone output bias */ | |
662 INT8 output_bias; | |
663 /* coefficients of the microphone FIR */ | |
664 T_AUDIO_FIR_COEF fir; | |
665 } | |
666 T_AUDIO_MICROPHONE_MODE_HANDFREE; | |
667 | |
668 typedef struct { | |
669 /* gain of the microphone */ | |
670 INT8 gain; | |
671 /* microphone output bias */ | |
672 INT8 output_bias; | |
673 /* coefficients of the microphone FIR */ | |
674 T_AUDIO_FIR_COEF fir; | |
675 } | |
676 T_AUDIO_MICROPHONE_MODE_HEADSET; | |
677 | |
678 typedef union | |
679 { | |
680 /* handheld mode parameters */ | |
681 T_AUDIO_MICROPHONE_MODE_HANDHELD handheld; | |
682 /* handfree mode parameters */ | |
683 T_AUDIO_MICROPHONE_MODE_HANDFREE handfree; | |
684 /* headset mode parameters */ | |
685 T_AUDIO_MICROPHONE_MODE_HEADSET headset; | |
686 } | |
687 T_AUDIO_MICROPHONE_MODE; | |
688 | |
689 typedef struct | |
690 { | |
691 /* mode of the microphone */ | |
692 INT8 mode; | |
693 /* Setting of the current mode */ | |
694 T_AUDIO_MICROPHONE_MODE setting; | |
695 } | |
696 T_AUDIO_MICROPHONE_SETTING; | |
697 | |
698 /*****************************/ | |
699 /*** Speaker configuration ***/ | |
700 /*****************************/ | |
701 | |
702 /* Paratemers */ | |
703 /* Mode*/ | |
704 #define AUDIO_SPEAKER_HANDHELD (0) | |
705 #define AUDIO_SPEAKER_HANDFREE (1) | |
706 #define AUDIO_SPEAKER_HEADSET (2) | |
707 #define AUDIO_SPEAKER_BUZZER (3) | |
708 #define AUDIO_SPEAKER_HANDHELD_HANDFREE (4) | |
709 | |
710 /* filter */ | |
711 #define AUDIO_SPEAKER_FILTER_ON (0) | |
712 #define AUDIO_SPEAKER_FILTER_OFF (1) | |
713 | |
714 /* Buzzer */ | |
715 #define AUDIO_SPEAKER_BUZZER_ON (0) | |
716 #define AUDIO_SPEAKER_BUZZER_OFF (1) | |
717 | |
718 /* Structure */ | |
719 typedef struct | |
720 { | |
721 /* gain of the speaker */ | |
722 INT8 gain; | |
723 /* use the audio filter */ | |
724 INT8 audio_filter; | |
725 /* coefficients of the speaker FIR */ | |
726 T_AUDIO_FIR_COEF fir; | |
727 } | |
728 T_AUDIO_SPEAKER_MODE_HANDHELD; | |
729 | |
730 typedef struct | |
731 { | |
732 /* gain of the speaker */ | |
733 INT8 gain; | |
734 /* use the audio filter */ | |
735 INT8 audio_filter; | |
736 /* coefficients of the speaker FIR */ | |
737 T_AUDIO_FIR_COEF fir; | |
738 } | |
739 T_AUDIO_SPEAKER_MODE_HANDFREE; | |
740 | |
741 typedef struct | |
742 { | |
743 /* gain of the speaker */ | |
744 INT8 gain; | |
745 /* use the audio filter */ | |
746 INT8 audio_filter; | |
747 /* coefficients of the speaker FIR */ | |
748 T_AUDIO_FIR_COEF fir; | |
749 } | |
750 T_AUDIO_SPEAKER_MODE_HEADSET; | |
751 | |
752 typedef struct | |
753 { | |
754 /* activate the buzzer */ | |
755 INT8 activate; | |
756 } | |
757 T_AUDIO_SPEAKER_MODE_BUZZER; | |
758 | |
759 typedef struct | |
760 { | |
761 /* gain of the speaker */ | |
762 INT8 gain; | |
763 /* use the audio filter */ | |
764 INT8 audio_filter; | |
765 /* coefficients of the speaker FIR */ | |
766 T_AUDIO_FIR_COEF fir; | |
767 } | |
768 T_AUDIO_SPEAKER_MODE_HANDHELD_HANDFREE; | |
769 | |
770 typedef union | |
771 { | |
772 /* handheld mode parameters */ | |
773 T_AUDIO_SPEAKER_MODE_HANDHELD handheld; | |
774 /* handfree mode parameters */ | |
775 T_AUDIO_SPEAKER_MODE_HANDFREE handfree; | |
776 /* headset mode parameters */ | |
777 T_AUDIO_SPEAKER_MODE_HEADSET headset; | |
778 /* buzzer mode parameters */ | |
779 T_AUDIO_SPEAKER_MODE_BUZZER buzzer; | |
780 /* handheld and handfree mode parameters */ | |
781 T_AUDIO_SPEAKER_MODE_HANDHELD_HANDFREE handheld_handfree; | |
782 } | |
783 T_AUDIO_SPEAKER_MODE; | |
784 | |
785 typedef struct | |
786 { | |
787 /* mode of the speaker */ | |
788 INT8 mode; | |
789 /* Setting of the current mode */ | |
790 T_AUDIO_SPEAKER_MODE setting; | |
791 } | |
792 T_AUDIO_SPEAKER_SETTING; | |
793 | |
794 /********************************************/ | |
795 /*** Mirophone-Speaker loop configuration ***/ | |
796 /********************************************/ | |
797 | |
798 /* sidetone */ | |
799 #define AUDIO_SIDETONE_OPEN (-26) | |
800 | |
801 /* AEC enable */ | |
802 #define AUDIO_AEC_ENABLE (0x0002) | |
803 #define AUDIO_AEC_DISABLE (0x0000) | |
804 | |
805 /* AEC visibility */ | |
806 #define AUDIO_AEC_VISIBILITY_ENABLE (0x0200) | |
807 #define AUDIO_AEC_VISIBILITY_DISABLE (0x0000) | |
808 | |
809 /* AEC mode */ | |
810 #define AUDIO_SHORT_ECHO (0x0200) | |
811 #define AUDIO_LONG_ECHO (0x0000) | |
812 | |
813 /* echo suppression level */ | |
814 #if (L1_NEW_AEC) | |
815 #define AUDIO_MAX_ECHO_0dB (0x7FFF) | |
816 #define AUDIO_MAX_ECHO_2dB (0x65AA) | |
817 #define AUDIO_MAX_ECHO_3dB (0x59AD) | |
818 #define AUDIO_MAX_ECHO_6dB (0x4000) | |
819 #define AUDIO_MAX_ECHO_12dB (0x1FFF) | |
820 #define AUDIO_MAX_ECHO_18dB (0x0FFF) | |
821 #define AUDIO_MAX_ECHO_24dB (0x07FF) | |
822 #else | |
823 #define AUDIO_ECHO_0dB (0x0000) | |
824 #define AUDIO_ECHO_6dB (0x0008) | |
825 #define AUDIO_ECHO_12dB (0x0010) | |
826 #define AUDIO_ECHO_18dB (0x0018) | |
827 #endif | |
828 | |
829 /* noise suppression enable */ | |
830 #define AUDIO_NOISE_SUPPRESSION_ENABLE (0x0004) | |
831 #define AUDIO_NOISE_SUPPRESSION_DISABLE (0x0000) | |
832 | |
833 /* noise suppression level */ | |
834 #define AUDIO_NOISE_NO_LIMITATION (0x0000) | |
835 #define AUDIO_NOISE_6dB (0x0020) | |
836 #define AUDIO_NOISE_12dB (0x0040) | |
837 #define AUDIO_NOISE_18dB (0x0060) | |
838 | |
839 typedef struct | |
840 { | |
841 /* Enable the AEC */ | |
842 UINT16 aec_enable; | |
843 #if (L1_NEW_AEC) | |
844 BOOL continuous_filtering; | |
845 UINT16 granularity_attenuation; | |
846 UINT16 smoothing_coefficient; | |
847 UINT16 max_echo_suppression_level; | |
848 UINT16 vad_factor; | |
849 UINT16 absolute_threshold; | |
850 UINT16 factor_asd_filtering; | |
851 UINT16 factor_asd_muting; | |
852 UINT16 aec_visibility; // UINT16 and not boolean because in L1, it is in aec_control | |
853 #else | |
854 /* Mode of the AEC */ | |
855 UINT16 aec_mode; | |
856 /* level of the echo cancellation */ | |
857 UINT16 echo_suppression_level; | |
858 #endif | |
859 /* enable the noise suppression */ | |
860 UINT16 noise_suppression_enable; | |
861 /* level of the noise suppression */ | |
862 UINT16 noise_suppression_level; | |
863 } | |
864 T_AUDIO_AEC_CFG; | |
865 | |
866 typedef struct | |
867 { | |
868 /* gain of the sidetone */ | |
869 INT8 sidetone_gain; | |
870 /* configuration of the acoustic echo cancellation */ | |
871 T_AUDIO_AEC_CFG aec; | |
872 } | |
873 T_AUDIO_MICROPHONE_SPEAKER_LOOP_SETTING; | |
874 | |
875 /****************************************/ | |
876 /* audio mode file struture */ | |
877 /* this file is in the folder /AUDCFG/ */ | |
878 /* and has the extention .CFG */ | |
879 /****************************************/ | |
880 typedef struct | |
881 { | |
882 /* group of setting to define the audio path used */ | |
883 T_AUDIO_VOICE_PATH_SETTING audio_path_setting; | |
884 /* group of setting to configure the audio path of the microphone */ | |
885 T_AUDIO_MICROPHONE_SETTING audio_microphone_setting; | |
886 /* group of setting to configure the audio path of the speaker */ | |
887 T_AUDIO_SPEAKER_SETTING audio_speaker_setting; | |
888 /* group of setting to configure the audio mode involved */ | |
889 /* in tr microhpone and speaker loop */ | |
890 T_AUDIO_MICROPHONE_SPEAKER_LOOP_SETTING audio_microphone_speaker_loop_setting; | |
891 } | |
892 T_AUDIO_MODE; | |
893 | |
894 /****************************************/ | |
895 /* audio volume file struture */ | |
896 /* this file is in the folder /AUDCFG/ */ | |
897 /* and has the extention .VOL */ | |
898 /****************************************/ | |
899 /* speaker volume action */ | |
900 #define AUDIO_SPEAKER_VOLUME_INCREASE (0) | |
901 #define AUDIO_SPEAKER_VOLUME_DECREASE (1) | |
902 #define AUDIO_SPEAKER_VOLUME_SET (2) | |
903 | |
904 /* speaker volume value */ | |
905 #define AUDIO_SPEAKER_VOLUME_MUTE (0) | |
906 #define AUDIO_SPEAKER_VOLUME_24dB (1) | |
907 #define AUDIO_SPEAKER_VOLUME_18dB (50) | |
908 #define AUDIO_SPEAKER_VOLUME_12dB (100) | |
909 #define AUDIO_SPEAKER_VOLUME_6dB (150) | |
910 #define AUDIO_SPEAKER_VOLUME_0dB (200) | |
911 typedef struct | |
912 { | |
913 /* volume of the audio speaker */ | |
914 UINT8 audio_speaker_level; | |
915 } | |
916 T_AUDIO_SPEAKER_LEVEL; | |
917 | |
918 /******************/ | |
919 /* MMI family API */ | |
920 /******************/ | |
921 | |
922 | |
923 /* structure */ | |
924 /* maximum number of number of the filname characters */ | |
925 #define AUDIO_MODE_FILENAME_MAX_SIZE (10) | |
926 | |
927 typedef struct | |
928 { | |
929 char audio_mode_filename[AUDIO_MODE_FILENAME_MAX_SIZE]; | |
930 } | |
931 T_AUDIO_MODE_LOAD; | |
932 | |
933 typedef struct | |
934 { | |
935 char audio_mode_filename[AUDIO_MODE_FILENAME_MAX_SIZE]; | |
936 } | |
937 T_AUDIO_MODE_SAVE; | |
938 | |
939 typedef struct | |
940 { | |
941 INT8 volume_action; | |
942 UINT8 value; | |
943 } | |
944 T_AUDIO_SPEAKER_VOLUME; | |
945 | |
946 /* Prototypes of MMI family*/ | |
947 T_AUDIO_RET audio_mode_load (T_AUDIO_MODE_LOAD *p_parameter, | |
948 T_RV_RETURN return_path); | |
949 | |
950 T_AUDIO_RET audio_mode_save (T_AUDIO_MODE_SAVE *p_parameter, | |
951 T_RV_RETURN return_path); | |
952 | |
953 T_AUDIO_RET audio_speaker_volume ( T_AUDIO_SPEAKER_VOLUME volume, | |
954 T_RV_RETURN return_path); | |
955 | |
956 /* Event return of the MMI family API*/ | |
957 #define AUDIO_MODE_LOAD_DONE (0x0010 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
958 typedef struct | |
959 { | |
960 T_RV_HDR os_hdr; | |
961 INT8 status; | |
962 } T_AUDIO_LOAD_DONE; | |
963 | |
964 #define AUDIO_MODE_SAVE_DONE (0x0011 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
965 typedef struct | |
966 { | |
967 T_RV_HDR os_hdr; | |
968 INT8 status; | |
969 } T_AUDIO_SAVE_DONE; | |
970 | |
971 #define AUDIO_SPEAKER_VOLUME_DONE (0x0012 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
972 typedef struct | |
973 { | |
974 T_RV_HDR os_hdr; | |
975 INT8 status; | |
976 } T_AUDIO_VOLUME_DONE; | |
977 | |
978 | |
979 /**********************/ | |
980 /* Full Access Family */ | |
981 /**********************/ | |
982 | |
983 /* structure */ | |
984 typedef struct | |
985 { | |
986 UINT8 variable_indentifier; | |
987 void *data; | |
988 } | |
989 T_AUDIO_FULL_ACCESS_WRITE; | |
990 | |
991 typedef struct | |
992 { | |
993 UINT8 variable_indentifier; | |
994 void *data; | |
995 } | |
996 T_AUDIO_FULL_ACCESS_READ; | |
997 | |
998 /* parameter */ | |
999 #define AUDIO_PATH_USED (0) | |
1000 #define AUDIO_MICROPHONE_MODE (1) | |
1001 #define AUDIO_MICROPHONE_GAIN (2) | |
1002 #define AUDIO_MICROPHONE_EXTRA_GAIN (3) | |
1003 #define AUDIO_MICROPHONE_OUTPUT_BIAS (4) | |
1004 #define AUDIO_MICROPHONE_FIR (5) | |
1005 #define AUDIO_SPEAKER_MODE (6) | |
1006 #define AUDIO_SPEAKER_GAIN (7) | |
1007 #define AUDIO_SPEAKER_FILTER (8) | |
1008 #define AUDIO_SPEAKER_FIR (9) | |
1009 #define AUDIO_SPEAKER_BUZZER_STATE (10) | |
1010 #define AUDIO_MICROPHONE_SPEAKER_LOOP_SIDETONE (11) | |
1011 #define AUDIO_MICROPHONE_SPEAKER_LOOP_AEC (12) | |
1012 #define AUDIO_SPEAKER_VOLUME_LEVEL (13) | |
1013 | |
1014 | |
1015 /* prototype */ | |
1016 T_AUDIO_RET audio_full_access_write (T_AUDIO_FULL_ACCESS_WRITE *p_parameter, | |
1017 T_RV_RETURN return_path); | |
1018 | |
1019 T_AUDIO_RET audio_full_access_read (T_AUDIO_FULL_ACCESS_READ *p_parameter); | |
1020 | |
1021 | |
1022 /* Event returned ofthe Full Access Family */ | |
1023 #define AUDIO_FULL_ACCESS_WRITE_DONE (0x0013 | AUDIO_EVENT_EXTERN | AUDIO_EVENTS_MASK) | |
1024 typedef struct | |
1025 { | |
1026 T_RV_HDR os_hdr; | |
1027 INT8 status; | |
1028 } T_AUDIO_FULL_ACCESS_WRITE_DONE; | |
1029 | |
1030 #ifdef __cplusplus | |
1031 } | |
1032 #endif | |
1033 | |
1034 #endif /* __AUDIO_API_H_ */ | |
1035 | |
1036 |