@@ -547,54 +547,6 @@ s32 BTE_ReadRemoteName(struct bd_addr *bdaddr, btecallback cb)
547547 return last_err ;
548548}
549549
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-
598550s32 BTE_LinkKeyRequestReply (struct bd_addr * bdaddr ,u8 * key )
599551{
600552 u32 level ;
@@ -752,7 +704,41 @@ s32 bte_registerdeviceasync(struct bte_pcb *pcb,struct bd_addr *bdaddr,s32 (*con
752704
753705error :
754706 _CPU_ISR_Restore (level );
755- //printf("bte_registerdeviceasync(%02x)\n",err);
707+ printf ("bte_registerdeviceasync(%02x)\n" ,err );
708+ return err ;
709+ }
710+
711+ s32 bte_registerdeviceasync2 (struct bte_pcb * pcb ,s32 (* conn_cfm )(void * arg ,struct bte_pcb * pcb ,u8 err ))
712+ {
713+ u32 level ;
714+ s32 err = ERR_OK ;
715+ struct l2cap_pcb * l2capcb = NULL ;
716+
717+ //printf("bte_registerdeviceasync2()\n");
718+ _CPU_ISR_Disable (level );
719+ if (!lp_is_connected (& (pcb -> bdaddr ))) {
720+ printf ("bdaddr not connected: %02x:%02x:%02x:%02x:%02x:%02x\n" ,pcb -> bdaddr .addr [5 ],pcb -> bdaddr .addr [4 ],pcb -> bdaddr .addr [3 ],pcb -> bdaddr .addr [2 ],pcb -> bdaddr .addr [1 ],pcb -> bdaddr .addr [0 ]);
721+ err = ERR_CONN ;
722+ goto error ;
723+ }
724+
725+ pcb -> conn_cfm = conn_cfm ;
726+
727+ if ((l2capcb = l2cap_new ())== NULL ) {
728+ err = ERR_MEM ;
729+ goto error ;
730+ }
731+ l2cap_arg (l2capcb ,pcb );
732+
733+ err = l2cap_connect_ind (l2capcb ,& (pcb -> bdaddr ),HIDP_DATA_CHANNEL ,l2cap_accepted );
734+ if (err != ERR_OK ) {
735+ l2cap_close (l2capcb );
736+ err = ERR_CONN ;
737+ }
738+
739+ error :
740+ _CPU_ISR_Restore (level );
741+ printf ("bte_registerdeviceasync2(%02x)\n" ,err );
756742 return err ;
757743}
758744
@@ -1247,17 +1233,14 @@ err_t l2cap_accepted(void *arg,struct l2cap_pcb *l2cappcb,err_t err)
12471233 btepcb -> data_pcb = l2cappcb ;
12481234 break ;
12491235 }
1250- if (btepcb -> data_pcb && btepcb -> ctl_pcb ) {
1251- btepcb -> err = ERR_OK ;
1252- btepcb -> state = (u32 )STATE_CONNECTED ;
1253- if (btepcb -> conn_cfm ) btepcb -> conn_cfm (btepcb -> cbarg ,btepcb ,ERR_OK );
1254- }
1236+ btepcb -> err = ERR_OK ;
1237+ btepcb -> state = (u32 )STATE_CONNECTED ;
12551238 } else {
12561239 l2cap_close (l2cappcb );
12571240 btepcb -> err = ERR_CONN ;
1258- if (btepcb -> conn_cfm ) btepcb -> conn_cfm (btepcb -> cbarg ,btepcb ,ERR_CONN );
12591241 }
1260-
1242+
1243+ if (btepcb -> conn_cfm ) btepcb -> conn_cfm (btepcb -> cbarg ,btepcb ,btepcb -> err );
12611244 return ERR_OK ;
12621245}
12631246
0 commit comments