# Hayesi modemikäsustik

Siin kirjeldatakse Hayesi käsustikku. Enamik modemeid järgib suurel määral siintoodud käske. Kui oled oma modemi käsiraamatu kaotanud või kui sul seda polegi olnud, võib siinne lisa päris kasuks tulla. Mina näiteks leidsin siit, kuidas oma modemi heli välja lülitada: `ATM0` -- ja lõpuks ometi valitses vaikus!

Modemi initsialiseerimisstring koosneb reast käskudest. See valmistab modemi ette suhtlemiseks, määrates selliseid asju, nagu helistamisrežiim, ooteajad, hõivatud signaali tuvastamine ja veel palju muud. Uuemad modemikommunikatsiooni rakendused lähtestavad initsialisatsioonistringi juba sinu eest vastavalt sellele, millise menüüvõimaluse valid, mille sisse lülitad &etc;.

Aastaid kujutasid Hayesi modemid endast standardit. Kuigi modemite tootjaid on tunduvalt juurde tulnud, rakendab enamik siiski vähemalt osaliselt Hayesi standardit. Siin toome ära kõige olulisema osa Hayesi käskudest (neid nimetatakse ka AT käskudeks). Hayesi käsustikku võib jagada neljaks:

Elementaarkäsustik

- Suurtäht ja sellele järgnev number, näiteks `M1`.

Laiendatud käsustik

- & (ampersand) ja suurtäht ning number. See kujutab endast elementaarkäsustiku laiendust. Näide: `&M1`. Pane tähele, et `M1` ja `&M1` ei ole mitte üks ja sama.

Tootjate käsustik

- Tavaliselt algavad längkriipsu (\) või protsendimärgiga (%). Need käsud erinevad tugevasti vastavalt modemite tootjate suvale, mistõttu siin on neist ära toodud vaid mõned.

Registrikäsud

- `S`r`=`n``, kus `r` on muudetava registri number ja `n` omistatav uus väärtus.

  Register tähendab arvutiinimeste keeles spetsiaalset füüsilist asukohta mälus. Modemitel on tavaliselt natuke omaenda mälu. Seda käsustikku kasutatakse väärtuste sisestamiseks konkreetsesse registrisse (ehk paika mälus). Register salvestab erilise muutuja, mida kasutab modem ja kommunikatsioonitarkvara. Näiteks `S7=60` annab arvutile korralduse Määra register #7 väärtuseks 60.

Kuigi suurem osa käskudest on defineeritud tähe ja numbri kombinatsiooniga (`L0`, `L1` &etc;), on nulli kasutamine lisavõimalus. Toodud näite korral on `L0` sama, mis `L`. Pea seda alltoodud tabelit uurides hästi meeles!

Nüüd mõningad kõige tähtsamad märgid, mis modemi initsialiseerimisstringis esineda võivad. Üldjuhul ei tuleks neid muuta.

`AT`

- Teatab modemile, et järgneb modemikäsk. See peab seisma iga käsurea alguses.

`Z`

- Taastab modemi vaikeväärtused

`,` (koma)

- Sunnib tarkvara sekundiks pausi tegema. Käsku `,` võib anda ka mitu korda järjest. Näiteks `,,,,` sunnib tarkvara tegema neljasekundilise pausi. (Pausi kestvust valitseb register `S8`).

`^M`

- Saadab modemile lõpetava kelgu tagastamise märgi. See on juhtkood, mida enamik kommunikatsioonitarkvarast tõlgendab kelgu tagastamisena.

## Hayesi elementaarkäsustik

Tähestiku järjekorras:

## Hayesi elementaarkäsustik

Käsk | Kirjeldus | Kommentaarid
`A0` või `A` | Vastab sissetulevale kõnele |
`A/` | Kordab viimast käsku | Selle ette ei käi `AT`.
`B0` või `B` | Kõneläbirääkimised | V32 Mode/CCITT vastusejada
`B1` | Kõneläbirääkimised | Bell 212A vastusejada
`B2` | Kõneläbirääkimised | Selgitav/vaikne režiim vastamisel
`D` | Helistab | Helistab järgnevale numbrile ja alustab läbirääkimisi. `P` Pulssvalimine `T` Toonvalimine `W` Ootab teist kutsumistooni `,` Paus registris `S8` määratud ajaks (tavaliselt 2 sekundit) `;` Jääb pärast valimist käsurežiimi. `!` Ümberlülitus (toru ärapanek pooleks sekundiks nagu kõne suunamisel). `L` Valib viimase numbri
`E0` või `E` | Ilma kajata | Vastuste kaja ei saadeta arvutile
`E1` | Kaja | Saadab käsud ka arvutile (nii et kasutaja näeb, mida kirjutab)
`H0` | Hargilolek | Hargil - lahutatud
`H1` | Hargilolek | Hargilt ära
`I0` või `I` | Info või päring | See käsk sõltub väga tugevasti mudelist. `I0` tagastab tavaliselt numbri või koodi, suuremad numbrid sageli ka huvitavamat infot.
`L0` või `L` | Valjuhääldi helitugevus. Helitugevuse reguleerimise nuppudega modemitel neid võimalusi ei kasutata. | Väljas või nõrk heli
`L1` |  | Nõrk heli
`L2` |  | Keskmine heli
`L3` |  | Vali heli
`M0` või `M` | Valjuhääldi väljas | `M3` on ka üsna levinud paljudel brändidel
`M1` |  | Valjuhääldi sees kuni kaugpartneri tuvastamiseni (&ie; teise modemi kuulmiseni)
`M2` |  | Valjuhääldi on alati sees (andmete heli on kuulda pärast signaali CONNECT)
`N0` või `N` | Tagasiside kiirus | Tagasiside ainult `S37` määratud kiirusel
`N1` |  | Tagasiside suurima kiirusega, mis on suurem kui `S37` määratu
`O0` või `O` | Naaseb võrgurežiimi | Vaata ka `X1`, sest valimistooni tuvastus võib olla aktiveeritud.
`O1` |  | Naaseb võrgurežiimi pärast taandamisjada
`Q0` või `Q1` | Vaikne režiim | Väljas - näidatakse tulemuskoode, kasutaja näeb vastuseid käskudele (⪚ `OK`)
`Q1` | Vaikne režiim | Sees - tulemuskoode ei näidata, kasutaja vastuseid ei näe.
`S`n`?` |  | Registri S`n` sisu päring
`S`n`=`r`` | Salvestab | Salvestab väärtuse `r` registris S`n`
`V0` või `V` | Selgitav režiim | Tulemuskoodid arvudena
`V1` |  | Tulemuskoodid inglise keeles (⪚ `CONNECT`, `BUSY`, `NO CARRIER` &etc;)
`X0` või `X` | Smartmodem | Hayes Smartmodem 300 ühilduvad tulemuskoodid
`X1` |  | Tavaliselt lisab elementaarsetele tulemuskoodidele ühenduskiiruse, ⪚ `CONNECT 1200`
`X2` |  | Tavaliselt lisab kõnetooni tuvastamise (väldib pimevalimist ja vahel väldib `AT0`)
`X3` |  | Tavaliselt lisab hõivatud signaali tuvastamise
`X4` |  | Tavaliselt lisab nii hõivatud signaali kui kõnetooni tuvastamise
`Z0` või `Z` | Lähtestab | Lähtestab modemi salvestatud väärtustele. Mitme profiili puhul kasuta vastavalt `Z0`, `Z1` &etc; See on sama, mis `&F` tehase vaikeväärtus modemitel, millel puudub NVRAM ("non-volatile" mälu ehk selline mälu, mis hoiab andmeid ka voolu all olemata)

## Hayesi laiendatud käsustik

Ampersand-käsud

## Hayesi laiendatud käsustik

Käsk | Kirjeldus | Kommentaarid
`&B0` või `&B` | Taandamisparameetrid | Keelab automaattaandamise funktsiooni
`&B1` | Taandamisparameetrid | Lubab automaattaandamise funktsiooni
`&B2` | Taandamisparameetrid | Lubab automaattaandamise, kuid lahutab kõne, kui liin ei parane registris `S7` määratud aja jooksul
`&C0` või `&C1` | Kandja tuvastamine | Signaal on alati sees
`&C1` | Kandja tuvastamine | Märgib kaugkandjat (tavaliselt vaikimisi sees)
`&D0` või `&D` | Data Terminal Ready (DTR) | Signaali ignoreeritakse (see sõltub modemist, igatahes tuleks selle kohta otsida lisainfot oma modemi käsiraamatust!)
`&D1` | Data Terminal Ready (DTR) | Kui DTR läheb sisselülitatud olekust väljalülitatud olekusse, läheb modem käsurežiimi (ainult mõne modemi puhul)
`&D2` | Data Terminal Ready (DTR) | Mõned modemid lahutavad, kui DTR läheb sisselülitatud olekust väljalülitatud olekusse (tavaliselt on see vaikimisi sees)
`&D3` | Data Terminal Ready (DTR) | Lahutab, lähtestab modemi ja naaseb käsurežiimi DTR järgi
`&F0` või `&F` | Tehase vaikeväärtused | Üldised Hayesiga ühilduvad vaikeväärtused. Tavaliselt on seda kasulik initsialiseerimisstringis tarvitada, sest `&F1`-`&F3` seadistused võivad modemiti erineda ning tõeliselt suuri ühendusprobleeme tekitada (sest sa ei tea kunagi täpselt, mida õigupoolest teeb tootja X `&F2`). Teisalt maksab proovida ka teisi allpool toodud võimalusi: paljud probleemid lahenevad, kui lisada initsialiseerimisstringi lihtsalt `&F2` või midagi sellist. Kui sa aga alles lood initsialiseerimisstringi, on parem alustada lihtsalt käsuga `&F` ja mitte kasutada kohandatud vaikeväärtuste vormi.
`&F1` | Tehase vaikeväärtused | Tehase vaikeväärtused IBM PC-ga ühilduvale kasutajale
`&F2` | Tehase vaikeväärtused | Tehase vaikeväärtused Macile tarkvaralise tagasisidega
`&F3` | Tehase vaikeväärtused | Tehase vaikeväärtused Macile riistvaralise tagasisidega
`&G0` või `&G` | Valvetoonid | Keelab valvetoonid
`&K0` või `&K` | Kohalik vookontroll | Keelab kohaliku vookontrolli
`&K1` | Kohalik vookontroll | Lubab RTS/CTS riistvaralise kohaliku vookontrolli
`&K2` | Kohalik vookontroll | Lubab XON/XOFF tarkvaralise kohaliku vookontrolli
`&K3` | Kohalik vookontroll | Lubab RTS/CTS riistvaralise kohaliku vookontrolli
`&K4` | Kohalik vookontroll | Lubab XON/XOFF tarkvaralise kohaliku vookontrolli
`&L0` või `&L` | Helistamisrežiim | Valib helistamisrežiimi
`&M0` või `&M` | Veakontrolli režiim | Valib asünkroonse mitte-EC režiimi (sama, mis `&Q0`)
`&P0` või `&P` | Pulssvalimise suhe | USA/Kanada pulssvalimine, suhe 39%/61%
`&P1` | Pulssvalimise suhe | Briti/Hongkongi pulssvalimine, suhe 33%/67%
`&Q0` või `&Q` | Veakontrolli režiim | Asünkroonne mitte-EC režiim. Andmeid ei puhverdata. ASB on keelatud.
`&Q5` | Veakontrolli režiim | Valib V.42 EC operatsiooni (nõuab vookontrolli)
`&Q6` | Veakontrolli režiim | Asünkroonne režiim ja ASB (nõuab vookontrolli)
`&Q8` | Veakontrolli režiim | Valib alternatiivse EC protokolli (MNP)
`&Q9` | Veakontrolli režiim | Tingimuslik andmetihendus: V.42bis = jah, MNP5 = ei.
`&S0` või `&S` | DSR tegevus on valitud | Alati sees (vaikimisi)
`&S1` | DSR tegevus on valitud | Järgib EIA spetsifikatsiooni (aktiivne kandja tooni järgimine, kuni kandja kaob)
`&T0` või `&T` | Enesetest | Mudelipõhine enesetest mõne modemi puhul
`&U0` või `&U` | Trellis-koodi modulatsioon | Lubab V.32 TCM
`&U1` | Trellis-koodi modulatsioon | Keelab V.32 TCM
`&V0` või `&V1` | Vaatab aktiivseid | (ja sageli salvestatud) seadistusprofiili seadistusi (või `ATI4`)
`&W0` või `&W` | Salvestab profiili | NVRAM korral (`&W0`, `&W1` erinevate profiilide puhul). Mõningaid seadistusi ei saa salvestada. Neid sageli ei näita `&V` või `ATI4`
`&Y0` või `&Y` | Valib voolu sisselülitamisel laaditava seadistuse | Laadib profiili 0 (vaikimisi)
`&Y1` | Valib voolu sisselülitamisel laaditava seadistuse | Laadib profiili 1
`&Z`n`=`x`` | Tarkvaraline lähtestamine ja salvestatud profiili `n` laadimine | Arvesta, et kõike real pärast käsku `&Z` asuvat ignoreeritakse

