KISS-protokolla

Radioamatööriwikistä
(Ohjattu sivulta KISS)
Siirry navigaatioon Siirry hakuun

KISS protokolla mahdollistaa mielivaltaisen binaarisen datapaketin siirron TNC radiomodeemin ja tietokoneen välillä. Käytetty protokolla on läheistä sukua SLIP protokollalle. Datavirrassa kaikki 8-bit tavuarvot edustavat itseään, paitsi muutama tapaus:

Hex arvo Nimi Selite
0xC0 KISS_FEND KISS Frame End, kehyksen loppu, ei koskaan esiinny datassa
0xDB KISS_FESC KISS Frame Escape, perässä seuraa KISS_TFEND tai KISS_TFESC
Ei koskaan esitä itseään datavirrassa
0xDC KISS_TFEND Esiintyy sekä yksin, että tavun KISS_FESC edeltämänä. KISS_FESC:in
kanssa esiintyessään tulkitaan tavuksi 0xC0, muutoin tavuksi 0xDC.
0xDD KISS_TFESC Esiintyy sekä yksin, että tavun KISS_FESC edeltämänä. KISS_FESC:in
kanssa esiintyessään tulkitaan tavuksi 0xDB, muutoin tavuksi 0xDD.

KISS_FEND erottelee kehyksiä toisistaan samaan tapaan kuin HDLC:n "FLAG". Perättäiset FEND/FLAG:it tarkoittavat että saapunut kehys on tyhjä, eli kehystä ei ollut.

Kehyksen ensimmäinen tavu kertoo kehyksen toimintamoodin ja multidrop tapauksessa että minkä numeroisen TNC:n kanssa keskustellaan.

7 6 5 4 3 2 1 0
KISS TNCID[3..0] CMD[3..0]
SMACK KISS
SMACK
TNCID[2..0] CMD[3..0]

Missä bitti 7 on asetettu, kun puhutaan SMACK:ia. Tällöin multidrop kytkennässä voi olla enintään 8 modeemia, mikä sekin kyllä yleensä riittää.

SMACK:ssa host-koneen pitää kätellä linkillä olevat TNC:t oikein, jotta ne alkavat puhua SMACKia.


CMD-bittejä käytetään hostin puhuessa TNC:lle, kun TNC lähettää paketteja hostille, CMD = 0.

Cmd Funktio Selite
0 Datakehys HDLC datakehys ilman CRC summaansa
1 TXDELAY The next byte is the transmitter keyup delay in 10 ms units. The default start-up value is 50 (i.e., 500 ms).
2 P The next byte is the persistence parameter, p, scaled to the range 0 - 255 with the following formula:
P = p * 256 - 1
The default value is P = 63 (i.e., p = 0.25).
3 SlotTime The next byte is the slot interval in 10 ms units. The default is 10 (i.e., 100ms).
4 TXtail The next byte is the time to hold up the TX after the FCS has been sent, in 10 ms units. This command is obsolete, and is included here only for compatibility with some existing implementations.
5 FullDuplex The next byte is 0 for half duplex, nonzero for full duplex. The default is 0 (i.e., half duplex).
6 SetHardware Specific for each TNC. In the TNC-1, this command sets the modem speed. Other implementations may use this function for other hardware-specific functions.
FF Return Exit KISS and return control to a higher-level program. This is useful only when KISS is incorporated into the TNC along with other applications.

KISS laajennoksia

Laajennettuja versioita KISS:istä ovat erilaiset tarkistussummat kehyksen perässä, jotta sarjalinjalla tapahtuva liikenteen vikaantuminen huomattaisiin.

Tarkistussummatapoja on useita:

  • Ei mitään (KISS)
  • XOR summa datatavuista (BPQ, alias "AEACRC")
  • CRC16 (SMACK) (Stuttgart Modified Amateurradio-CRC-KISS)

Tarkistussummat lasketaan datalle ennen kuin se lähetetään sarjalinjalle KISS FESC formatointiin ja tarkistetaan tuon formatoinnin purun jälkeen.

BPQCRC

Tarkistussummat lasketaan datalle ennen kuin se lähetetään sarjalinjalle KISS FESC formatointiin ja tarkistetaan tuon formatoinnin purun jälkeen.

Tarkistussumma lasketaan keräämällä XOR-summa koko kehyksestä alun komentotavu mukaanlukien ja tarkistuksessa lopputuloksen pitää olla nolla.

Vaikka tämän nimessä onkin "CRC", kyse ei ole mistään syklisestä polynomista, vaan silkasta XOR-summasta. Jos sama bitti nyrjähtää päinvastaiseksi kahdessa eri tavussa datakehystä, tarkistussumma on oikein vaikka data on roskaa.

Tätä tarkistetta käytettäessä sekä isäntäkone että TNC pitää asettaa sitä käyttämään, minkäänlaista kättelyä ei ole tarjolla (vrt. SMACK.)

SMACK

SMACK (Stuttgart Modified Amateurradio-CRC-KISS) laskee datakehykselle CCITT CRC-16 tarkistussumman polynomilla . Tämä huomaa useammankin bitin virheet datakehyksessä huomattavasti suuremmalla todennäköisyydellä kuin "BPQCRC". Sama CRC-16 algoritmi tarkistaa myös radiolla kulkevan HDLC kehyksen sisällön joskin tarkiste on eri, koska radiolla ei lähetetä CMD-tavua.

Tarkistussumma lasketaan vain datapaketeille (CMD=0), ei koskaan management-paketeille.

Tarkistussummat lasketaan datalle ennen kuin se lähetetään sarjalinjalle KISS FESC formatointiin ja tarkistetaan tuon formatoinnin purun jälkeen.

Lähetettäessä datakehystä, tarkistussumma lasketaan komentotavusta datan loppuun ja CRC-16 tuloksen kaksi tavua liitetään datakehyksen perään samalla kehystä pidentäen.

SMACK:ia TNC:ltä vastaanotettaessa tarkistussumma lasketaan koko SMACK datakehyksen yli komentotavusta alkaen CRC-16 tavut mukaanlukien. Kehystä tarkistettaessa CRC-16 lopputuloksen pitää olla taas nolla.

SMACK kykyiset TNC:t eivät käynnistyessään puhu SMACK:ia, vaan perusversiota. Ero näkyy alun komentotavun ylimmällä bitillä joka on ykkönen vain kun kyseessä on SMACK kehys.

Isäntäkone lähettää yhden SMACK datakehyksen TNC:lle ja jatkaa lähettämistä KISS:inä. Jos TNC tunnistaa SMACK kehyksen ja hyväksyy sen, sitten se vaihtaa toimintamoodinsa SMACKiin ja alkaa lähettää kaikki datakehyksensä SMACK:ina. Kun isäntäkone saa SMACK kehyksen, se vaihtaa omankin toimintamoodinsa SMACKin lähettämiseen.

FLEXNET KISS

Toinen tapa tehdä sama kuin mitä SMACK tekee.

Tunnetaan myös nimillä FlexKISS, FlexCRC, RMNC-KISS, CRC-RMNC. Käytetty polynomi, alustusmenettely ja jälkikäsittely poikkeavat CRC-16:sta. Ehjällä paketilla tarkistussumma on 0x7070, kun CRC tavut on laskettu mukaan.


Linkkejä: