mirror of
https://github.com/felis/USB_Host_Shield_2.0.git
synced 2024-03-22 11:31:26 +01:00
Write class of device
This is needed in order for some devices to see the dongle
This commit is contained in:
parent
8bc99e9c24
commit
49ade831a7
2 changed files with 38 additions and 16 deletions
23
BTD.cpp
23
BTD.cpp
|
@ -529,8 +529,8 @@ void BTD::HCI_task() {
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
Notify(PSTR("\r\nHCI Reset complete"));
|
Notify(PSTR("\r\nHCI Reset complete"));
|
||||||
#endif
|
#endif
|
||||||
hci_state = HCI_BDADDR_STATE;
|
hci_state = HCI_CLASS_STATE;
|
||||||
hci_read_bdaddr();
|
hci_write_class_of_device();
|
||||||
}
|
}
|
||||||
else if (hci_counter > hci_num_reset_loops) {
|
else if (hci_counter > hci_num_reset_loops) {
|
||||||
hci_num_reset_loops *= 10;
|
hci_num_reset_loops *= 10;
|
||||||
|
@ -544,6 +544,16 @@ void BTD::HCI_task() {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case HCI_CLASS_STATE:
|
||||||
|
if(hci_cmd_complete) {
|
||||||
|
#ifdef DEBUG
|
||||||
|
Notify(PSTR("\r\nWrite class of device"));
|
||||||
|
#endif
|
||||||
|
hci_state = HCI_BDADDR_STATE;
|
||||||
|
hci_read_bdaddr();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case HCI_BDADDR_STATE:
|
case HCI_BDADDR_STATE:
|
||||||
if (hci_read_bdaddr_complete) {
|
if (hci_read_bdaddr_complete) {
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
@ -986,6 +996,15 @@ void BTD::hci_disconnect(uint16_t handle) { // This is called by the different s
|
||||||
|
|
||||||
HCI_Command(hcibuf, 6);
|
HCI_Command(hcibuf, 6);
|
||||||
}
|
}
|
||||||
|
void BTD::hci_write_class_of_device() { // See http://bluetooth-pentest.narod.ru/software/bluetooth_class_of_device-service_generator.html
|
||||||
|
hcibuf[0] = 0x24; // HCI OCF = 3
|
||||||
|
hcibuf[1] = 0x03 << 2; // HCI OGF = 3
|
||||||
|
hcibuf[2] = 0x03; // parameter length = 3
|
||||||
|
hcibuf[3] = 0x04; // Robot
|
||||||
|
hcibuf[4] = 0x08; // Toy
|
||||||
|
hcibuf[5] = 0x00;
|
||||||
|
HCI_Command(hcibuf, 6);
|
||||||
|
}
|
||||||
/*******************************************************************
|
/*******************************************************************
|
||||||
* *
|
* *
|
||||||
* HCI ACL Data Packet *
|
* HCI ACL Data Packet *
|
||||||
|
|
31
BTD.h
31
BTD.h
|
@ -39,22 +39,23 @@
|
||||||
/* Bluetooth HCI states for hci_task() */
|
/* Bluetooth HCI states for hci_task() */
|
||||||
#define HCI_INIT_STATE 0
|
#define HCI_INIT_STATE 0
|
||||||
#define HCI_RESET_STATE 1
|
#define HCI_RESET_STATE 1
|
||||||
#define HCI_BDADDR_STATE 2
|
#define HCI_CLASS_STATE 2
|
||||||
#define HCI_LOCAL_VERSION_STATE 3
|
#define HCI_BDADDR_STATE 3
|
||||||
#define HCI_SET_NAME_STATE 4
|
#define HCI_LOCAL_VERSION_STATE 4
|
||||||
#define HCI_CHECK_WII_SERVICE 5
|
#define HCI_SET_NAME_STATE 5
|
||||||
|
#define HCI_CHECK_WII_SERVICE 6
|
||||||
|
|
||||||
#define HCI_INQUIRY_STATE 6 // These three states are only used if it should pair and connect to a Wii controller
|
#define HCI_INQUIRY_STATE 7 // These three states are only used if it should pair and connect to a Wii controller
|
||||||
#define HCI_CONNECT_WII_STATE 7
|
#define HCI_CONNECT_WII_STATE 8
|
||||||
#define HCI_CONNECTED_WII_STATE 8
|
#define HCI_CONNECTED_WII_STATE 9
|
||||||
|
|
||||||
#define HCI_SCANNING_STATE 9
|
#define HCI_SCANNING_STATE 10
|
||||||
#define HCI_CONNECT_IN_STATE 10
|
#define HCI_CONNECT_IN_STATE 11
|
||||||
#define HCI_REMOTE_NAME_STATE 11
|
#define HCI_REMOTE_NAME_STATE 12
|
||||||
#define HCI_CONNECTED_STATE 12
|
#define HCI_CONNECTED_STATE 13
|
||||||
#define HCI_DISABLE_SCAN_STATE 13
|
#define HCI_DISABLE_SCAN_STATE 14
|
||||||
#define HCI_DONE_STATE 14
|
#define HCI_DONE_STATE 15
|
||||||
#define HCI_DISCONNECT_STATE 15
|
#define HCI_DISCONNECT_STATE 16
|
||||||
|
|
||||||
/* HCI event flags*/
|
/* HCI event flags*/
|
||||||
#define HCI_FLAG_CMD_COMPLETE 0x01
|
#define HCI_FLAG_CMD_COMPLETE 0x01
|
||||||
|
@ -274,6 +275,8 @@ public:
|
||||||
void hci_inquiry_cancel();
|
void hci_inquiry_cancel();
|
||||||
/** Connect to a device. */
|
/** Connect to a device. */
|
||||||
void hci_connect();
|
void hci_connect();
|
||||||
|
/** Used to a set the class of the device. */
|
||||||
|
void hci_write_class_of_device();
|
||||||
/**@}*/
|
/**@}*/
|
||||||
|
|
||||||
/** @name L2CAP Commands */
|
/** @name L2CAP Commands */
|
||||||
|
|
Loading…
Reference in a new issue