1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 | Project : GSM-PS (6147)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 | Modul : CMH_UARTS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 | Copyright 2002 Texas Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 | All rights reserved.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 | This file is confidential and a trade secret of Texas
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 | Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 | The receipt of or possession of this file does not convey
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 | any rights to reproduce or disclose its contents or to
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 | manufacture, use, or sell anything it may describe, in
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 | whole, or in part, without the specific written consent of
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 | Texas Instruments Berlin, AG.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 | Purpose :
|
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
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 #ifdef UART
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 #ifndef CMH_UARTS_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 #define CMH_UARTS_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 #include "aci_all.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 /*==== INCLUDES ===================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 #include "aci_cmh.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 #include "ati_cmd.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 #include "aci_cmd.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 #include "dti.h" /* functionality of the dti library */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 #include "aci.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 #include "psa.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 #include "aci_fd.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 #include "cmh.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 #include "aci_lst.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 #include "dti_conn_mng.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 #include "dti_cntrl_mng.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 #include "psa_uart.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 #include "cmh_uart.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 #include "sap_dti.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 #include "psa_psi.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 #include "cmh_psi.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 #include "aci_mem.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 #include "aci_io.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 #include "l4_tim.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 #include "psa_cc.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 typedef struct /* + IPR parameter */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 T_ACI_BD_RATE rate;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 T_ACI_CMD_SRC srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 T_ACI_IPR;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 EXTERN T_ACI_LIST *ati_src_list;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 /*==== CONSTANTS ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 /*==== EXPORT =====================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 EXTERN char *cmdErrStr; /* Error Message */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 static T_ACI_IPR uart_ipr_param;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 EXTERN CHAR *cmdAtError (AtErrCode e);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 /*==== VARIABLES ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 GLOBAL T_ACI_LIST *uart_src_params = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 GLOBAL T_ACI_UART_MUX_PARMS holdMuxParms;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 * uart_com_par: Lists all COM parameter for every device.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 *
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 * This list is only used so long as the UART SAP don't support parameter getting.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 *
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 GLOBAL T_ACI_LIST *uart_com_par = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 /*==== FUNCTIONS ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 GLOBAL void cmhUART_lst_init (void)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 TRACE_FUNCTION ("cmhUART_lst_init()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 uart_src_params = new_list ();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 /*psi_src_params = new_list();*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 if ( !uart_com_par )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 uart_com_par = new_list ();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 /* if (!psi_dev_list)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 psi_dev_list = new_list();*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 GLOBAL T_ACI_BD_RATE convert_mux_port_speed (UBYTE mux_port_speed)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 switch (mux_port_speed)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 case 1:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 return (BD_RATE_9600);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 case 2:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 return (BD_RATE_19200);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 case 3:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 return (BD_RATE_38400);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 case 4:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 return (BD_RATE_57600);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 case 5:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 return (BD_RATE_115200);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 return (BD_RATE_NotPresent);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 | PROJECT : GSM-PS (6147) MODULE : CMH_PHBS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 | STATE : code ROUTINE : sAT_PlusCMUX |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 PURPOSE : This is the functional counterpart of the +CMUX
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 AT command which is responsible for starting multiplexing transactions.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 GLOBAL T_ACI_RETURN sAT_PlusCMUX ( T_ACI_CMD_SRC srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 UBYTE mode,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 UBYTE subset,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 UBYTE port_speed,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 USHORT N1,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 UBYTE T1,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 UBYTE N2,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 UBYTE T2,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 UBYTE T3 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 #ifdef DTI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 T_ACI_DTI_PRC *src_infos = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 T_ACI_UART_MUX_PARMS *MuxParms = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 T_ATI_SRC_PARAMS *src_params = find_element (ati_src_list, (UBYTE)srcId, search_ati_src_id);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 TRACE_FUNCTION ("sAT_PlusCMUX()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 if(!cmh_IsVldCmdSrc (srcId))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 return (AT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 src_infos = find_element (uart_src_params, (UBYTE)srcId, cmhUARTtest_srcId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 if (src_infos EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 TRACE_EVENT_P1("[ERR] sAT_PlusCMUX(): srcId=%d not found", srcId) ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 return (AT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 * AT+CMUX needs to get the answer OK before it sends the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 * primitives to UART, because channel is then already closed.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 io_sendConfirm ( (UBYTE)srcId, cmdAtError ( atOk ), ATI_NORMAL_OUTPUT );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 cmdErrStr = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 ACI_MALLOC( src_infos ->MuxParms, sizeof(T_ACI_UART_MUX_PARMS) );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 MuxParms = src_infos -> MuxParms;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 /* memorize parameters */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 MuxParms->mode = mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 MuxParms->subset = subset;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 MuxParms->port_speed = port_speed;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 MuxParms->N1 = N1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 MuxParms->T1 = T1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 MuxParms->N2 = N2;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 MuxParms->T2 = T2;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 MuxParms->T3 = T3;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 if ((src_infos->data_buffer.data_list EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 AND (aci_src_dti_params[srcId].dtxState EQ READY) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 uartEntcurCmd[srcId] = AT_CMD_NONE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 if ((cmhUART_CMUX (srcId)) EQ FALSE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 * we already sent an OK according to GSM 27.010, but now the muxer is not ready !
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 * this AT_FAIL results in a ATI_FAIL_NO_OUTPUT at function setatPlusCMUX().
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 * so, what will the source do in this case ?
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 TRACE_EVENT("[ERR] sAT_PlusCMUX()(): UART muxer not ready");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 return (AT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 /*Now we wait for the dtx state to be ready and the multiplexer will be started
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 from function sig_dti_tx_buffer_ready_ind() after the data buffer of the source is
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 emptied*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 uartEntcurCmd[srcId] = AT_CMD_CMUX;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 return ( AT_EXCT );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 return ( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 #endif /* DTI */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 GLOBAL T_ACI_RETURN qAT_PlusCMUX ( T_ACI_CMD_SRC srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 UBYTE *mode,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215 UBYTE *subset,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 UBYTE *port_speed,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 USHORT *N1,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 UBYTE *T1,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 UBYTE *N2,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 UBYTE *T2,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 UBYTE *T3 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 TRACE_FUNCTION ("qAT_PlusCMUX()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 if ( (holdMuxParms.mode EQ 0) AND (holdMuxParms.subset EQ 0) AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 (holdMuxParms.port_speed EQ 0) AND (holdMuxParms.N1 EQ 0) AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 (holdMuxParms.T1 EQ 0) AND (holdMuxParms.N2 EQ 0) AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 (holdMuxParms.T2 EQ 0) AND (holdMuxParms.T3 EQ 0) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 TRACE_FUNCTION("No Mux is enabled");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 return (AT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 *mode = holdMuxParms.mode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 *subset = holdMuxParms.subset;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 *port_speed = holdMuxParms.port_speed;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 *N1 = holdMuxParms.N1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 *T1 = holdMuxParms.T1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238 *N2 = holdMuxParms.N2;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239 *T2 = holdMuxParms.T2;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 *T3 = holdMuxParms.T3;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 return ( AT_CMPL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 GLOBAL BOOL cmhUART_CMUX (T_ACI_CMD_SRC srcId)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247 T_ACI_DTI_PRC *src_infos = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 T_ACI_BD_RATE speed = BD_RATE_NotPresent;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 TRACE_FUNCTION ("cmhUART_CMUX()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 src_infos = find_element (uart_src_params, (UBYTE)srcId, cmhUARTtest_srcId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254 if (src_infos EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256 TRACE_EVENT_P1("[ERR] sAT_PlusCMUX(): srcId=%d not found", srcId) ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 return (FALSE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 if (cmhUART_stopConnection ((UBYTE)srcId))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 if (src_infos->MuxParms)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 speed = convert_mux_port_speed (src_infos->MuxParms->port_speed);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 if ( speed NEQ BD_RATE_NotPresent )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 * at first we have to change the baud rate (primitive to UART)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271 if (cmhUART_SetDataRate ((UBYTE)srcId, speed) EQ AT_EXCT)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273 return (TRUE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277 TRACE_EVENT("[ERR] cmhUART_CMUX(): not able to change baud rate");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278 return (FALSE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 * void function, sends the UART_MUX_START_REQ primitive
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283 * return value is handled by the confirmation
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
284 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
285 psaUART_StartMux( src_infos->device,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
286 src_infos->MuxParms->mode,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
287 src_infos->MuxParms->subset,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
288 src_infos->MuxParms->N1,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
289 src_infos->MuxParms->T1,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290 src_infos->MuxParms->N2,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
291 src_infos->MuxParms->T2,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
292 src_infos->MuxParms->T3);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
293
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
294 memcpy( (CHAR *)&holdMuxParms, (CHAR *)src_infos->MuxParms, sizeof(T_ACI_UART_MUX_PARMS));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295 ACI_MFREE( src_infos->MuxParms );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 src_infos->MuxParms = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297 return (TRUE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
299 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
301 TRACE_EVENT("[ERR] cmhUART_CMUX(): no muxer parameters available");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
302 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
303 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
305 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
306 TRACE_EVENT("[ERR] cmhUART_CMUX(): not able to stop UART connection");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 return (FALSE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
310
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
311 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
312 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313 | PROJECT : GSM-PS (6147) MODULE : CMH_DTIS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 | ROUTINE : cmhUART_getdata |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
315 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
316
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
317 PURPOSE : tell DTI that ACI is ready to receive more datas.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
318 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
319 GLOBAL void cmhUART_getdata ( T_ACI_CMD_SRC srcId )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
320 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
321 TRACE_FUNCTION ("cmhUART_getdata");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
322
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
323 #ifdef RMV_01_04_03
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
324 #ifdef FF_TWO_UART_PORTS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
325 if (srcId NEQ UART_DATA_CHANNEL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
326 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
327 psaDTI_getdata ( (UBYTE)srcId, DTI_ENTITY_UART);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
328 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
329 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
330 psaDTI_getdata ( (UBYTE)srcId, DTI_ENTITY_UART);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
331 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
332 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
333
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
334 psaDTI_getdata ( (UBYTE)srcId, DTI_ENTITY_UART);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
335
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
336 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
337
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
338 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
339 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
340 | PROJECT : GSM-PS (6147) MODULE : CMH_DTIS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
341 | ROUTINE : cmhUART_startConnection |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
342 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
343
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
344 PURPOSE : start a DTI connection with UART.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
345 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
346
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
347 GLOBAL void cmhUART_startConnection (UBYTE srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
348 T_ACI_DEVICE_TYPE device_type)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
349 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
350 T_ACI_DTI_PRC *src_infos;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
351 T_ACI_DEVICE_ENTRY *device_entry;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
352 T_ACI_DEVICE_TYPE curr_device_type;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
353 T_DTI_ENTITY_ID entity_list[] = {DTI_ENTITY_ACI};
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
354
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
355 TRACE_FUNCTION ("cmhUART_startConnection ()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
356
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
357 src_infos = find_element (uart_src_params, (UBYTE)srcId, cmhUARTtest_srcId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
358 if (src_infos EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
359 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
360 TRACE_EVENT_P1("[ERR] cmhUART_startConnection: srcId=%d not found",
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
361 srcId) ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
362 return ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
363 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
364
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
365 device_entry = cmhUART_GetDeviceParOverDevice( src_infos->device );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
366
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
367 if ( device_entry EQ NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
368 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
369 TRACE_EVENT_P1("[ERR] cmhUART_startConnection: device=%d not found", src_infos->device) ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
370 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
371 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
372
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
373 curr_device_type = cmhUART_GetDeviceType (srcId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
374
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
375 switch (curr_device_type)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
376 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
377 case DEVICE_TYPE_UNKNOWN:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
378 /* register device to the DTI Control Manager */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
379 #ifdef DTI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
380 dti_cntrl_new_device ( srcId, /* ATI source ID */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
381 DTI_ENTITY_UART, /* device ID */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
382 src_infos->device, /* device number */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
383 src_infos->dlci, /* sub-channel number */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
384 DTI_PORT_NUMBER_NOTPRESENT, /* ATI-RIV port number */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
385 DTI_CPBLTY_CMD | DTI_CPBLTY_SER, /* capabilities */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
386 DTI_DRIVER_ID_NOTPRESENT,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
387 DTI_DIO_ID_NOTPRESENT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
388
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
389 #endif /* DTI */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
390 /* set device type */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
391 cmhUART_ChangeDeviceType (srcId, device_type);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
392 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
393
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
394 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
395 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
396 } /* switch */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
397
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
398 if (device_type EQ DEVICE_TYPE_URT)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
399 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
400 /* initialize UART */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
401 psaUART_SetParameters (src_infos->device, &device_entry->comPar);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
402 /* has to wait for confirmation before setting DTI channel */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
403 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
404 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
405 #ifdef DTI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
406 /* request of a DTI channel to communicate with UART */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
407 dti_cntrl_est_dpath_indirect ( src_infos->srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
408 entity_list,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
409 1,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
410 SPLIT,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
411 atiUART_dti_cb,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
412 DTI_CPBLTY_CMD,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
413 DTI_CID_NOTPRESENT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
414 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
415 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
416 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
417 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
418 | PROJECT : GSM-PS (6147) MODULE : CMH_DTIS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
419 | ROUTINE : cmhUART_stopConnection |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
420 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
421
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
422 PURPOSE : stop a DTI connection with UART.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
423 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
424 GLOBAL BOOL cmhUART_stopConnection (UBYTE srcId)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
425 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
426 T_ACI_DTI_PRC *src_infos;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
427
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
428 TRACE_FUNCTION ("cmhUART_stopConnection()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
429
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
430 src_infos = find_element (uart_src_params, (UBYTE)srcId, cmhUARTtest_srcId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
431 if (src_infos EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
432 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
433 TRACE_EVENT_P1("[ERR] cmhUART_stopConnection: srcId=%d not found",
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
434 srcId) ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
435 return (FALSE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
436 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
437
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
438 src_infos->LineState = LINE_DISCONNECTED;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
439
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
440 if (cmhUART_ChangeDeviceType (src_infos->srcId, DEVICE_TYPE_UNKNOWN))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
441 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
442 #ifdef DTI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
443 if (dti_cntrl_close_dpath_from_src_id( srcId ))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
444 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
445 return (TRUE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
446 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
447 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
448 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
449
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
450 return (FALSE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
451 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
452
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
453 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
454 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
455 | PROJECT : GSM-PS (6147) MODULE : CMH_UARTS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
456 | STATE : code ROUTINE : sAT_PlusIPR |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
457 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
458
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
459 PURPOSE : This is the functional counterpart to the +IPR AT command
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
460 which is responsible to set the data rate.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
461 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
462
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
463 GLOBAL void cmhUART_init_ipr_params(void)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
464 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
465 TRACE_FUNCTION ("cmhUART_init_ipr_params()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
466
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
467 uart_ipr_param.srcId = CMD_SRC_NONE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
468 uart_ipr_param.rate = BD_RATE_NotPresent;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
469 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
470
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
471 GLOBAL T_ACI_RETURN sAT_PlusIPR(T_ACI_CMD_SRC srcId, T_ACI_BD_RATE rate)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
472 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
473 ULONG ipr_timer = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
474
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
475 TRACE_FUNCTION ("sAT_PlusIPR()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
476
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
477 /* check command source */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
478 if(srcId EQ CMD_SRC_LCL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
479 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
480 TRACE_ERROR("This command is not supported for local command source");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
481 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotSupp );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
482 return AT_FAIL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
483 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
484 if(!cmh_IsVldCmdSrc (srcId))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
485 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
486 return AT_FAIL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
487 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
488
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
489 /* parameter check */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
490 if ( rate < BD_RATE_AUTO OR rate > BD_RATE_115200 ) /* maximum supported value by UART */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
491 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
492 ACI_ERR_DESC( ACI_ERR_CLASS_Cme, CME_ERR_OpNotSupp );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
493 return AT_FAIL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
494 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
495
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
496 /* We need to sent the OK prior we switch to the new baudrate */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
497 io_sendConfirm((UBYTE)srcId, cmdAtError(atOk), ATI_NORMAL_OUTPUT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
498 cmdErrStr = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
499
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
500 uart_ipr_param.rate = rate;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
501 uart_ipr_param.srcId = srcId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
502
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
503 ipr_timer = 600; /* worst case calculation: 4 characters:OK<CR><LF> at 75bit/s
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
504 with 1 startbit, 1 paritybit and 1 stopbit (2 stopbits are only used for longer words)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
505 4*(8+1+1+1)= 44 bits => 44/75 seconds = 586 msec*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
506
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
507 /* time for output "OK" then send changed parameter to UART */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
508 uartEntcurCmd[srcId] = AT_CMD_IPR;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
509 TIMERSTART(ipr_timer, ACI_IPR);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
510
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
511 return AT_CMPL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
512 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
513
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
514
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
515 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
516 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
517 | PROJECT : GSM-PS (6147) MODULE : CMH_UARTS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
518 | STATE : code ROUTINE : timeout_PlusIPR |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
519 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
520
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
521 PURPOSE : This function send the changed baudrate to UART after
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
522 the timer ACI_IPR is expired
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
523 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
524
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
525 GLOBAL void timeout_PlusIPR ( void)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
526 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
527 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
528 T_ACI_DTI_PRC_PSI *src_infos = find_element (psi_src_params,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
529 (UBYTE)uart_ipr_param.srcId, cmhPSItest_srcId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
530 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
531 TRACE_FUNCTION ("timeout_PlusIPR()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
532 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
533 if ( src_infos NEQ NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
534 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
535 cmhPSI_SetDataRate((UBYTE)uart_ipr_param.srcId, uart_ipr_param.rate);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
536 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
537 /* force parameter request */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
538 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
539 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
540 cmhUART_SetDataRate((UBYTE)uart_ipr_param.srcId, uart_ipr_param.rate);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
541
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
542 cmhUART_init_ipr_params();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
543 uartEntcurCmd[uart_ipr_param.srcId] = AT_CMD_NONE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
544 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
545
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
546 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
547 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
548 | PROJECT : GSM-PS (6147) MODULE : CMH_UARTS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
549 | STATE : code ROUTINE : qAT_PlusIPR |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
550 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
551
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
552 PURPOSE : This is the functional counterpart to the +IPR? AT command
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
553 which returns the current setting for the data rate.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
554
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
555 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
556 GLOBAL T_ACI_RETURN qAT_PlusIPR ( T_ACI_CMD_SRC srcId, T_ACI_BD_RATE *rate)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
557 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
558 T_ACI_DEVICE_ENTRY *device_entry = cmhUART_GetDeviceParOverSrcID( (UBYTE) srcId );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
559 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
560 T_ACI_DEVICE_DCB_ENTRY *device_dcb_entry;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
561 U32 device_type;/* RM 26-05-04 Nice */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
562 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
563 TRACE_FUNCTION ("qAT_PlusIPR()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
564
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
565 if ( device_entry EQ NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
566 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
567 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
568 device_dcb_entry = cmhPSI_GetDeviceParOverSrcID( (UBYTE) srcId );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
569 if (device_dcb_entry EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
570 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
571 return AT_FAIL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
572 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
573 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
574 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
575 device_type = device_dcb_entry->devId & DIO_TYPE_DAT_MASK;/* RM 26-05-04 Nice */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
576 if (device_type EQ DIO_DATA_SER)/* RM 26-05-04 Nice */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
577 *rate = (T_ACI_BD_RATE)device_dcb_entry->dcbPar.dio_dcb_ser.baudrate;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
578 if (device_type EQ DIO_DATA_MUX)/* RM 26-05-04 Nice */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
579 *rate = (T_ACI_BD_RATE)device_dcb_entry->dcbPar.dio_dcb_ser_mux.baudrate;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
580 else if (device_type EQ DIO_DATA_PKT)/* RM 26-05-04 Nice */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
581 return AT_FAIL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
582 return( AT_CMPL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
583 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
584 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
585 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
586 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
587 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
588 * fill in parameters
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
589 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
590 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
591 *rate = (T_ACI_BD_RATE) device_entry->comPar.speed;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
592
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
593 return( AT_CMPL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
594 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
595
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
596 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
597 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
598 | PROJECT : GSM-PS (6147) MODULE : CMH_UARTS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
599 | STATE : code ROUTINE : sAT_PlusICF |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
600 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
601
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
602 PURPOSE : This is the functional counterpart to the +ICF AT command
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
603 which is responsible to set the character framing.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
604 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
605
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
606 GLOBAL T_ACI_RETURN sAT_PlusICF ( T_ACI_CMD_SRC srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
607 T_ACI_BS_FRM format,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
608 T_ACI_BS_PAR parity)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
609 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
610 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
611 T_ACI_DTI_PRC_PSI *src_infos = find_element (psi_src_params,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
612 (UBYTE) srcId, cmhPSItest_srcId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
613 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
614 TRACE_FUNCTION ("sAT_PlusICF()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
615
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
616 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
617 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
618 * parameter check
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
619 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
620 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
621 switch( format )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
622 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
623 case( BS_FRM_NotPresent ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
624 case( BS_FRM_Dat8_Par0_St2 ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
625 case( BS_FRM_Dat8_Par1_St1 ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
626 case( BS_FRM_Dat8_Par0_St1 ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
627 case( BS_FRM_Dat7_Par0_St2 ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
628 case( BS_FRM_Dat7_Par1_St1 ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
629 case( BS_FRM_Dat7_Par0_St1 ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
630
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
631 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
632
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
633 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
634 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
635 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
636 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
637
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
638 switch( parity )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
639 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
640 case( BS_PAR_NotPresent ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
641 case( BS_PAR_Odd ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
642 case( BS_PAR_Even ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
643 case( BS_PAR_Mark ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
644 case( BS_PAR_Space ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
645
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
646 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
647
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
648 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
649 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
650 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
651 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
652
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
653 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
654 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
655 * force parameter request
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
656 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
657 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
658 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
659 if ( src_infos NEQ NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
660 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
661 if ( AT_EXCT EQ cmhPSI_SetCharacterFraming((UBYTE) srcId, format, parity) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
662 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
663 uartEntcurCmd[srcId] = AT_CMD_ICF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
664 return AT_EXCT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
665 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
666 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
667 /* force parameter request */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
668 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
669 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
670 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
671 if ( AT_EXCT EQ cmhUART_SetCharacterFraming((UBYTE) srcId, format, parity) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
672 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
673 uartEntcurCmd[srcId] = AT_CMD_ICF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
674 return AT_EXCT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
675 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
676 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
677 return AT_FAIL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
678 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
679
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
680 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
681 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
682 | PROJECT : GSM-PS (6147) MODULE : CMH_UARTS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
683 | STATE : code ROUTINE : qAT_PlusICF |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
684 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
685
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
686 PURPOSE : This is the functional counterpart to the +ICF? AT command
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
687 which returns the current setting for character framing.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
688
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
689 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
690
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
691 GLOBAL T_ACI_RETURN qAT_PlusICF ( T_ACI_CMD_SRC srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
692 T_ACI_BS_FRM *format,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
693 T_ACI_BS_PAR *parity)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
694 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
695 T_ACI_DEVICE_ENTRY *device_entry =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
696 cmhUART_GetDeviceParOverSrcID( (UBYTE) srcId );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
697 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
698 T_ACI_DEVICE_DCB_ENTRY *device_dcb_entry =
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
699 cmhPSI_GetDeviceParOverSrcID( (UBYTE) srcId );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
700 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
701 TRACE_FUNCTION ("qAT_PlusICF()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
702 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
703 if (device_entry EQ NULL AND device_dcb_entry EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
704 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
705 if (device_entry EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
706 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
707 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
708 return AT_FAIL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
709 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
710 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
711 if ( device_entry EQ NULL AND device_dcb_entry NEQ NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
712 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
713 *format = cmhPSI_GetFktInterfaceFormat(device_dcb_entry);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
714 *parity = cmhPSI_GetFktInterfaceParity(device_dcb_entry);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
715 return( AT_CMPL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
716 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
717 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
718
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
719 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
720 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
721 * fill in parameters
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
722 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
723 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
724 /*lint -e613 (Warning --Possible use of null pointer) */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
725 *format = cmhUART_GetFktInterfaceFormat(&(device_entry->comPar));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
726
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
727 *parity = cmhUART_GetFktInterfaceParity(&(device_entry->comPar));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
728 /*lint +e613 (Warning --Possible use of null pointer) */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
729
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
730 return( AT_CMPL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
731 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
732
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
733 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
734 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
735 | PROJECT : GSM-PS (6147) MODULE : CMH_UARTS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
736 | STATE : code ROUTINE : sAT_PlusIFC |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
737 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
738
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
739 PURPOSE : This is the functional counterpart to the +IFC AT command
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
740 which is responsible to set the flow control.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
741 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
742
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
743 GLOBAL T_ACI_RETURN sAT_PlusIFC ( T_ACI_CMD_SRC srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
744 T_ACI_RX_FLOW_CTRL DCE_by_DTE,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
745 T_ACI_RX_FLOW_CTRL DTE_by_DCE )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
746 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
747 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
748 T_ACI_DTI_PRC_PSI *src_infos = find_element (psi_src_params, (UBYTE) srcId, cmhPSItest_srcId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
749 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
750 T_ACI_RETURN result = AT_FAIL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
751 TRACE_FUNCTION ("sAT_PlusIFC()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
752
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
753 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
754 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
755 * parameter check
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
756 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
757 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
758 TRACE_EVENT_P2("sAT_PlusIFC: DCE_by_DTE=%d DTE_by_DCE=%d", DCE_by_DTE, DTE_by_DCE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
759
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
760 if ( DCE_by_DTE < RX_FLOW_NotPresent OR DCE_by_DTE > RX_FLOW_HARDWARE )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
761 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
762 TRACE_EVENT("sAT_PlusIFC: err1");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
763 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
764 return AT_FAIL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
765 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
766
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
767 if ( DTE_by_DCE < RX_FLOW_NotPresent OR DTE_by_DCE > RX_FLOW_HARDWARE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
768 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
769 TRACE_EVENT("sAT_PlusIFC: err2");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
770 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
771 return AT_FAIL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
772 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
773
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
774 if ( DTE_by_DCE NEQ RX_FLOW_NotPresent AND DCE_by_DTE NEQ DTE_by_DCE )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
775 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
776 TRACE_EVENT("sAT_PlusIFC: err3");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
777 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
778 return AT_FAIL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
779 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
780
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
781 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
782 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
783 * force parameter request
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
784 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
785 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
786 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
787 if (src_infos NEQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
788 result = cmhPSI_SetFlowControl((UBYTE) srcId, DCE_by_DTE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
789 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
790 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
791 result = cmhUART_SetFlowControl((UBYTE) srcId, DCE_by_DTE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
792 switch (result)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
793 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
794 case AT_EXCT:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
795 uartEntcurCmd[srcId] = AT_CMD_IFC;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
796 return AT_EXCT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
797 case AT_CMPL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
798 return AT_CMPL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
799 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
800 return result;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
801 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
802
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
803 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
804 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
805 | PROJECT : GSM-PS (6147) MODULE : CMH_UARTS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
806 | STATE : code ROUTINE : qAT_PlusIFC |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
807 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
808
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
809 PURPOSE : This is the functional counterpart to the +ICF? AT command
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
810 which returns the current setting for character framing.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
811
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
812 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
813
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
814 GLOBAL T_ACI_RETURN qAT_PlusIFC ( T_ACI_CMD_SRC srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
815 T_ACI_RX_FLOW_CTRL *DCE_by_DTE,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
816 T_ACI_RX_FLOW_CTRL *DTE_by_DCE )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
817 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
818 S32 flow_cntrl = RX_FLOW_NotPresent;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
819 T_ACI_DEVICE_ENTRY *device_entry = cmhUART_GetDeviceParOverSrcID( (UBYTE) srcId );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
820 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
821 T_ACI_DEVICE_DCB_ENTRY *device_dcb_entry = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
822 U32 device_type;/* RM 26-05-04 Nice */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
823 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
824 TRACE_FUNCTION ("qAT_PlusIFC()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
825
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
826 if ( device_entry EQ NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
827 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
828 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
829 if ( (device_dcb_entry = cmhPSI_GetDeviceParOverSrcID( (UBYTE) srcId )) EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
830 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
831 return AT_FAIL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
832 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
833 device_type = device_dcb_entry->devId & DIO_TYPE_DAT_MASK;/* RM 26-05-04 Nice */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
834 if (device_type EQ DIO_DATA_PKT)/* RM 26-05-04 Nice */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
835 return AT_FAIL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
836 if (device_type EQ DIO_DATA_SER)/* RM 26-05-04 Nice */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
837 flow_cntrl = device_dcb_entry->dcbPar.dio_dcb_ser.flow_control;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
838 if (device_type EQ DIO_DATA_MUX)/* RM 26-05-04 Nice */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
839 flow_cntrl = device_dcb_entry->dcbPar.dio_dcb_ser_mux.flow_control;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
840
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
841 switch ( flow_cntrl )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
842 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
843 case (DIO_FLOW_NONE):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
844 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
845 *DCE_by_DTE = *DTE_by_DCE = RX_FLOW_NONE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
846 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
847 case (DIO_FLOW_XON_XOFF):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
848 *DCE_by_DTE = *DTE_by_DCE = RX_FLOW_SOFTWARE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
849 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
850 case ( DIO_FLOW_RTS_CTS):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
851 *DCE_by_DTE = *DTE_by_DCE = RX_FLOW_HARDWARE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
852 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
853 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
854 return( AT_CMPL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
855 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
856 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
857
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
858 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
859 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
860 * fill in parameters
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
861 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
862 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
863 switch ( device_entry->comPar.flow_rx )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
864 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
865 case UART_IO_FC_RX_NONE:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
866 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
867 *DCE_by_DTE = *DTE_by_DCE = RX_FLOW_NONE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
868 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
869 case UART_IO_FC_RX_XOFF:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
870 *DCE_by_DTE = *DTE_by_DCE = RX_FLOW_SOFTWARE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
871 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
872 case UART_IO_FC_RX_RTS:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
873 *DCE_by_DTE = *DTE_by_DCE = RX_FLOW_HARDWARE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
874 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
875 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
876
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
877 return( AT_CMPL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
878 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
879
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
880
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
881 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
882 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
883 | PROJECT : GSM-PS (6147) MODULE : CMH_CCS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
884 | STATE : code ROUTINE : sAT_AndC |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
885 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
886
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
887 PURPOSE : set DCD behaviour
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
888 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
889
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
890 GLOBAL T_ACI_RETURN sAT_AndC ( T_ACI_CMD_SRC srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
891 T_ACI_DCD_MOD value )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
892 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
893 BOOL no_data_call_on_this_line = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
894 UBYTE i;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
895
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
896 TRACE_FUNCTION ("sAT_AndC()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
897
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
898 /* check command source */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
899 if(!cmh_IsVldCmdSrc (srcId))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
900 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
901 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
902 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
903
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
904 /* check parameter value */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
905 switch(value)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
906 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
907 case(DCD_ALWAYS_ON):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
908 case(DCD_DISABLE_AFTER_CALL):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
909 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
910 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
911 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
912 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
913 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
914
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
915 /* set DCD behaviour */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
916 cmhPrm[srcId ].ccCmdPrm.DCDmode = value;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
917
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
918 /* set DCD */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
919 if(value EQ DCD_ALWAYS_ON)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
920 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
921 io_setDCD (srcId, IO_DCD_ON);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
922 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
923 else if(value EQ DCD_DISABLE_AFTER_CALL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
924 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
925 for (i = 0; i < MAX_CALL_NR; i++)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
926 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
927 T_CC_CALL_TBL *ctbx = ccShrdPrm.ctb[i];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
928
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
929 if (ctbx NEQ NULL AND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
930 ctbx->curSrc EQ srcId)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
931 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
932 switch(ctbx->BC[ctbx->curBC].bearer_serv)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
933 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
934 case(MNCC_BEARER_SERV_NOT_PRES):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
935 case(MNCC_BEARER_SERV_SPEECH):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
936 case(MNCC_BEARER_SERV_AUX_SPEECH):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
937 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
938 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
939 /* data call */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
940 no_data_call_on_this_line = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
941 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
942 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
943 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
944 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
945
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
946 if( no_data_call_on_this_line )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
947 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
948 io_setDCD (srcId, IO_DCD_OFF);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
949 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
950 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
951 return( AT_CMPL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
952 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
953
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
954
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
955 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
956 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
957 | PROJECT : GSM-PS (6147) MODULE : CMH_CCQ |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
958 | STATE : code ROUTINE : qAT_AndC |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
959 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
960
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
961 PURPOSE : query DCD behaviour setting.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
962 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
963
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
964 GLOBAL T_ACI_RETURN qAT_AndC ( T_ACI_CMD_SRC srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
965 T_ACI_DCD_MOD *value)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
966 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
967
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
968 TRACE_FUNCTION ("qAT_AndC()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
969
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
970 /* check command source */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
971 if(!cmh_IsVldCmdSrc (srcId))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
972 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
973 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
974 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
975
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
976 /* check parameter value */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
977 if( value EQ NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
978 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
979 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
980 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
981 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
982
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
983 /* query DCD behaviour */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
984 *value = cmhPrm[srcId ].ccCmdPrm.DCDmode;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
985
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
986 return( AT_CMPL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
987 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
988
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
989
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
990 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
991 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
992 | PROJECT : GSM-PS (6147) MODULE : CMH_UARTS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
993 | STATE : code ROUTINE : sAT_AndD |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
994 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
995
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
996 PURPOSE : set DTR behaviour.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
997 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
998
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
999 GLOBAL T_ACI_RETURN sAT_AndD ( T_ACI_CMD_SRC srcId, UBYTE value)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1000 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1001 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1002 T_ACI_DTI_PRC_PSI *dti_prc=find_element (psi_src_params,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1003 (UBYTE)srcId, cmhPSItest_srcId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1004 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1005 TRACE_FUNCTION ("sAT_AndD()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1006 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1007 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1008 * check command source
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1009 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1010 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1011 if(!cmh_IsVldCmdSrc (srcId))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1012 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1013 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1014 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1015
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1016 switch( value )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1017 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1018 case( DTR_BEHAVIOUR_Ignore ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1019 case( DTR_BEHAVIOUR_CommandMode ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1020 case( DTR_BEHAVIOUR_ClearCall ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1021 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1022 if (dti_prc NEQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1023 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1024 psiShrdPrm.dtr_behaviour = (T_ACI_DTR_BEHAVIOUR)value;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1025 TRACE_EVENT("device entry is in PSI");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1026 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1027 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1028 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1029 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1030 uartShrdPrm.dtr_behaviour = (T_ACI_DTR_BEHAVIOUR)value;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1031 TRACE_EVENT("device entry is in UART");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1032 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1033 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1034
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1035 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1036 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1037 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1038 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1039 return( AT_CMPL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1040 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1041
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1042
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1043 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1044 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1045 | PROJECT : GSM-PS (6147) MODULE : CMH_UARTS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1046 | STATE : code ROUTINE : qAT_AndD |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1047 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1048
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1049 PURPOSE : query DTR behaviour.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1050 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1051
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1052 GLOBAL T_ACI_RETURN qAT_AndD ( T_ACI_CMD_SRC srcId, UBYTE *value)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1053 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1054 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1055 T_ACI_DTI_PRC_PSI *dti_prc=find_element (psi_src_params, (UBYTE)srcId, cmhPSItest_srcId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1056 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1057 T_ACI_DTR_BEHAVIOUR dtr_behavior;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1058 TRACE_FUNCTION ("qAT_AndD()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1059
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1060 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1061 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1062 * check command source
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1063 *-------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1064 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1065 if(!cmh_IsVldCmdSrc (srcId))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1066 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1067 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1068 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1069 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1070 if (dti_prc NEQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1071 dtr_behavior = psiShrdPrm.dtr_behaviour;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1072 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1073 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1074 dtr_behavior = uartShrdPrm.dtr_behaviour;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1075 switch( dtr_behavior )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1076 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1077 case( DTR_BEHAVIOUR_Ignore ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1078 case( DTR_BEHAVIOUR_CommandMode ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1079 case( DTR_BEHAVIOUR_ClearCall ):
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1080 *value = dtr_behavior;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1081 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1082
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1083 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1084 ACI_ERR_DESC( ACI_ERR_CLASS_Ext, EXT_ERR_Parameter );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1085 return( AT_FAIL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1086 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1087 return( AT_CMPL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1088 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1089
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1090 GLOBAL void cmhUART_lst_exit(void)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1091 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1092 T_ACI_LIST *src_infos = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1093
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1094 while (1)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1095 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1096 src_infos = (T_ACI_LIST *)remove_first_element (uart_src_params);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1097
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1098 if (src_infos EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1099 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1100 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1101 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1102 ACI_MFREE (src_infos);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1103
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1104 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1105 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1106 #endif /* ifdef UART */
|