I'm trying to write a basic wrapper gpio class that will handle read and write to gpio pins in a nvidia jetson, using linux sysfs interface, with python. I want to keep /sys/class/gpio/gpioXXX/value
open as a file to avoid repeating file open/close using with open(...) as f
approach. The reason for my approach is that I will keep changing the value in my process (to toggle a LED on-off) regularly. I'm thinking of closing it once the wrapper class gets deleted. The thing is that I know that opening files without close counterparts can cause resources leaks and that makes me anxious.
class GPIOWrapper:
def __init__(self):
self.fd = open("/sys/class/gpio/gpioXXX/valu","w+")
def set(self,val):
self.fd.write(str(val)): # 0 or 1
self.fd.flush()
def read(self):
return self.fd.read()
def __del__(self):
self.fd.close()
What I'm asking is if the above approach valid? Or is it risky and I should stick with:
class GPIOWrapper:
def set(self,val):
with open("/sys/class/gpio/gpioXXX/value","w")) as fd:
fd.write(str(val)): # 0 or 1
Furthermore, can there be side effects of keeping a file descriptor open to gpio pins indefinitely? I can't think of any but I'm new to programming peripherals. My aim is to keep this class general for any device that could use gpio in future (not just LEDs).
Thank you for your attention and help.
source https://stackoverflow.com/questions/69397609/can-sysfs-gpio-descriptors-stay-open-as-long-as-wrapper-class-lives
Comments
Post a Comment