Properly implement writing memory

Start implementing abstraction class
This commit is contained in:
Odd Stråbø 2023-12-09 18:57:37 +01:00
parent 6544864741
commit 5599cb6f43
6 changed files with 158 additions and 47 deletions

View file

@ -8,49 +8,12 @@ sys.path.insert(1, os.path.dirname(os.path.dirname(sys.argv[0])))
from draw_memory_map import memory_table # noqa: E402
from srnemqtt.config import get_config, get_interface # noqa: E402
from srnemqtt.interfaces import BaseInterface # noqa: E402
from srnemqtt.protocol import readMemory # noqa: E402
def get_device_name(iface: BaseInterface) -> str | None:
data = readMemory(iface, 0x0C, 8)
if data is None:
return None
return data.decode("utf-8").strip()
def get_device_version(iface: BaseInterface) -> str | None:
data = readMemory(iface, 0x14, 4)
if data is None:
return None
major = (data[0] << 8) + data[1]
minor = data[2]
patch = data[3]
return f"{major}.{minor}.{patch}"
def get_device_serial(iface: BaseInterface) -> str | None:
data = readMemory(iface, 0x18, 3)
if data is None:
return None
p1 = data[0]
p2 = data[1]
p3 = (data[2] << 8) + data[3]
return f"{p1}-{p2}-{p3}"
if __name__ == "__main__":
conf = get_config()
iface = get_interface(conf)
print(get_device_name(iface))
print(get_device_version(iface))
print(get_device_serial(iface))
data: List[int] = []
for i in range(0, 0xFFFF, 16):
newdata = readMemory(iface, i, 16)

View file

@ -1,12 +1,12 @@
# -*- coding: utf-8 -*-
from srnemqtt.constants import MAC
from srnemqtt.lib.feasycom_ble import BTLEUart
from srnemqtt.protocol import construct_request, write
from srnemqtt.protocol import construct_read_request, write
with BTLEUart(MAC, timeout=1) as x:
print(x)
write(x, construct_request(0x0E, words=3))
write(x, construct_read_request(0x0E, words=3))
x.read(3, timeout=1)
print(x.read(6, timeout=0.01))
x.read(2, timeout=0.01)

22
misc/test_load_switch.py Normal file
View file

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
import os
import sys
from time import sleep
sys.path.insert(1, os.path.dirname(os.path.dirname(sys.argv[0])))
from srnemqtt.config import get_config, get_interface # noqa: E402
from srnemqtt.protocol import ChargeController # noqa: E402
if __name__ == "__main__":
conf = get_config()
iface = get_interface(conf)
cc = ChargeController(iface)
print(f"Serial: {cc.serial}")
print(f"Load enabled: {cc.load_enabled}")
cc.load_enabled = True
print(f"Load enabled: {cc.load_enabled}")
sleep(5)
cc.load_enabled = False
print(f"Load enabled: {cc.load_enabled}")

View file

@ -9,7 +9,7 @@ print(sys.path)
sys.path.insert(1, os.path.dirname(os.path.dirname(sys.argv[0])))
# from srnemqtt.constants import MAC
# from srnemqtt.lib.feasycom_ble import BTLEUart
from srnemqtt.protocol import construct_request, write # noqa: E402
from srnemqtt.protocol import construct_read_request, write # noqa: E402
# for rate in [1200, 2400, 4800, 9600, 115200]:
for rate in [9600]:
@ -19,7 +19,7 @@ for rate in [9600]:
print(x)
write(x, construct_request(0x0E, words=3))
write(x, construct_read_request(0x0E, words=3))
print(x.read(3))
print(x.read(6))
print(x.read(2))