#!/usr/bin/python import bluetooth import threading import time import sys import wave from threading import Thread from visual import * wiimote_adress="00:21:BD:01:68:92" receiveSocket = bluetooth.BluetoothSocket(bluetooth.L2CAP) controlSocket = bluetooth.BluetoothSocket(bluetooth.L2CAP) etat = "deconnecte" def connect() : global etat receiveSocket.connect((wiimote_adress, 0x13)) controlSocket.connect((wiimote_adress, 0x11)) if receiveSocket and controlSocket : etat = "connecte" wiiThread = threading.Thread(None, receive, None, (1,), None) wiiThread.start() return True else : print "connexion rejetee" return False def actionsOnButtons(etat, data) : octet1 = ord(data[2]) octet2 = ord(data[3]) if (octet1 & 0x01) == 1 : print "pad gauche" if (octet1 & 0x02) == 2 : print "pad droit" if (octet1 & 0x04) == 4 : print "pad bas" if (octet1 & 0x08) == 8 : print "pad haut" if (octet1 & 0x10) == 0x10 : print "plus" if (octet2 & 0x01) == 1 : print "2" if (octet2 & 0x02) == 2 : print "1" if (octet2 & 0x04) == 4 : print "B : charge level ?" askForChargeLevel() inputReportChannel = 0 while inputReportChannel != chr(0x20) : data = receiveSocket.recv(23) inputReportChannel = data[1] print "battery is charged at : " + str(ord(data[7])*100.0/200) if (octet2 & 0x08) == 8 : print "deconnection" etat = "deconnecte" return etat def actionsOnMode31(etat, mode) : try : print "Push B for batteries level" while etat == "connecte" : data = receiveSocket.recv(23) chaine = "" if len(data) == 4 : etat = actionsOnButtons(etat, data) except bluetooth.BluetoothError, inst : print "bluetooth error" print inst pass receiveSocket.close() controlSocket.close() etat = "deconnecte" return def askForChargeLevel() : controlSocket.send(chr(0x52) + chr(0x15) + chr(0x00)) def receive(nb) : global etat global mode controlSocket.send(chr(0x52) + chr(0x12) + chr(0x00) + chr(0x22)) return actionsOnMode31(etat, mode) mode = 0x30 connect()