watch using the RSSI of Bluetooth
Dependencies: BaseUsbHost ConfigFile EthernetInterface HTTPClient-long mbed-rtos mbed
UsbBt2/UsbBt2.h
- Committer:
- va009039
- Date:
- 2013-01-20
- Revision:
- 0:600fe65e7c88
File content as of revision 0:600fe65e7c88:
// UsbBt2.cpp 2013/1/19 #ifndef USB_BT2_H #define USB_BT2_H #include <stdarg.h> #define HCI_OP_INQUIRY 0x0401 #define HCI_OP_INQUIRY_CANCEL 0x0402 #define HCI_OP_PERIODIC_INQUIRY 0x0403 #define HCI_OP_EXIT_PERIODIC_INQUIRY 0x0404 #define HCI_OP_REMOTE_NAME_REQ 0x0419 #define HCI_OP_RESET 0x0c03 #define HCI_OP_WRITE_LOCAL_NAME 0x0c13 #define HCI_OP_WRITE_SCAN_ENABLE 0x0c1a #define HCI_OP_WRITE_CLASS_OF_DEV 0x0c24 #define HCI_OP_WRITE_INQUIRY_MODE 0x0c45 #define HCI_OP_READ_EXTENDED_INQUIRY_RESPONSE 0x0c51 #define HCI_OP_WRITE_EXTENDED_INQUIRY_RESPONSE 0x0c52 #define HCI_OP_READ_BD_ADDR 0x1009 #define HCI_EV_INQUIRY_COMPLETE 0x01 #define HCI_EV_INQUIRY_RESULT 0x02 #define HCI_EV_REMOTE_NAME 0x07 #define HCI_EV_CMD_COMPLETE 0x0e #define HCI_EV_CMD_STATUS 0x0f #define HCI_EV_INQUIRY_RESULT_WITH_RSSI 0x22 #define HCI_EV_EXTENDED_INQUIRY_RESULT 0x2f #define VERBOSE(...) do{printf(__VA_ARGS__);} while(0); #pragma push #pragma pack(1) struct BD_ADDR { uint8_t addr[6]; void set(char* s) { char* p = s; for(int i = 5; i >= 0; i--) { addr[i] = strtol(p, &p, 16); if (*p == ':') { p++; } } } void str(char* buf, size_t size) { snprintf(buf, size, "%02X:%02X:%02X:%02X:%02X:%02X", addr[5], addr[4], addr[3], addr[2], addr[1], addr[0]); } }; typedef struct { BD_ADDR bdaddr; uint8_t page_scan_repetition_mode; uint8_t reserved[2]; uint8_t dev_class[3]; uint16_t clock_offset; } inquiry_info; typedef struct { BD_ADDR bdaddr; uint8_t page_scan_repetition_mode; uint8_t reserved[1]; uint8_t class_of_device[3]; uint16_t clock_offset; int8_t rssi; } inquiry_with_rssi_info; typedef struct { BD_ADDR bdaddr; uint8_t page_scan_repetition_mode; uint8_t reserved[1]; uint8_t class_of_device[3]; uint16_t clock_offset; int8_t rssi; uint8_t extended_inquiry_response[240]; } extended_inquiry_info; typedef struct { uint8_t evt; uint8_t len; uint8_t status; union { uint16_t op; uint8_t data[]; } c; } hci_event; #pragma pop class bthci { public: bthci(ControlEp* ctlEp = NULL); static bool check(ControlEp* ctlEp); int cmdSend(uint16_t op); int cmdSend(uint16_t op, const char* fmt, ...); int cmdSend(uint16_t op, const uint8_t* data, int size); int eventReceive(uint8_t* buf, int size, int millisec=osWaitForever); int AclSend(uint8_t* buf, int size, int millisec=osWaitForever); int AclReceive(uint8_t* buf, int size, int millisec=osWaitForever); private: int ParseConfiguration(ControlEp* ctlEp); ControlEp* m_ctlEp; InterruptEp* m_pEpIntIn; BulkEp* m_pEpBulkIn; BulkEp* m_pEpBulkOut; uint8_t m_buf[255]; }; #endif //USB_BT2_H