Example #1
0
    def update(self):
        # sdl2.SDL_PumpEvents() # Pump, retreive events so they clear
        sdl2.SDL_JoystickUpdate()

        # Read all the joystick values
        axisScale = 1 / 2**15
        self.axis = [
            sdl2.SDL_JoystickGetAxis(self.joy, i)
            for i in range(sdl2.SDL_JoystickNumAxes(self.joy))
        ]
        self.button = [
            sdl2.SDL_JoystickGetButton(self.joy, i)
            for i in range(sdl2.SDL_JoystickNumButtons(self.joy))
        ]

        self.roll = axisScale * self.axis[0]
        self.pitch = axisScale * self.axis[1]
        self.throttle = axisScale * self.axis[2]
        self.yaw = axisScale * self.axis[3]

        self.flap = 0.0

        self.autoEngage = 2 * self.button[0] - 1  # "Soc-Engage-Switch"
        self.testMode = axisScale * self.axis[4]  # "Test-Mode-Switch"
        self.testSel = axisScale * self.axis[5]  # "Test-Select-Switch"
        self.trig = 2 * self.button[1] - 1  # "Trigger-Switch"
        self.thrSafe = 2 * self.button[2] - 1  # "Throttle-Safety-Switch"

        self.baseSel = axisScale * self.axis[
            -1]  # "Baseline-Select-Switch" (On Windows it came up as 6, on Linux 7...)
Example #2
0
    def update(self):
        sdl2.SDL_JoystickUpdate()

        button_array = (
            self.a, self.b, self.x, self.y,
            self.left_bumper, self.right_bumper,
            self.start_button, self.select_button, self.center_button,
            self.left_stick_button, self.right_stick_button)

        axis_array = self._axises()

        for event in sdl2.ext.get_events():
            if event.type == sdl2.SDL_JOYBUTTONUP:
                button_array[event.jbutton.button].process_event(
                    ButtonEvent(event.jbutton.timestamp, False))
            elif event.type == sdl2.SDL_JOYBUTTONDOWN:
                button_array[event.jbutton.button].process_event(
                    ButtonEvent(event.jbutton.timestamp, True))
            elif event.type == sdl2.SDL_JOYAXISMOTION:
                axis_array[event.jaxis.axis].process_event(
                    AxisEvent(event.jaxis.timestamp, event.jaxis.value))
            elif event.type == sdl2.SDL_JOYHATMOTION:
                self.hat.process_event(HatEvent(event.jhat.timestamp, event.jhat.value))
Example #3
0
            "Buttons": buttons,
            "Hats": hats,
            "Obj": joy,
        }
        joysticks.append(joystick)

joysticksSorted = sorted(joysticks, key=lambda k: k["Win ID"])

# Resolve the Sticks (Press Left Trigger)
print "\n-- RESOLVING THE STICKS --"
testRunning = True
print " > Press the LEFT Trigger"
while testRunning:
    for joystick in joysticksSorted:
        if joystick["Name"] == "T.16000M":
            sdl2.SDL_JoystickUpdate()
            if sdl2.SDL_JoystickGetButton(joystick["Obj"], 0):
                print " Left Stick has Win ID: " + str(joystick["Win ID"])
                joystick["Res Name"] = "Left Stick"
                for otherJoystick in joysticksSorted:
                    if otherJoystick["Name"] == "T.16000M" and otherJoystick[
                            "Res Name"] == None:
                        otherJoystick["Res Name"] = "Right Stick"
                        print " Right Stick has Win ID: " + str(
                            otherJoystick["Win ID"])
                testRunning = False

# Label the Control Panel
print "\n-- RESOLVING CONTROL PANEL --"
for joystick in joysticksSorted:
    if joystick["Name"] == "Arduino Leonardo":
