# Programmeurinformatie

## Kbluetoothd

Deze sectie beschrijft hoe u kbluetoothd kunt gebruiken in uw eigen programma's en hoe u het vanuit scripts kunt benaderen voor het ophalen van gecachte apparaatnamen of iets dergelijks.

### De name cache

De name cache houdt alle name requests bij en slaat de resultaten op. Hiermee kunnen andere programma's en kbluetooth zelf de naam van een ander bluetoothd-apparaat vinden aan de hand van zijn unieke bluetoothd-apparaatadres, zelfs als het apparaat zelf niet bereikbaar is. Dit wordt vooral gebruikt om de gebruikerinterface plezieriger te maken, omdat Bluetooth-adressen als 00:60:AB:13:83:3D lastig te onthouden zijn.

Dit zal mogelijk achterhaald zijn zodra BlueZ zijn eigen persistente name cache aanlevert.

U kunt toegang krijgen tot de name cache via DCOP. Om adressen in de name cache vanaf de commandoregel op te zoeken, type `dcop kbluetoothd DeviceNameCache getCachedDeviceName <adres>`. Om uit te vinden welk apparaat het laatste een gegeven naam gebruikte gebruikt u het commando `dcop kbluetoothd DeviceNameCache resolveCachedDeviceName <naam>`. Dit commando is hoofdlettergevoelig. Wees erop verdacht dat meerdere apparaten gebruik kunnen maken van dezelfde naam.

### De meta server

Als u een servertoepassing wilt implementeren voor een nieuw bluetooth-protocol, dan kunt u die op eenvoudige wijze integreren met kbluetoothd zodat uw server automatisch wordt gestart.

U dient dan een XML-bestand aan te leveren dat het SDP-record en een corresponderend .desktop-bestand beschrijft. kbluetooth zal dan automatisch een SDP-record opzetten, een rfcomm-kanaal toewijzen en op het gekozen kanaal luisteren. Als iemand verbinding met uw apparaat maakt zal kbluetooth het starten en een socket doorgeven voor de reeds geaccepteerde verbinding er naartoe. Het nummer van de handle wordt doorgegeven als een commandoregelargument.

Het kdebluetooth-pakket bevat `kbtserialchat`. Dit is (naast de functie voor het debuggen en eventueel zelfs chatten..) bedoeld als een eenvoudig voorbeeldprogramma over hoe een toepassing in het kbluetooth-raamwerk kan worden geïntegreerd. Aangezien kbtserialchat een client en een server tegelijk is hoeft u zich niet druk te maken over alle commandoregelargumenten die kbtserialchat uitvoert, in het bijzonder niet de SDP-adressen.

Het formaat van SDP-XML-bestanden spreekt in principe voor zich als u bekend bent met de structuren van SDP-records. Een belangrijk punt is hoe de parameter voor de geselecteerde rfcomm-kanalen zijn weg vindt in het SPDS-record voor de server. Omdat het kanaal automatisch door kbluetooth wordt geselecteerd kunt u het niet hardcoden in het SDP-registratiebestand. In plaats daarvan dient u <uint valref='rfcommchannel' size='8'/> te gebruiken als een plaatshouder. De rfcomm-kanalen die geprobeerd worden zijn gedefinieerd in het bijhorende .desktop-bestand. `-KDE-KBLUETOOTHD-port` is het eerste kanaal dat geprobeerd wordt en `X-KDE-KBLUETOOTHD-autoPortRange` geeft het aantal opvolgende kanalen die in oplopende volgorde geprobeerd worden als een kanaal al in gebruik is bij een andere dienst.

kbluetoothd ondersteunt momenteel alleen rfcomm, maar als er behoefte voor is zullen we ook ondersteuning leveren voor l2cap of vergelijkbaar.

### De Device Discovery Service

kbluetooth kan actief zoeken naar andere apparaten en commando's uitvoeren zodra een apparaat is gevonden of verdwenen. U kunt dit apparaat instellen in kbluetooth's configuratiemodule onder tabblad "Apparaatwaarneming".

De lijst met actieve waarneemtaken zoals getoond in de configuratiemodule is gewoon een lijst met programma's die zijn gevonden in de map `$HOME/.kde/share/apps/kbluetoothd/discovery_jobs/`. U kunt ook scripts toevoegen aan de globale sjabloonmap in `$KDEDIR/share/apps/kdebluetooth/job-templates/`. De scripts in deze mappen, welke eindigen op ".template", zullen worden getoond als de gebruiker klikt op de knop "Nieuwe taak toevoegen...". Het script wordt dan gekopieerd naar de map met actieve taken in de persoonlijke map van de gebruiker.

De meegeleverde scripts zijn in tweeën gedeeld om het eenvoudiger te maken ze bij te werken zonder dat u de scripts opnieuw dient te installeren. Het ".template"-gedeelte bevat de door de gebruiker veranderbare instellingen die worden gekopieerd naar de persoonlijke map van die gebruiker. Dit script roept dan het ".real"-gedeelte aan wat achterblijft in de sjabloonmap.

Om te beginnen met het schrijven van uw eigen waarneemtaak, klik op de knop "Nieuwe taak toevoegen..." en selecteer Eigen_taak (Custom_Job). Dit kopieert het bestand `Custom_Job.template` naar uw taakmap. Klik vervolgens op "Instellen..." om het script aan te passen. Dit script bevat alle mogelijke commandoregelopties en omgevingsvariabelen waar u toegang tot hebt.

Wees er op verdacht dat wanneer u dit eigen script bewerkt, alle wijzigingen weg zijn als u het verwijdert uit de lijst met actieve taken. Als u uw script wilt distribueren, dan adviseren we dat u het ook opsplitst in een template-gedeelte voor de instellingen en een real-gedeelte dat het eigenlijke werk doet.

Om in staat te zijn bestanden te uploaden, downloaden of verwijderen vanuit zo'n taak kunt u gebruik maken van kioclient.

Als u een handig script voor de apparaatwaarneming hebt geschreven dat handig kan zijn voor anderen, dan willen we het met alle plezier meeleveren met de volgende uitgave.