From c50cdcef31b2350d3b6b5992345b9f25116ddedd Mon Sep 17 00:00:00 2001
From: Andreas Gattringer <andreas.gattringer@univie.ac.at>
Date: Wed, 12 Jun 2024 22:51:22 +0200
Subject: [PATCH] updated logging

---
 .../devices/network/ethernet_w5500.py         |  7 +++---
 umnp/microcontroller/devices/network/udp.py   |  7 +++---
 .../sensors/lps28dfw/__init__.py              |  7 +++---
 .../microcontroller/sensors/sht45/__init__.py |  9 ++++----
 umnp/proto/common/logging.py                  | 17 ++++++++++++++
 umnp/proto/compat/__init__.py                 |  0
 umnp/proto/compat/logging.py                  |  6 -----
 umnp/proto/message.py                         | 15 ++++++-------
 umnp/proto/message_header.py                  | 22 +++++++------------
 9 files changed, 48 insertions(+), 42 deletions(-)
 create mode 100644 umnp/proto/common/logging.py
 delete mode 100644 umnp/proto/compat/__init__.py
 delete mode 100644 umnp/proto/compat/logging.py

diff --git a/umnp/microcontroller/devices/network/ethernet_w5500.py b/umnp/microcontroller/devices/network/ethernet_w5500.py
index 711ed48..27e8e4d 100644
--- a/umnp/microcontroller/devices/network/ethernet_w5500.py
+++ b/umnp/microcontroller/devices/network/ethernet_w5500.py
@@ -9,11 +9,12 @@ if sys.implementation.name == "micropython":
 
     # noinspection PyUnresolvedReferences
     import network
-    import umnp.proto.compat.logging as logging
+
 
 else:
     from umnp.microcontroller.umock import machine, network
-    import logging
+
+from umnp.proto.common.logging import log_info
 
 
 class EthernetW5500(EthernetAdapter):
@@ -94,7 +95,7 @@ class EthernetW5500(EthernetAdapter):
         return self._nic.config("mac")
 
     def reset(self):
-        logging.info("Resetting NIC")
+        log_info("Resetting NIC")
         self._nic.active(False)
         time.sleep(0.1)
         self._nic.active(True)
diff --git a/umnp/microcontroller/devices/network/udp.py b/umnp/microcontroller/devices/network/udp.py
index 53955be..fc5544a 100644
--- a/umnp/microcontroller/devices/network/udp.py
+++ b/umnp/microcontroller/devices/network/udp.py
@@ -6,14 +6,13 @@ from umnp.microcontroller.devices.network import (
     LISTEN_TIMEOUT_MS,
     calculate_broadcast_ip,
 )
+from umnp.proto.common.logging import log_error
 
 if sys.implementation.name == "micropython":
     # noinspection PyUnresolvedReferences
     import uasyncio as asyncio
-    import umnp.proto.compat.logging as logging
-
 else:
-    import logging
+
     import asyncio
 DEFAULT_UMNP_DATA_IN_PORT = 7777
 DEFAULT_UMNP_COMMAND_IN_PORT = 7776
@@ -70,4 +69,4 @@ class UDPSender:
                 self.socket.sendto(msg, (self.broadcast_ip, self._target_port))
             except OSError as e:
                 self._error = True
-                logging.error(e)
+                log_error(str(e))
diff --git a/umnp/microcontroller/sensors/lps28dfw/__init__.py b/umnp/microcontroller/sensors/lps28dfw/__init__.py
index 4e10bdc..80e811a 100644
--- a/umnp/microcontroller/sensors/lps28dfw/__init__.py
+++ b/umnp/microcontroller/sensors/lps28dfw/__init__.py
@@ -3,19 +3,20 @@ import struct
 import sys
 import time
 
+from umnp.proto.common.logging import log_error
+
 try:
     from machine import I2C
 except ImportError:
     from umnp.microcontroller.umock.machine import I2C
 
 if sys.implementation.name == "micropython":
-    import umnp.proto.compat.logging as logging
+    pass
 else:
 
     def const(x):
         return x
 
-    import logging
 
 LPS28DFW_DEFAULT_ADDRESS = const(0x5D)
 LPS28DFW_READ = const(0xB9)
@@ -197,7 +198,7 @@ class LPS28DFW:
             p = await self.pressure()
             t = await self.temperature()
         except OSError as e:
-            logging.error(f"Unable to read measurement data: {e}")
+            log_error(f"Unable to read measurement data: {e}")
             return self._nan, self._nan
         return p, t
 
diff --git a/umnp/microcontroller/sensors/sht45/__init__.py b/umnp/microcontroller/sensors/sht45/__init__.py
index 845b519..b5bb520 100644
--- a/umnp/microcontroller/sensors/sht45/__init__.py
+++ b/umnp/microcontroller/sensors/sht45/__init__.py
@@ -5,15 +5,16 @@ try:
 except ImportError:
     from umnp.microcontroller.umock.machine import I2C
 
+from umnp.proto.common.logging import log_error
 
 if sys.implementation.name == "micropython":
-    import umnp.proto.compat.logging as logging
+    pass
 else:
 
     def const(x):
         return x
 
-    import logging
+
 import asyncio
 import time
 
@@ -97,7 +98,7 @@ class SHT45:
         try:
             n_ack = self._i2c.writeto(self._i2c_address, cmd)
         except OSError as e:
-            logging.error(f"Unable to write to I2C bus: {e}")
+            log_error(f"Unable to write to I2C bus: {e}")
             return self._nan, self._nan
         if n_ack != 1:
             return temperature, rh
@@ -105,7 +106,7 @@ class SHT45:
         try:
             data = self._i2c.readfrom(self._i2c_address, 6)
         except OSError as e:
-            logging.error(f"Unable to read from I2C bus: {e}")
+            log_error(f"Unable to read from I2C bus: {e}")
             return self._nan, self._nan
         temperature = self._translate_temperature(data[0:3])
         rh = self._translate_rh(data[3:6])
diff --git a/umnp/proto/common/logging.py b/umnp/proto/common/logging.py
new file mode 100644
index 0000000..335c084
--- /dev/null
+++ b/umnp/proto/common/logging.py
@@ -0,0 +1,17 @@
+import sys
+
+if sys.implementation.name == "micropython":
+    def info(msg: str) -> None:
+        print(f"INFO: {msg}")
+
+
+    def error(msg: str) -> None:
+        print(f"ERROR: {msg}")
+else:
+    import logging
+
+    def log_info(msg: str) -> None:
+        logging.info(msg)
+
+    def log_error(msg: str) -> None:
+        logging.error(msg)
diff --git a/umnp/proto/compat/__init__.py b/umnp/proto/compat/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/umnp/proto/compat/logging.py b/umnp/proto/compat/logging.py
deleted file mode 100644
index a3ea0a7..0000000
--- a/umnp/proto/compat/logging.py
+++ /dev/null
@@ -1,6 +0,0 @@
-def info(msg: str) -> None:
-    print(f"INFO: {msg}")
-
-
-def error(msg: str) -> None:
-    print(f"ERROR: {msg}")
diff --git a/umnp/proto/message.py b/umnp/proto/message.py
index afbc8da..0544137 100644
--- a/umnp/proto/message.py
+++ b/umnp/proto/message.py
@@ -1,15 +1,11 @@
+from umnp.proto.common.logging import log_error
+
 try:
     # noinspection PyUnresolvedReferences
     import typing
 except ImportError:
     pass
 
-try:
-    import logging
-except ImportError:
-    from umnp.proto.compat import logging
-
-
 from umnp.proto.common.timestamp import TimeStamp
 from umnp.proto.constants import MSG_BYTE_ORDER, MSG_LEN_PAYLOAD_SIZE
 from umnp.proto.message_header import MessageHeader
