add Unknown_Ctrl error counter

This commit is contained in:
Stefan Allius
2023-10-28 00:11:22 +02:00
parent cfe64b1eae
commit 36754196c2

View File

@@ -2,10 +2,10 @@ import struct, logging, time, datetime
import weakref import weakref
from datetime import datetime from datetime import datetime
if __name__ == "app.src.messages": if __name__ == "app.src.messages":
from app.src.infos import Infos from app.src.infos import Infos
from app.src.config import Config from app.src.config import Config
else: else: # pragma: no cover
from infos import Infos from infos import Infos
from config import Config from config import Config
@@ -13,19 +13,12 @@ logger = logging.getLogger('msg')
def hex_dump_memory(level, info, data, num): def hex_dump_memory(level, info, data, num):
s = ''
n = 0 n = 0
lines = [] lines = []
lines.append(info) lines.append(info)
tracer = logging.getLogger('tracer') tracer = logging.getLogger('tracer')
if not tracer.isEnabledFor(level): return if not tracer.isEnabledFor(level): return
#data = list((num * ctypes.c_byte).from_address(ptr))
if len(data) == 0:
return '<empty>'
for i in range(0, num, 16): for i in range(0, num, 16):
line = ' ' line = ' '
line += '%04x | ' % (i) line += '%04x | ' % (i)
@@ -46,8 +39,6 @@ def hex_dump_memory(level, info, data, num):
tracer.log(level, '\n'.join(lines)) tracer.log(level, '\n'.join(lines))
#return '\n'.join(lines)
class Control: class Control:
def __init__(self, ctrl:int): def __init__(self, ctrl:int):
@@ -57,13 +48,13 @@ class Control:
return self.ctrl return self.ctrl
def is_ind(self) -> bool: def is_ind(self) -> bool:
return not (self.ctrl & 0x08) return (self.ctrl == 0x91)
#def is_req(self) -> bool: #def is_req(self) -> bool:
# return not (self.ctrl & 0x08) # return not (self.ctrl & 0x08)
def is_resp(self) -> bool: def is_resp(self) -> bool:
return self.ctrl & 0x08 return (self.ctrl == 0x99)
class IterRegistry(type): class IterRegistry(type):
def __iter__(cls): def __iter__(cls):
@@ -99,7 +90,7 @@ class Message(metaclass=IterRegistry):
Empty methods, that have to be implemented in any child class which don't use asyncio Empty methods, that have to be implemented in any child class which don't use asyncio
''' '''
def _read(self) -> None: # read data bytes from socket and copy them to our _recv_buffer def _read(self) -> None: # read data bytes from socket and copy them to our _recv_buffer
return return # pragma: no cover
''' '''
Our puplic methods Our puplic methods
@@ -153,9 +144,7 @@ class Message(metaclass=IterRegistry):
if self.header_valid and len(self._recv_buffer) >= (self.header_len+self.data_len): if self.header_valid and len(self._recv_buffer) >= (self.header_len+self.data_len):
hex_dump_memory(logging.INFO, f'Received from {self.addr}:', self._recv_buffer, self.header_len+self.data_len) hex_dump_memory(logging.INFO, f'Received from {self.addr}:', self._recv_buffer, self.header_len+self.data_len)
if self.id_str: self.set_serial_no(self.id_str.decode("utf-8"))
self.set_serial_no(self.id_str.decode("utf-8"))
self.__dispatch_msg() self.__dispatch_msg()
self.__flush_recv_msg() self.__flush_recv_msg()
return return
@@ -266,6 +255,9 @@ class Message(metaclass=IterRegistry):
self.__finish_send_msg() self.__finish_send_msg()
elif self.ctrl.is_resp(): elif self.ctrl.is_resp():
return # ignore received response from tsun return # ignore received response from tsun
else:
self.inc_counter('Unknown_Ctrl')
self.forward(self._recv_buffer, self.header_len+self.data_len) self.forward(self._recv_buffer, self.header_len+self.data_len)
def msg_get_time(self): def msg_get_time(self):
@@ -281,6 +273,8 @@ class Message(metaclass=IterRegistry):
result = struct.unpack_from(f'!q', self._recv_buffer, self.header_len) result = struct.unpack_from(f'!q', self._recv_buffer, self.header_len)
logger.debug(f'tsun-time: {result[0]:08x}') logger.debug(f'tsun-time: {result[0]:08x}')
return # ignore received response from tsun return # ignore received response from tsun
else:
self.inc_counter('Unknown_Ctrl')
self.forward(self._recv_buffer, self.header_len+self.data_len) self.forward(self._recv_buffer, self.header_len+self.data_len)
@@ -308,12 +302,14 @@ class Message(metaclass=IterRegistry):
self.__build_header(0x99) self.__build_header(0x99)
self._send_buffer += b'\x01' self._send_buffer += b'\x01'
self.__finish_send_msg() self.__finish_send_msg()
self.__process_data()
elif self.ctrl.is_resp(): elif self.ctrl.is_resp():
return # ignore received response return # ignore received response
else:
self.inc_counter('Unknown_Ctrl')
self.forward(self._recv_buffer, self.header_len+self.data_len) self.forward(self._recv_buffer, self.header_len+self.data_len)
self.__process_data()
def msg_inverter_data(self): def msg_inverter_data(self):
@@ -321,12 +317,14 @@ class Message(metaclass=IterRegistry):
self.__build_header(0x99) self.__build_header(0x99)
self._send_buffer += b'\x01' self._send_buffer += b'\x01'
self.__finish_send_msg() self.__finish_send_msg()
self.__process_data()
elif self.ctrl.is_resp(): elif self.ctrl.is_resp():
return # ignore received response return # ignore received response
else:
self.inc_counter('Unknown_Ctrl')
self.forward(self._recv_buffer, self.header_len+self.data_len) self.forward(self._recv_buffer, self.header_len+self.data_len)
self.__process_data()
def __process_data(self): def __process_data(self):
msg_hdr_len = self.parse_msg_header() msg_hdr_len = self.parse_msg_header()