## Längkriipsu- ja protsendikäsud

Käsk | Kirjeldus | Kommentaarid
`\A0` või `\A` | Märkides MNP bloki maksimaalne suurus | 64-märgiline maksimum
`\A1` | Märkides MNP bloki maksimaalne suurus | 128-märgiline maksimum
`\A2` | Märkides MNP bloki maksimaalne suurus | 192-märgiline maksimum
`\A3` | Märkides MNP bloki maksimaalne suurus | 256-märgiline maksimum
`%C0` või `%C` | Andmetihenduse lubamine/keelamine | Keelatud
`%C1` | Andmetihenduse lubamine/keelamine | MNP5 lubatud
`%C2` | Andmetihenduse lubamine/keelamine | V.42bis (BTLZ) lubatud
`%C3` | Andmetihenduse lubamine/keelamine | MNP5 & V.42bis (BTLZ) lubatud
`%D0` või `%D` | Andmetihendus | 512 BTLZ sõnastiku suurus
`%D1` | Andmetihendus | 1024 BTLZ sõnastiku suurus
`%D2` | Andmetihendus | 2048 BTLZ sõnastiku suurus
`%D3` | Andmetihendus | 4096 BTLZ sõnastiku suurus
`%E0` või `%E1` | Paomeetod | KEELATUD
`%E1` | Paomeetod | `+++AT` meetod (vaikimisi)
`%E2` | Paomeetod | `Break` `AT` meetod
`%E3` | Paomeetod | MÕLEMAD meetodid lubatud
`%E4` | Paomeetod | Keelab `OK` `+++` jaoks
`%E5` | Paomeetod | Lubab `OK` `+++` jaoks
`\J0` või `\J` | DTE automaatmäära kohendamine | Keelatud
`\J1` | DTE automaatmäära kohendamine | DTE määr kohendatakse kandjale vastavaks.
`\N0` või `\N` | Ühenduse tüüp | Normaalne ühendus (vaata kirjeldust allpool)
`\N1` | Ühenduse tüüp | Otseühendus
`\N2` | Ühenduse tüüp | MNP automaatselt usaldusväärne ühendus
`\N3` | Ühenduse tüüp | Automaatselt usaldusväärne ühendus
`\N4` | Ühenduse tüüp | V.42bis usaldusväärne ühendus faasituvastusega
`\N5` | Ühenduse tüüp | V.42bis automaatselt usaldusväärne ühendus faasituvastusega
`\N6` | Ühenduse tüüp | V.42 usaldusväärne ühendus faasituvastusega
`\N7` | Ühenduse tüüp | V.42 automaatselt usaldusväärne ühendus faasituvastusega

