FreeCalypso > hg > fc-magnetite
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/gpf2/inc/pco_view_framesupp.h Sun Sep 25 23:38:58 2016 +0000 @@ -0,0 +1,426 @@ +/* ++----------------------------------------------------------------------------- +| Project : PCO2 +| Modul : PCO_VIEW_FRAMESUPP ++----------------------------------------------------------------------------- +| Copyright 2002 Texas Instruments Berlin, AG +| All rights reserved. +| +| This file is confidential and a trade secret of Texas +| Instruments Berlin, AG +| The receipt of or possession of this file does not convey +| any rights to reproduce or disclose its contents or to +| manufacture, use, or sell anything it may describe, in +| whole, or in part, without the specific written consent of +| Texas Instruments Berlin, AG. ++----------------------------------------------------------------------------- +| Purpose : This Modul contains a viewer class derived directly from the +| core. +| It supports decoding of frame SYST_MESSAGEs and of LTS-Header/ +| TIF-ASCII-DATA-messages. +| It is still intended to be specialized and extended, e.g. in +| GUI-server-applications. +| Some member functions are totally virtual without any +| standard body and have to be provided by the child class ! ++----------------------------------------------------------------------------- +*/ + +#ifndef _PCO_VIEW_FRAMESUPP_H_ +#define _PCO_VIEW_FRAMESUPP_H_ + +/*==== INCLUDES ===================================================*/ +#ifndef PCO_VIEW_FRAMESUPP_CPP_CCD +#include "pco_view_core.h" +#else +#include "view/pco_view_core.h" +#endif + +#ifdef USE_CCD +extern "C" +{ +#include "ccdtable.h" +#include "ccddata.h" +} +#include "ccdedit.h" +#include "view/pco_pdi.h" +#endif /* USE_CCD */ + +#include <time.h> + +/*==== DEFINES =====================================================*/ +#define PCO_STR2IND_NOT_LOADED 0 +#define PCO_STR2IND_AUTO_LOADED 1 +#define PCO_STR2IND_MAN_LOADED 2 +#define PCO_STR2IND_SEARCHING 3 + +/*==== PROTOTYPES ==================================================*/ + +/*==== CLASSES =====================================================*/ +class PCOView_frameSupp : public PCOView_core +{ +public: + PCOView_frameSupp(const char* ini_file, int& err, + const char* primq_name="", + const char* ctrlq_name=""); + virtual ~PCOView_frameSupp(); + + /* + +-------------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::interpret_message | + +-------------------------------------------------------------------------------------+ + + PURPOSE : here interpretation of received raw data takes place + (has to be implemented by derived classes !) + + PARAMS: buffer .. raw data to be interpretated + bufsize .. size of buffer + data .. actual data + size .. size of data + id .. id of data message + index .. index of data message (e.g. in logfile) ... 0 means no index!! + ttype .. type of time stamp - see PCO_TTYPE_XXX constants + time .. time stamp + sender .. name of sender + receiver.. name of original receiver + + RETURNS: 0 .. success + -1 .. interpretation was not possible + + */ + virtual int interpret_message(void* buffer, U16 bufsize, + void* &data, U16 &size, ULONG &id, ULONG& index, ULONG& ttype, U32 &time, + char* &sender, char* &receiver); + + /* + +--------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::on_connected | + +--------------------------------------------------------------------------------+ + + PURPOSE : reaction to PCO_CONNECTED from server + + PARAMS: buf .. data containing server type + sender .. server queue name + + RETURNS: 0 .. server type supported + -1 .. server type not supported + + */ + virtual int on_connected(const void *buf,const char* sender); + + /* + +--------------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::decode_tracestring | + +--------------------------------------------------------------------------------------+ + + PURPOSE : tries to decode an OPC in the tracestring (e.g. $<OPC>) + + PARAMS: instr .. original tracestring + size .. max size for outstr + + RETURNS: 0 .. success (outstr contains new tracestring) + -1 .. no success while decoding + -2 .. no decoding necessary + + lastOPC .. in case of success contains last opc found in instr + + */ + int decode_tracestring(const char* instr, char* outstr, U16 size, ULONG &lastOPC); + + /* + +-----------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_CTRL_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::check_version | + +-----------------------------------------------------------------------------------+ + + PURPOSE : tries to request the version of a running stack via the server + -> will result in a SYST-trace starting with '&' + + PARAMS: + + RETURNS: 0 .. sucess + -1 .. Server not found + -2 .. error while contacting Server + + */ + int check_version(); + + /* + +--------------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_CTRL_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::check_communication| + +--------------------------------------------------------------------------------------+ + + PURPOSE : tries to send a system primitive to the running stack via the server + -> will result in SYST-traces if communication is ok + + PARAMS: + + RETURNS: 0 .. sucess + -1 .. Server not found + -2 .. error while contacting Server + + */ + int check_communication(); + + /* + +--------------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::decode_ccd_msg | + +--------------------------------------------------------------------------------------+ + + PURPOSE : tries to decode a given encoded air message + + PARAMS: decinfo ... T_PDI_CCDMSG stuct (see pdi.h), + contains the coded sdu and info about, e.g., msg-type + decoded_msg ... buffer which will receive the decoded struct + + RETURNS: ccdOK, ccdWarning .. sucess + ccdError .. error while decoding + + */ + int decode_ccd_msg(const void* decinfo, UBYTE **decoded_msg); + + /* + +------------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::free_ccd_msg | + +------------------------------------------------------------------------------------+ + + PURPOSE : frees a msg structure previously allocated using decode_ccd_msg + + PARAMS: decoded_msg ... buffer with decoded air message structure + + RETURNS: + + */ + void free_ccd_msg(void * decoded_msg); + + /* + +--------------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::load_str2ind_table | + +--------------------------------------------------------------------------------------+ + + PURPOSE : tries to explicitely load a str2ind-table + + PARAMS: tname ... name of .tab-file + + RETURNS: 0 .. sucess + -1 .. error while loading + + */ + int load_str2ind_table(const char* tname); + + /* + +--------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::on_inichange | + +--------------------------------------------------------------------------------+ + + PURPOSE : reloads important changes from ini-file + + PARAMS: + + */ + virtual void on_inichange(); + + /* + +--------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::self_trace | + +--------------------------------------------------------------------------------+ + + PURPOSE : adds a new trace string to the queue of this viewer + + PARAMS: + + */ + virtual void self_trace(const char* trace); + + /* + +--------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::send_syscmd | + +--------------------------------------------------------------------------------+ + + PURPOSE : tries to send a FRAME system command to the server + who will forward it to a connected protocol stack + + PARAMS: receiver ... receiver of the command + cmd ... the actual command (e.g. "TRACECLASS FF") + + RETURNS: 0 .. sucess + -1 .. Server not found + -2 .. error while contacting Server + + */ + int send_syscmd(const char* receiver, const char* cmd); + + /* + +--------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::init_ccddata | + +--------------------------------------------------------------------------------+ + + PURPOSE : initialize ccddata from the given path + + PARAMS: ccddata_path ... path of the ccddata library + (if NULL path will be loaded from ini-file) + force ... 0..keep ccddata-lib loaded if there is one + 1..exchange evtl. existing ccddata-lib + write ... 1..write new path to ini file if force is 1 + 0..dont write new path to ini file + + RETURNS: 0 .. success + -1 .. error + + */ + int init_ccddata(const char* ccddata_path=NULL, + int force=0, int write=1); + + /* + +--------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::exit_ccddata | + +--------------------------------------------------------------------------------+ + + PURPOSE : deinitializied ccddata + + PARAMS: + + RETURNS: 0 .. success + -1 .. error + + */ + int exit_ccddata(); + + /* + +------------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::collect_pdi_data | + +------------------------------------------------------------------------------------+ + + PURPOSE : run through primitive top-level elements and call pdi_getDecodeInfo to + collect all potential infos for decoding an evtl. contained aim + + PARAMS: prim_data ... data of primitive + filterinfo_data ... data that holds filter info for the primitive + handle ... open handle for parsing the primitive + + RETURNS: + + */ + void collect_pdi_data(const char* prim_data, const char* filterinfo_data, T_CCDE_HANDLE handle); + + /* + +--------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::elem_present | + +--------------------------------------------------------------------------------+ + + PURPOSE : check if element is present in specified primtive + + PARAMS: filterinfo_data ... data that holds filter info for the primitive + filterinfo_value ... buffer to receive filter info data for current element + handle ... open handle for parsing the primitive + desc ... current descriptor for parsing the primitive + + RETURNS: 1 ... present + 0 ... not present + -1 ... error while calling read_elem + + */ + int elem_present(const char* filterinfo_data, char* filterinfo_value, T_CCDE_HANDLE handle, T_CCDE_ELEM_DESCR desc); + + /* + +------------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::decode_pcon_prim | + +------------------------------------------------------------------------------------+ + + PURPOSE : if necessary tries to decode the given primitive using PCON + + PARAMS: opc ... primitive opc + coded_prim ... data of original prim + decoded_prim ... buffer which will point to the decoded prim + decoded_len ... length of decoded_prim buffer (without evtl. pointed to data areas) + filterinfo_prim + ... buffer which will be evtl. filled with a filterinfo shadow prim + containing only 0x00-s or 0xff-s per element + (in default case a NULL pointer is returned) + errstr ... will be filled with an error string in case of PCON error + (if NULL, no string will be written, + otherwise a buffer with min 500 bytes has to be provided!) + + RETURNS: PCON_OK .. PCON sucessfully applied + PCON_NOT_PRES .. PCON was not necessary + PCON_XXX .. error occured during PCON operation (see constants in pcon.h) + + */ + int decode_pcon_prim(ULONG opc, void * coded_prim, void ** decoded_prim, ULONG * decoded_len, + void ** filterinfo_prim, char* errstr=NULL); + + /* + +------------------------------------------------------------------------------------+ + | PROJECT : PCO2 MODULE : PCO_VIEW_FRAMESUPP | + | STATE : code ROUTINE : PCOView_frameSupp::free_pcon_prim | + +------------------------------------------------------------------------------------+ + + PURPOSE : frees a primitive previously allocated using decode_pcon_prim + + PARAMS: decoded_prim ... buffer with decoded prim + + RETURNS: + + */ + void free_pcon_prim(void * decoded_prim); + + int pcon() const { return m_pcon;} + int set_pcon(int pcon); + + bool ccddata_loaded(const char* ccddata_path=NULL); + const char* ccddata_path() const; + + const char* ind2str_dir() const { return m_ind2str_dir;} + void set_ind2str_dir(const char* dir); + + int ind2str_loaded() const { return m_ind2str_loaded;} + int unload_str2ind_table(); + void cancel_str2ind_search() { m_str2ind_continue_search=false;} + + long ind2str_version() const { return m_ind2str_version;} + const char* ind2str_file() const { return m_ind2str_file;} + + static long read_elem_save (T_CCDE_HANDLE * handle, + void * cstruct, + T_CCDE_ELEM_DESCR * edescr, + UBYTE * value); + + static USHORT prim_first_save (T_CCDE_HANDLE * phandle, + ULONG primcode, + char * name); + + static USHORT prim_next_save (T_CCDE_HANDLE *phandle, + UBYTE descent, + T_CCDE_ELEM_DESCR *pdescr); + +protected: + time_t m_str2ind_time; + bool m_show_str2ind_errors; + char m_ind2str_dir[MAX_PATH+1]; + int m_ind2str_loaded; + char m_ind2str_file[MAX_PATH+1]; + long m_ind2str_version; + bool m_ccddata_attached; + char m_tracestr_buf[DATA_MSG_MAX_SIZE+1]; + bool m_str2ind_continue_search; + int m_pcon; + + void (*m_ccddata_init_notify)(void); + void (*m_ccddata_exit_notify)(void); +}; + +#endif /* _PCO_VIEW_FRAMESUPP_H_ */