cleanup MCU definitions (#1226)

* cleanup MCU definitions

* rename

* enum

* enum

* fix that
This commit is contained in:
Adeeb Shihadeh
2023-01-26 20:54:11 -08:00
committed by GitHub
parent 33e576214d
commit 76d0459182
8 changed files with 96 additions and 77 deletions

View File

@@ -13,8 +13,8 @@ from functools import wraps
from typing import Optional
from itertools import accumulate
from .config import DEFAULT_FW_FN, DEFAULT_H7_FW_FN, SECTOR_SIZES_FX, SECTOR_SIZES_H7
from .dfu import PandaDFU, MCU_TYPE_F2, MCU_TYPE_F4, MCU_TYPE_H7
from .constants import McuType
from .dfu import PandaDFU
from .isotp import isotp_send, isotp_recv
from .spi import SpiHandle, PandaSpiException
@@ -25,8 +25,6 @@ LOGLEVEL = os.environ.get('LOGLEVEL', 'INFO').upper()
logging.basicConfig(level=LOGLEVEL, format='%(message)s')
BASEDIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "../")
USBPACKET_MAX_SIZE = 0x40
CANPACKET_HEAD_SIZE = 0x6
DLC_TO_LEN = [0, 1, 2, 3, 4, 5, 6, 7, 8, 12, 16, 20, 24, 32, 48, 64]
@@ -409,7 +407,7 @@ class Panda:
assert fr[4:8] == b"\xde\xad\xd0\x0d"
# determine sectors to erase
apps_sectors_cumsum = accumulate(SECTOR_SIZES_H7[1:] if mcu_type == MCU_TYPE_H7 else SECTOR_SIZES_FX[1:])
apps_sectors_cumsum = accumulate(mcu_type.config.sector_sizes[1:])
last_sector = next((i + 1 for i, v in enumerate(apps_sectors_cumsum) if v > len(code)), -1)
assert last_sector >= 1, "Binary too small? No sector to erase."
assert last_sector < 7, "Binary too large! Risk of overwriting provisioning chunk."
@@ -438,7 +436,7 @@ class Panda:
def flash(self, fn=None, code=None, reconnect=True):
if not fn:
fn = DEFAULT_H7_FW_FN if self._mcu_type == MCU_TYPE_H7 else DEFAULT_FW_FN
fn = self._mcu_type.config.app_path
assert os.path.isfile(fn)
logging.debug("flash: main version is %s", self.get_version())
if not self.bootstub:
@@ -602,15 +600,15 @@ class Panda:
else:
return (0, 0, 0)
def get_mcu_type(self):
def get_mcu_type(self) -> McuType:
hw_type = self.get_type()
if hw_type in Panda.F2_DEVICES:
return MCU_TYPE_F2
return McuType.F2
elif hw_type in Panda.F4_DEVICES:
return MCU_TYPE_F4
return McuType.F4
elif hw_type in Panda.H7_DEVICES:
return MCU_TYPE_H7
return None
return McuType.H7
raise ValueError(f"unknown HW type: {hw_type}")
def has_obd(self):
return self.get_type() in Panda.HAS_OBD