Recherche de périphériques BLE à partir de C / C ++

dans le “Guide d’access aux périphériques Bluetooth” , j’ai lu que l’API Bluetooth devrait être accessible à partir de C ou de C ++. J’ai trouvé dans le cadre IOBluetooth des en-têtes C (IOBluetoothUserLib.h, Bluetooth.h) liés à Bluetooth et contenant des énumérations et des données structurées pour définir des critères de recherche, mais je ne parviens pas à trouver une fonction prenant une telle énumération ou structure de données. en paramètre. Selon la documentation, je devrais créer un CBCentralManager, mais je ne parviens pas à trouver un moyen de le faire à partir de C ou de C ++.

Contexte: Nous utilisons OS / X comme plate-forme de développement pour le développement de microcontrôleurs compatibles BLE. Pour mettre à jour le micrologiciel sur ces microcontrôleurs, je souhaite écrire un chargeur de démarrage BLE et disposer d’un client en ligne de commande pour mettre à jour le micrologiciel. Tout le code est écrit en C ++ et je ne voudrais pas apprendre à objectiv-C pour cette petite tâche.

Des pointeurs, de la documentation, des exemples?

Je vous remercie

Torsten

Selon la documentation, je devrais créer un CBCentralManager, mais je ne parviens pas à trouver un moyen de le faire à partir de C ou de C ++.

La documentation à laquelle vous faites référence concerne le Bluetooth classique, pour lequel le framework IOBluetooth possède certaines fonctionnalités. CBCentralManager est le gestionnaire de CoreBluetooth, qui s’applique uniquement à Bluetooth LE.

Pour le Bluetooth classique, le gestionnaire que vous souhaitez utiliser est le gestionnaire HID du cadre IOKit, dont la documentation est disponible ici . Si vous effectuez une recherche, vous trouverez de nombreux exemples d’utilisation de IOKit et IOHIDManager ( 1 , 2 ) en C ++.

IOKit peut en fait vous fournir toutes les fonctionnalités dont vous avez besoin, mais IOBluetooth fournit certaines fonctionnalités spécifiques à Bluetooth. Depuis le développement d’applications Bluetooth :

Bien qu’il ne soit pas nécessaire d’utiliser l’API Bluetooth pour accéder à un périphérique de classe HID, vous pouvez choisir d’utiliser des fonctions ou des méthodes du framework Bluetooth pour améliorer l’expérience de l’utilisateur. Par exemple, votre application peut fournir des informations spécifiques à Bluetooth permettant à l’utilisateur de savoir si un appareil ne prend pas en charge un service particulier.

Je suis d’accord avec Henrik, vous aurez besoin de colle. Regardez les gars de RedBearLab travailler et précis en classe.

ofxBLE. h/mm // C++ interface // // (Obj-C may be a superset of C, but this just makes interopability // easier with oF) class ofxBLE { protected: ofxBLEDelegate *btDelegate; public: ofxBLE(); ~ofxBLE(); void scanPeripherals(); void sendPosition(uint8_t x, uint8_t y); bool isConnected(); }; ... - (void)bleDidDisconnect { NSLog(@"->Disconnected"); } - (void)bleDidReceiveData:(unsigned char *)data length:(int)length { } @end // = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = //= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = // C++ class implementation ofxBLE::ofxBLE() { btDelegate = [[ofxBLEDelegate alloc] init]; } ofxBLE::~ofxBLE() { } void ofxBLE::scanPeripherals(){ [btDelegate scanForPeripherals]; } void ofxBLE::sendPosition(uint8_t x, uint8_t y) { // position should be NORMALIZED to between 0 and 255 BEFORE // passing into this method! [btDelegate sendPositionX:x withY:y]; }