Skip to content

Commit eea5f61

Browse files
committed
Start making it act like SM
1 parent 56bda29 commit eea5f61

6 files changed

Lines changed: 312 additions & 6 deletions

File tree

gc/bte/bte.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,9 @@ s32 BTE_ReadStoredLinkKey(struct linkkey_info *keys,u8 max_cnt,btecallback cb);
149149
s32 BTE_ReadBdAddr(struct bd_addr *bdaddr, btecallback cb);
150150
s32 BTE_SetEvtFilter(u8 filter_type,u8 filter_cond_type,u8 *cond, btecallback cb);
151151
s32 BTE_ReadRemoteName(struct bd_addr *bdaddr, btecallback cb);
152+
s32 BTE_ReadClockOffset(struct bd_addr *bdaddr, btecallback cb);
153+
s32 BTE_ReadRemoteVersionInfo(struct bd_addr *bdaddr, btecallback cb);
154+
s32 BTE_ReadRemoteFeatures(struct bd_addr *bdaddr, btecallback cb);
152155
s32 BTE_Inquiry(u8 max_cnt,u8 flush, btecallback cb);
153156
s32 BTE_PeriodicInquiry(u8 max_cnt,u8 flush,btecallback cb);
154157
s32 BTE_ExitPeriodicInquiry(void);

lwbt/bte.c

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ err_t pin_req(void *arg,struct bd_addr *bdaddr);
9494
err_t l2cap_connected(void *arg,struct l2cap_pcb *l2cappcb,u16_t result,u16_t status);
9595
err_t l2cap_accepted(void *arg,struct l2cap_pcb *l2cappcb,err_t err);
9696
err_t acl_conn_complete(void *arg,struct bd_addr *bdaddr);
97+
err_t acl_auth_complete(void *arg,struct bd_addr *bdaddr);
9798
err_t l2cap_disconnect_cfm(void *arg, struct l2cap_pcb *pcb);
9899
err_t l2cap_disconnected_ind(void *arg, struct l2cap_pcb *pcb, err_t err);
99100

@@ -390,6 +391,7 @@ void BTE_Init(void)
390391

391392
hci_wlp_complete(acl_wlp_completed);
392393
hci_connection_complete(acl_conn_complete);
394+
hci_auth_complete(acl_auth_complete);
393395
hci_remote_name_req_complete(bte_read_remote_name_complete);
394396
hci_pin_req(pin_req);
395397
_CPU_ISR_Restore(level);
@@ -545,6 +547,54 @@ s32 BTE_ReadRemoteName(struct bd_addr *bdaddr, btecallback cb)
545547
return last_err;
546548
}
547549

550+
s32 BTE_ReadClockOffset(struct bd_addr *bdaddr, btecallback cb)
551+
{
552+
u32 level;
553+
err_t last_err = ERR_OK;
554+
555+
_CPU_ISR_Disable(level);
556+
btstate.cb = cb;
557+
btstate.usrdata = NULL;
558+
btstate.hci_cmddone = 0;
559+
hci_arg(&btstate);
560+
hci_read_clock_offset(bdaddr);
561+
_CPU_ISR_Restore(level);
562+
563+
return last_err;
564+
}
565+
566+
/*s32 BTE_ReadRemoteVersionInfo(struct bd_addr *bdaddr, btecallback cb)
567+
{
568+
u32 level;
569+
err_t last_err = ERR_OK;
570+
571+
_CPU_ISR_Disable(level);
572+
btstate.cb = cb;
573+
btstate.usrdata = NULL;
574+
btstate.hci_cmddone = 0;
575+
hci_arg(&btstate);
576+
hci_read_remote_version_info(bdaddr);
577+
_CPU_ISR_Restore(level);
578+
579+
return last_err;
580+
}
581+
582+
s32 BTE_ReadRemoteFeatures(struct bd_addr *bdaddr, btecallback cb)
583+
{
584+
u32 level;
585+
err_t last_err = ERR_OK;
586+
587+
_CPU_ISR_Disable(level);
588+
btstate.cb = cb;
589+
btstate.usrdata = NULL;
590+
btstate.hci_cmddone = 0;
591+
hci_arg(&btstate);
592+
hci_read_remote_features(bdaddr);
593+
_CPU_ISR_Restore(level);
594+
595+
return last_err;
596+
}*/
597+
548598
s32 BTE_LinkKeyRequestReply(struct bd_addr *bdaddr,u8 *key)
549599
{
550600
u32 level;
@@ -1022,6 +1072,15 @@ err_t acl_conn_complete(void *arg,struct bd_addr *bdaddr)
10221072
//printf("acl_conn_complete\n");
10231073
//memcpy(&(btstate.acl_bdaddr),bdaddr,6);
10241074

1075+
hci_auth_req(bdaddr);
1076+
return ERR_OK;
1077+
}
1078+
1079+
err_t acl_auth_complete(void *arg,struct bd_addr *bdaddr)
1080+
{
1081+
//printf("acl_auth_complete\n");
1082+
//memcpy(&(btstate.acl_bdaddr),bdaddr,6);
1083+
10251084
hci_write_link_policy_settings(bdaddr,0x0005);
10261085
return ERR_OK;
10271086
}
@@ -1593,11 +1652,11 @@ err_t bte_hci_initsub_complete(void *arg,struct hci_pcb *pcb,u8_t ogf,u8_t ocf,u
15931652
} else
15941653
err = ERR_CONN;
15951654
} else if(ocf==HCI_W_SCAN_EN_OCF) {
1596-
if(result==HCI_SUCCESS) {
1655+
/* if(result==HCI_SUCCESS) {
15971656
hci_write_authentication_enable(0x01);
15981657
} else
15991658
err = ERR_CONN;
1600-
} else if(ocf==HCI_W_AUTH_ENABLE_OCF) {
1659+
} else if(ocf==HCI_W_AUTH_ENABLE_OCF) {*/
16011660
if(result==HCI_SUCCESS) {
16021661
hci_cmd_complete(NULL);
16031662
return __bte_cmdfinish(state,ERR_OK);

0 commit comments

Comments
 (0)