From 198dd33379ed77e49666d485f31eeab8991dc27b Mon Sep 17 00:00:00 2001 From: "Kwabena W. Agyeman" Date: Sat, 23 Dec 2023 13:22:08 -0800 Subject: [PATCH] scripts/libraries: Change the PRC Interface Library UART Master. --- scripts/libraries/rpc.py | 61 ++++++++++++++++++++++++++-------------- 1 file changed, 40 insertions(+), 21 deletions(-) diff --git a/scripts/libraries/rpc.py b/scripts/libraries/rpc.py index c2af2d918..0e8ec26ca 100644 --- a/scripts/libraries/rpc.py +++ b/scripts/libraries/rpc.py @@ -6,12 +6,12 @@ # This work is licensed under the MIT license, see the file LICENSE for details. import gc +import machine import omv -import pyb import select import socket -import stm import struct +import time class rpc: @@ -32,6 +32,7 @@ class rpc: @micropython.viper def __stm_crc_16(self, data, size: int) -> int: # private + import stm ptr32(stm.CRC + stm.CRC_CR)[0] = (1 << 3) | 1 crc8 = ptr8(stm.CRC + stm.CRC_DR) d = ptr8(data) @@ -70,10 +71,12 @@ class rpc: def __init__(self): # private self.__crc_16 = self.__def_crc_16 if omv.board_type() == "H7": + import stm stm.mem32[stm.RCC + stm.RCC_AHB4ENR] = stm.mem32[stm.RCC + stm.RCC_AHB4ENR] | (1 << 19) stm.mem32[stm.CRC + stm.CRC_POL] = 0x1021 self.__crc_16 = self.__stm_crc_16 elif omv.board_type() == "F7": + import stm stm.mem32[stm.RCC + stm.RCC_AHB1ENR] = stm.mem32[stm.RCC + stm.RCC_AHB1ENR] | (1 << 12) stm.mem32[stm.CRC + stm.CRC_POL] = 0x1021 self.__crc_16 = self.__stm_crc_16 @@ -195,8 +198,8 @@ class rpc_master(rpc): self._COMMAND_HEADER_PACKET_MAGIC, struct.pack("= self._get_short_timeout: @@ -597,6 +613,7 @@ class rpc_spi_slave(rpc_slave): return buff def put_bytes(self, data, timeout_ms): # protected + import pyb start = pyb.millis() while self.__pin.value(): if pyb.elapsed_millis(start) >= self._put_short_timeout: @@ -611,7 +628,7 @@ class rpc_spi_slave(rpc_slave): class rpc_uart_master(rpc_master): def __init__(self, baudrate=9600, uart_port=3): # private - self.__uart = pyb.UART(uart_port, baudrate, timeout=2, timeout_char=2) + self.__uart = machine.UART(uart_port, baudrate, timeout=2, timeout_char=2) rpc_master.__init__(self) def _flush(self): # protected @@ -619,7 +636,7 @@ class rpc_uart_master(rpc_master): def get_bytes(self, buff, timeout_ms): # protected if self.__uart.readinto(buff) is None: - pyb.delay(self._get_short_timeout) + time.sleep_ms(self._get_short_timeout) return None return buff @@ -635,7 +652,7 @@ class rpc_uart_master(rpc_master): class rpc_uart_slave(rpc_slave): def __init__(self, baudrate=9600, uart_port=3): # private - self.__uart = pyb.UART(uart_port, baudrate, timeout=2, timeout_char=2) + self.__uart = machine.UART(uart_port, baudrate, timeout=2, timeout_char=2) rpc_slave.__init__(self) def _flush(self): # protected @@ -658,6 +675,7 @@ class rpc_uart_slave(rpc_slave): class rpc_usb_vcp_master(rpc_master): def __init__(self): # private + import pyb self.__usb_vcp = pyb.USB_VCP() if self.__usb_vcp.debug_mode_enabled(): raise OSError("You cannot use the USB VCP while the IDE is connected!") @@ -678,6 +696,7 @@ class rpc_usb_vcp_master(rpc_master): class rpc_usb_vcp_slave(rpc_slave): def __init__(self): # private + import pyb self.__usb_vcp = pyb.USB_VCP() if self.__usb_vcp.debug_mode_enabled(): raise OSError("You cannot use the USB VCP while the IDE is connected!")