Sto tentando di aprire un canale HID e canale interrupt L2Cap in modo da poter inviare comandi HID a un dispositivo bluetooth.Come posso stabilire una connessione al canale interrupt L2Capp?
Ho eseguito tutti i miei servizi di pubblicità e paring dei dispositivi e ho stabilito una connessione in banda base.
Il canale di controllo nascosto si apre bene. Quando cerco di creare la mia connessione kBluetoothL2CAPPSMHIDInterrupt
l2capChannelQueueSpaceAvailable metodo
delegato chiamato (non so cosa significa), seguita da
l2capChannelOpenComplete
ma la connessione si chiude immediatamente chiamando
l2capChannelClosed
Come posso aprire correttamente questi connessione?
Ho passato molto tempo a scavare attraverso il framework IOBlueTooth e la specifica HID bluetooth.org ma ci sono solo poche informazioni utili (che posso trovare almeno).
Quando ho tracciare i miei canali L2CAP vedo alcuni valori nulli per
mIncomingDataListener
e
mEventDataListener
. Non so come impostare questi o se hanno qualcosa a che fare con il mio problema .... solo speculando.
Il frammento di codice riportato di seguito è il mio tentativo finora di effettuare le connessioni dopo aver stabilito una connessione al dispositivo.
-(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
Ho attaccato miei log dei pacchetti. E 'strano, una richiesta di
kBluetoothL2CAPPSMSDP 0x0001
viene fatta senza di me lo richiedono e poi tutto inizia disconnessione.
solo un aggiornamento per le persone interessate. Se il record del servizio sdp non è corretto, le connessioni L2cap non resteranno aperte. Inoltre non si effettua la connessione kBluetoothL2CAPPSMSDP da soli. Solo gli interrupt e controll – dubbeat
sei riuscito a risolvere questo alla fine? Sto provando e fallendo nel creare un dispositivo HID, ma trovare dei buoni esempi su come fare questo è la mia più grande barriera atm – Scott