Próbuję otworzyć kanał HID kanału L2Cap i przerwań, aby wysyłać polecenia HID do urządzenia bluetooth.Jak mogę ustanowić połączenie kanału przerwań L2Capp?
Zrobiłem wszystkie moje reklamy usługowe i paring urządzenia i ustanowiłem połączenie z basebandem.
Kanał sterowania ukrywaniem otwiera się poprawnie. Kiedy próbuję tworzyć moje połączenie kBluetoothL2CAPPSMHIDInterrupt
l2capChannelQueueSpaceAvailable metoda
delegat nazywa (nie wiem co to znaczy), a następnie
l2capChannelOpenComplete
ale połączenie zamyka natychmiast dzwoniąc pod numer
l2capChannelClosed
Jak można poprawnie otworzyć te połączenia?
Spędziłem dużo czasu, przeglądając framework IOBlueTooth i specyfikację bluetooth.org HID, ale nie ma tam żadnych przydatnych informacji (które mogę znaleźć przynajmniej).
Kiedy prześledzić moje kanały L2CAP widzę pewne wartości zerowe dla
mIncomingDataListener
i
mEventDataListener
. Nie wiem, jak je ustawić lub czy mają coś wspólnego z moim problemem ... po prostu spekulują.
Poniższy fragment kodu jest moją próbą nawiązania połączenia po ustanowieniu połączenia z urządzeniem.
-(void)establishL2CappConnections:(IOBluetoothDevice*)device
{
IOReturn r;
IOBluetoothL2CAPChannel *ch1;
r = [device openL2CAPChannelSync:&ch1
withPSM:(BluetoothL2CAPPSM)kBluetoothL2CAPPSMHIDControl
delegate:self];
self.mL2CappChannel=ch1;
NSLog(@"r == %i",r);
IOBluetoothL2CAPChannel *ch2;
r = [device openL2CAPChannelSync:&ch2
withPSM:(BluetoothL2CAPPSM)kBluetoothL2CAPPSMHIDInterrupt
delegate:self];
self.mL2CappInterruptChannel=ch2;
NSLog(@"r == %i",r);
}
Edit: 1
Mam załączeniu moje dzienniki pakietowych. To dziwne, wniosek o
kBluetoothL2CAPPSMSDP 0x0001
zostanie wykonana bez mną zwracając się do niej, a potem wszystko zaczyna odłączeniem.
tylko aktualizacji dla zainteresowanych osób. Jeśli rekord usługi sdp jest nieprawidłowy, połączenia L2cap nie pozostaną otwarte. Ponadto nie tworzysz samodzielnie połączenia kBluetoothL2CAPPSMSDP. Tylko w przypadku przerwań i kontroli – dubbeat
udało ci się rozwiązać to w końcu? Próbuję i nie uda mi się stworzyć urządzenia HID samemu, ale znalezienie dobrych przykładów, jak to zrobić, to moja największa bariera atm. – Scott