Example #4
0
    def get(self):
        if not self.valid:
            return None

        js = self.js

        sdl2.SDL_JoystickUpdate()

        share = sdl2.SDL_JoystickGetButton(js, 8)
        if share:
            exit(0)

        ls = Axis(sdl2.SDL_JoystickGetAxis(js, 0),
                  sdl2.SDL_JoystickGetAxis(js, 1))

        rs = Axis(sdl2.SDL_JoystickGetAxis(js, 2),
                  sdl2.SDL_JoystickGetAxis(js, 5))

        triggers = Trigger(sdl2.SDL_JoystickGetAxis(js, 3),
                           sdl2.SDL_JoystickGetAxis(js, 4))

        shoulder = [
            sdl2.SDL_JoystickGetButton(js, 4),
            sdl2.SDL_JoystickGetButton(js, 5)
        ]

        stick = [
            sdl2.SDL_JoystickGetButton(js, 10),
            sdl2.SDL_JoystickGetButton(js, 11)
        ]

        # I seem to have lost sensors
        # a = Sensors(
        # 	sdl2.SDL_JoystickGetAxis(js, 6),
        # 	sdl2.SDL_JoystickGetAxis(js, 7),
        # 	sdl2.SDL_JoystickGetAxis(js, 8)
        # )
        #
        # g = Sensors(
        # 	sdl2.SDL_JoystickGetAxis(js, 9),
        # 	sdl2.SDL_JoystickGetAxis(js, 10),
        # 	sdl2.SDL_JoystickGetAxis(js, 11)
        # )

        b = [
            sdl2.SDL_JoystickGetButton(js, 0),  # square
            sdl2.SDL_JoystickGetButton(js, 3),  # triangle
            sdl2.SDL_JoystickGetButton(js, 2),  # circle
            sdl2.SDL_JoystickGetButton(js, 1)  # x
        ]

        hat = sdl2.SDL_JoystickGetHat(js, 0)
        share = sdl2.SDL_JoystickGetButton(js, 8)
        options = sdl2.SDL_JoystickGetButton(js, 9)

        ps4 = PS4(ls, rs, triggers, hat, shoulder, stick, b, options, share)

        # left axis
        # x = sdl2.SDL_JoystickGetAxis(js, 0) / 32768
        # y = sdl2.SDL_JoystickGetAxis(js, 1) / 32768
        # ps4['leftStick'] = [x, y]
        #
        # # right axis
        # x = sdl2.SDL_JoystickGetAxis(js, 2) / 32768
        # y = sdl2.SDL_JoystickGetAxis(js, 5) / 32768
        # ps4['rightStick'] = [x, y]

        # # other axes
        # ps4.axes.L2 = sdl2.SDL_JoystickGetAxis(js, 3) / 32768
        # ps4.axes.R2 = sdl2.SDL_JoystickGetAxis(js, 4) / 32768
        #
        # # accels
        # x = sdl2.SDL_JoystickGetAxis(js, 6) / 32768
        # y = sdl2.SDL_JoystickGetAxis(js, 7) / 32768
        # z = sdl2.SDL_JoystickGetAxis(js, 8) / 32768
        # ps4.axes.accels = [x, y, z]
        #
        # # gyros
        # x = sdl2.SDL_JoystickGetAxis(js, 9) / 32768
        # y = sdl2.SDL_JoystickGetAxis(js, 10) / 32768
        # z = sdl2.SDL_JoystickGetAxis(js, 11) / 32768
        # ps4.axes.gyros = [x, y, z]
        #
        # # get buttons
        # ps4.buttons.s = sdl2.SDL_JoystickGetButton(js, 0)
        # ps4.buttons.x = sdl2.SDL_JoystickGetButton(js, 1)
        # ps4.buttons.o = sdl2.SDL_JoystickGetButton(js, 2)
        # ps4.buttons.t = sdl2.SDL_JoystickGetButton(js, 3)
        # ps4.buttons.L1 = sdl2.SDL_JoystickGetButton(js, 4)
        # ps4.buttons.R1 = sdl2.SDL_JoystickGetButton(js, 5)
        # ps4.buttons.L2 = sdl2.SDL_JoystickGetButton(js, 6)
        # ps4.buttons.R2 = sdl2.SDL_JoystickGetButton(js, 7)
        # ps4.buttons.share = sdl2.SDL_JoystickGetButton(js, 8)
        # ps4.buttons.options = sdl2.SDL_JoystickGetButton(js, 9)
        # ps4.buttons.L3 = sdl2.SDL_JoystickGetButton(js, 10)
        # ps4.buttons.R3 = sdl2.SDL_JoystickGetButton(js, 11)
        # ps4.buttons.ps = sdl2.SDL_JoystickGetButton(js, 12)
        # ps4.buttons.pad = sdl2.SDL_JoystickGetButton(js, 13)
        #
        # # get hat
        # # [up right down left] = [1 2 4 8]
        # ps4.buttons.hat = sdl2.SDL_JoystickGetHat(js, 0)

        # print('b 12', sdl2.SDL_JoystickGetButton(js, 12))
        # print('b 13', sdl2.SDL_JoystickGetButton(js, 13))

        return ps4
