mirror of
https://github.com/felis/USB_Host_Shield_2.0.git
synced 2024-03-22 11:31:26 +01:00
Only use simple pairing with the Xbox One S controller, as it did not work with the PS4
This commit is contained in:
parent
102746ef6b
commit
f500cc9b4c
4 changed files with 19 additions and 8 deletions
11
BTD.cpp
11
BTD.cpp
|
@ -29,6 +29,7 @@ connectToWii(false),
|
|||
pairWithWii(false),
|
||||
connectToHIDDevice(false),
|
||||
pairWithHIDDevice(false),
|
||||
useSimplePairing(false),
|
||||
pUsb(p), // Pointer to USB class instance - mandatory
|
||||
bAddress(0), // Device address - mandatory
|
||||
bNumEP(1), // If config descriptor needs to be parsed
|
||||
|
@ -658,7 +659,7 @@ void BTD::HCI_event_task() {
|
|||
#endif
|
||||
connectToHIDDevice = true; // Used to indicate to the BTHID service, that it should connect to this device
|
||||
} else {
|
||||
#ifdef DEBUG_USB_HOST
|
||||
#ifdef EXTRADEBUG
|
||||
Notify(PSTR("\r\nPairing was successful"), 0x80);
|
||||
#endif
|
||||
}
|
||||
|
@ -823,11 +824,12 @@ void BTD::HCI_task() {
|
|||
if(btdName != NULL) {
|
||||
hci_write_local_name(btdName);
|
||||
hci_state = HCI_WRITE_NAME_STATE;
|
||||
} else {
|
||||
} else if(useSimplePairing) {
|
||||
hci_read_local_extended_features(0); // "Requests the normal LMP features as returned by Read_Local_Supported_Features"
|
||||
//hci_read_local_extended_features(1); // Read page 1
|
||||
hci_state = HCI_LOCAL_EXTENDED_FEATURES_STATE;
|
||||
}
|
||||
} else
|
||||
hci_state = HCI_CHECK_DEVICE_SERVICE;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -837,9 +839,12 @@ void BTD::HCI_task() {
|
|||
Notify(PSTR("\r\nThe name was set to: "), 0x80);
|
||||
NotifyStr(btdName, 0x80);
|
||||
#endif
|
||||
if(useSimplePairing) {
|
||||
hci_read_local_extended_features(0); // "Requests the normal LMP features as returned by Read_Local_Supported_Features"
|
||||
//hci_read_local_extended_features(1); // Read page 1
|
||||
hci_state = HCI_LOCAL_EXTENDED_FEATURES_STATE;
|
||||
} else
|
||||
hci_state = HCI_CHECK_DEVICE_SERVICE;
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
3
BTD.h
3
BTD.h
|
@ -530,6 +530,9 @@ public:
|
|||
return pollInterval;
|
||||
};
|
||||
|
||||
/** Used by the drivers to enable simple pairing */
|
||||
bool useSimplePairing;
|
||||
|
||||
protected:
|
||||
/** Pointer to USB class instance. */
|
||||
USB *pUsb;
|
||||
|
|
|
@ -258,8 +258,9 @@ void BTHID::ACLData(uint8_t* l2capinbuf) {
|
|||
#endif
|
||||
} else if(l2capinbuf[6] == sdp_dcid[0] && l2capinbuf[7] == sdp_dcid[1]) { // SDP
|
||||
if(l2capinbuf[8] == SDP_SERVICE_SEARCH_REQUEST) {
|
||||
#ifdef EXTRADEBUG
|
||||
Notify(PSTR("\r\nSDP_SERVICE_SEARCH_REQUEST"), 0x80);
|
||||
|
||||
#endif
|
||||
// Send response
|
||||
l2capoutbuf[0] = SDP_SERVICE_SEARCH_RESPONSE;
|
||||
l2capoutbuf[1] = l2capinbuf[9];//transactionIDHigh;
|
||||
|
@ -278,8 +279,9 @@ void BTHID::ACLData(uint8_t* l2capinbuf) {
|
|||
|
||||
SDP_Command(l2capoutbuf, 10);
|
||||
} else if(l2capinbuf[8] == SDP_SERVICE_ATTRIBUTE_REQUEST) {
|
||||
#ifdef EXTRADEBUG
|
||||
Notify(PSTR("\r\nSDP_SERVICE_ATTRIBUTE_REQUEST"), 0x80);
|
||||
|
||||
#endif
|
||||
// Send response
|
||||
l2capoutbuf[0] = SDP_SERVICE_ATTRIBUTE_RESPONSE;
|
||||
l2capoutbuf[1] = l2capinbuf[9];//transactionIDHigh;
|
||||
|
|
|
@ -35,6 +35,7 @@ public:
|
|||
XBOXONESBT(BTD *p, bool pair = false) :
|
||||
BTHID(p, pair) {
|
||||
XBOXONESParser::Reset();
|
||||
pBtd->useSimplePairing = true; // The Xbox One S controller only works via simple pairing
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue