amiro-os / include / amiro / bluetooth / bluetooth-wiimote.hpp @ 27d4e1fa
History | View | Annotate | Download (1.722 KB)
1 | 58fe0e0b | Thomas Schöpping | #ifndef _BLUETOOTH_WIIMOTE_H_
|
---|---|---|---|
2 | #define _BLUETOOTH_WIIMOTE_H_
|
||
3 | |||
4 | #include <amiro/bluetooth/bluetooth-connector.hpp> |
||
5 | |||
6 | #define BLUETOOTH_WIIMOTE_MAILBOX_SIZE 5 |
||
7 | |||
8 | #define WIIMOTE_START_EVENT 1 |
||
9 | #define WIIMOTE_STOP_EVENT 2 |
||
10 | |||
11 | namespace amiro {
|
||
12 | class BluetoothWiimote : public chibios_rt::BaseStaticThread<128> { |
||
13 | public:
|
||
14 | BluetoothWiimote(BLUETOOTH *bluetooth, uint8_t rxtx); |
||
15 | |||
16 | void bluetoothWiimoteStart(uint8_t linkid);
|
||
17 | void bluetoothWiimoteStop();
|
||
18 | bool bluetoothWiimoteIsConnected();
|
||
19 | |||
20 | void bluetoothWiimoteListen(const char *addr); |
||
21 | void bluetoothWiimoteConnect(const char *addr); |
||
22 | void bluetoothWiimoteDisconnect(const char *addr); |
||
23 | |||
24 | msg_t wiimoteTransmit(const uint8_t* wiimotecmd, size_t length);
|
||
25 | void bluetoothWiimoteLedVibrate(uint8_t ledid_flag, uint8_t vibrate_flag);
|
||
26 | void bluetoothWiimoteStatusInfo();
|
||
27 | void bluetoothWiimoteDataBtn();
|
||
28 | void bluetoothWiimoteDataBtnAcc();
|
||
29 | |||
30 | class Accelerometer { |
||
31 | public:
|
||
32 | int16_t x_axis, y_axis, z_axis; |
||
33 | }; |
||
34 | Accelerometer *getAccelerometer(); |
||
35 | |||
36 | 61b0791a | Thomas Schöpping | struct Buttons {
|
37 | uint16_t left : 1;
|
||
38 | uint16_t right : 1;
|
||
39 | uint16_t down : 1;
|
||
40 | uint16_t up : 1;
|
||
41 | uint16_t plus : 1;
|
||
42 | uint16_t two : 1;
|
||
43 | uint16_t one : 1;
|
||
44 | uint16_t B : 1;
|
||
45 | uint16_t A : 1;
|
||
46 | uint16_t minus : 1;
|
||
47 | uint16_t home : 1;
|
||
48 | }; |
||
49 | Buttons* getButtons(); |
||
50 | |||
51 | 58fe0e0b | Thomas Schöpping | protected:
|
52 | virtual msg_t main(void); |
||
53 | |||
54 | private:
|
||
55 | msg_t wiimoteReceive(); |
||
56 | |||
57 | BluetoothConnector wiimoteConn; |
||
58 | uint8_t rx_tx; |
||
59 | |||
60 | chibios_rt::Mailbox mailbox; |
||
61 | msg_t mailboxBuffer[BLUETOOTH_WIIMOTE_MAILBOX_SIZE]; |
||
62 | |||
63 | BluetoothIwrap *iwrap; |
||
64 | uint8_t linkId; |
||
65 | uint8_t stopflag; |
||
66 | |||
67 | Accelerometer accelerometer; |
||
68 | 61b0791a | Thomas Schöpping | Buttons buttons; |
69 | 58fe0e0b | Thomas Schöpping | }; |
70 | } |
||
71 | |||
72 | #endif /* _BLUETOOTH_WIIMOTE_H_ */ |