]> Repositories - hackapet/Adafruit_Blinka.git/blobdiff - src/adafruit_blinka/microcontroller/rockchip/PWMOut.py
Added support for Radxa Rock 5C
[hackapet/Adafruit_Blinka.git] / src / adafruit_blinka / microcontroller / rockchip / PWMOut.py
index e813967b1374bda6c75351674188112acd7de6b7..e152377d76c542aa11487c260634ceca995e9c56 100644 (file)
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
 """
 Much code from https://github.com/vsergeev/python-periphery/blob/master/periphery/pwm.py
 Copyright (c) 2015-2016 vsergeev / Ivan (Vanya) A. Sergeev
@@ -14,7 +17,7 @@ except ImportError:
     raise RuntimeError("No PWM outputs defined for this board.") from ImportError
 
 
-# pylint: disable=unnecessary-pass
+# pylint: disable=unnecessary-pass, too-many-instance-attributes
 
 
 class PWMError(IOError):
@@ -75,6 +78,7 @@ class PWMOut:
                 self._chip = pwmout[0][0]
                 self._channel = pwmout[0][1]
 
+
         self._chip_path = os.path.join(
             "/sys/class/pwm", self._chip_path.format(self._chip)
         )
@@ -91,7 +95,9 @@ class PWMOut:
         if not os.path.isdir(self._channel_path):
             # Exporting the PWM.
             try:
-                with open(os.path.join(self._chip_path, "export"), "w") as f_export:
+                with open(
+                    os.path.join(self._chip_path, "export"), "w", encoding="utf-8"
+                ) as f_export:
                     f_export.write("{:d}\n".format(self._channel))
             except IOError as e:
                 raise PWMError(
@@ -122,6 +128,7 @@ class PWMOut:
                     with open(
                         os.path.join(self._channel_path, "period"),
                         "w",
+                        encoding="utf-8",
                     ):
                         break
                 except IOError as e:
@@ -136,6 +143,8 @@ class PWMOut:
 
             self.frequency = frequency
             self.duty_cycle = duty_cycle
+            self.polarity = "normal"
+            self.enable()
 
             # Cache the period for fast duty cycle updates
             self._period_ns = self._get_period_ns()
@@ -157,11 +166,15 @@ class PWMOut:
         self._channel = None
 
     def _write_channel_attr(self, attr, value):
-        with open(os.path.join(self._channel_path, attr), "w") as f_attr:
+        with open(
+            os.path.join(self._channel_path, attr), "w", encoding="utf-8"
+        ) as f_attr:
             f_attr.write(value + "\n")
 
     def _read_channel_attr(self, attr):
-        with open(os.path.join(self._channel_path, attr), "r") as f_attr:
+        with open(
+            os.path.join(self._channel_path, attr), "r", encoding="utf-8"
+        ) as f_attr:
             return f_attr.read().strip()
 
     # Methods