Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //added by xerpi
- #define HCI_LINK_KEY_REQUEST 0x17
- #define HCI_LINK_KEY_REQ_REP 0x0B
- #define HCI_LINK_KEY_REQ_REP_NEGATIVE 0x0C
- #define HCI_LINK_KEY_REQ_REP_PLEN 26 //25: BD add6, lk 16
- #define HCI_LINK_KEY_REQ_REP_NEGATIVE_PLEN 10 //9: BD add6
- //event code
- #define HCI_LINK_KEY_AUTH_COMPLETE 0x06
- err_t hci_link_key_req_reply(struct bd_addr *bdaddr, unsigned char *link_key)
- {
- struct pbuf *p;
- if ((p = btpbuf_alloc(PBUF_RAW, HCI_LINK_KEY_REQ_REP_PLEN, PBUF_RAM)) == NULL) {
- ERROR("hci_link_key_req_reply: Could not allocate memory for pbuf\n");
- return ERR_MEM;
- }
- p = hci_cmd_ass(p, HCI_LINK_KEY_REQ_REP, HCI_LINK_CTRL_OGF, HCI_LINK_KEY_REQ_REP_PLEN);
- //copy bdaddr to offset 0x4
- memcpy(((u8_t *)p->payload)+4, bdaddr->addr, 6);
- //copy Link Key (16 bytes long) to offset 10 (0xA)
- memcpy(((u8_t *)p->payload)+10, link_key, 16);
- //send command
- physbusif_output(p,p->tot_len);
- btpbuf_free(p);
- return ERR_OK;
- }
- err_t hci_link_key_req_neg_reply(struct bd_addr *bdaddr)
- {
- struct pbuf *p;
- if ((p = btpbuf_alloc(PBUF_RAW, HCI_LINK_KEY_REQ_REP_NEGATIVE_PLEN, PBUF_RAM)) == NULL) {
- ERROR("hci_link_key_req_neg_repl: Could not allocate memory for pbuf\n");
- return ERR_MEM;
- }
- p = hci_cmd_ass(p, HCI_LINK_KEY_REQ_REP_NEGATIVE, HCI_LINK_CTRL_OGF, HCI_LINK_KEY_REQ_REP_NEGATIVE_PLEN);
- memcpy(((u8_t *)p->payload)+4, bdaddr->addr, 6);
- physbusif_output(p,p->tot_len);
- btpbuf_free(p);
- return ERR_OK;
- }
- /*
- case HCI_LINK_KEY_REQUEST:
- bdaddr = (void *)((u8_t *)p->payload);
- hci_link_key_req_neg_reply(bdaddr);
- break;
- case HCI_PIN_CODE_REQUEST:
- bdaddr = (void *)((u8_t *)p->payload);
- static unsigned char pin[] = {0x00, 0x00, 0x00, 0x00};
- hci_pin_code_request_reply(bdaddr, sizeof(pin), pin);
- break;
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement