Paskutinis DSM2 protokolui skirtas pasakojimas yra apie imtuvo ir siųstuvo surišimą – BINDing‘ą.
BINDing‘as yra speciali procedūra, kurios metu siųstuvas pasako imtuvui, kokius skiriamuosius ženklus reiks naudoti ryšio metu. Arba kitaip sakant, siųstuvas pasako, kaip imtuvas turės priimti, atskirti, aptikti ir suprasti jam skirtus signalus iš daugybės kitų eteryje klajojančių signalų.
BINDing‘o metu siųstuvas siunčia specialius paketus, kuriuose yra įrašytas ryšio identifikacijos numeris. Šis numeris vėliau yra naudojamas praktiškai visose signalo priėmimo stadijose. Pagal identifikacijos numerį imtuvas atskiria ar gautas paketas yra skirtas tikrai būtent jam. Pagal tą patį identifikacijos numerį imtuvas, naudodamas CRC16 metodą, tikrina ar gauto paketo duomenys yra be klaidų. Ir pagal tą patį identifikacijos numerį imtuvas sugeneruoja specialias skaičių sekas, kurios naudojamos „klausantis“ eterio ir bandant aptikti bei išskirti DSM2 siųstuvo siunčiamą signalą iš kakofonijos, kurią skleidžia daugybė aplink esančių kitų įrenginių.
Pati BINDing‘o procedūra yra gana trumpa. Ji trunka apie 15 sekundžių. BINDing‘o pradžioje siųstuvas atsitiktinai pasirenka kokį nors vieną nelyginį ryšio kanalą/dažnį ir kas 9,8ms siunčia specialius BINDing‘o paketus. Iš viso siųstuvas išsiunčia apie 600 BINDing‘o paketų.
Imtuvas, būdamas BINDing‘o režime greitai (apie 11ms vienam kanalui) skenuoja visą nelyginių ryšio kanalo/dažnių diapazoną ieškodamas to kanalo, kuriuo sklinda BINDing‘o paketai. Paketai turi atitikti tam tikrus labai griežtus BINDing‘o paketo reikalavimus, nes BINDing‘o metu nėra naudojama CRC16 klaidų tikrinimo funkcija. Paketų ilgai ieškoti negalima, nes siųstuvas šiuos paketus siunčia tik tam tikrą laiką, kol išsiunčia visus 600 paketų. Vėliau siųstuvas pareina į BINDing‘o patvirtinimo stadiją ir paketų nebesiunčia.
Kai imtuvas randa BINDing‘o kanalą/dažnį, ir priima bent kelis paketus, kurie atitinka visus BINDing‘o paketui keliamus reikalavimus, tuomet imtuvas įsimena/įsirašo pakete esančią informaciją t.y. ryšio identifikacijos numerį ir dar porą savybių, tokių kaip kanalų skaičius ir protokolo tipas, kurias naudos ateityje priimdamas duomenis iš DSM2 siųstuvo. Toliau imtuvas pasilieka BINDing‘o kanale ir priima visus likusius BINDing‘o paketus, kuriuos siunčia siųstuvas. Tokiu būdu imtuvas laukia, kol siųstuvas baigs pirmąją BINDing‘o stadiją.
Kai imtuvas nustoja gauti BINDing‘o paketus, tuomet prasideda antroji stadija - BINDing‘o patvirtinimas.
Čia aš norėčiau pasukti į šalį ir papasakoti apie keistą dalyką, kurį pastebėjau tik pradėjęs aiškintis DSM2 protokolo "vidurius", naudodamas loginį analizatorių, analizuojantį duomenis, vaikštančius tarp CYRF6936 tranceiver‘io ir CY8C21434 mikrovaldiklio. Pradžioje, tik padavus imtuvui įtampą, yra konfigūruojamas CYRF6936 tranceiver‘is. Kadangi tai yra ir imtuvas ir siųstuvas viename korpuse, tai natūralu tikėtis, kad programuojant imtuvą reiktų konfigūruoti tik imtuvo dalį, o siųstuvo dalį arba reiktų išjungti arba bent jau palikti ramybėje. Tačiau gauti duomenys rodė ką kitą. Pradžioje buvo konfigūruojamas ne tik CYRF6936 imtuvas, bet ir siųstuvas. Iš pradžių aš iš savo imtuvo programos kodo išmečiau CYRF6936 siųstuvo konfigūracijos dalį, nes ji man atrodė nereikalinga. Imtuvo savybės nuo to nepasikeitė ir pats imtuvas veikė gerai. Bet kai priėjau prie BINDing‘o procedūros programavimo, tuomet paaiškėjo įdomus dalykas. Mano suprogramuotas imtuvas priimdavo BINDing‘o paketus, įsimindavo informaciją, sulaukdavo, kol siųstuvas baigs siųsti savo BINDing‘o paketų limitą ir tuo viskas pasibaigdavo. Po to jokio ryšio su siųstuvu mano imtuvui užmegzti nepavykdavo.
Problemos priežasties ilgai ieškoti neteko. Viskas paaiškėjo pamačius, kad BINDing‘o procedūra nesibaigia BINDing‘o paketų siuntimu. Dar yra antroji dalis - BINDing‘o patvirtinimas.
BINDing‘o patvirtinimo stadijoje siųstuvas su imtuvu susikeičia vietomis t.y. siųstuvas trumpam tampa imtuvu, o imtuvas trumpam tampa siųstuvu. Štai kodėl pradžioje buvo konfigūruojamas ne tik CYRF6936 imtuvas, bet ir siųstuvas.
Šioje stadijoje imtuvas BINDing‘o kanalu/dažniu kas 7,6ms siunčia specialų BINDing‘o patvirtinimo paketą. Viso imtuvas išsiunčia 600 tokių paketų. Paketą sudaro ryšio identifikacijos numeris, kurį imtuvas gavo iš siųstuvo praeitoje BINDing‘o stadijoje. Siųstuvas savo ruožtu priima imtuvo siunčiamą paketą ir, jeigu viskas gerai, pradeda dirbti įprastu savo režimu, kurį aprašiau ankstesniame post‘e. O jeigu kažkas negerai, tai tuomet ryšį su imtuvu galima atstatyti tik kitos sėkmingo BINDing‘o procedūros dėka.
Imtuvas, išsiuntęs 600 BINDing‘o patvirtinimo paketų taip pat pereina į įprastą režimą, aprašytą ankstesniame post‘e.
Norėčiau pabrėžti, kad projekte, kuriuo iš dalies aš rėmiausi, nėra suprogramuota antroji BINDing‘o stadija, todėl pagal šį projektą padaryti imtuvai nesusirištų su Spektrum DX6i siųstuvais.
Štai ir viskas apie DSM2 protokolą.