mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-29 04:20:20 +00:00
try pairing using remote device address, use correct output reports, send output reports over interrupt channel
This commit is contained in:
parent
17f7cc985a
commit
b72943e7dd
@ -150,19 +150,37 @@ static float addToHistory(int history[histSize], int value){
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case HCI_EVENT_PACKET:
|
case HCI_EVENT_PACKET:
|
||||||
|
|
||||||
switch (packet[0]){
|
switch (packet[0]){
|
||||||
|
|
||||||
|
case HCI_EVENT_COMMAND_COMPLETE:
|
||||||
|
if ( COMMAND_COMPLETE_EVENT(packet, hci_write_authentication_enable) ) {
|
||||||
|
// connect to device
|
||||||
|
bt_send_cmd(&l2cap_create_channel, [device address], PSM_HID_CONTROL);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case HCI_EVENT_PIN_CODE_REQUEST:
|
||||||
|
bt_flip_addr(event_addr, &packet[2]);
|
||||||
|
if (BD_ADDR_CMP([device address], event_addr)) break;
|
||||||
|
|
||||||
|
// inform about pin code request
|
||||||
|
NSLog(@"HCI_EVENT_PIN_CODE_REQUEST\n");
|
||||||
|
bt_send_cmd(&hci_pin_code_request_reply, event_addr, 6, &packet[2]); // use inverse bd_addr as PIN
|
||||||
|
break;
|
||||||
|
|
||||||
case L2CAP_EVENT_CHANNEL_OPENED:
|
case L2CAP_EVENT_CHANNEL_OPENED:
|
||||||
if (packet[2] == 0) {
|
if (packet[2] == 0) {
|
||||||
// inform about new l2cap connection
|
// inform about new l2cap connection
|
||||||
bt_flip_addr(event_addr, &packet[3]);
|
bt_flip_addr(event_addr, &packet[3]);
|
||||||
uint16_t psm = READ_BT_16(packet, 11);
|
uint16_t psm = READ_BT_16(packet, 11);
|
||||||
uint16_t source_cid = READ_BT_16(packet, 13);
|
uint16_t source_cid = READ_BT_16(packet, 13);
|
||||||
|
uint16_t dest_cid = READ_BT_16(packet, 15);
|
||||||
wiiMoteConHandle = READ_BT_16(packet, 9);
|
wiiMoteConHandle = READ_BT_16(packet, 9);
|
||||||
NSLog(@"Channel successfully opened: handle 0x%02x, psm 0x%02x, source cid 0x%02x, dest cid 0x%02x",
|
NSLog(@"Channel successfully opened: handle 0x%02x, psm 0x%02x, source cid 0x%02x, dest cid 0x%02x",
|
||||||
wiiMoteConHandle, psm, source_cid, READ_BT_16(packet, 15));
|
wiiMoteConHandle, psm, source_cid, dest_cid);
|
||||||
if (psm == PSM_HID_CONTROL) {
|
if (psm == PSM_HID_CONTROL) {
|
||||||
// control channel openedn succesfully, now open interrupt channel, too.
|
// control channel openedn succesfully, now open interrupt channel, too.
|
||||||
hidControl = source_cid;
|
hidControl = source_cid;
|
||||||
@ -170,11 +188,10 @@ static float addToHistory(int history[histSize], int value){
|
|||||||
} else {
|
} else {
|
||||||
// request acceleration data..
|
// request acceleration data..
|
||||||
hidInterrupt = source_cid;
|
hidInterrupt = source_cid;
|
||||||
uint8_t setMode31[] = { 0x52, 0x12, 0x00, 0x31 };
|
uint8_t setMode31[] = { 0xa2, 0x12, 0x00, 0x31 };
|
||||||
bt_send_l2cap( hidControl, setMode31, sizeof(setMode31));
|
bt_send_l2cap( hidInterrupt, setMode31, sizeof(setMode31));
|
||||||
uint8_t setLEDs[] = { 0x52, 0x11, 0x10 };
|
uint8_t setLEDs[] = { 0xa2, 0x11, 0x10 };
|
||||||
bt_send_l2cap( hidControl, setLEDs, sizeof(setLEDs));
|
bt_send_l2cap( hidInterrupt, setLEDs, sizeof(setLEDs));
|
||||||
|
|
||||||
// start demo
|
// start demo
|
||||||
[self startDemo];
|
[self startDemo];
|
||||||
}
|
}
|
||||||
@ -253,8 +270,7 @@ static float addToHistory(int history[histSize], int value){
|
|||||||
|
|
||||||
-(void) discoveryStoppedBTstackManager:(BTstackManager*) manager {
|
-(void) discoveryStoppedBTstackManager:(BTstackManager*) manager {
|
||||||
NSLog(@"discoveryStopped!");
|
NSLog(@"discoveryStopped!");
|
||||||
// connect to device
|
bt_send_cmd(&hci_write_authentication_enable, 0);
|
||||||
bt_send_cmd(&l2cap_create_channel, [device address], PSM_HID_CONTROL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)dealloc {
|
- (void)dealloc {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user