# Information for udviklere

## KBluetoothD

Dette afsnit beskriver hvorledes man bruger kbluetoothd i dit program, eller tilgår det fra scripter så der kan hentes gemte enhedsnavne eller lignende.

### Navne-cachen

Navnecachen sporer alle navneforespørgsler og gemmer resultatet. Ved hjælp af det kan andre programmer og kbluetoothd selv, hente navnet på en anden bluetooth enhed fra sin unikke bluetoothd enhedsadresse, selv når enheden ikke aktuelt er til rådighed. Dette bruges mest for at gøre brugergrænseflade mere behagelig, fordi bluetooth-adresser som 00:60:AB:13:83:3D er lidt svære at huske.

Det bliver muligvis overflødiggjort så snart BlueZ kommer med sin egen persistente navnecache.

Du kan tilgå enheden via dcop. For at slå en adresse på i navnecachen fra kommandolinjen, skal du skrive:`dcop kbluetoothd DeviceNameCache getCachedDeviceName <address>`. For at finde ud af hvilke enheder der sidst brugte et givet navn kan du skrive: `dcop kbluetoothd DeviceNameCache resolveCachedDeviceName <name>`. Denne kommando er ikke versalfølsom. Vær også opmærksom på at flere enheder kan være konfigureret så de bruger samme navn.

### Metaserveren

Vil du implementere en server til en ny bluetooth-protokol, kan du let integrere den med kbluetoothd, så din server startes automatisk.

Du skal stille en XML-fil, der beskriver SDP-optegnelsen og en tilsvarende desktop fil, til rådighed. kbluetoothd indstiller så automatisk SDP-optegnelsen, tildeler en rfcomm-kanal og begynder at lytte på den valgte kanal. Når nogen forbinder sig til din service, starter kbluetoothd den og afleverer en sokkel til den allerede accepterede forbindelse til den. Nummeret på håndtaget afleveres som et kommandolinjeargument.

Kdebluetooth-pakken indeholder `kbtserialchat`, som er (udover til fejlretning og endda chat..) ment som et ret simpelt programeksempel, der viser hvordan man integrerer et program i kdebluetooth framework. Eftersom kbtserialchat er en klient og en server på samme tid, er det ikke nødvendigt at overveje alle kommandolinjeargumenter som kbtserialchat gør det, især ikke sdp-adresser.

SDP-XML-filernes format er ret selvforklarende, hvis du kender til hvordan SDP-optegnelser er organiseret. Et vigtigt punkt er dog hvordan parameteren til de valgte rfcomm-kanaler finder vej ind i SDP-optegnelsen til serveren. Da kanalerne automatisk vælges af kbluetoothd kan du ikke lægge dem fast i SDP-registreringsfilen. Du skal istedet bruge <uint valref='rfcommchannel' size='8'/> som pladsholder. rfcomm kanalerne som prøves er defineret i den korresponderende desktop-fil. `X-KDE-KBLUETOOTHD-port` er de første kanaler der prøves og `X-KDE-KBLUETOOTHD-autoPortRange` gives antallet af efterfølgende kanaler der prøves i stigende orden, hvis en kanal bruges af en anden service i forvejen.

kbluetoothd understøtter kun rfcomm i øjeblikket, men når behovet opstår vil vi også understøtte l2cap eller lign.

### Enhedsopdagelsestjenesten

kbluetooth kan aktivt søge efter enheder og udføre kommander så snart en enhed opdages eller forsvinder. Du kan indstille denne service i kbluetoothds kontrolcentermodul i "Opdag enhed"-fanebladet.

Listen af aktive opdagelsesjob vist i kontrolcentermodulet er bare en liste af kørbare der findes i kataloget `$HOME/.kde/share/apps/kbluetoothd/discovery_jobs/`. Du kan også tilføje nye scripter til det globale skabelonkatalog i `$PREFIX/share/apps/kdebluetooth/job-templates/`. Scripterne i dette katalog som ender på ".template" vises når brugeren klikker på "Tilføj nyt job..." og kopieres simpelthen til det aktive jobkatalog i brugerens hjemmemappe.

De inkluderede scripter er opdelt i to for at gøre det lettere at opdatere dem uden at skulle geninstallere scripterne. ".template"-delen indeholder kun de indstillinger der kan brugerdefineres, som kopieres til hjemmemappen. Dette script kalder så den ".real" del som forbliver i skabelonkataloget (template).

For at begynde at skrive dit eget job til opdagelse, klikker du på "Tilføj nyt job..." og vælger Custom_Job. Dette kopierer `Custom_Job.template` til dit job-katalog. Nu klikker du på "Indstil..." for at ændre scriptet. Dette script viser alle de mulige kommandolinjetilvalg og miljøvarible du har adgang til.

Vær opmærksom på at når du redigerer dette brugerdefinerede script, forsvinder alle ændringer hvis du fjerner det fra listen af aktive job. Hvis du vil distribuere det, anbefaler vi at du også deler det op i en skabelon-del til indstillingerne og en reel del som udfører det egentlige arbejde.

For at kunne lægge op, tage ned eller slette filer fra en kilde som ved opdagelse, kan du bruge kioclient.

Hvis du har skrevet et eller andet cool script til enhedsopdagelsesservice, kan det være nyttigt for andre. Vi vil med glæde inkludere det i distributionen :)=