Example #5
0
    def read(self, verbose=False):
        js = self.js
        dt = self.sleep
        ps4 = Msg.Joystick()
        twist = Msg.Twist()

        try:
            sdl2.SDL_JoystickUpdate()

            # left axis
            x = sdl2.SDL_JoystickGetAxis(js, 0) / 32768
            y = sdl2.SDL_JoystickGetAxis(js, 1) / 32768
            ps4.axes.leftStick = [x, y]

            # right axis
            x = sdl2.SDL_JoystickGetAxis(js, 2) / 32768
            y = sdl2.SDL_JoystickGetAxis(js, 5) / 32768
            ps4.axes.rightStick = [x, y]

            # other axes
            ps4.axes.L2 = sdl2.SDL_JoystickGetAxis(js, 3) / 32768
            ps4.axes.R2 = sdl2.SDL_JoystickGetAxis(js, 4) / 32768

            # accels
            x = sdl2.SDL_JoystickGetAxis(js, 6) / 32768
            y = sdl2.SDL_JoystickGetAxis(js, 7) / 32768
            z = sdl2.SDL_JoystickGetAxis(js, 8) / 32768
            ps4.axes.accels = [x, y, z]

            # gyros
            x = sdl2.SDL_JoystickGetAxis(js, 9) / 32768
            y = sdl2.SDL_JoystickGetAxis(js, 10) / 32768
            z = sdl2.SDL_JoystickGetAxis(js, 11) / 32768
            ps4.axes.gyros = [x, y, z]

            # get buttons
            ps4.buttons.s = sdl2.SDL_JoystickGetButton(js, 0)
            ps4.buttons.x = sdl2.SDL_JoystickGetButton(js, 1)
            ps4.buttons.o = sdl2.SDL_JoystickGetButton(js, 2)
            ps4.buttons.t = sdl2.SDL_JoystickGetButton(js, 3)
            ps4.buttons.L1 = sdl2.SDL_JoystickGetButton(js, 4)
            ps4.buttons.R1 = sdl2.SDL_JoystickGetButton(js, 5)
            ps4.buttons.L2 = sdl2.SDL_JoystickGetButton(js, 6)
            ps4.buttons.R2 = sdl2.SDL_JoystickGetButton(js, 7)
            ps4.buttons.share = sdl2.SDL_JoystickGetButton(js, 8)
            ps4.buttons.options = sdl2.SDL_JoystickGetButton(js, 9)
            ps4.buttons.L3 = sdl2.SDL_JoystickGetButton(js, 10)
            ps4.buttons.R3 = sdl2.SDL_JoystickGetButton(js, 11)
            ps4.buttons.ps = sdl2.SDL_JoystickGetButton(js, 12)
            ps4.buttons.pad = sdl2.SDL_JoystickGetButton(js, 13)

            # get hat
            # [up right down left] = [1 2 4 8]
            ps4.buttons.hat = sdl2.SDL_JoystickGetHat(js, 0)

            # print('b 12', sdl2.SDL_JoystickGetButton(js, 12))
            # print('b 13', sdl2.SDL_JoystickGetButton(js, 13))

            #self.pub.pub('js', ps4)

            x, y = ps4.axes.rightStick
            twist.linear.set(x, y, 0)
            x, y = ps4.axes.leftStick
            twist.angular.set(x, y, 0)

            # verbose = True
            if verbose:
                print(twist)

            if (self.old_twist.angular
                    == twist.angular) and (self.old_twist.linear
                                           == twist.linear):
                # print('js no msg')
                pass
            else:
                self.pub.pub(self.topic, twist)
                self.old_twist = twist
                # print('js message sent')

            time.sleep(dt)

        except (IOError, EOFError):
            print('[-] Connection gone .... bye')
Example #6
0
	def run(self, verbose, rate):
		js = self.js
		dt = 1.0/rate
		ps4 = Msg.Joystick()

		while True:
			try:
				sdl2.SDL_JoystickUpdate()

				# left axis
				x = sdl2.SDL_JoystickGetAxis(js, 0) / 32768
				y = sdl2.SDL_JoystickGetAxis(js, 1) / 32768
				ps4.axes.leftStick = [x, y]

				# right axis
				x = sdl2.SDL_JoystickGetAxis(js, 2) / 32768
				y = sdl2.SDL_JoystickGetAxis(js, 5) / 32768
				ps4.axes.rightStick = [x, y]

				# other axes
				ps4.axes.L2 = sdl2.SDL_JoystickGetAxis(js, 3) / 32768
				ps4.axes.R2 = sdl2.SDL_JoystickGetAxis(js, 4) / 32768

				# accels
				x = sdl2.SDL_JoystickGetAxis(js, 6) / 32768
				y = sdl2.SDL_JoystickGetAxis(js, 7) / 32768
				z = sdl2.SDL_JoystickGetAxis(js, 8) / 32768
				ps4.axes.accels = [x, y, z]

				# gyros
				x = sdl2.SDL_JoystickGetAxis(js, 9) / 32768
				y = sdl2.SDL_JoystickGetAxis(js, 10) / 32768
				z = sdl2.SDL_JoystickGetAxis(js, 11) / 32768
				ps4.axes.gyros = [x, y, z]

				# get buttons
				ps4.buttons.s = sdl2.SDL_JoystickGetButton(js, 0)
				ps4.buttons.x = sdl2.SDL_JoystickGetButton(js, 1)
				ps4.buttons.o = sdl2.SDL_JoystickGetButton(js, 2)
				ps4.buttons.t = sdl2.SDL_JoystickGetButton(js, 3)
				ps4.buttons.L1 = sdl2.SDL_JoystickGetButton(js, 4)
				ps4.buttons.R1 = sdl2.SDL_JoystickGetButton(js, 5)
				ps4.buttons.L2 = sdl2.SDL_JoystickGetButton(js, 6)
				ps4.buttons.R2 = sdl2.SDL_JoystickGetButton(js, 7)
				ps4.buttons.share = sdl2.SDL_JoystickGetButton(js, 8)
				ps4.buttons.options = sdl2.SDL_JoystickGetButton(js, 9)
				ps4.buttons.L3 = sdl2.SDL_JoystickGetButton(js, 10)
				ps4.buttons.R3 = sdl2.SDL_JoystickGetButton(js, 11)
				ps4.buttons.ps = sdl2.SDL_JoystickGetButton(js, 12)
				ps4.buttons.pad = sdl2.SDL_JoystickGetButton(js, 13)

				# get hat
				# [up right down left] = [1 2 4 8]
				ps4.buttons.hat = sdl2.SDL_JoystickGetHat(js, 0)

				# print('b 12', sdl2.SDL_JoystickGetButton(js, 12))
				# print('b 13', sdl2.SDL_JoystickGetButton(js, 13))

				if verbose: print(Msg.Joystick.screen(ps4))

				self.pub.pub('js', ps4)
				time.sleep(dt)

			except (IOError, EOFError):
				print('[-] Connection gone .... bye')
				break
			# except Exception as e:
			# 	print('Ooops:', e)
			# else:
			# 	raise Exception('Joystick: Something bad happened!')

		# clean-up
		sdl2.SDL_JoystickClose(js)
		print('Bye ...')
Example #7
0
    def get(self):
        ps4 = self.ps4
        js = self.js

        sdl2.SDL_JoystickUpdate()

        # left axis
        x = sdl2.SDL_JoystickGetAxis(js, 0) / 32768
        y = sdl2.SDL_JoystickGetAxis(js, 1) / 32768
        ps4['leftStick'] = [-x, -y]

        # right axis
        x = sdl2.SDL_JoystickGetAxis(js, 2) / 32768
        y = sdl2.SDL_JoystickGetAxis(js, 5) / 32768
        ps4['rightStick'] = [-x, -y]

        # # other axes
        # ps4.axes.L2 = sdl2.SDL_JoystickGetAxis(js, 3) / 32768
        # ps4.axes.R2 = sdl2.SDL_JoystickGetAxis(js, 4) / 32768
        #
        # # accels
        # x = sdl2.SDL_JoystickGetAxis(js, 6) / 32768
        # y = sdl2.SDL_JoystickGetAxis(js, 7) / 32768
        # z = sdl2.SDL_JoystickGetAxis(js, 8) / 32768
        # ps4.axes.accels = [x, y, z]
        #
        # # gyros
        # x = sdl2.SDL_JoystickGetAxis(js, 9) / 32768
        # y = sdl2.SDL_JoystickGetAxis(js, 10) / 32768
        # z = sdl2.SDL_JoystickGetAxis(js, 11) / 32768
        # ps4.axes.gyros = [x, y, z]
        #
        # # get buttons
        # ps4.buttons.s = sdl2.SDL_JoystickGetButton(js, 0)
        # ps4.buttons.x = sdl2.SDL_JoystickGetButton(js, 1)
        # ps4.buttons.o = sdl2.SDL_JoystickGetButton(js, 2)
        # ps4.buttons.t = sdl2.SDL_JoystickGetButton(js, 3)
        # ps4.buttons.L1 = sdl2.SDL_JoystickGetButton(js, 4)
        # ps4.buttons.R1 = sdl2.SDL_JoystickGetButton(js, 5)
        # ps4.buttons.L2 = sdl2.SDL_JoystickGetButton(js, 6)
        # ps4.buttons.R2 = sdl2.SDL_JoystickGetButton(js, 7)
        # ps4.buttons.share = sdl2.SDL_JoystickGetButton(js, 8)
        # ps4.buttons.options = sdl2.SDL_JoystickGetButton(js, 9)
        # ps4.buttons.L3 = sdl2.SDL_JoystickGetButton(js, 10)
        # ps4.buttons.R3 = sdl2.SDL_JoystickGetButton(js, 11)
        # ps4.buttons.ps = sdl2.SDL_JoystickGetButton(js, 12)
        # ps4.buttons.pad = sdl2.SDL_JoystickGetButton(js, 13)
        #
        # # get hat
        # # [up right down left] = [1 2 4 8]
        # ps4.buttons.hat = sdl2.SDL_JoystickGetHat(js, 0)

        # print('b 12', sdl2.SDL_JoystickGetButton(js, 12))
        # print('b 13', sdl2.SDL_JoystickGetButton(js, 13))

        # if verbose:  # print(Msg.Joystick.screen(ps4))
        # 	print(ps4.axes.accels)

        # except (IOError, EOFError):
        # 	print('[-] Connection gone .... bye')
        # 	break
        #
        # except (KeyboardInterrupt, SystemExit):
        # 	print('js bye ...')
        # 	break
        # except Exception as e:
        # 	print('Ooops:', e)
        # else:
        # 	raise Exception('Joystick: Something bad happened!')
        return ps4