Otseühendus ongi lihtsalt otsene ühendus ilma igasuguse veaparanduse või andmetihenduseta. Sellisel juhul peaksid õigupoolest arvuti-modemi ja modemi-modemi kiirus olema ühesugused.

Normaalne ühendus kasutab (tark- või riistvaralist) vookontrolli saadetavate või vastuvõetavate andmete puhverdamiseks, et modem saaks andmeid saata teistsuguse kiirusega, kui neid saadab või võtab vastu arvuti. Näiteks arvuti võib saata andmeid kiirusega 57 kbps, kuid tihendust kasutades saadab modem vaid 28,8 kbps. Nii töötab enamik modemeid.

Usaldusväärne ühendus on normaalse ühenduse alaliik: kui mingil põhjusel ei saa andmetihendust või vookontrolli rakendada, ühendus katkestatakse (selles mõttes tagab taoline modem, et kõik ühendused on usaldusväärsed, sest kui nad seda ei ole, siis ühendus ju katkestatakse!)

Automaatselt usaldusväärne ühendus on enam-vähem sama, ainult et modem püüab usaldusväärse ühenduse loomiseks vajadusel uuesti läbi rääkida. Ka seda kasutab enamik modemeid.

## S-registrid

Register | Vahemik | Vaikeväärtus | Funktsioon
`S0` | Helinad 0-255 | 1-2 | Vastab helina numbrile. Ei vasta, kui on 0
`S1` | Helinad 0-255 | 0 | Kui `S0` on suurem kui 0, siis see register loendab sissetulevaid helinaid.
`S2` | 0-127 ASCII | 43 + | Paomärk käsurežiimi
`S2` | >127 |  | Ilma paomärgita
`S3` | 0-127 ASCII | 13 CR | Kelgu tagastamise (CR) märk
`S4` | 0-127 ASCII | 10 LF | Reavahetuse (LF) märk
`S5` | 0-32, 127 ASCII | 8 BS | Backspace märk
`S6` | 2-255 sekundit | 2 | Kõnetooni ooteaeg (pimehelistamine, vaata X`n`)
`S7` | 1-255 sekundit | 30-60 | Kaugkandja ooteaeg
`S8` | 0-255 sekundit | 2 | Helistamisel kasutatava komapausi aeg
`S9` | 1-255 kümnendiksekundit | 6 | Tunnustamiseks nõutav kandja tuvastamise aeg
`S10` | 1-255 kümnendiksekundit | 7-14 | Aeg kandja kaotamise ja lahutamise vahel
`S11` | 50-255 millisekundit | 70-95 | Toonide kestvus ja vahe toonvalimisel
`S12` | 0-255 kümnendiksekundit | 50 | Pausi valveaeg `+++` käsujadal
`S36` | Tagasilanguse võimaluse, kui veaparandus ebaõnnestub: 0 - lahutab 1 - rajab otseühenduse 3 - rajab normaalse ühenduse 4 - rajab MNP ühenduse, kui võimalik, vastasel korral lahutab 5 - rajab MNP ühenduse, kui võimalik, vastasel korral otseühenduse. 7 - rajab MNP ühenduse, kui võimalik, vastasel korral normaalse ühenduse | 7 | Läbirääkimiste ebaõnnestumise käsitlemine
`S37` | 1 = 300 bps 5 = 1200 bps 6 = 2400 bps 7 = 1200/75 bps (v.23 režiim) 8 = 4800 bps 9 = 9600 bps 10 = 12000 bps 11 = 14400 bps 12 = 7200 bps | 0 | Läbirääkimiste kiirus (esialgne tagasiside)

Enamikul modemitel on kümneid või isegi sadu S-registreid, kuid ainult esimesed paarkümmend on enam-vähem standardsed. Neid muudetakse selliste käskudega, nagu `ATS`n`=`N`` ja uuritakse selliste käskudega, nagu `ATS`n`?` (⪚ ``AT` `S10``=70` `S1?`` ütleb modemile, et lahutada ei tule 7 sekundi jooksul, kui teist modemit ei kuulda vastamas, ja tagastab viimati helistatud kordade arvu).