Browse Source

Merge branch 'master' of blinkenbunt:gitrepos/blup3

master
Fr3deric 8 years ago committed by Frederic
parent
commit
c7838b0ea9
  1. 26
      wii-pair/daemon.py
  2. 9
      wii-pair/wiiboard.py

26
wii-pair/daemon.py

@ -4,6 +4,7 @@ import os, math, random
import time import time
import socket import socket
import struct import struct
import select
from threading import Thread from threading import Thread
import bluetooth import bluetooth
import wiiboard import wiiboard
@ -169,15 +170,23 @@ s.bind(('', 4711))
s.listen(1) s.listen(1)
try: try:
conns = []
while True: while True:
rlist, wlist, xlist = select.select([s]+conns, [], conns)
if s in rlist:
conn, addr = s.accept() conn, addr = s.accept()
conns.append(conn)
rlist.remove(s)
while True: for sock in xlist:
m = conn.recv(1) conns.remove(sock)
if len(m) == 0: for sock in rlist:
conn.close() try:
break m = sock.recv(1)
except Exception:
conns.remove(sock)
continue
r = b'' r = b''
for w in wiis: for w in wiis:
@ -192,7 +201,12 @@ try:
v = int(round(w.pos_y*100)) v = int(round(w.pos_y*100))
r += struct.pack('b', v) r += struct.pack('b', v)
conn.send(r) try:
sock.send(r)
except Exception:
conns.remove(sock)
continue
except (KeyboardInterrupt, SystemExit): except (KeyboardInterrupt, SystemExit):
t1.stop = True t1.stop = True
t2.stop = True t2.stop = True

9
wii-pair/wiiboard.py

@ -70,9 +70,7 @@ class Wiiboard:
try: try:
self.datasocket = bluetooth.BluetoothSocket(bluetooth.L2CAP) self.datasocket = bluetooth.BluetoothSocket(bluetooth.L2CAP)
self.datasocket.settimeout(2)
self.controlsocket = bluetooth.BluetoothSocket(bluetooth.L2CAP) self.controlsocket = bluetooth.BluetoothSocket(bluetooth.L2CAP)
self.controlsocket.settimeout(2)
except ValueError: except ValueError:
raise Exception("Error: Bluetooth not found") raise Exception("Error: Bluetooth not found")
@ -88,7 +86,9 @@ class Wiiboard:
print("Non existant address") print("Non existant address")
return return
self.datasocket.connect((address, 0x13)) self.datasocket.connect((address, 0x13))
self.datasocket.settimeout(2)
self.controlsocket.connect((address, 0x11)) self.controlsocket.connect((address, 0x11))
self.controlsocket.settimeout(2)
if self.datasocket and self.controlsocket: if self.datasocket and self.controlsocket:
print("Connected to Wiiboard at address " + address) print("Connected to Wiiboard at address " + address)
self.status = "Connected" self.status = "Connected"
@ -181,7 +181,7 @@ class Wiiboard:
# Thread that listens for incoming data # Thread that listens for incoming data
def receivethread(self): def receivethread(self):
while self.status == "Connected": while self.status == "Connected":
if True: try:
data = self.datasocket.recv(25) data = self.datasocket.recv(25)
intype = data[1] intype = data[1]
if intype == INPUT_STATUS: if intype == INPUT_STATUS:
@ -202,6 +202,9 @@ class Wiiboard:
else: else:
print("ACK to data write received") print("ACK to data write received")
except bluetooth.btcommon.BluetoothError:
print('Error! Disconnecting')
self.disconnect()
self.status = "Disconnected" self.status = "Disconnected"
self.disconnect() self.disconnect()

Loading…
Cancel
Save