Example #8
0
 def update(self):
     sdl2.SDL_JoystickUpdate()
Example #9
0
    def read_axis(self, axis, smoothing):
        sdl2.SDL_JoystickUpdate()

        return sdl2.SDL_JoystickGetAxis(self.joy, axis) / smoothing
Example #10
0
File: js.py Project: DFEC-R2D2/r2d2
    def get(self):
        if not self.valid:
            return None

        js = self.js

        sdl2.SDL_JoystickUpdate()

        ls = Axis(sdl2.SDL_JoystickGetAxis(js, 0),
                  sdl2.SDL_JoystickGetAxis(js, 1))

        rs = Axis(
            sdl2.SDL_JoystickGetAxis(js, 3),  # 2
            sdl2.SDL_JoystickGetAxis(js, 4)  # 5
        )

        triggers = Trigger(
            sdl2.SDL_JoystickGetAxis(js, 2),  # 3
            sdl2.SDL_JoystickGetAxis(js, 5)  # 4
        )

        # shoulder = [
        # 	sdl2.SDL_JoystickGetButton(js, 4),
        # 	sdl2.SDL_JoystickGetButton(js, 5)
        # ]

        # stick = [
        # 	sdl2.SDL_JoystickGetButton(js, 10),
        # 	sdl2.SDL_JoystickGetButton(js, 11)
        # ]

        b = (
            sdl2.SDL_JoystickGetButton(js, 0),  # square
            sdl2.SDL_JoystickGetButton(js, 3),  # triangle
            sdl2.SDL_JoystickGetButton(js, 2),  # circle
            sdl2.SDL_JoystickGetButton(js, 1)  # x
        )

        # print("6", sdl2.SDL_JoystickGetButton(js, 6))  # left trigger T/F
        # print("7", sdl2.SDL_JoystickGetButton(js, 7))  # right trigger T/F
        # for n in [10,11,12]:
        # 	print(n, sdl2.SDL_JoystickGetButton(js, n))
        #
        # b_triggers = (
        # 	sdl2.SDL_JoystickGetButton(js, 6)),
        # 	sdl2.SDL_JoystickGetButton(js, 7)),
        # )

        ps = sdl2.SDL_JoystickGetButton(js, 10)

        lb = (
            sdl2.SDL_JoystickGetButton(js, 4),  # L1
            sdl2.SDL_JoystickGetButton(js, 6),  # L2
            sdl2.SDL_JoystickGetButton(js, 11)  # L3
        )

        rb = (
            sdl2.SDL_JoystickGetButton(js, 5),  # R1
            sdl2.SDL_JoystickGetButton(js, 7),  # R2
            sdl2.SDL_JoystickGetButton(js, 12)  # R3
        )

        hat = sdl2.SDL_JoystickGetHat(js, 0)
        share = sdl2.SDL_JoystickGetButton(js, 8)
        option = sdl2.SDL_JoystickGetButton(js, 9)

        # 'leftStick rightStick triggers leftButtons rightButtons hat buttons option share ps'
        ps4 = PS4(ls, rs, triggers, lb, rb, hat, b, option, share, ps)
        return ps4