FreeCalypso > hg > fc-tourmaline
comparison src/cs/services/atp/atp_uart_env.c @ 0:4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:23:26 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4e78acac3d88 |
---|---|
1 /********************************************************************************/ | |
2 /* */ | |
3 /* File Name: atp_uart_env.c */ | |
4 /* */ | |
5 /* Purpose: This file contains the functions used to: */ | |
6 /* - get some information about the ATP-UART */ | |
7 /* interface, such as its name or the memory */ | |
8 /* requirements, */ | |
9 /* - set the memory bank identifier dedicated to the */ | |
10 /* ATP-UART interface, */ | |
11 /* - initialize the ATP-UART interface, */ | |
12 /* - activate the ATP-UART interface, */ | |
13 /* - prepare the termination of the ATP-UART */ | |
14 /* interface, */ | |
15 /* - kill the ATP-UART interface. */ | |
16 /* */ | |
17 /* Note: None. */ | |
18 /* */ | |
19 /* Revision History: */ | |
20 /* 10/04/01 Pascal Pompei */ | |
21 /* - Create. */ | |
22 /* */ | |
23 /* (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved. */ | |
24 /* */ | |
25 /********************************************************************************/ | |
26 #include "atp/atp_uart_i.h" | |
27 #include "atp/atp_uart_env.h" | |
28 #include "rvm/rvm_priorities.h" | |
29 #include "rvm/rvm_use_id_list.h" | |
30 | |
31 | |
32 /******************** GLOBAL ATP-UART INTERFACE CONTROL BLOCK *******************/ | |
33 /* */ | |
34 /* Define a pointer to the 'Global ATP-UART Interface Control Block'. */ | |
35 T_ATP_UART_CTRL_BLK *gbl_atp_uart_ctrl_blk_p = NULL; | |
36 | |
37 | |
38 /********************************************************************************/ | |
39 /* */ | |
40 /* Function Name: atp_uart_get_info */ | |
41 /* */ | |
42 /* Purpose: This function gets some information about the ATP-UART */ | |
43 /* interface, such as its name or the required resources. */ | |
44 /* */ | |
45 /* Input Parameters: */ | |
46 /* info_software_entity_p - Points to the structure gathering information */ | |
47 /* about the ATP-UART interface. */ | |
48 /* */ | |
49 /* Output Parameters: None. */ | |
50 /* */ | |
51 /* Global Parameters: None. */ | |
52 /* */ | |
53 /* Note: None. */ | |
54 /* */ | |
55 /* Revision History: */ | |
56 /* 10/04/01 Pascal Pompei */ | |
57 /* - Create. */ | |
58 /* */ | |
59 /********************************************************************************/ | |
60 T_RVM_RETURN atp_uart_get_info (T_RVM_INFO_SWE *info_software_entity_p) | |
61 { | |
62 | |
63 /*********************** atp_uart_get_info function begins **********************/ | |
64 | |
65 /* Get some information about the ATP-UART interface, such as its priority */ | |
66 /* or the number of needed memory banks. */ | |
67 info_software_entity_p->swe_type = RVM_SWE_TYPE_4; | |
68 ((info_software_entity_p->type_info).type4).stack_size = ATP_UART_STACK_SIZE; | |
69 ((info_software_entity_p->type_info).type4).priority = RVM_ATP_UART_TASK_PRIORITY; | |
70 ((info_software_entity_p->type_info).type4).nb_mem_bank = 0x01; | |
71 | |
72 /* Get the name of the ATP-UART interface. */ | |
73 strcpy (((info_software_entity_p->type_info).type4).swe_name, | |
74 ATP_UART_NAME); | |
75 | |
76 /* Get the unique entity identifier assigned to the ATP-UART interface. */ | |
77 ((info_software_entity_p->type_info).type4).swe_use_id = ATP_UART_USE_ID; | |
78 | |
79 /* Get some information about the 'Memory Bank' assigned to the ATP-UART */ | |
80 /* interface, such as its size or the corresponding watermarks. */ | |
81 strcpy ((((info_software_entity_p->type_info).type4).mem_bank[0]).bank_name, | |
82 "ATP_UART"); | |
83 ((((info_software_entity_p->type_info).type4).mem_bank[0]).initial_params).size = ATP_UART_MB_PRIM_SIZE; | |
84 ((((info_software_entity_p->type_info).type4).mem_bank[0]).initial_params).watermark = ATP_UART_MB_PRIM_WATERMARK; | |
85 | |
86 /* Notify the 'Riviera Manager' of the callback functions to be used in */ | |
87 /* order to run the ATP-UART interface. */ | |
88 ((info_software_entity_p->type_info).type4).set_info = atp_uart_set_info; | |
89 ((info_software_entity_p->type_info).type4).init = atp_uart_init; | |
90 ((info_software_entity_p->type_info).type4).core = atp_uart_core; | |
91 ((info_software_entity_p->type_info).type4).stop = atp_uart_stop; | |
92 ((info_software_entity_p->type_info).type4).kill = atp_uart_kill; | |
93 | |
94 /* Notify the 'Riviera Manager' of the fact that the ATP-UART interface */ | |
95 /* requires to be layered above the AT Parser. */ | |
96 ((info_software_entity_p->type_info).type4).nb_linked_swe = 0x01; | |
97 ((info_software_entity_p->type_info).type4).linked_swe_id[0] = ATP_USE_ID; | |
98 return (RVM_OK); | |
99 | |
100 } /********************** End of atp_uart_get_info function *********************/ | |
101 | |
102 | |
103 /********************************************************************************/ | |
104 /* */ | |
105 /* Function Name: atp_uart_set_info */ | |
106 /* */ | |
107 /* Purpose: This function sets the memory bank identifiers */ | |
108 /* dedicated to the ATP-UART interface. */ | |
109 /* */ | |
110 /* Input Parameters: */ | |
111 /* addr_id - Contains the unique address identifier assigned */ | |
112 /* to the ATP-UART interface. */ | |
113 /* return_path_p - Points to the information regarding return paths */ | |
114 /* assigned to other linked software entities. */ | |
115 /* mb_id_p - Points to the memory bank identifiers assigned to */ | |
116 /* the ATP-UART interface. */ | |
117 /* error_function_p - Function to be called in order to report any */ | |
118 /* unrecoverable error. */ | |
119 /* */ | |
120 /* Output Parameters: None. */ | |
121 /* */ | |
122 /* Global Parameters: None. */ | |
123 /* */ | |
124 /* Note: None. */ | |
125 /* */ | |
126 /* Revision History: */ | |
127 /* 10/04/01 Pascal Pompei */ | |
128 /* - Create. */ | |
129 /* */ | |
130 /********************************************************************************/ | |
131 T_RVM_RETURN atp_uart_set_info (T_RVF_ADDR_ID addr_id, | |
132 T_RV_RETURN return_path_p[], | |
133 T_RVF_MB_ID *mb_id_p, | |
134 T_RVM_CB_FUNC error_function_p) | |
135 { | |
136 /* Declare a local variable. */ | |
137 T_RVF_MB_STATUS mb_status = RVF_GREEN; | |
138 | |
139 /*********************** atp_uart_set_info function begins **********************/ | |
140 | |
141 /* Allocate memory required to store the 'Global ATP-UART Interface Control */ | |
142 /* Block'. */ | |
143 mb_status = rvf_get_buf (mb_id_p[0], | |
144 sizeof (T_ATP_UART_CTRL_BLK), | |
145 (T_RVF_BUFFER **) (&gbl_atp_uart_ctrl_blk_p)); | |
146 | |
147 /* If insufficient resources to properly run the ATP-UART interface, then */ | |
148 /* report an internal memory error and abort. */ | |
149 switch (mb_status) | |
150 { | |
151 case RVF_GREEN: | |
152 { | |
153 | |
154 /* Initialize the 'Global ATP-UART Interface Control Block'. */ | |
155 memset ((T_RVF_BUFFER *) (gbl_atp_uart_ctrl_blk_p), | |
156 0x00, | |
157 sizeof (T_ATP_UART_CTRL_BLK)); | |
158 | |
159 /* Store the memory bank identifier assigned to the ATP-UART */ | |
160 /* interface. */ | |
161 gbl_atp_uart_ctrl_blk_p->mb_id = mb_id_p[0]; | |
162 | |
163 /* Store the unique address identifier assigned to the ATP-UART */ | |
164 /* interface. */ | |
165 gbl_atp_uart_ctrl_blk_p->addr_id = addr_id; | |
166 | |
167 /* Store the function to be called whenever any unrecoverable */ | |
168 /* error occurs. */ | |
169 gbl_atp_uart_ctrl_blk_p->error_function_p = error_function_p; | |
170 rvf_send_trace (" ATP-UART (env). 'atp_uart_set_info' succeeded ", | |
171 48, | |
172 NULL_PARAM, | |
173 RV_TRACE_LEVEL_DEBUG_LOW, | |
174 ATP_USE_ID); | |
175 break; | |
176 } | |
177 case RVF_YELLOW: | |
178 { | |
179 (void) rvf_free_buf ((T_RVF_BUFFER *) (gbl_atp_uart_ctrl_blk_p)); | |
180 gbl_atp_uart_ctrl_blk_p = NULL; | |
181 } | |
182 default: | |
183 { | |
184 rvf_send_trace (" ATP-UART (env). 'atp_uart_set_info' failed ", | |
185 45, | |
186 NULL_PARAM, | |
187 RV_TRACE_LEVEL_WARNING, | |
188 ATP_USE_ID); | |
189 return (RVM_MEMORY_ERR); | |
190 } | |
191 } | |
192 return (RVM_OK); | |
193 | |
194 } /********************** End of atp_uart_set_info function *********************/ | |
195 | |
196 | |
197 /********************************************************************************/ | |
198 /* */ | |
199 /* Function Name: atp_uart_init */ | |
200 /* */ | |
201 /* Purpose: This function initializes the ATP-UART interface. */ | |
202 /* */ | |
203 /* Input Parameters: None. */ | |
204 /* */ | |
205 /* Output Parameters: None. */ | |
206 /* */ | |
207 /* Global Parameters: None. */ | |
208 /* */ | |
209 /* Note: None. */ | |
210 /* */ | |
211 /* Revision History: */ | |
212 /* 10/04/01 Pascal Pompei */ | |
213 /* - Create. */ | |
214 /* */ | |
215 /********************************************************************************/ | |
216 T_RVM_RETURN atp_uart_init (void) | |
217 { | |
218 | |
219 /************************* atp_uart_init function begins ************************/ | |
220 | |
221 /* Set the default name and handle assigned to the COM port. Note that the */ | |
222 /* name must be a NULL-terminated string. */ | |
223 (void) strcpy ((gbl_atp_uart_ctrl_blk_p->conn_ctrl_blk).com_port_name, | |
224 ATP_UART_DEFAULT_COM_PORT_NAME); | |
225 (gbl_atp_uart_ctrl_blk_p->conn_ctrl_blk).com_port_handle = INVALID_HANDLE_VALUE; | |
226 | |
227 /* Indicate that no virtual modem port is established with the AT Parser */ | |
228 /* for now. */ | |
229 (gbl_atp_uart_ctrl_blk_p->conn_ctrl_blk).virtual_modem_port_established = FALSE; | |
230 (gbl_atp_uart_ctrl_blk_p->conn_ctrl_blk).virtual_modem_port_mode = ATP_PORT_CMD_MODE; | |
231 (gbl_atp_uart_ctrl_blk_p->conn_ctrl_blk).control_signals = ATP_RX_FLOW_OFF; | |
232 rvf_send_trace (" ATP-UART (env). 'atp_uart_init' succeeded ", | |
233 44, | |
234 NULL_PARAM, | |
235 RV_TRACE_LEVEL_DEBUG_LOW, | |
236 ATP_USE_ID); | |
237 return (RVM_OK); | |
238 | |
239 } /************************ End of atp_uart_init function ***********************/ | |
240 | |
241 | |
242 /********************************************************************************/ | |
243 /* */ | |
244 /* Function Name: atp_uart_core */ | |
245 /* */ | |
246 /* Purpose: This function activates the ATP-UART interface. */ | |
247 /* */ | |
248 /* Input Parameters: None. */ | |
249 /* */ | |
250 /* Output Parameters: None. */ | |
251 /* */ | |
252 /* Global Parameters: None. */ | |
253 /* */ | |
254 /* Note: None. */ | |
255 /* */ | |
256 /* Revision History: */ | |
257 /* 10/04/01 Pascal Pompei */ | |
258 /* - Create. */ | |
259 /* */ | |
260 /********************************************************************************/ | |
261 T_RVM_RETURN atp_uart_core (void) | |
262 { | |
263 | |
264 /************************* atp_uart_core function begins ************************/ | |
265 | |
266 return (atp_uart_handle_msg ()); | |
267 | |
268 } /************************ End of atp_uart_core function ***********************/ | |
269 | |
270 | |
271 /********************************************************************************/ | |
272 /* */ | |
273 /* Function Name: atp_uart_stop */ | |
274 /* */ | |
275 /* Purpose: This function prepares the termination of the ATP-UART */ | |
276 /* interface. */ | |
277 /* */ | |
278 /* Input Parameters: None. */ | |
279 /* */ | |
280 /* Output Parameters: None. */ | |
281 /* */ | |
282 /* Global Parameters: None. */ | |
283 /* */ | |
284 /* Note: None. */ | |
285 /* */ | |
286 /* Revision History: */ | |
287 /* 10/04/01 Pascal Pompei */ | |
288 /* - Create. */ | |
289 /* */ | |
290 /********************************************************************************/ | |
291 T_RVM_RETURN atp_uart_stop (void) | |
292 { | |
293 | |
294 /************************* atp_uart_stop function begins ************************/ | |
295 | |
296 /* If the virtual modem port is opened with the AT Parser, then deactivate */ | |
297 /* it first. If any error occurred, then call the function used whenever */ | |
298 /* any unrecoverable error occurs and abort. */ | |
299 if (((gbl_atp_uart_ctrl_blk_p->conn_ctrl_blk).virtual_modem_port_established == TRUE) && \ | |
300 (atp_close_port ((gbl_atp_uart_ctrl_blk_p->conn_ctrl_blk).atp_id, \ | |
301 ATP_UART_GSM_PORT_NB) != RV_OK)) | |
302 { | |
303 ATP_UART_UNRECOVERABLE_ERROR (RVM_INTERNAL_ERR, | |
304 " ATP-UART (env). 'atp_uart_stop' failed "); | |
305 return (RVM_NOT_READY); | |
306 } | |
307 | |
308 /* Then, if needed, deactivate the COM port currently in use. If any */ | |
309 /* error occurred, then call the function used whenever any unrecoverable */ | |
310 /* error occurs and abort. */ | |
311 if (((gbl_atp_uart_ctrl_blk_p->conn_ctrl_blk).com_port_handle != INVALID_HANDLE_VALUE) && \ | |
312 (atp_uart_remove_com_port () != RV_OK)) | |
313 { | |
314 ATP_UART_UNRECOVERABLE_ERROR (RVM_INTERNAL_ERR, | |
315 " ATP-UART (env). 'atp_uart_stop' failed "); | |
316 return (RVM_NOT_READY); | |
317 } | |
318 | |
319 /* At last, withdraw the ATP-UART interface from the AT Parser. If any */ | |
320 /* error occurred, then call the function used whenever any unrecoverable */ | |
321 /* error occurs and abort. */ | |
322 if (atp_dereg ((gbl_atp_uart_ctrl_blk_p->conn_ctrl_blk).atp_id) != RV_OK) | |
323 { | |
324 ATP_UART_UNRECOVERABLE_ERROR (RVM_INTERNAL_ERR, | |
325 " ATP-UART (env). 'atp_uart_stop' failed "); | |
326 return (RVM_NOT_READY); | |
327 } | |
328 rvf_send_trace (" ATP-UART (env). 'atp_uart_stop' succeeded ", | |
329 44, | |
330 NULL_PARAM, | |
331 RV_TRACE_LEVEL_DEBUG_LOW, | |
332 ATP_USE_ID); | |
333 return (RVM_OK); | |
334 | |
335 } /************************ End of atp_uart_stop function ***********************/ | |
336 | |
337 | |
338 /********************************************************************************/ | |
339 /* */ | |
340 /* Function Name: atp_uart_kill */ | |
341 /* */ | |
342 /* Purpose: This function kills the ATP-UART interface. */ | |
343 /* */ | |
344 /* Input Parameters: None. */ | |
345 /* */ | |
346 /* Output Parameters: None. */ | |
347 /* */ | |
348 /* Global Parameters: None. */ | |
349 /* */ | |
350 /* Note: None. */ | |
351 /* */ | |
352 /* Revision History: */ | |
353 /* 10/04/01 Pascal Pompei */ | |
354 /* - Create. */ | |
355 /* */ | |
356 /********************************************************************************/ | |
357 T_RVM_RETURN atp_uart_kill (void) | |
358 { | |
359 | |
360 /************************* atp_uart_kill function begins ************************/ | |
361 | |
362 /* Free the previously allocated memory required to store the 'Global */ | |
363 /* ATP-UART Interface Control Block'. */ | |
364 (void) rvf_free_buf ((T_RVF_BUFFER *) (gbl_atp_uart_ctrl_blk_p)); | |
365 gbl_atp_uart_ctrl_blk_p = NULL; | |
366 rvf_send_trace (" ATP-UART (env). 'atp_uart_kill' succeeded ", | |
367 44, | |
368 NULL_PARAM, | |
369 RV_TRACE_LEVEL_DEBUG_LOW, | |
370 ATP_USE_ID); | |
371 return (RVM_OK); | |
372 | |
373 } /************************ End of atp_uart_kill function ***********************/ |