add Unknown_Ctrl error counter
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user