@@ -109,13 +105,13 @@ class Message:
             # print(f"expected: {payload=}")
             # raise OSError
         except (KeyError, ValueError):
-            logging.error("Invalid message: could not extract payload length")
+            log_error("Invalid message: could not extract payload length")
             return None
 
         offset += MSG_LEN_PAYLOAD_SIZE
         payload = data[offset:]
         if len(payload) != payload_length:
-            logging.error(
+            log_error(
                 f"Invalid message: mismatch between specified {payload_length} and actual payload length {len(payload)}."
             )
             return None
@@ -127,3 +123,6 @@ class Message:
 
     def __str__(self):
         return f"Message of type {self.type}"
+
+    def payload(self) -> str:
+        return self._data.decode("utf-8")
diff --git a/umnp/proto/message_header.py b/umnp/proto/message_header.py
index bdda79c..7056981 100644
--- a/umnp/proto/message_header.py
+++ b/umnp/proto/message_header.py
@@ -1,3 +1,4 @@
+from umnp.proto.common.logging import log_error
 from umnp.proto.common.timestamp import TimeStamp, valid_timestamp
 from umnp.proto.constants import (
     MSG_PROTOCOL_VERSION,
@@ -9,11 +10,6 @@ from umnp.proto.constants import (
     MSG_LEN_SENDER_TYPE,
 )
 
-try:
-    import logging
-except ImportError:
-    from umnp.proto.compat import logging
-
 try:
     # noinspection PyUnresolvedReferences
     import typing
@@ -106,7 +102,7 @@ class MessageHeader:
         offset = 0
         protocol_bytes = -1
         if not (isinstance(data, bytes)):
-            logging.error("Invalid message header: not bytes")
+            log_error("Invalid message header: not bytes")
             return None
         try:
             protocol_bytes = data[:MSG_LEN_PROTOCOL_VERSION]
@@ -114,8 +110,8 @@ class MessageHeader:
 
             cls._version = protocol_version
         except (KeyError, ValueError):
-            logging.error(f"Protocol bytes: {protocol_bytes}")
-            logging.error("Invalid message header: could not extract version")
+            log_error(f"Protocol bytes: {protocol_bytes}")
+            log_error("Invalid message header: could not extract version")
             return None
         offset += MSG_LEN_PROTOCOL_VERSION
 
@@ -126,7 +122,7 @@ class MessageHeader:
             offset += MSG_LEN_SENDER_TYPE
             msg_sender_type = int.from_bytes(msg_sender_type_b, MSG_BYTE_ORDER)
         except (KeyError, ValueError):
-            logging.error("Invalid message sender information: could not extract data")
+            log_error("Invalid message sender information: could not extract data")
             return None
 
         try:
@@ -134,14 +130,14 @@ class MessageHeader:
             message_type = int.from_bytes(message_type_bytes, MSG_BYTE_ORDER)
 
         except (KeyError, ValueError):
-            logging.error("Invalid message payload: could not extract version")
+            log_error("Invalid message payload: could not extract version")
             return None
 
         offset += MSG_LEN_MESSAGE_TYPE
 
         if protocol_version < 0 or protocol_version > MSG_PROTOCOL_VERSION:
             err = f"Invalid protocol version {protocol_version}, outside of range [0, {MSG_PROTOCOL_VERSION}]"
-            logging.error(err)
+            log_error(err)
             return None
         message_ts = None
         try:
@@ -149,9 +145,7 @@ class MessageHeader:
             message_ts_int = int.from_bytes(message_ts, byteorder=MSG_BYTE_ORDER)
             timestamp = TimeStamp(message_ts_int)
         except (KeyError, ValueError) as e:
-            logging.error(
-                f"Invalid message timestamp: could not extract timestamp: {e}"
-            )
+            log_error(f"Invalid message timestamp: could not extract timestamp: {e}")
             return None
 
         return cls(
-- 
GitLab