class HardwareDevices(): _bodyLeds = None _arms = None _neck = None _servoManager = None _servos = None __singleton = None _released = False @staticmethod def singleton(): if (HardwareDevices.__singleton == None): HardwareDevices.__singleton = HardwareDevices() return HardwareDevices.__singleton @property def arms(self): return self._arms @property def neck(self): return self._neck @property def BodyLeds(self): return self._bodyLeds def __init__(self): self._servos = LX16AServos() self._servoManager = SmartServoManager(lX16AServos=self._servos, ramp=0, maxSpeed=1) self._arms = Arms(self._servoManager) self._neck = Neck(self._servoManager) self._servoManager.Start() self._neck.SetLeftRight(0) self._neck.SetUpDown(0) self._bodyLeds = RgbLeds([ my_path + '/../Gfx/Body/hearth2.gif', my_path + '/../../RoobertGifs/e8nZC.gif', my_path + '/../../RoobertGifs/U9LwW86.gif', my_path + '/../../RoobertGifs/Spin_Toad.gif', my_path + '/../../RoobertGifs/haleye.gif', my_path + '/../../RoobertGifs/Yoshi_render.gif' ]) def Release(self): if (self._released == False): self._released = True print("releasing hardware devices") if (self._bodyLeds != None): self._bodyLeds.Release() if (self._arms != None): self._arms.Release() if (self._neck != None): self._neck.Release() if (self._servoManager != None): self._servoManager.Release() if (self._servos != None): self._servos.Release() def __del__(self): self.Release()