FreeCalypso > hg > ffs-editor
comparison src/cs/services/atp/atp_new_i.h @ 0:92470e5d0b9e
src: partial import from FC Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 15 May 2020 01:28:16 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:92470e5d0b9e |
---|---|
1 /******************************************************************************* | |
2 * | |
3 * File Name : atp_new_i.h | |
4 * | |
5 * Internal definition for ATP SW entity | |
6 * | |
7 * (C) Texas Instruments, all rights reserved | |
8 * | |
9 * Version number : 0.1 Date : 28-Feb-2000 | |
10 * | |
11 * History : 0.1 - Created by E. Baissus | |
12 * | |
13 * | |
14 * Author : Eric Baissus : e-baissus@ti.com | |
15 * | |
16 * (C) Copyright 2000 by Texas Instruments Incorporated, All Rights Reserved | |
17 ******************************************************************************/ | |
18 #ifndef ATP_NEW_I_H | |
19 #define ATP_NEW_I_H | |
20 | |
21 #include "rv/rv_general.h" | |
22 #include "rvf/rvf_api.h" | |
23 #include "atp/atp_api.h" | |
24 #include "atp/atp_messages.h" | |
25 #include "atp/atp_config.h" | |
26 #include "atp/atp_cmd.h" | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 /* Structure used to store information on a registered SW entity */ | |
34 /*---------------------------------------------------------------*/ | |
35 typedef struct | |
36 { | |
37 T_ATP_SW_ENTITY_NAME sw_entity_name; // Sw entity name | |
38 UINT8 nb_open_port; // Number of port open with the SW entity | |
39 T_ATP_ENTITY_MODE mode; // List all the modes of the SW entity | |
40 T_ATP_CALLBACK return_path; // return path to send event back to the SW entity | |
41 } T_ATP_SW_ENTITY_STRUCT; | |
42 | |
43 | |
44 /* Structure used to store information on a port */ | |
45 /*---------------------------------------------------------------*/ | |
46 typedef enum | |
47 { | |
48 ATP_OPEN_PENDING, | |
49 ATP_CMD_MODE, | |
50 ATP_DATA_MODE | |
51 } T_ATP_PORT_STATE; // Indicate in which state is the port | |
52 | |
53 | |
54 typedef struct | |
55 { | |
56 UINT16 tx_head_size; | |
57 UINT16 tx_trail_size; | |
58 UINT16 rx_head_size; | |
59 UINT16 rx_trail_size; | |
60 T_ATP_PACKET_MODE packet_mode; // SEGMENTED means that data are stored in segmented buffer. | |
61 // l2cap_read_uint function must be called to fetch the data | |
62 // NORMAL means that data are in a single buffer | |
63 } T_ATP_NO_COPY_PORT_INFO; // Information regarding no copy data processing | |
64 | |
65 | |
66 /* Every port has 2 port_end_struct : one for each SWE concerned */ | |
67 #define INVALID_PORT_NB (0xFF) | |
68 | |
69 typedef struct t_atp_port_end_struct | |
70 { | |
71 T_ATP_SW_ENTITY_ID sw_id; // SWE ID | |
72 T_ATP_PORT_NB port_nb; // Port number | |
73 T_ATP_EVENT_MASK event_mask; | |
74 T_ATP_SIGNAL_MASK signal_mask; | |
75 T_ATP_NO_COPY_PORT_INFO no_copy_info; | |
76 T_RVF_BUFFER_Q rx_queue; // Queue used to pipe the received packet | |
77 //and wait for reading processing | |
78 UINT32 rx_data_left; // Number of data still not read by the SW entity | |
79 T_ATP_PORT_SIGNAL signal; // Status of the port signal | |
80 T_RVF_MB_ID rx_mb; // MB to use when the SWE receives data from ATP | |
81 T_RVF_MB_ID tx_mb; // MB used by SWE when sending data to ATP | |
82 } T_ATP_PORT_END_STRUCT; | |
83 | |
84 | |
85 typedef UINT8 T_ATP_SW_NB; /* Which SW_ID of a port : first/initiator (0) or second(acceptor) (1) */ | |
86 | |
87 | |
88 | |
89 /* Definition of types used for handling of commands on a port */ | |
90 /*-------------------------------------------------------------*/ | |
91 typedef enum { READY_FOR_NEW_CMD, WAITING_FOR_RESULT } T_ATP_CMD_STATE; | |
92 // Indicate if the port is ready to receive a new command | |
93 // or if it is waiting for the result of a command | |
94 typedef enum { NOT_STARTED,ON_GOING,FINISHED } T_ATP_CMD_INTERPRETATION; | |
95 // A string can multiplex several command. If status is NOT_STARTED, the command has not | |
96 // been yet interpreted at all by ATP. If ON_GOING, that means that interpretation started but | |
97 // is not finished (still command pending in the string) | |
98 | |
99 #define ATP_CMD_INVALID_POSITION (0xFFFF); | |
100 | |
101 typedef struct | |
102 { | |
103 T_ATP_CMD_STATE state; //READY_FOR_NEW_CMD or WAITING_FOR_RESULT | |
104 T_ATP_CMD_INTERPRETATION status; // NOT_STARTED or ON_GOING or FINISHED | |
105 T_ATP_TXT_CMD cmd_txt_p; // text containing the commands : Example :'ATD1274576;' Can contains several command | |
106 UINT16 cmd_txt_length; // length of the text in bytes | |
107 UINT16 next_position; // next caracter to interpret in the cmd_txt buffer | |
108 } T_ATP_CMD_STRUCT; | |
109 | |
110 | |
111 | |
112 /* Internal struct used to store all the information related to a port */ | |
113 /*---------------------------------------------------------------------*/ | |
114 typedef struct t_atp_port_struct | |
115 { | |
116 struct t_atp_port_struct * next_p; // points on next port structure/ otherwise = NULL | |
117 T_ATP_PORT_STATE port_state; // ATP_OPEN_PENDING or ATP_CMD_MODE or ATP_DATA_MODE | |
118 T_ATP_PORT_END_STRUCT port_info[2]; //[0]=initiator side / [1]=target side | |
119 T_ATP_REDIRECT_MODE redirect_mode; /* Indicates if redirect flow is ON or OFF */ | |
120 struct t_atp_port_struct * redirect_port_p; /* pointing on the port of redirection */ | |
121 T_ATP_SW_NB redirect_port_end_nb; /* Indicates to which end of the redirecting port the flow | |
122 should be redirected = value = 0 or 1 */ | |
123 T_ATP_CMD_STRUCT cmd_info; // Information related to CMD handling | |
124 T_ATP_DCE_INFO * dce_info_p; // Information related to DCE handling | |
125 } T_ATP_PORT_STRUCT; | |
126 | |
127 | |
128 typedef struct | |
129 { | |
130 UINT32 first_byte; | |
131 UINT32 last_byte; | |
132 UINT32 next_byte_to_read; | |
133 T_ATP_BUFFER atp_buffer_p; | |
134 } T_ATP_RX_PACKET; | |
135 | |
136 | |
137 /* Defines the state of the ATP SWE (cf Riviera Manager) */ | |
138 typedef enum | |
139 { | |
140 ATP_STARTED, | |
141 ATP_STOPPED, | |
142 ATP_KILLED | |
143 } T_ATP_SWE_STATE; | |
144 | |
145 | |
146 /* Types of error handels by atp_error function */ | |
147 typedef enum | |
148 { | |
149 ATP_ERROR_MB_PRIM_RED, | |
150 ATP_ERROR_TX_MB_RED, | |
151 ATP_ERROR_WRONG_CALLBACK /* The callback function of the primitive has been used where as */ | |
152 /* Mailbox should be used */ | |
153 } T_ATP_ERROR_REASON; | |
154 | |
155 | |
156 | |
157 extern T_RVF_MB_ID atp_mb_prim; // Memory bank dedicated to internal use of ATP entity | |
158 // Table gathering the pointers on the different SW entity data structure. If NULL, field is free | |
159 extern T_ATP_PORT_STRUCT * atp_first_port_p; | |
160 extern T_ATP_SW_ENTITY_ID atp_nb_sw_entity; | |
161 extern T_ATP_SWE_STATE atp_swe_state; | |
162 extern T_ATP_SW_ENTITY_STRUCT * atp_sw_entity_table_p[ATP_MAX_NB_SW_ENTITY+1]; //+1 due to GSM SW entity | |
163 | |
164 | |
165 /* Registration / re-registration */ | |
166 T_ATP_RET atp_dereg_all(void); | |
167 T_ATP_RET atp_init_cmd_info_struct(T_ATP_PORT_STRUCT * port_p); | |
168 | |
169 /* Port handling related functions -> atp_port.c */ | |
170 T_ATP_RET atp_create_port(T_ATP_PORT_STRUCT **port_pp); | |
171 T_ATP_RET atp_delete_port(T_ATP_PORT_STRUCT *port_p); | |
172 T_ATP_RET atp_get_port(T_ATP_SW_ENTITY_ID sw_id, T_ATP_PORT_NB port_nb,T_ATP_PORT_STRUCT ** port_found_pp,T_ATP_SW_NB * sw_nb_p); | |
173 T_ATP_RET atp_send_message(T_ATP_CALLBACK path,T_ATP_MESSAGE * message_p); | |
174 | |
175 | |
176 /* Commands handling related functions -> atp_cmd.c */ | |
177 T_ATP_RET atp_cmd_init_dce_info(T_ATP_DCE_INFO * dce_info_p); // initialise dce buffer */ | |
178 T_ATP_RET atp_interpret_raw_data (T_ATP_PORT_STRUCT *port_p, | |
179 T_RVF_MB_ID mb_id, | |
180 T_ATP_CMD_TYPE *cmd_type_p, | |
181 T_ATP_CMD_NB *cmd_nb_p, | |
182 T_ATP_CMD **cmd_info_pp, | |
183 T_ATP_TXT_CMD *text_pp, | |
184 UINT16 *text_length_p); | |
185 | |
186 T_ATP_RET atp_create_data_buffer_from_cmd (T_ATP_CMD_MODE cmd_mode, | |
187 UINT16 header, | |
188 UINT16 trailer, | |
189 T_ATP_DCE_INFO *dce_info_p, | |
190 T_RVF_MB_ID mb_id, | |
191 T_ATP_CMD_TYPE cmd_type, | |
192 T_ATP_CMD_NB cmd_nb, | |
193 T_ATP_TXT_CMD text_p, | |
194 T_ATP_CMD *cmd_info_p, | |
195 T_ATP_BUFFER *buffer_pp, | |
196 UINT16 *length_p); | |
197 | |
198 T_ATP_RET atp_translate_cmd_to_txt (T_ATP_CMD_TYPE cmd_type, | |
199 T_ATP_CMD_NB cmd_nb, | |
200 T_ATP_CMD *cmd_info_p, | |
201 T_RVF_MB_ID mb_id, | |
202 T_ATP_TXT_CMD *text_pp, | |
203 UINT16 *text_length_p); | |
204 | |
205 | |
206 T_ATP_RET atp_copy_buffer_from_l2cap (void * l2cap_buffer_p, void * copy_buffer_p, | |
207 UINT32 buffer_length); | |
208 T_ATP_RET atp_copy_buffer (UINT8 *in_buffer_p, | |
209 UINT8 *out_buffer_p, | |
210 UINT32 data_size); | |
211 | |
212 /* Error functions -> atp_env.c */ | |
213 void atp_error(T_ATP_ERROR_REASON atp_error_reason); | |
214 | |
215 #endif |