FreeCalypso > hg > freecalypso-sw
comparison gsm-fw/g23m-aci/gdd_dio/gdd.h @ 775:eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sun, 12 Oct 2014 01:45:14 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
774:40a721fd9854 | 775:eedbf248bac0 |
---|---|
1 /* | |
2 +----------------------------------------------------------------------------- | |
3 | Project : GSM-F&D (8411) | |
4 | Modul : BAT library | |
5 +----------------------------------------------------------------------------- | |
6 | Copyright 2002 Texas Instruments Berlin, AG | |
7 | All rights reserved. | |
8 | | |
9 | This file is confidential and a trade secret of Texas | |
10 | Instruments Berlin, AG | |
11 | The receipt of or possession of this file does not convey | |
12 | any rights to reproduce or disclose its contents or to | |
13 | manufacture, use, or sell anything it may describe, in | |
14 | whole, or in part, without the specific written consent of | |
15 | Texas Instruments Berlin, AG. | |
16 +----------------------------------------------------------------------------- | |
17 | Purpose : API of the Generic Data aDapter (GDD) which connects the | |
18 | application domain with the protocol stack. | |
19 +----------------------------------------------------------------------------- | |
20 */ | |
21 | |
22 #ifndef GDD_H | |
23 #define GDD_H | |
24 | |
25 /*==== INCLUDES =============================================================*/ | |
26 | |
27 /*==== DEFINITIONS ==========================================================*/ | |
28 | |
29 /** Return and error values of GDD functions */ | |
30 enum GDD_RESULT_CODES | |
31 { | |
32 GDD_OK = 0, /* OK, no error occured */ | |
33 GDD_BUSY = 1, /* Currently busy */ | |
34 GDD_DIO_NOT_READY = 2, /* Dio not initialized or ready */ | |
35 GDD_NO_CONNECTION_SLOT = 3, /* Max number of connections already open */ | |
36 GDD_NO_BUF_AVAILABLE = 4, /* No buffer available (for sending) */ | |
37 GDD_INVALID_PARAMS = 5, /* Invalid input parameter */ | |
38 GDD_REQ_BUF_TOO_LARGE = 6, /* Requested buffer too large */ | |
39 GDD_INVALID_BUFFER = 7, /* Invalid buffer */ | |
40 GDD_ALREADY_INITIALIZED = 97, /* Instance already initialized */ | |
41 GDD_NO_MEMORY = 98, /* Memory allocation during initialization failed */ | |
42 GDD_INTERNAL_ERROR = 99 /* General error code for all other errors */ | |
43 }; | |
44 | |
45 | |
46 /*==== CONSTS ===============================================================*/ | |
47 | |
48 /** This size that's required for maintenance of one single connection. | |
49 Only needed if the application must allocated memory to be passed into | |
50 gdd_init(). */ | |
51 #define GDD_DIO_SIZEOF_CONDATA 64 | |
52 | |
53 /** Size of first buffer segment (used for internal purposes) */ | |
54 #define GDD_DIO_PID_SEG_SIZE 2 | |
55 | |
56 | |
57 /*==== TYPES =================================================================*/ | |
58 | |
59 /** Connection handle */ | |
60 typedef U32 T_GDD_CON_HANDLE; | |
61 | |
62 | |
63 /** Identifier for the adapter instances - each instance corresponds to a | |
64 DIO driver type */ | |
65 typedef enum | |
66 { | |
67 GDD_INST_NONE = -1, | |
68 GDD_INST_BAT = 0, /* The BAT library */ | |
69 GDD_INST_APP, /* Application */ | |
70 GDD_INST_TCP, /* TCPIP entity */ | |
71 GDD_INST_SOCK, /* Socket library */ | |
72 GDD_INST_SOCKCFG, /* Socket library configuration */ | |
73 | |
74 /* Add new instances here and increase GDD_NUM_INSTS accordingly */ | |
75 GDD_NUM_INSTS, | |
76 /* Maximum number of instances is defined by GDD_MAX_INST_ID */ | |
77 GDD_MAX_INST_ID = 255 | |
78 } T_GDD_INST_ID; | |
79 | |
80 | |
81 /* | |
82 * GDD data format - identicial to DIOv4 data format. | |
83 */ | |
84 typedef struct | |
85 { | |
86 U8 _align0; /*< 0: 1> alignment */ | |
87 U8 _align1; /*< 1: 1> alignment */ | |
88 U16 c_data; /*< 2: 2> counter */ | |
89 U8 *ptr_data; /*< 4: 4> pointer to pointer to the first | |
90 byte of the data buffer segment */ | |
91 } T_GDD_SEGMENT; | |
92 | |
93 typedef struct | |
94 { | |
95 U16 length; /*< 0: 2> len of dio_ctrl */ | |
96 U8 _align0; /*< 2: 1> alignment */ | |
97 U8 c_segment; /*< 3: 1> counter of segments */ | |
98 T_GDD_SEGMENT *ptr_gdd_segment; /*< 4: 4> pointer to Structured Element */ | |
99 } T_GDD_BUF; | |
100 | |
101 | |
102 | |
103 /** Capabilities of DIO BAT adapter, to be set by the client */ | |
104 typedef struct | |
105 { | |
106 U32 mtu_size; | |
107 } T_GDD_DIO_CAP; | |
108 | |
109 | |
110 /** Capabilities of the BAT adapter, to be set by the client */ | |
111 typedef union | |
112 { | |
113 T_GDD_DIO_CAP dio_cap; | |
114 /* Capabilities for future adapter implementations to be added here */ | |
115 } T_GDD_CAP; | |
116 | |
117 | |
118 /** GDD result type */ | |
119 typedef U16 GDD_RESULT; | |
120 | |
121 | |
122 /** Signal types */ | |
123 typedef enum | |
124 { | |
125 GDD_SIGTYPE_CONNECTION_OPENED = 1, /* Connection is established and usable */ | |
126 GDD_SIGTYPE_CONNECTION_FAILED = 2, /* Connection failed or closed down unexpectedly */ | |
127 GDD_SIGTYPE_SEND_BUF_AVAILABLE = 3, /* A new send buffer becomes available after an | |
128 unsuccessfull call to gdd_get_send_buffer */ | |
129 GDD_SIGTYPE_BUF_SENT = 4 /* Indicates that the last sent buffer has been | |
130 successfully sent */ | |
131 } T_GDD_SIGTYPE; | |
132 | |
133 | |
134 | |
135 /** Data associated with a GDD signal */ | |
136 typedef struct | |
137 { | |
138 T_GDD_SIGTYPE sig; | |
139 } T_GDD_SIGNAL; | |
140 | |
141 | |
142 | |
143 /*************************************************************************** | |
144 * Call-back function definitions (to be implemented by the client) | |
145 ***************************************************************************/ | |
146 | |
147 | |
148 /* | |
149 +------------------------------------------------------------------------------ | |
150 | Function : gdd_signal_cb | |
151 +------------------------------------------------------------------------------ | |
152 | Description : The adapter calls this call-back function to send received data | |
153 | to the client. The client must copy the data contained in the | |
154 | buffer, since the buffer will be invalidated upon returning | |
155 | from this function. | |
156 | Alternatively, the client can indicate that he is currently | |
157 | busy. In this case, he has to call gdd_signal_ready_rcv() at a | |
158 | later time to invoke this call-back function again. | |
159 | | |
160 | Parameters : sig - Signal | |
161 +------------------------------------------------------------------------------ | |
162 */ | |
163 typedef void (* T_GDD_SIGNAL_CB) | |
164 ( T_GDD_CON_HANDLE con, | |
165 T_GDD_SIGNAL sig ); | |
166 | |
167 /* | |
168 +------------------------------------------------------------------------------ | |
169 | Function : gdd_received_data_cb | |
170 +------------------------------------------------------------------------------ | |
171 | Description : The adapter calls this callback function to signal events to | |
172 | the client. | |
173 | | |
174 | Parameters : sig - Signal | |
175 | | |
176 | Return : GDD_OK - Data was copied by client | |
177 | GDD_BUSY - Client was busy and could not receive data. | |
178 +------------------------------------------------------------------------------ | |
179 */ | |
180 typedef GDD_RESULT (* T_GDD_RECEIVE_DATA_CB) | |
181 ( T_GDD_CON_HANDLE con, | |
182 T_GDD_BUF * buf ); | |
183 | |
184 | |
185 /*************************************************************************** | |
186 * Function definitions | |
187 ***************************************************************************/ | |
188 | |
189 /* | |
190 +------------------------------------------------------------------------------ | |
191 | Function : gdd_init | |
192 +------------------------------------------------------------------------------ | |
193 | Description : This optional function can be used to provide the house-keeping | |
194 | memory required for the given adapter instance. On platforms | |
195 | where memory allocation is available, the function might be | |
196 | called with the parameter mem set to 0. In this case, it is | |
197 | just use to limit the number of connections via the parameter | |
198 | num_con. | |
199 | | |
200 | Parameters : inst - Instance identifier of the adapter | |
201 | mem - Memory allocated by client for maintenance | |
202 | of the connections (Input parameter). | |
203 | If set to 0, the adapter will allocate | |
204 | the memory itself. | |
205 | num_con - Maximum number of connections | |
206 | | |
207 | Return : GDD_OK - Initialization successful | |
208 | >GDD_OK - Error (see manual for error codes) | |
209 +------------------------------------------------------------------------------ | |
210 */ | |
211 typedef GDD_RESULT (* T_GDD_INIT) | |
212 ( T_GDD_INST_ID inst, | |
213 void * mem, | |
214 U16 num_con); | |
215 | |
216 | |
217 /* | |
218 +------------------------------------------------------------------------------ | |
219 | Function : gdd_deinit | |
220 +------------------------------------------------------------------------------ | |
221 | Description : This function de-initializes an adapter instance. | |
222 | Any memory that the adapter has allocated internally is freed. | |
223 | | |
224 | Parameters : inst - Instance identifier of the adapter | |
225 | | |
226 | Return : GDD_OK - Initialization successful | |
227 | >GDD_OK - Error (see manual for error codes) | |
228 +------------------------------------------------------------------------------ | |
229 */ | |
230 typedef GDD_RESULT (* T_GDD_DEINIT) | |
231 ( T_GDD_INST_ID inst); | |
232 | |
233 | |
234 /* | |
235 +------------------------------------------------------------------------------ | |
236 | Function : gdd_connect | |
237 +------------------------------------------------------------------------------ | |
238 | Description : This function prepares a new connection for data transmission. | |
239 | If the function succeeds, it will return a connection handle | |
240 | in the parameter 'con_handle' to the caller. Each connection is | |
241 | uniquely identified by its connection handle. | |
242 | | |
243 | Note : The connection cannot be used straight away. Instead, the | |
244 | client receives a signal GDD_SIGTYPE_CONNECTION_OPENED when the | |
245 | connection setup has been finished. | |
246 | | |
247 | Each open connection should be closed using the function | |
248 | gdd_close() when it is not used any longer. | |
249 | | |
250 | Parameters : inst - Instance identifier of the adapter | |
251 | con_handle - New handle to the adapter passed back to the | |
252 | caller (output parameter). | |
253 | cap - capabilities of the adapter | |
254 | rcv_cb - Call-back for receiving data (provided by client) | |
255 | sig_cb - Call-back for signals (provided by client) | |
256 | | |
257 | Return : GDD_OK - Connecting is setup and being created. The client | |
258 | has to wait for signal GDD_SIGTYPE_CONNECTION_OPENED | |
259 | before the connection is usable. | |
260 | >GDD_OK - Error (see manual for error codes) | |
261 +------------------------------------------------------------------------------ | |
262 */ | |
263 typedef GDD_RESULT (* T_GDD_CONNECT) | |
264 ( T_GDD_INST_ID inst, | |
265 T_GDD_CON_HANDLE * con_handle, | |
266 const T_GDD_CAP * cap, | |
267 T_GDD_RECEIVE_DATA_CB rcv_cb, | |
268 T_GDD_SIGNAL_CB sig_cb ); | |
269 | |
270 | |
271 /* | |
272 +------------------------------------------------------------------------------ | |
273 | Function : gdd_disconnect | |
274 +------------------------------------------------------------------------------ | |
275 | Description : This function closes and deletes a connection. | |
276 | The connection handle will not be valid any longer. | |
277 | | |
278 | Parameters : con_handle - Handle to the connection to be closed | |
279 | | |
280 | Return : GDD_OK - Initialization successful | |
281 | >GDD_OK - Error (see manual for error codes) | |
282 +------------------------------------------------------------------------------ | |
283 */ | |
284 typedef GDD_RESULT (* T_GDD_DISCONNECT) | |
285 ( T_GDD_CON_HANDLE con_handle ); | |
286 | |
287 | |
288 /* | |
289 +------------------------------------------------------------------------------ | |
290 | Function : gdd_get_send_buffer | |
291 +------------------------------------------------------------------------------ | |
292 | Description : This function request a send buffer of a minimum size data_size | |
293 | for sending on the connection specified with con. The buffer is | |
294 | passed back in the parameter 'buf'. | |
295 | After a successful call to this function, it is the | |
296 | responsibility of the caller to subsequently fill the buffer | |
297 | and call gdd_send_data(), before another call to | |
298 | gdd_get_send_buffer() is done. In other words, the client must | |
299 | make sure that calls to these two functions are synchronized. | |
300 | | |
301 | Parameters : con_handle - Connection handle | |
302 | buf - Pointer to pointer to send buffer (out parameter) | |
303 | data_size - Minimum size of requested buffer | |
304 | | |
305 | Return : GDD_OK - Initialization successful | |
306 | >GDD_OK - Error (see manual for error codes) | |
307 | GDD_NO_BUF_AVAILABLE - No buffer available. The client | |
308 | will be notified with a signal | |
309 | GDD_SIGTYPE_SEND_BUF_AVAILABLE when a | |
310 | buffer is ready and can be requested. | |
311 +------------------------------------------------------------------------------ | |
312 */ | |
313 typedef GDD_RESULT (* T_GDD_GET_SEND_BUFFER) | |
314 ( T_GDD_CON_HANDLE con_handle, | |
315 T_GDD_BUF ** buf, | |
316 U16 data_size ); | |
317 | |
318 | |
319 /* | |
320 +------------------------------------------------------------------------------ | |
321 | Function : gdd_send_data | |
322 +------------------------------------------------------------------------------ | |
323 | Description : This functions sends a buffer over the specified connection. | |
324 | Please see also description of gdd_get_send_buffer(). | |
325 | | |
326 | | |
327 | Parameters : con_handle - Connection handle | |
328 | buf - Buffer to be sent | |
329 | | |
330 | Return : GDD_OK - Initialization successful | |
331 | >GDD_OK - Error (see manual for error codes) | |
332 | GDD_INVALID_BUFFER - The buffer pointed to is incorrect, i.e. | |
333 | not the one that was previously requested | |
334 +------------------------------------------------------------------------------ | |
335 */ | |
336 typedef GDD_RESULT (* T_GDD_SEND_DATA) | |
337 ( T_GDD_CON_HANDLE con, | |
338 T_GDD_BUF * buf); | |
339 | |
340 | |
341 /* | |
342 +------------------------------------------------------------------------------ | |
343 | Function : gdd_signal_ready_rcv | |
344 +------------------------------------------------------------------------------ | |
345 | Description : This function is called from the client to indicate that he | |
346 | is ready to receive. Typically, it is called from the client | |
347 | when he becomes ready after a preceding result callback | |
348 | (result_cb) was returned with GDD_BUSY. | |
349 | | |
350 | Parameters : con_handle - Connection handle | |
351 +------------------------------------------------------------------------------ | |
352 */ | |
353 typedef void (* T_GDD_SIGNAL_READY_RCV) | |
354 ( T_GDD_CON_HANDLE con ); | |
355 | |
356 | |
357 /** GDD Function pointer table */ | |
358 typedef struct | |
359 { | |
360 T_GDD_INIT gdd_init; | |
361 T_GDD_DEINIT gdd_deinit; | |
362 T_GDD_CONNECT gdd_connect; | |
363 T_GDD_DISCONNECT gdd_disconnect; | |
364 T_GDD_GET_SEND_BUFFER gdd_get_send_buffer; | |
365 T_GDD_SEND_DATA gdd_send_data; | |
366 T_GDD_SIGNAL_READY_RCV gdd_signal_ready_rcv; | |
367 } T_GDD_FUNC; | |
368 | |
369 | |
370 /** Needed for initialization of client of BAT adapter (BAT library) */ | |
371 extern T_GDD_FUNC gdd_func_dio; | |
372 | |
373 | |
374 /*************************************************************************** | |
375 * Helper function definitions | |
376 ***************************************************************************/ | |
377 | |
378 /* | |
379 +------------------------------------------------------------------------------ | |
380 | Function : gdd_write_buf | |
381 +------------------------------------------------------------------------------ | |
382 | Description : Write data from a client buffer into into a GDD buffer | |
383 | The datagram protocol ID for the following link layer (PPP) is | |
384 | set internally to 0x21 (IPv4). If you need to set the protocol | |
385 | ID to something else, please use the function | |
386 | gdd_write_buf_with_pid().. | |
387 | | |
388 | Parameters : src_buf - Source buffer (client owned) | |
389 | src_size - Size of source buffer | |
390 | dest_buf - Destination buffer | |
391 | | |
392 | Return : 0 if all bytes have been written to the destination buffer. | |
393 | If not all bytes could be written, the return value is larger | |
394 | than 0 and denotes the number of remaining (unwritten) bytes. | |
395 | A negative return value indicates an error. | |
396 +------------------------------------------------------------------------------ | |
397 */ | |
398 S32 gdd_write_buf(const U8 * src_buf, U16 src_size, T_GDD_BUF * dest_buf); | |
399 | |
400 /* | |
401 +------------------------------------------------------------------------------ | |
402 | Description : Write user data and a datagram protocol ID used by the link | |
403 | layer (PPP) into a GDD buffer. | |
404 | | |
405 | Parameters : src_buf - Source buffer (client owned) | |
406 | src_size - Size of source buffer | |
407 | dest_buf - Destination buffer | |
408 | protocol_id - datagram protocol identifier | |
409 | | |
410 | Return : 0 if all bytes have been written to the destination buffer. | |
411 | If not all bytes could be written, the return value is larger | |
412 | than 0 and denotes the number of remaining (unwritten) bytes. | |
413 | A negative return value indicates an error. | |
414 +------------------------------------------------------------------------------ | |
415 */ | |
416 S32 gdd_write_buf_with_pid(const U8 * src_buf, U16 src_size, | |
417 T_GDD_BUF * dest_buf,U8 protocol_id); | |
418 | |
419 | |
420 /* | |
421 +------------------------------------------------------------------------------ | |
422 | Function : gdd_read_buf | |
423 +------------------------------------------------------------------------------ | |
424 | Description : Read data from a GDD buffer into a client buffer. | |
425 | | |
426 | Parameters : src_buf - Source buffer received from GDD | |
427 | dest_buf - Destination buffer (client owned) | |
428 | dest_size - Size of destination buffer | |
429 | | |
430 | Return : 0 if all bytes have been copied into the destination buffer. | |
431 | If not all bytes could be copied into the destination buffer, | |
432 | the return value is larger than 0 and denotes the number of | |
433 | remaining (unread) bytes. A negative return value indicase an | |
434 | error. | |
435 +------------------------------------------------------------------------------ | |
436 */ | |
437 S32 gdd_read_buf(const T_GDD_BUF * src_buf, U8 * dest_buf, U16 dest_size); | |
438 | |
439 | |
440 #endif /* GDD_H */ |