diff --git a/adafruit_platformdetect/board.py b/adafruit_platformdetect/board.py index 9056901b..400ae154 100644 --- a/adafruit_platformdetect/board.py +++ b/adafruit_platformdetect/board.py @@ -142,9 +142,15 @@ def id(self) -> Optional[str]: elif chip_id == chips.A64: board_id = self._pine64_id() elif chip_id == chips.H6: - board_id = self._pine64_id() or self._armbian_id() + board_id = ( + self._pine64_id() or self._armbian_id() or self._repka_variants_id() + ) elif chip_id == chips.H5: - board_id = self._armbian_id() or self._allwinner_variants_id() + board_id = ( + self._armbian_id() + or self._allwinner_variants_id() + or self._repka_variants_id() + ) elif chip_id == chips.H616: board_id = self._armbian_id() or self._allwinner_variants_id() elif chip_id == chips.A33: @@ -420,6 +426,10 @@ def _armbian_id(self) -> Optional[str]: board = boards.PCDUINO3 elif board_value == "rock-3a": board = boards.ROCK_PI_3A + elif board_value == "repka-pi3-h5": + board = boards.REPKA_PI_3_H5 + elif board_value == "repka-pi4-h6": + board = boards.REPKA_PI_4_H6 elif board_value == "milkv_duo": board = boards.MILKV_DUO return board @@ -713,6 +723,19 @@ def _allwinner_variants_id(self) -> Optional[str]: board = boards.OLIMEX_LIME2 return board + def _repka_variants_id(self) -> Optional[str]: + board_value = self.detector.get_device_model() + board = None + if not board_value: + return board + board_value = board_value.lower() + if "repka-pi3-h5" in board_value: + board = boards.REPKA_PI_3_H5 + if "repka-pi4-h6" in board_value: + board = boards.REPKA_PI_4_H6 + + return board + # pylint: disable=too-many-return-statements def _rp2040_u2if_id(self) -> Optional[str]: @@ -948,6 +971,11 @@ def any_olimex_lime2_board(self): """Check whether the current board is any Pine64 device.""" return self.id in boards.OLIMEX_LIME2 + @property + def any_repka_board(self): + """Check whether the current board is any Repka device.""" + return self.id in boards._REPKA_PI_IDS + @property def os_environ_board(self) -> bool: """Check whether the current board is an OS environment variable special case.""" @@ -1011,6 +1039,7 @@ def lazily_generate_conditions(): yield self.any_nxp_navq_board yield self.any_walnutpi yield self.any_olimex_lime2_board + yield self.any_repka_board yield self.any_milkv_board return any(condition for condition in lazily_generate_conditions()) diff --git a/adafruit_platformdetect/constants/boards.py b/adafruit_platformdetect/constants/boards.py index c3e5e3ae..10811b29 100644 --- a/adafruit_platformdetect/constants/boards.py +++ b/adafruit_platformdetect/constants/boards.py @@ -563,4 +563,14 @@ _NXP_SOM_IDS = (NXP_IMX8MPLUS_SOM,) +# Repka-Pi boards +REPKA_PI_3_H5 = "REPKA_PI_3_H5" +REPKA_PI_4_H6 = "REPKA_PI_4_H6" + +# Repka-Pi +_REPKA_PI_IDS = ( + REPKA_PI_3_H5, + REPKA_PI_4_H6, +) + _MILKV_IDS_ = (MILKV_DUO,)