FreeCalypso > hg > fc-magnetite
comparison src/gpf2/inc/pco_view_framesupp.h @ 1:864b8cc0cf63
src/gpf2: preened GPF goo from TCS211
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 25 Sep 2016 23:38:58 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:945cf7f506b2 | 1:864b8cc0cf63 |
---|---|
1 /* | |
2 +----------------------------------------------------------------------------- | |
3 | Project : PCO2 | |
4 | Modul : PCO_VIEW_FRAMESUPP | |
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 : This Modul contains a viewer class derived directly from the | |
18 | core. | |
19 | It supports decoding of frame SYST_MESSAGEs and of LTS-Header/ | |
20 | TIF-ASCII-DATA-messages. | |
21 | It is still intended to be specialized and extended, e.g. in | |
22 | GUI-server-applications. | |
23 | Some member functions are totally virtual without any | |
24 | standard body and have to be provided by the child class ! | |
25 +----------------------------------------------------------------------------- | |
26 */ | |
27 | |
28 #ifndef _PCO_VIEW_FRAMESUPP_H_ | |
29 #define _PCO_VIEW_FRAMESUPP_H_ | |
30 | |
31 /*==== INCLUDES ===================================================*/ | |
32 #ifndef PCO_VIEW_FRAMESUPP_CPP_CCD | |
33 #include "pco_view_core.h" | |
34 #else | |
35 #include "view/pco_view_core.h" | |
36 #endif | |
37 | |
38 #ifdef USE_CCD | |
39 extern "C" | |
40 { | |
41 #include "ccdtable.h" | |
42 #include "ccddata.h" | |
43 } | |
44 #include "ccdedit.h" | |
45 #include "view/pco_pdi.h" | |
46 #endif /* USE_CCD */ | |
47 | |
48 #include <time.h> | |
49 | |
50 /*==== DEFINES =====================================================*/ | |
51 #define PCO_STR2IND_NOT_LOADED 0 | |
52 #define PCO_STR2IND_AUTO_LOADED 1 | |
53 #define PCO_STR2IND_MAN_LOADED 2 | |
54 #define PCO_STR2IND_SEARCHING 3 | |
55 | |
56 /*==== PROTOTYPES ==================================================*/ | |
57 | |
58 /*==== CLASSES =====================================================*/ | |
59 class PCOView_frameSupp : public PCOView_core | |
60 { | |
61 public: | |
62 PCOView_frameSupp(const char* ini_file, int& err, | |
63 const char* primq_name="", | |
64 const char* ctrlq_name=""); | |
65 virtual ~PCOView_frameSupp(); | |
66 | |
67 /* | |
68 +-------------------------------------------------------------------------------------+ | |
69 | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | | |
70 | STATE : code ROUTINE : PCOView_frameSupp::interpret_message | | |
71 +-------------------------------------------------------------------------------------+ | |
72 | |
73 PURPOSE : here interpretation of received raw data takes place | |
74 (has to be implemented by derived classes !) | |
75 | |
76 PARAMS: buffer .. raw data to be interpretated | |
77 bufsize .. size of buffer | |
78 data .. actual data | |
79 size .. size of data | |
80 id .. id of data message | |
81 index .. index of data message (e.g. in logfile) ... 0 means no index!! | |
82 ttype .. type of time stamp - see PCO_TTYPE_XXX constants | |
83 time .. time stamp | |
84 sender .. name of sender | |
85 receiver.. name of original receiver | |
86 | |
87 RETURNS: 0 .. success | |
88 -1 .. interpretation was not possible | |
89 | |
90 */ | |
91 virtual int interpret_message(void* buffer, U16 bufsize, | |
92 void* &data, U16 &size, ULONG &id, ULONG& index, ULONG& ttype, U32 &time, | |
93 char* &sender, char* &receiver); | |
94 | |
95 /* | |
96 +--------------------------------------------------------------------------------+ | |
97 | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | | |
98 | STATE : code ROUTINE : PCOView_frameSupp::on_connected | | |
99 +--------------------------------------------------------------------------------+ | |
100 | |
101 PURPOSE : reaction to PCO_CONNECTED from server | |
102 | |
103 PARAMS: buf .. data containing server type | |
104 sender .. server queue name | |
105 | |
106 RETURNS: 0 .. server type supported | |
107 -1 .. server type not supported | |
108 | |
109 */ | |
110 virtual int on_connected(const void *buf,const char* sender); | |
111 | |
112 /* | |
113 +--------------------------------------------------------------------------------------+ | |
114 | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | | |
115 | STATE : code ROUTINE : PCOView_frameSupp::decode_tracestring | | |
116 +--------------------------------------------------------------------------------------+ | |
117 | |
118 PURPOSE : tries to decode an OPC in the tracestring (e.g. $<OPC>) | |
119 | |
120 PARAMS: instr .. original tracestring | |
121 size .. max size for outstr | |
122 | |
123 RETURNS: 0 .. success (outstr contains new tracestring) | |
124 -1 .. no success while decoding | |
125 -2 .. no decoding necessary | |
126 | |
127 lastOPC .. in case of success contains last opc found in instr | |
128 | |
129 */ | |
130 int decode_tracestring(const char* instr, char* outstr, U16 size, ULONG &lastOPC); | |
131 | |
132 /* | |
133 +-----------------------------------------------------------------------------------+ | |
134 | PROJECT : PCO2 MODULE : PCO_CTRL_FRAMESUPP | | |
135 | STATE : code ROUTINE : PCOView_frameSupp::check_version | | |
136 +-----------------------------------------------------------------------------------+ | |
137 | |
138 PURPOSE : tries to request the version of a running stack via the server | |
139 -> will result in a SYST-trace starting with '&' | |
140 | |
141 PARAMS: | |
142 | |
143 RETURNS: 0 .. sucess | |
144 -1 .. Server not found | |
145 -2 .. error while contacting Server | |
146 | |
147 */ | |
148 int check_version(); | |
149 | |
150 /* | |
151 +--------------------------------------------------------------------------------------+ | |
152 | PROJECT : PCO2 MODULE : PCO_CTRL_FRAMESUPP | | |
153 | STATE : code ROUTINE : PCOView_frameSupp::check_communication| | |
154 +--------------------------------------------------------------------------------------+ | |
155 | |
156 PURPOSE : tries to send a system primitive to the running stack via the server | |
157 -> will result in SYST-traces if communication is ok | |
158 | |
159 PARAMS: | |
160 | |
161 RETURNS: 0 .. sucess | |
162 -1 .. Server not found | |
163 -2 .. error while contacting Server | |
164 | |
165 */ | |
166 int check_communication(); | |
167 | |
168 /* | |
169 +--------------------------------------------------------------------------------------+ | |
170 | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | | |
171 | STATE : code ROUTINE : PCOView_frameSupp::decode_ccd_msg | | |
172 +--------------------------------------------------------------------------------------+ | |
173 | |
174 PURPOSE : tries to decode a given encoded air message | |
175 | |
176 PARAMS: decinfo ... T_PDI_CCDMSG stuct (see pdi.h), | |
177 contains the coded sdu and info about, e.g., msg-type | |
178 decoded_msg ... buffer which will receive the decoded struct | |
179 | |
180 RETURNS: ccdOK, ccdWarning .. sucess | |
181 ccdError .. error while decoding | |
182 | |
183 */ | |
184 int decode_ccd_msg(const void* decinfo, UBYTE **decoded_msg); | |
185 | |
186 /* | |
187 +------------------------------------------------------------------------------------+ | |
188 | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | | |
189 | STATE : code ROUTINE : PCOView_frameSupp::free_ccd_msg | | |
190 +------------------------------------------------------------------------------------+ | |
191 | |
192 PURPOSE : frees a msg structure previously allocated using decode_ccd_msg | |
193 | |
194 PARAMS: decoded_msg ... buffer with decoded air message structure | |
195 | |
196 RETURNS: | |
197 | |
198 */ | |
199 void free_ccd_msg(void * decoded_msg); | |
200 | |
201 /* | |
202 +--------------------------------------------------------------------------------------+ | |
203 | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | | |
204 | STATE : code ROUTINE : PCOView_frameSupp::load_str2ind_table | | |
205 +--------------------------------------------------------------------------------------+ | |
206 | |
207 PURPOSE : tries to explicitely load a str2ind-table | |
208 | |
209 PARAMS: tname ... name of .tab-file | |
210 | |
211 RETURNS: 0 .. sucess | |
212 -1 .. error while loading | |
213 | |
214 */ | |
215 int load_str2ind_table(const char* tname); | |
216 | |
217 /* | |
218 +--------------------------------------------------------------------------------+ | |
219 | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | | |
220 | STATE : code ROUTINE : PCOView_frameSupp::on_inichange | | |
221 +--------------------------------------------------------------------------------+ | |
222 | |
223 PURPOSE : reloads important changes from ini-file | |
224 | |
225 PARAMS: | |
226 | |
227 */ | |
228 virtual void on_inichange(); | |
229 | |
230 /* | |
231 +--------------------------------------------------------------------------------+ | |
232 | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | | |
233 | STATE : code ROUTINE : PCOView_frameSupp::self_trace | | |
234 +--------------------------------------------------------------------------------+ | |
235 | |
236 PURPOSE : adds a new trace string to the queue of this viewer | |
237 | |
238 PARAMS: | |
239 | |
240 */ | |
241 virtual void self_trace(const char* trace); | |
242 | |
243 /* | |
244 +--------------------------------------------------------------------------------+ | |
245 | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | | |
246 | STATE : code ROUTINE : PCOView_frameSupp::send_syscmd | | |
247 +--------------------------------------------------------------------------------+ | |
248 | |
249 PURPOSE : tries to send a FRAME system command to the server | |
250 who will forward it to a connected protocol stack | |
251 | |
252 PARAMS: receiver ... receiver of the command | |
253 cmd ... the actual command (e.g. "TRACECLASS FF") | |
254 | |
255 RETURNS: 0 .. sucess | |
256 -1 .. Server not found | |
257 -2 .. error while contacting Server | |
258 | |
259 */ | |
260 int send_syscmd(const char* receiver, const char* cmd); | |
261 | |
262 /* | |
263 +--------------------------------------------------------------------------------+ | |
264 | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | | |
265 | STATE : code ROUTINE : PCOView_frameSupp::init_ccddata | | |
266 +--------------------------------------------------------------------------------+ | |
267 | |
268 PURPOSE : initialize ccddata from the given path | |
269 | |
270 PARAMS: ccddata_path ... path of the ccddata library | |
271 (if NULL path will be loaded from ini-file) | |
272 force ... 0..keep ccddata-lib loaded if there is one | |
273 1..exchange evtl. existing ccddata-lib | |
274 write ... 1..write new path to ini file if force is 1 | |
275 0..dont write new path to ini file | |
276 | |
277 RETURNS: 0 .. success | |
278 -1 .. error | |
279 | |
280 */ | |
281 int init_ccddata(const char* ccddata_path=NULL, | |
282 int force=0, int write=1); | |
283 | |
284 /* | |
285 +--------------------------------------------------------------------------------+ | |
286 | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | | |
287 | STATE : code ROUTINE : PCOView_frameSupp::exit_ccddata | | |
288 +--------------------------------------------------------------------------------+ | |
289 | |
290 PURPOSE : deinitializied ccddata | |
291 | |
292 PARAMS: | |
293 | |
294 RETURNS: 0 .. success | |
295 -1 .. error | |
296 | |
297 */ | |
298 int exit_ccddata(); | |
299 | |
300 /* | |
301 +------------------------------------------------------------------------------------+ | |
302 | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | | |
303 | STATE : code ROUTINE : PCOView_frameSupp::collect_pdi_data | | |
304 +------------------------------------------------------------------------------------+ | |
305 | |
306 PURPOSE : run through primitive top-level elements and call pdi_getDecodeInfo to | |
307 collect all potential infos for decoding an evtl. contained aim | |
308 | |
309 PARAMS: prim_data ... data of primitive | |
310 filterinfo_data ... data that holds filter info for the primitive | |
311 handle ... open handle for parsing the primitive | |
312 | |
313 RETURNS: | |
314 | |
315 */ | |
316 void collect_pdi_data(const char* prim_data, const char* filterinfo_data, T_CCDE_HANDLE handle); | |
317 | |
318 /* | |
319 +--------------------------------------------------------------------------------+ | |
320 | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | | |
321 | STATE : code ROUTINE : PCOView_frameSupp::elem_present | | |
322 +--------------------------------------------------------------------------------+ | |
323 | |
324 PURPOSE : check if element is present in specified primtive | |
325 | |
326 PARAMS: filterinfo_data ... data that holds filter info for the primitive | |
327 filterinfo_value ... buffer to receive filter info data for current element | |
328 handle ... open handle for parsing the primitive | |
329 desc ... current descriptor for parsing the primitive | |
330 | |
331 RETURNS: 1 ... present | |
332 0 ... not present | |
333 -1 ... error while calling read_elem | |
334 | |
335 */ | |
336 int elem_present(const char* filterinfo_data, char* filterinfo_value, T_CCDE_HANDLE handle, T_CCDE_ELEM_DESCR desc); | |
337 | |
338 /* | |
339 +------------------------------------------------------------------------------------+ | |
340 | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | | |
341 | STATE : code ROUTINE : PCOView_frameSupp::decode_pcon_prim | | |
342 +------------------------------------------------------------------------------------+ | |
343 | |
344 PURPOSE : if necessary tries to decode the given primitive using PCON | |
345 | |
346 PARAMS: opc ... primitive opc | |
347 coded_prim ... data of original prim | |
348 decoded_prim ... buffer which will point to the decoded prim | |
349 decoded_len ... length of decoded_prim buffer (without evtl. pointed to data areas) | |
350 filterinfo_prim | |
351 ... buffer which will be evtl. filled with a filterinfo shadow prim | |
352 containing only 0x00-s or 0xff-s per element | |
353 (in default case a NULL pointer is returned) | |
354 errstr ... will be filled with an error string in case of PCON error | |
355 (if NULL, no string will be written, | |
356 otherwise a buffer with min 500 bytes has to be provided!) | |
357 | |
358 RETURNS: PCON_OK .. PCON sucessfully applied | |
359 PCON_NOT_PRES .. PCON was not necessary | |
360 PCON_XXX .. error occured during PCON operation (see constants in pcon.h) | |
361 | |
362 */ | |
363 int decode_pcon_prim(ULONG opc, void * coded_prim, void ** decoded_prim, ULONG * decoded_len, | |
364 void ** filterinfo_prim, char* errstr=NULL); | |
365 | |
366 /* | |
367 +------------------------------------------------------------------------------------+ | |
368 | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | | |
369 | STATE : code ROUTINE : PCOView_frameSupp::free_pcon_prim | | |
370 +------------------------------------------------------------------------------------+ | |
371 | |
372 PURPOSE : frees a primitive previously allocated using decode_pcon_prim | |
373 | |
374 PARAMS: decoded_prim ... buffer with decoded prim | |
375 | |
376 RETURNS: | |
377 | |
378 */ | |
379 void free_pcon_prim(void * decoded_prim); | |
380 | |
381 int pcon() const { return m_pcon;} | |
382 int set_pcon(int pcon); | |
383 | |
384 bool ccddata_loaded(const char* ccddata_path=NULL); | |
385 const char* ccddata_path() const; | |
386 | |
387 const char* ind2str_dir() const { return m_ind2str_dir;} | |
388 void set_ind2str_dir(const char* dir); | |
389 | |
390 int ind2str_loaded() const { return m_ind2str_loaded;} | |
391 int unload_str2ind_table(); | |
392 void cancel_str2ind_search() { m_str2ind_continue_search=false;} | |
393 | |
394 long ind2str_version() const { return m_ind2str_version;} | |
395 const char* ind2str_file() const { return m_ind2str_file;} | |
396 | |
397 static long read_elem_save (T_CCDE_HANDLE * handle, | |
398 void * cstruct, | |
399 T_CCDE_ELEM_DESCR * edescr, | |
400 UBYTE * value); | |
401 | |
402 static USHORT prim_first_save (T_CCDE_HANDLE * phandle, | |
403 ULONG primcode, | |
404 char * name); | |
405 | |
406 static USHORT prim_next_save (T_CCDE_HANDLE *phandle, | |
407 UBYTE descent, | |
408 T_CCDE_ELEM_DESCR *pdescr); | |
409 | |
410 protected: | |
411 time_t m_str2ind_time; | |
412 bool m_show_str2ind_errors; | |
413 char m_ind2str_dir[MAX_PATH+1]; | |
414 int m_ind2str_loaded; | |
415 char m_ind2str_file[MAX_PATH+1]; | |
416 long m_ind2str_version; | |
417 bool m_ccddata_attached; | |
418 char m_tracestr_buf[DATA_MSG_MAX_SIZE+1]; | |
419 bool m_str2ind_continue_search; | |
420 int m_pcon; | |
421 | |
422 void (*m_ccddata_init_notify)(void); | |
423 void (*m_ccddata_exit_notify)(void); | |
424 }; | |
425 | |
426 #endif /* _PCO_VIEW_FRAMESUPP_H_ */ |