Example #1
0
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()