mirror of
https://github.com/naruxde/revpimodio2.git
synced 2025-11-08 22:03:53 +01:00
fix: Colors of constants GREEN and RED match LEDs of RevPi Connect 4
The LED colors for the A1-A5 objects of the .core class of the connect 4 did not match the values of the constants for GREEN and RED, as on all other RevPi Devices. In addition, the color BLUE was added.
This commit is contained in:
@@ -8,6 +8,7 @@ __license__ = "LGPLv2"
|
|||||||
OFF = 0
|
OFF = 0
|
||||||
GREEN = 1
|
GREEN = 1
|
||||||
RED = 2
|
RED = 2
|
||||||
|
BLUE = 4
|
||||||
RISING = 31
|
RISING = 31
|
||||||
FALLING = 32
|
FALLING = 32
|
||||||
BOTH = 33
|
BOTH = 33
|
||||||
@@ -53,6 +54,8 @@ def consttostr(value) -> str:
|
|||||||
return "GREEN"
|
return "GREEN"
|
||||||
elif value == 2:
|
elif value == 2:
|
||||||
return "RED"
|
return "RED"
|
||||||
|
elif value == 4:
|
||||||
|
return "BLUE"
|
||||||
elif value == 31:
|
elif value == 31:
|
||||||
return "RISING"
|
return "RISING"
|
||||||
elif value == 32:
|
elif value == 32:
|
||||||
|
|||||||
@@ -1113,6 +1113,19 @@ class Connect4(ModularBase):
|
|||||||
raise AttributeError("direct assignment is not supported - use .value Attribute")
|
raise AttributeError("direct assignment is not supported - use .value Attribute")
|
||||||
super(Connect4, self).__setattr__(key, value)
|
super(Connect4, self).__setattr__(key, value)
|
||||||
|
|
||||||
|
def __led_calculator(self, led_value: int) -> int:
|
||||||
|
"""
|
||||||
|
Calculate the LED value of Connect 4.
|
||||||
|
|
||||||
|
Only the Connect 4 has swapped LED colors red and green. We have to recalculate that
|
||||||
|
values to match our values for GREEN, RED and BLUE.
|
||||||
|
"""
|
||||||
|
led_calculated = led_value & 0b001
|
||||||
|
led_calculated <<= 1
|
||||||
|
led_calculated += bool(led_value & 0b010)
|
||||||
|
led_calculated += led_value & 0b100
|
||||||
|
return led_calculated
|
||||||
|
|
||||||
def _devconfigure(self) -> None:
|
def _devconfigure(self) -> None:
|
||||||
"""Connect4-Klasse vorbereiten."""
|
"""Connect4-Klasse vorbereiten."""
|
||||||
super()._devconfigure()
|
super()._devconfigure()
|
||||||
@@ -1308,52 +1321,52 @@ class Connect4(ModularBase):
|
|||||||
"""
|
"""
|
||||||
Gibt den Zustand der LED A1 vom Connect zurueck.
|
Gibt den Zustand der LED A1 vom Connect zurueck.
|
||||||
|
|
||||||
:return: 0=aus, 1=rot, 2=gruen, 4=blau
|
:return: 0=aus, 1=gruen, 2=root, 4=blau
|
||||||
"""
|
"""
|
||||||
return self._ba_devdata[self._slc_led.start] & 0b00000111
|
return self.__led_calculator(self._ba_devdata[self._slc_led.start] & 0b00000111)
|
||||||
|
|
||||||
def _get_leda2(self) -> int:
|
def _get_leda2(self) -> int:
|
||||||
"""
|
"""
|
||||||
Gibt den Zustand der LED A2 vom Core zurueck.
|
Gibt den Zustand der LED A2 vom Core zurueck.
|
||||||
|
|
||||||
:return: 0=aus, 1=rot, 2=gruen, 4=blau
|
:return: 0=aus, 1=gruen, 2=root, 4=blau
|
||||||
"""
|
"""
|
||||||
return (self._ba_devdata[self._slc_led.start] & 0b00111000) >> 3
|
return self.__led_calculator((self._ba_devdata[self._slc_led.start] & 0b00111000) >> 3)
|
||||||
|
|
||||||
def _get_leda3(self) -> int:
|
def _get_leda3(self) -> int:
|
||||||
"""
|
"""
|
||||||
Gibt den Zustand der LED A3 vom Core zurueck.
|
Gibt den Zustand der LED A3 vom Core zurueck.
|
||||||
|
|
||||||
:return: 0=aus, 1=rot, 2=gruen, 4=blau
|
:return: 0=aus, 1=gruen, 2=root, 4=blau
|
||||||
"""
|
"""
|
||||||
word_led = self._ba_devdata[self._slc_led]
|
word_led = self._ba_devdata[self._slc_led]
|
||||||
return (unpack("<H", word_led)[0] & 0b0000000111000000) >> 6
|
return self.__led_calculator((unpack("<H", word_led)[0] & 0b0000000111000000) >> 6)
|
||||||
|
|
||||||
def _get_leda4(self) -> int:
|
def _get_leda4(self) -> int:
|
||||||
"""
|
"""
|
||||||
Gibt den Zustand der LED A4 vom Core zurueck.
|
Gibt den Zustand der LED A4 vom Core zurueck.
|
||||||
|
|
||||||
:return: 0=aus, 1=rot, 2=gruen, 4=blau
|
:return: 0=aus, 1=gruen, 2=root, 4=blau
|
||||||
"""
|
"""
|
||||||
return (self._ba_devdata[self._slc_led.start + 1] & 0b00001110) >> 1
|
return self.__led_calculator((self._ba_devdata[self._slc_led.start + 1] & 0b00001110) >> 1)
|
||||||
|
|
||||||
def _get_leda5(self) -> int:
|
def _get_leda5(self) -> int:
|
||||||
"""
|
"""
|
||||||
Gibt den Zustand der LED A5 vom Core zurueck.
|
Gibt den Zustand der LED A5 vom Core zurueck.
|
||||||
|
|
||||||
:return: 0=aus, 1=rot, 2=gruen, 4=blau
|
:return: 0=aus, 1=gruen, 2=root, 4=blau
|
||||||
"""
|
"""
|
||||||
return (self._ba_devdata[self._slc_led.start + 1] & 0b01110000) >> 4
|
return self.__led_calculator((self._ba_devdata[self._slc_led.start + 1] & 0b01110000) >> 4)
|
||||||
|
|
||||||
def _set_leda1(self, value: int) -> None:
|
def _set_leda1(self, value: int) -> None:
|
||||||
"""
|
"""
|
||||||
Setzt den Zustand der LED A1 vom Connect.
|
Setzt den Zustand der LED A1 vom Connect.
|
||||||
|
|
||||||
:param: value 0=aus, 1=rot, 2=gruen, 4=blue
|
:param: value 0=aus, 1=gruen, 2=rot, 4=blue
|
||||||
"""
|
"""
|
||||||
if 0 <= value <= 7:
|
if 0 <= value <= 7:
|
||||||
self.a1red(bool(value & 1))
|
self.a1red(bool(value & 2))
|
||||||
self.a1green(bool(value & 2))
|
self.a1green(bool(value & 1))
|
||||||
self.a1blue(bool(value & 4))
|
self.a1blue(bool(value & 4))
|
||||||
else:
|
else:
|
||||||
raise ValueError("led status must be between 0 and 7")
|
raise ValueError("led status must be between 0 and 7")
|
||||||
@@ -1362,11 +1375,11 @@ class Connect4(ModularBase):
|
|||||||
"""
|
"""
|
||||||
Setzt den Zustand der LED A2 vom Connect.
|
Setzt den Zustand der LED A2 vom Connect.
|
||||||
|
|
||||||
:param: value 0=aus, 1=rot, 2=gruen, 4=blue
|
:param: value 0=aus, 1=gruen, 2=rot, 4=blue
|
||||||
"""
|
"""
|
||||||
if 0 <= value <= 7:
|
if 0 <= value <= 7:
|
||||||
self.a2red(bool(value & 1))
|
self.a2red(bool(value & 2))
|
||||||
self.a2green(bool(value & 2))
|
self.a2green(bool(value & 1))
|
||||||
self.a2blue(bool(value & 4))
|
self.a2blue(bool(value & 4))
|
||||||
else:
|
else:
|
||||||
raise ValueError("led status must be between 0 and 7")
|
raise ValueError("led status must be between 0 and 7")
|
||||||
@@ -1375,11 +1388,11 @@ class Connect4(ModularBase):
|
|||||||
"""
|
"""
|
||||||
Setzt den Zustand der LED A3 vom Connect.
|
Setzt den Zustand der LED A3 vom Connect.
|
||||||
|
|
||||||
:param: value 0=aus, 1=rot, 2=gruen, 4=blue
|
:param: value 0=aus, 1=gruen, 2=rot, 4=blue
|
||||||
"""
|
"""
|
||||||
if 0 <= value <= 7:
|
if 0 <= value <= 7:
|
||||||
self.a3red(bool(value & 1))
|
self.a3red(bool(value & 2))
|
||||||
self.a3green(bool(value & 2))
|
self.a3green(bool(value & 1))
|
||||||
self.a3blue(bool(value & 4))
|
self.a3blue(bool(value & 4))
|
||||||
else:
|
else:
|
||||||
raise ValueError("led status must be between 0 and 7")
|
raise ValueError("led status must be between 0 and 7")
|
||||||
@@ -1388,11 +1401,11 @@ class Connect4(ModularBase):
|
|||||||
"""
|
"""
|
||||||
Setzt den Zustand der LED A4 vom Connect.
|
Setzt den Zustand der LED A4 vom Connect.
|
||||||
|
|
||||||
:param: value 0=aus, 1=rot, 2=gruen, 4=blue
|
:param: value 0=aus, 1=gruen, 2=rot, 4=blue
|
||||||
"""
|
"""
|
||||||
if 0 <= value <= 7:
|
if 0 <= value <= 7:
|
||||||
self.a4red(bool(value & 1))
|
self.a4red(bool(value & 2))
|
||||||
self.a4green(bool(value & 2))
|
self.a4green(bool(value & 1))
|
||||||
self.a4blue(bool(value & 4))
|
self.a4blue(bool(value & 4))
|
||||||
else:
|
else:
|
||||||
raise ValueError("led status must be between 0 and 7")
|
raise ValueError("led status must be between 0 and 7")
|
||||||
@@ -1401,11 +1414,11 @@ class Connect4(ModularBase):
|
|||||||
"""
|
"""
|
||||||
Setzt den Zustand der LED A5 vom Connect.
|
Setzt den Zustand der LED A5 vom Connect.
|
||||||
|
|
||||||
:param: value 0=aus, 1=rot, 2=gruen, 4=blue
|
:param: value 0=aus, 1=gruen, 2=rot, 4=blue
|
||||||
"""
|
"""
|
||||||
if 0 <= value <= 7:
|
if 0 <= value <= 7:
|
||||||
self.a5red(bool(value & 1))
|
self.a5red(bool(value & 2))
|
||||||
self.a5green(bool(value & 2))
|
self.a5green(bool(value & 1))
|
||||||
self.a5blue(bool(value & 4))
|
self.a5blue(bool(value & 4))
|
||||||
else:
|
else:
|
||||||
raise ValueError("led status must be between 0 and 7")
|
raise ValueError("led status must be between 0 and 7")
|
||||||
|
|||||||
Reference in New Issue
Block a user