FreeCalypso > hg > tcs211-l1-reconst
comparison g23m/condat/com/src/driver/vmd.c @ 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 | Project : GSM-PS | |
| 4 | Modul : DRV_VMD | |
| 5 +----------------------------------------------------------------------------- | |
| 6 | Copyright 2002 Texas Instruments Berlin, AG | |
| 7 | All rights reserved. | |
| 8 | | |
| 9 | This file is confidential and a trade secret of Texas | |
| 10 | Instruments Berlin, AG | |
| 11 | The receipt of or possession of this file does not convey | |
| 12 | any rights to reproduce or disclose its contents or to | |
| 13 | manufacture, use, or sell anything it may describe, in | |
| 14 | whole, or in part, without the specific written consent of | |
| 15 | Texas Instruments Berlin, AG. | |
| 16 +----------------------------------------------------------------------------- | |
| 17 | Purpose : This Module defines the voice memo and recognition | |
| 18 | driver interface for the G23 protocol stack. | |
| 19 | | |
| 20 | This driver is used to control all voice memo and | |
| 21 | voice recognition related procedure. | |
| 22 +----------------------------------------------------------------------------- | |
| 23 */ | |
| 24 | |
| 25 #ifndef DRV_VMD_C | |
| 26 #define DRV_VMD_C | |
| 27 | |
| 28 #define ENTITY_CST | |
| 29 /*==== INCLUDES ===================================================*/ | |
| 30 | |
| 31 #include <string.h> | |
| 32 #include "typedefs.h" | |
| 33 #include "vsi.h" | |
| 34 #include "custom.h" | |
| 35 #include "prim.h" | |
| 36 #include "gsm.h" | |
| 37 #include "tok.h" | |
| 38 #include "cst/cst.h" | |
| 39 #include "gdi.h" | |
| 40 #include "vmd.h" | |
| 41 | |
| 42 | |
| 43 /*==== EXPORT =====================================================*/ | |
| 44 /*==== VARIABLES ==================================================*/ | |
| 45 | |
| 46 drv_SignalCB_Type vmd_signal_callback = NULL; | |
| 47 | |
| 48 #if defined (NEW_FRAME) | |
| 49 EXTERN T_HANDLE hCommL1; | |
| 50 #else | |
| 51 EXTERN T_VSI_CHANDLE hCommL1; | |
| 52 #endif | |
| 53 | |
| 54 /*==== FUNCTIONS ==================================================*/ | |
| 55 | |
| 56 /*==== TYPES ======================================================*/ | |
| 57 | |
| 58 typedef struct T_MMI_VM_RECORD_REQ_V | |
| 59 { | |
| 60 UBYTE dtx_used; | |
| 61 USHORT d_k_x1_t0; | |
| 62 USHORT d_k_x1_t1; | |
| 63 USHORT d_k_x1_t2; | |
| 64 USHORT d_pe_rep; | |
| 65 USHORT d_pe_off; | |
| 66 USHORT d_se_off; | |
| 67 USHORT d_bu_off; | |
| 68 USHORT d_t0_on; | |
| 69 USHORT d_t0_off; | |
| 70 USHORT d_t1_on; | |
| 71 USHORT d_t1_off; | |
| 72 USHORT d_t2_on; | |
| 73 USHORT d_t2_off; | |
| 74 USHORT * start_address; | |
| 75 USHORT * stop_address; | |
| 76 } T_MMI_VM_RECORD_REQ_V; | |
| 77 | |
| 78 typedef struct T_MMI_VM_PLAY_REQ_V | |
| 79 { | |
| 80 USHORT * start_address; | |
| 81 } T_MMI_VM_PLAY_REQ_V; | |
| 82 | |
| 83 typedef struct T_MMI_VM_END_PLAY_IND | |
| 84 { | |
| 85 USHORT * stop_address; | |
| 86 } T_MMI_VM_END_PLAY_IND; | |
| 87 | |
| 88 typedef struct T_MMI_VM_END_RECORD_IND | |
| 89 { | |
| 90 USHORT * stop_address; | |
| 91 } T_MMI_VM_END_RECORD_IND; | |
| 92 | |
| 93 typedef struct T_MMI_VM_END_PLAY_REQ | |
| 94 { | |
| 95 UBYTE dummy; | |
| 96 } T_MMI_VM_END_PLAY_REQ; | |
| 97 | |
| 98 typedef struct T_MMI_VM_END_RECORD_REQ | |
| 99 { | |
| 100 UBYTE dummy; | |
| 101 } T_MMI_VM_END_RECORD_REQ; | |
| 102 | |
| 103 typedef struct | |
| 104 { | |
| 105 USHORT param1; | |
| 106 USHORT param2; | |
| 107 USHORT param3; | |
| 108 USHORT param4; | |
| 109 USHORT param5; | |
| 110 } | |
| 111 T_MMI_SR_REQ_V; | |
| 112 | |
| 113 typedef struct | |
| 114 { | |
| 115 UBYTE error_code; | |
| 116 UBYTE index; | |
| 117 } T_MMI_SR_IND_V; | |
| 118 | |
| 119 #define MMI_VM_RECORD_REQ_V 8 | |
| 120 #define MMI_VM_PLAY_REQ_V 9 | |
| 121 #define MMI_VM_END_RECORD_REQ 10 | |
| 122 | |
| 123 #define MMI_SR_REQ_V 110 | |
| 124 #define MMI_SR_IND_V 119 | |
| 125 | |
| 126 #define MMI_VM_END_PLAY_REQ 114 | |
| 127 #define MMI_VM_END_PLAY_IND 115 | |
| 128 #define MMI_VM_END_RECORD_IND 116 | |
| 129 | |
| 130 LOCAL void vmd_mmi_vm_end_record_ind (T_MMI_VM_END_RECORD_IND * vmd_parameter); | |
| 131 LOCAL void vmd_mmi_vm_end_play_ind (T_MMI_VM_END_PLAY_IND * vmd_parameter); | |
| 132 LOCAL void vmd_mmi_sr_end_ind (T_MMI_SR_IND_V * vmd_parameter); | |
| 133 | |
| 134 /*==== CONSTANTS ==================================================*/ | |
| 135 /* | |
| 136 +--------------------------------------------------------------------+ | |
| 137 | PROJECT : GSM-PS (6103) MODULE : DRV_VMD | | |
| 138 | STATE : code ROUTINE : vmd_init | | |
| 139 +--------------------------------------------------------------------+ | |
| 140 | |
| 141 PURPOSE : The function initializes the driverīs internal data. | |
| 142 The function returns DRV_OK in case of a successful | |
| 143 completition. The function returns DRV_INITIALIZED if | |
| 144 the driver has already been initialized and is ready to | |
| 145 be used or is already in use. In case of an initialization | |
| 146 failure, which means the that the driver cannot be used, | |
| 147 the function returns DRV_INITFAILURE. | |
| 148 | |
| 149 */ | |
| 150 | |
| 151 GLOBAL UBYTE vmd_init (drv_SignalCB_Type in_SignalCBPtr) | |
| 152 { | |
| 153 vmd_signal_callback = in_SignalCBPtr; /* store call-back function */ | |
| 154 | |
| 155 return DRV_OK; | |
| 156 } | |
| 157 | |
| 158 /* | |
| 159 +--------------------------------------------------------------------+ | |
| 160 | PROJECT : GSM-PS (6103) MODULE : DRV_VMD | | |
| 161 | STATE : code ROUTINE : vmd_exit | | |
| 162 +--------------------------------------------------------------------+ | |
| 163 | |
| 164 PURPOSE : The function is called when the driver functionality is | |
| 165 not longer required. | |
| 166 */ | |
| 167 | |
| 168 GLOBAL void vmd_exit (void) | |
| 169 { | |
| 170 vmd_signal_callback = NULL; | |
| 171 } | |
| 172 | |
| 173 /* | |
| 174 +--------------------------------------------------------------------+ | |
| 175 | PROJECT : GSM-PS (6103) MODULE : DRV_VMD | | |
| 176 | STATE : code ROUTINE : vmd_start_voice_memo_recording | | |
| 177 +--------------------------------------------------------------------+ | |
| 178 | |
| 179 PURPOSE : This function is used to start voice memo recording. | |
| 180 The needed parameters are defined in the structure | |
| 181 vmd_start_record_type. | |
| 182 | |
| 183 */ | |
| 184 | |
| 185 GLOBAL UBYTE vmd_start_voice_memo_recording (vmd_start_record_type * vmd_parameter) | |
| 186 { | |
| 187 PALLOC (mmi_vm_record_req, MMI_VM_RECORD_REQ_V); | |
| 188 | |
| 189 /* | |
| 190 * copy parameters to send to layer 1 | |
| 191 */ | |
| 192 mmi_vm_record_req->start_address = vmd_parameter->start_address; | |
| 193 mmi_vm_record_req->stop_address = vmd_parameter->stop_address; | |
| 194 mmi_vm_record_req->dtx_used = vmd_parameter->dtx_used; | |
| 195 | |
| 196 switch (vmd_parameter->tone_id) | |
| 197 { | |
| 198 /* case .... | |
| 199 add here the parameter to generate a | |
| 200 tone during dedicated mode. | |
| 201 break; | |
| 202 */ | |
| 203 case 0: /* no tone in idle mode */ | |
| 204 mmi_vm_record_req->d_k_x1_t0 = 0; | |
| 205 mmi_vm_record_req->d_k_x1_t1 = 0; | |
| 206 mmi_vm_record_req->d_k_x1_t2 = 0; | |
| 207 mmi_vm_record_req->d_pe_rep = 0; | |
| 208 mmi_vm_record_req->d_pe_off = 0; | |
| 209 mmi_vm_record_req->d_se_off = 0; | |
| 210 mmi_vm_record_req->d_bu_off = 0; | |
| 211 mmi_vm_record_req->d_t0_on = 0; | |
| 212 mmi_vm_record_req->d_t0_off = 0; | |
| 213 mmi_vm_record_req->d_t1_on = 0; | |
| 214 mmi_vm_record_req->d_t1_off = 0; | |
| 215 mmi_vm_record_req->d_t2_on = 0; | |
| 216 mmi_vm_record_req->d_t2_off = 0; | |
| 217 break; | |
| 218 } | |
| 219 | |
| 220 | |
| 221 PSENDX (L1, mmi_vm_record_req); | |
| 222 | |
| 223 return DRV_OK; | |
| 224 } | |
| 225 | |
| 226 /* | |
| 227 +--------------------------------------------------------------------+ | |
| 228 | PROJECT : GSM-PS (6103) MODULE : DRV_VMD | | |
| 229 | STATE : code ROUTINE : vmd_stop_voice_memo_recording | | |
| 230 +--------------------------------------------------------------------+ | |
| 231 | |
| 232 PURPOSE : This function is used to stop voice memo recording. | |
| 233 | |
| 234 */ | |
| 235 | |
| 236 GLOBAL UBYTE vmd_stop_voice_memo_recording () | |
| 237 { | |
| 238 PALLOC (mmi_vm_end_record_req, MMI_VM_END_RECORD_REQ); | |
| 239 | |
| 240 PSENDX (L1, mmi_vm_end_record_req); | |
| 241 | |
| 242 return DRV_OK; | |
| 243 } | |
| 244 | |
| 245 /* | |
| 246 +--------------------------------------------------------------------+ | |
| 247 | PROJECT : GSM-PS (6103) MODULE : DRV_VMD | | |
| 248 | STATE : code ROUTINE : vmd_start_voice_memo_playing | | |
| 249 +--------------------------------------------------------------------+ | |
| 250 | |
| 251 PURPOSE : This function is used to start voice memo playing. | |
| 252 The needed parameters are defined in the structure | |
| 253 vmd_start_play_type. | |
| 254 | |
| 255 */ | |
| 256 | |
| 257 GLOBAL UBYTE vmd_start_voice_memo_playing (vmd_start_play_type * vmd_parameter) | |
| 258 { | |
| 259 | |
| 260 PALLOC (mmi_vm_play_req, MMI_VM_PLAY_REQ_V); | |
| 261 | |
| 262 /* | |
| 263 * copy parameters to send to layer 1 | |
| 264 */ | |
| 265 mmi_vm_play_req->start_address = vmd_parameter->start_address; | |
| 266 | |
| 267 PSENDX (L1, mmi_vm_play_req); | |
| 268 | |
| 269 return DRV_OK; | |
| 270 } | |
| 271 | |
| 272 /* | |
| 273 +--------------------------------------------------------------------+ | |
| 274 | PROJECT : GSM-PS (6103) MODULE : DRV_VMD | | |
| 275 | STATE : code ROUTINE : vmd_stop_voice_memo_playing | | |
| 276 +--------------------------------------------------------------------+ | |
| 277 | |
| 278 PURPOSE : This function is used to stop voice memo playing. | |
| 279 | |
| 280 */ | |
| 281 | |
| 282 GLOBAL UBYTE vmd_stop_voice_memo_playing () | |
| 283 { | |
| 284 PALLOC (mmi_vm_end_play_req, MMI_VM_END_PLAY_REQ); | |
| 285 | |
| 286 PSENDX (L1, mmi_vm_end_play_req); | |
| 287 | |
| 288 return DRV_OK; | |
| 289 } | |
| 290 | |
| 291 /* | |
| 292 +--------------------------------------------------------------------+ | |
| 293 | PROJECT : GSM-PS (6103) MODULE : DRV_VMD | | |
| 294 | STATE : code ROUTINE : vmd_start_recognition | | |
| 295 +--------------------------------------------------------------------+ | |
| 296 | |
| 297 PURPOSE : This function is used to a speech recognition procedure. | |
| 298 The needed parameters are defined in the structure | |
| 299 vmd_start_recognition_req_type. | |
| 300 | |
| 301 */ | |
| 302 | |
| 303 GLOBAL UBYTE vmd_start_recognition (vmd_speech_recognition_req_type * vmd_parameter) | |
| 304 { | |
| 305 PALLOC (mmi_sr_req, MMI_SR_REQ_V); | |
| 306 | |
| 307 /* | |
| 308 * copy parameters to send to layer 1 | |
| 309 * | |
| 310 * NOTE: parameter usage is not clear (missing documents) | |
| 311 */ | |
| 312 mmi_sr_req->param1 = vmd_parameter->i_speaker; | |
| 313 mmi_sr_req->param2 = vmd_parameter->i_action; | |
| 314 mmi_sr_req->param3 = vmd_parameter->i_param1; | |
| 315 mmi_sr_req->param4 = vmd_parameter->i_param2; | |
| 316 | |
| 317 PSENDX (L1, mmi_sr_req); | |
| 318 | |
| 319 return DRV_OK; | |
| 320 } | |
| 321 | |
| 322 /* | |
| 323 +--------------------------------------------------------------------+ | |
| 324 | PROJECT : GSM-PS (6103) MODULE : DRV_VMD | | |
| 325 | STATE : code ROUTINE : vmd_mmi_vm_end_record_ind | | |
| 326 +--------------------------------------------------------------------+ | |
| 327 | |
| 328 PURPOSE : This function is called after reception of the | |
| 329 MMI_VM_END_RECORD_IND primitive from layer 1. | |
| 330 | |
| 331 */ | |
| 332 | |
| 333 LOCAL void vmd_mmi_vm_end_record_ind (T_MMI_VM_END_RECORD_IND * vmd_parameter) | |
| 334 { | |
| 335 drv_SignalID_Type signal_params; | |
| 336 | |
| 337 signal_params.SignalType = VMD_END_RECORD; | |
| 338 | |
| 339 #if defined (NEW_FRAME) | |
| 340 | |
| 341 signal_params.SignalType = 0; | |
| 342 //nm | |
| 343 // signal_params.UserData = vmd_parameter; | |
| 344 | |
| 345 #else | |
| 346 signal_params.SignalValue = 0; | |
| 347 //nm | |
| 348 // signal_params.UserData = vmd_parameter; | |
| 349 #endif | |
| 350 | |
| 351 if (vmd_signal_callback NEQ NULL) | |
| 352 (*vmd_signal_callback)(&signal_params); | |
| 353 } | |
| 354 | |
| 355 /* | |
| 356 +--------------------------------------------------------------------+ | |
| 357 | PROJECT : GSM-PS (6103) MODULE : DRV_VMD | | |
| 358 | STATE : code ROUTINE : vmd_mmi_vm_end_play_ind | | |
| 359 +--------------------------------------------------------------------+ | |
| 360 | |
| 361 PURPOSE : This function is called after reception of the | |
| 362 MMI_VM_END_PLAY_IND primitive from layer 1. | |
| 363 | |
| 364 */ | |
| 365 | |
| 366 LOCAL void vmd_mmi_vm_end_play_ind (T_MMI_VM_END_PLAY_IND * vmd_parameter) | |
| 367 { | |
| 368 drv_SignalID_Type signal_params; | |
| 369 | |
| 370 signal_params.SignalType = VMD_END_PLAY; | |
| 371 | |
| 372 #if defined (NEW_FRAME) | |
| 373 signal_params.SignalType = 0; | |
| 374 //nm | |
| 375 // signal_params.UserData = vmd_parameter; | |
| 376 | |
| 377 #else | |
| 378 signal_params.SignalValue = 0; | |
| 379 //nm | |
| 380 // signal_params.UserData = vmd_parameter; | |
| 381 #endif | |
| 382 | |
| 383 if (vmd_signal_callback NEQ NULL) | |
| 384 (*vmd_signal_callback)(&signal_params); | |
| 385 } | |
| 386 | |
| 387 /* | |
| 388 +--------------------------------------------------------------------+ | |
| 389 | PROJECT : GSM-PS (6103) MODULE : DRV_VMD | | |
| 390 | STATE : code ROUTINE : vmd_mmi_sr_ind | | |
| 391 +--------------------------------------------------------------------+ | |
| 392 | |
| 393 PURPOSE : This function is called after reception of the | |
| 394 MMI_SR_IND primitive from layer 1. | |
| 395 | |
| 396 */ | |
| 397 | |
| 398 LOCAL void vmd_mmi_sr_end_ind (T_MMI_SR_IND_V * vmd_parameter) | |
| 399 { | |
| 400 drv_SignalID_Type signal_params; | |
| 401 | |
| 402 signal_params.SignalType = VMD_SPEECH_RECOGNITION; | |
| 403 | |
| 404 #if defined (NEW_FRAME) | |
| 405 signal_params.SignalType = 0; | |
| 406 //nm | |
| 407 // signal_params.UserData = vmd_parameter; | |
| 408 | |
| 409 #else | |
| 410 signal_params.SignalValue = 0; | |
| 411 //nm | |
| 412 // signal_params.UserData = vmd_parameter; | |
| 413 #endif | |
| 414 | |
| 415 if (vmd_signal_callback NEQ NULL) | |
| 416 (*vmd_signal_callback)(&signal_params); | |
| 417 } | |
| 418 | |
| 419 | |
| 420 /* | |
| 421 +--------------------------------------------------------------------+ | |
| 422 | PROJECT : GSM-PS (6103) MODULE : DRV_VMD | | |
| 423 | STATE : code ROUTINE : vmd_primitive | | |
| 424 +--------------------------------------------------------------------+ | |
| 425 | |
| 426 PURPOSE : This function is called from the CST pei module after | |
| 427 reception of a primitive from layer 1. If it is a | |
| 428 VMD primitive it is distributed and the primitive is | |
| 429 freed, else nothing happens. | |
| 430 | |
| 431 */ | |
| 432 | |
| 433 GLOBAL UBYTE vmd_primitive (USHORT opc, void * data) | |
| 434 { | |
| 435 switch (opc) | |
| 436 { | |
| 437 case MMI_VM_END_RECORD_IND: | |
| 438 vmd_mmi_vm_end_record_ind ((T_MMI_VM_END_RECORD_IND *)data); | |
| 439 PFREE (data); | |
| 440 return TRUE; | |
| 441 | |
| 442 case MMI_VM_END_PLAY_IND: | |
| 443 vmd_mmi_vm_end_play_ind ((T_MMI_VM_END_PLAY_IND *)data); | |
| 444 PFREE (data); | |
| 445 return TRUE; | |
| 446 | |
| 447 case MMI_SR_IND_V: | |
| 448 vmd_mmi_sr_end_ind ((T_MMI_SR_IND_V *)data); | |
| 449 PFREE (data); | |
| 450 return TRUE; | |
| 451 | |
| 452 } | |
| 453 return FALSE; | |
| 454 } | |
| 455 | |
| 456 #endif |
