FreeCalypso > hg > fc-magnetite
view src/gpf2/inc/pco_view_framesupp.h @ 260:df0b531bb53d
aci3: AT%VER returns FreeCalypso firmware version string
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 04 Aug 2017 15:24:42 +0000 |
parents | 864b8cc0cf63 |
children |
line wrap: on
line source
/* +----------------------------------------------------------------------------- | 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_ */