# Info arendajatele

## KBluetoothD

Selles osas kirjeldatakse, kuidas saab kbluetoothd rakendada enda programmi teenistusse või kasutada seda skripti abil puhverdatud seadmenimede või muu sellise hankimiseks.

### Nimepuhver

Nimepuhver jälgib kõiki nimesoove ja salvestab tulemused. Seda kasutades saavad muud rakendused ja mõistagi ka kbluetoothd ise hankida bluetoothd seadme nime selle unikaalsest seadmeaadressist ka siis, kui seade ise ei asu parajasti tööpiirkonnas. Peamiselt saab seda pruukida kasutajaliidese muutmiseks sõbralikumaks, sest bluetoothi aadressid ei ole just kerged meeles pidada - näiteks 00:60:AB:13:83:3D.

Usutavasti vajub see peagi ajalukku, kui BlueZ tuleb lõpuks välja omaenda püsiva nimepuhvriga.

Nimepuhvrile pääseb ligi näiteks DCOP-i abil. Aadressi leidmiseks nimepuhrist kirjuta käsureal `dcop kbluetoothd DeviceNameCache getCachedDeviceName <aadress>`. Kui tahad teada, milline seade kasutas viimati mingit nime, anna käsk `dcop kbluetoothd DeviceNameCache resolveCachedDeviceName <nimi>`. See käsk on tõstutundlik. Samuti tasuks silmas pidada, et tegelikult võib ka mitu seadet kasutada üht ja sama nime.

### Metaserver

Kui soovid kirjutada serverirakendust mõnele uuele Bluetoothi protokollile, saad selle hõlpsasti integreerida kbluetoothd-ga, mis võimaldab serveri automaatselt tööle panna.

Sul tuleb tekitada XML fail, mis kirjeldab SDP kirjet ja vastavat töölauafaili. Kbluetoothd tekitab siis automaatselt SDP kirje, omistab rfcomm kanali ja hakkab valitud kanalit jälgima. Kui keegi sinu teenusega ühendust võtab, käivitab kbluetoothd selle ning eraldab juba aktsepteeritud ühendusele sokli. Käitleja number antakse käsureal argumendina.

Paketis kdebluetooth on programm `kbtserialchat`, mis on mõeldud (peale selle, et seda saab kasutada silumiseks ja võib-olla isegi vestlemiseks...) lihtsaks näiteks selle kohta, kuidas rakendust kdebluetooth raamistikku integreerida. Et kbtserialchat on korraga nii klient kui ka server, ei ole sul vaja väga suurt tähelepanu pöörata kõikvõimalikele käsureal antavatele argumentidele nagu seda kbtserialchat teeb, eriti sdp-urlidele.

SDP-XML-failide vorming peaks olema enesestmõistetav, kui endale vähegi selgeks teha SDP kirjete struktuur. Oluline on tähele panna, kuidas jõuab valitud rfcomm kanalite parameeter serveri SDP kirjesse. Et kbluetoothd valib kanali automaatselt, ei saa seda otseselt SDP registreerimisfaili sisse kirjutada. Selle asemel tuleb kohanäitajana anda <uint valref='rfcommchannel' size='8'/>. Järeleproovitavad rfcomm kanalid on määratud vastavas töölauafailis. `X-KDE-KBLUETOOTHD-port` on esimesed järeleproovitavad kanalid ning `X-KD-KBLUETOOTHD-autoPortRange` annab järgmiste kanalite numbri, mida proovitakse kasvavas järjekorras, kui kanalit kasutab juba mõni muu teenus.

Kbluetoothd toetab praegu ainult rfcomm-i, aga vajadusel on võimalik pakkuda ka l2cap või muu sellise tuge.

### Seadmete tuvastamise teenus

kbluetoothd võib aktiivselt otsida seadmeid ning käivitada käske niipea, kui seade tuvastatakse või kui see kaob. Seda teenust saab seadistada KDE juhtimiskeskuses kbluetoothd moodulis kaardil "Seadmete tuvastamine".

Juhtimiskeskuses näha olevate aktiivsete tuvastamistööde loend on lihtsalt nimekiri kataloogis `$HOME/.kde/share/apps/kbluetoothd/discovery_jobs/` asuvatest käivitatavatest failidest. Sa võid ka lisada uue skripti globaalsete mallide kataloogi `$PREFIX/share/apps/kdebluetooth/job-templates/`. Selle kataloogi skripte laiendiga ".template" näidatakse, kui klõpsata nupule "Lisa uus töö..." ning need lihtsalt kopeeritakse kasutaja kodukataloogis asuvasse aktiivsete tööde kataloogi.

Kaasapandud skriptid on jagatud kaheks, et neid oleks lihtsam uuendada ilma skripte uuesti paigaldamata. ".template"-osa, mis kopeeritakse kodukataloogi, sisaldab ainult kasutaja muudetavaid seadistusi. See skript kutsub seejärel välja ".real"-osa, mis jääb endiselt mallide kataloogi.

Omaenda tuvastamistöö kirjutamiseks klõpsa "Lisa uus töö..." ning vali kohandatud_töö. See kopeerib `Kohandatud_Töö.template` sinu tööde kataloogi. Nüüd klõpsa skripti muutmiseks "Seadista...". Skript võib kasutada kõiki käsureavõtmeid ja keskkonnamuutujaid, mis on sulle üldse kättesaadavad.

Arvesta, et kohandatud skripti redigeerides kaotad kõik muudatused, kui eemaldad selle aktiivsete tööde loendist. Kui soovid oma skripti levitada, soovitame sul see samuti jagada malliosaks, milles on seadistused ja reaalosaks, mis sooritab tegeliku töö.

Sellise tuvastamistööga failide üles- ja allalaadimiseks või kustutamiseks saab kasutada programmi kioclient.

Kui kirjutad mõne vahva tuvastamisteenuse skripti, millest võiks kasu tõusta teistelegi, saada see ka meile ja me lisame selle oma komplekti.