@@ -738,7 +738,7 @@ s32 bte_registerdeviceasync(struct bte_pcb *pcb,struct bd_addr *bdaddr,s32 (*con
738738 goto error ;
739739 }
740740
741- if ((l2capcb = l2cap_new ())== NULL ) {
741+ /* if((l2capcb=l2cap_new())==NULL) {
742742 err = ERR_MEM;
743743 goto error;
744744 }
@@ -748,7 +748,7 @@ s32 bte_registerdeviceasync(struct bte_pcb *pcb,struct bd_addr *bdaddr,s32 (*con
748748 if(err!=ERR_OK) {
749749 l2cap_close(l2capcb);
750750 err = ERR_CONN;
751- }
751+ }*/
752752
753753error :
754754 _CPU_ISR_Restore (level );
@@ -763,7 +763,7 @@ s32 bte_connectdeviceasync(struct bte_pcb *pcb,struct bd_addr *bdaddr,s32 (*conn
763763 struct l2cap_pcb * l2capcb = NULL ;
764764
765765 _CPU_ISR_Disable (level );
766- // printf("bte_connectdeviceasync()\n");
766+ printf ("bte_connectdeviceasync()\n" );
767767 if (lp_is_connected (bdaddr )) {
768768 printf ("bdaddr already exists: %02x:%02x:%02x:%02x:%02x:%02x\n" ,bdaddr -> addr [5 ],bdaddr -> addr [4 ],bdaddr -> addr [3 ],bdaddr -> addr [2 ],bdaddr -> addr [1 ],bdaddr -> addr [0 ]);
769769 err = ERR_CONN ;
@@ -789,13 +789,48 @@ s32 bte_connectdeviceasync(struct bte_pcb *pcb,struct bd_addr *bdaddr,s32 (*conn
789789 goto error ;
790790 }
791791
792- if ((l2capcb = l2cap_new ())== NULL ) {
792+ /* if((l2capcb=l2cap_new())==NULL) {
793793 err = ERR_MEM;
794794 goto error;
795795 }
796796 l2cap_arg(l2capcb,pcb);
797797
798798 err = l2ca_connect_req(l2capcb,bdaddr,HIDP_DATA_CHANNEL,HCI_ALLOW_ROLE_SWITCH,l2cap_connected);
799+ if(err!=ERR_OK) {
800+ l2cap_close(l2capcb);
801+ err = ERR_CONN;
802+ }*/
803+
804+ error :
805+ _CPU_ISR_Restore (level );
806+ //printf("bte_connectdeviceasync(%02x)\n",err);
807+ return err ;
808+ }
809+
810+ s32 bte_connectdeviceasync2 (struct bte_pcb * pcb ,s32 (* conn_cfm )(void * arg ,struct bte_pcb * pcb ,u8 err ))
811+ {
812+ u32 level ;
813+ s32 err = ERR_OK ;
814+ struct l2cap_pcb * l2capcb = NULL ;
815+
816+ _CPU_ISR_Disable (level );
817+ printf ("bte_connectdeviceasync2()\n" );
818+
819+ if (!lp_is_connected (& (pcb -> bdaddr ))) {
820+ 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 ]);
821+ err = ERR_CONN ;
822+ goto error ;
823+ }
824+
825+ pcb -> conn_cfm = conn_cfm ;
826+
827+ if ((l2capcb = l2cap_new ())== NULL ) {
828+ err = ERR_MEM ;
829+ goto error ;
830+ }
831+ l2cap_arg (l2capcb ,pcb );
832+
833+ err = l2ca_connect_req (l2capcb ,& (pcb -> bdaddr ),HIDP_DATA_CHANNEL ,HCI_ALLOW_ROLE_SWITCH ,l2cap_connected );
799834 if (err != ERR_OK ) {
800835 l2cap_close (l2capcb );
801836 err = ERR_CONN ;
0 commit comments