55import argparse
66import socket
77
8-
8+
99class TextFileParser (ixcom .parser .MessageParser ):
10- def __init__ (self , outputfile , print_request = True ):
10+ def __init__ (self , outputfile , skip_parameter = None , print_request = True ):
1111 super ().__init__ ()
1212 self .outputfile = outputfile
1313 self .print_request = print_request
14- self .messageSearcher .disableCRC = True
14+ self .messageSearcher .disableCRC = False
1515 self ._indent_level = 0
1616 self .add_subscriber (self )
17+ self .skipParameter = skip_parameter
18+ self .parameterList = list ()
1719
1820 def __handle_loglist2 (self , message ):
1921 self .write_output (f"Channel: { message .payload .data ['reserved_paramheader' ]} \n " )
@@ -32,8 +34,13 @@ def __handle_loglist2(self, message):
3234
3335 def handle_message (self , message , from_device ):
3436 zeile = "Header Time: %.4f\n " % (message .header .get_time ())
35- self .write_output (zeile )
37+ if self .skipParameter is None :
38+ self .write_output (zeile )
39+ elif message .data ['parameterID' ] in self .skipParameter :
40+ return
3641 if message .header .msgID == ixcom .data .MessageID .PARAMETER :
42+ self .parameterList .append ((message .data ['parameterID' ], message ))
43+ return
3744 if message .payload .data ["action" ] == 0 :
3845 zeile = "Parameter: %s\n " % message .payload .get_name ()
3946 else :
@@ -51,6 +58,22 @@ def handle_message(self, message, from_device):
5158 zeile = "\n \n "
5259 self .write_output (zeile )
5360
61+ def write_parameter (self ):
62+ self .parameterList .sort (key = lambda messagetuple : messagetuple [0 ])
63+ for par in self .parameterList :
64+ message = par [1 ]
65+ if message .payload .data ["action" ] == 0 :
66+ zeile = "Parameter: %s\n " % message .payload .get_name ()
67+ else :
68+ zeile = "Parameter request: %s\n " % message .payload .get_name ()
69+ self .write_output (zeile )
70+ if isinstance (message .payload , ixcom .data .PARXCOM_LOGLIST2_Payload ):
71+ self .__handle_loglist2 (message )
72+ else :
73+ self .__convert_dict (message .payload .data )
74+ zeile = "\n \n "
75+ self .write_output (zeile )
76+
5477 def write_divider (self ):
5578 self .write_output ('-' * 10 + '\n ' )
5679
@@ -125,15 +148,16 @@ def xcom_lookup(argv = None):
125148 pass
126149 sys .exit (0 )
127150
128- def configdump2txt (argv = None ):
151+
152+ def configdump2txt (argv = None ):
129153 parser = argparse .ArgumentParser (description = 'Converts xcom binary config dump files to other representations' )
130- parser .add_argument ('input_file' , metavar = '' , type = argparse .FileType ('rb' ), nargs = '?' ,
131- help = 'Name of the binary file' , default = 'config.dump' )
132- parser .add_argument ('-o' , '--output' , metavar = 'output_filename' , type = argparse .FileType ('wt' ),
133- help = 'Filename of the output file' , default = sys .stdout )
134- args = parser .parse_args (args = argv )
135- xcomparser = TextFileParser (args .output )
154+ parser .add_argument ('input_file' , metavar = '' , type = argparse .FileType ('rb' ), nargs = '?' , help = 'Name of the binary file' , default = 'config.dump' )
155+ parser .add_argument ('-o' , '--output' , metavar = 'output_filename' , type = argparse .FileType ('wt' ), help = 'Filename of the output file' , default = sys .stdout )
156+ args = parser .parse_args (args = argv )
157+ xcomparser = TextFileParser (args .output , skip_parameter = [917 ]) # skip parxcom_loglist2(917)
136158 xcomparser .parse_file (args .input_file )
159+ xcomparser .write_parameter ()
160+
137161
138162def monitor2xcom (argv = None ):
139163 import re
0 commit comments