0
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /**
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * @file tut_api.c
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 *
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 * API for TTY SWE.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 *
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 * @author Frederic Turgis (f-turgis@ti.com) & Gerard Cauvy (g-cauvy@ti.com)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 * @version 0.1
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 * History:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 *
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 * Date Modification
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 * ------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 * 01/27/2003 Create
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 *
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 * (C) Copyright 2003 by Texas Instruments Incorporated, All Rights Reserved
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 #ifndef _WINDOWS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 #include "config/l1sw.cfg"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 #include "tty/tty_i.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 #include "tty/tty_api.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 #include "audio/audio_structs_i.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 #include "audio/audio_const_i.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 /* External declaration */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 extern T_AUDIO_ENV_CTRL_BLK* p_audio_gbl_var;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 /********************************************************************************/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 /* Function Name: audio_tty_set_config */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 /* Purpose: This function is called to configure TTY. Currently, only */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 /* supports start and stop */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 /* Input Parameters: */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 /* TTY configuration */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 /* Return path. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 /* Output Parameters: */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 /* Validation of the parameters. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 /* Note: */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 /* None. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 /* Revision History: */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 /* None. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 /********************************************************************************/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 T_AUDIO_RET audio_tty_set_config (T_AUDIO_TTY_CONFIG_PARAMETER *parameter, T_RV_RETURN *return_path)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 #if (L1_GTT == 1)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 /* Declare local variables. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 T_RVF_MB_STATUS mb_status = RVF_GREEN;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 T_RV_HDR *p_msg = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 /************************ audio_tty_set_config function begins ******************/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 if (p_audio_gbl_var == NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 TTY_SEND_TRACE("TTY: Error Audio SWE not started ",RV_TRACE_LEVEL_ERROR);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 return(AUDIO_ERROR);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 /* If bad parameters, then report an error and abort.*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 if ( (parameter->Mode != TTY_STOP)&&
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 (parameter->Mode != TTY_EXT_START))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 TTY_SEND_TRACE("TTY: Error bad parameters ",RV_TRACE_LEVEL_ERROR);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 return (AUDIO_ERROR);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 switch (parameter->Mode)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 case TTY_EXT_START:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 /* allocate the memory for the message to send */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 mb_status = rvf_get_buf (p_audio_gbl_var->mb_external,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 sizeof (T_TTY_START),
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 (T_RVF_BUFFER **) (&p_msg));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 case TTY_STOP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 /* allocate the memory for the message to send */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 mb_status = rvf_get_buf (p_audio_gbl_var->mb_external,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 sizeof (T_TTY_STOP),
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 (T_RVF_BUFFER **) (&p_msg));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 /* If insufficient resources, then report a memory error and abort. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 if (mb_status == RVF_YELLOW)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 /* deallocate the memory */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 rvf_free_buf((T_RVF_BUFFER *)p_msg);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 TTY_SEND_TRACE("TTY: Not Enough Memory (Yellow!) ",RV_TRACE_LEVEL_ERROR);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 return (AUDIO_ERROR);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 if (mb_status == RVF_RED)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 TTY_SEND_TRACE("TTY: Not Enough Memory (Red!) ",RV_TRACE_LEVEL_ERROR);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 return (AUDIO_ERROR);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 /* fill the message id + parameters */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 switch (parameter->Mode)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 case TTY_EXT_START:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 p_msg->msg_id = TTY_START_REQ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 if (return_path->callback_func == NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 ((T_TTY_START *)p_msg)->return_path.addr_id = return_path->addr_id;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 ((T_TTY_START *)p_msg)->return_path.callback_func = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 ((T_TTY_START *)p_msg)->return_path.callback_func = return_path->callback_func;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 case TTY_STOP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 p_msg->msg_id = TTY_STOP_REQ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 /* fill the address source id */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 p_msg->src_addr_id = rvf_get_taskid();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 p_msg->dest_addr_id = p_audio_gbl_var->addrId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 /* send the messsage to the audio entity */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 rvf_send_msg (p_audio_gbl_var->addrId, p_msg);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 return (AUDIO_OK);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 #else // L1_GTT
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 TTY_SEND_TRACE("TTY API not available ", RV_TRACE_LEVEL_ERROR);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 return (AUDIO_ERROR);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 }
|