KISS protokoll

Innen: HamWiki
A lap korábbi változatát látod, amilyen HG2ECZ (vitalap | közreműködések) 2006. augusztus 5., 11:09-kor történt szerkesztése után volt. (további információk)
Ugrás a navigációhoz Ugrás a kereséshez

A KISS ("Keep It Simple, Stupid" = "Hagyd meg egyszerűnek, butának") protokoll a PC és a külső TNC közötti kommunikációját definiálja. A KISS csomag az AX.25 adatcsomagon kívül TNC alacsonyszintű vezérlő információit is átviszi. A KISS helyett gyakran a többet tudó 6PACK protokollt használják.

A TNC új feladata

Amíg régen a TNC (Terminal Node Controller) a megjelenítő terminált vezérelte, az új felállásban az alábbi funkciók maradtak neki:

  • PC-től aszinkron RS232 (vagy egyéb) interfészen keresztül kapott adatcsomagból az elküldendő rész HDLC keretezését és bitbeszúrást ő végzi.
  • A TNC végzi a full/half duplex csatorna kezelését.
  • A TNC végzi a DAMA protokollnál az adásengedélyezés figyelését.

Azaz elmondható, hogy a TNC-re kizárólag azok a feladatok maradtak, amik a valós idejű rádiócsatorna optimális használatához elengedhetetlenek. Ezáltal az operációs rendszernek nem kell 10-100 ms pontossággal csomagot időzíteni, csak az elküldendő információt kell bármely pillanatban a TNC számára átküldeni, illetve a TNC-t felprogramozni, vezérelni.

A KISS csomag tulajdonsága és felépítése

  • A KISS csomag nem tartalmaz HDLC keretezést.
  • A HDLC keret analógiájára a csomag elejét és végét egyaránt egy speciális karakter jelzi. Ha az adatban szerepel END karakter, azt az alábbi részben ismertetett módon helyettesítik (karakterbeszúrás)
  • A PC-TNC átvitel során eredetileg nincs külön ellenőrzőkód (CRC), később lehetőséget adtak rá.
  • Nincs handshake, azaz nincs visszajelzés a fogadó féltől a PC-TNC kapcsolat során.
  • Adatcsomag illetve a vezérlőcsomag elkülönül. Első byte határozza meg, hogy adat (0x00) vagy parancs (0xff).
  • Ha adatcsomag, akkor a felső 4 bit a csatorna számot határozza meg, azaz elviekben 16 adatcsatorna létezhet.

A csomag legelső byte-ja határozza meg, hogy mi van a csomagban illetve mely csatornára vonatkozik.

<HIGHLIGHTSYNTAX language="c">/* TNOS devparam.h */ /* Alábbi értékek esetén a felső 4 bit a csatornaszám lesz */

  1. define PARAM_DATA 0 /* adatcsomag következik */
  2. define PARAM_TXDELAY 1 /* TXdelay következik (1 byte) */
  3. define PARAM_PERSIST 2 /* perzisztencia (1 byte) */
  4. define PARAM_SLOTTIME 3 /* slottime (1 byte) */
  5. define PARAM_TXTAIL 4 /* TXtail értéke (1 byte) */
  6. define PARAM_FULLDUP 5 /* Fullduplex? igen/nem */
  7. define PARAM_HW 6 /* Hardver */
  8. define PARAM_MUTE 7 /* TX letiltása/engedélyezése */

/* Innentől az interfész közös paraméterei */

  1. define PARAM_DTR 8
  2. define PARAM_RTS 9
  3. define PARAM_SPEED 10
  4. define PARAM_ENDDELAY 11
  5. define PARAM_GROUP 12
  6. define PARAM_CRCREQ 12
  7. define PARAM_IDLE 13
  8. define PARAM_MIN 14
  9. define PARAM_POLL 14
  10. define PARAM_MAXKEY 15
  11. define PARAM_WAIT 16
  12. define PARAM_DOWN 0x81
  13. define PARAM_UP 0x82
  14. define PARAM_BLIND 0x83
  15. define PARAM_RCV_MODE 0xfd
  16. define PARAM_RETURN2 0xfe
  17. define PARAM_RETURN 0xff

</HIGHLIGHTSYNTAX>

Escape-szekvenciák

A csomag végét az END karakter jelzi. Azonban ez az érték a továbbítani kívánt bináris adatok közt is előfordulhat. Ha előfordul, akkor egy ESC ESC_END karakter páros lesz továbbítva. Azonban ezzel előkerül egy másik foglalt karakter is, az ESC. Ennek adatban való előfordulásakor ESC ESC_ESC karakterpáros lesz küldve, vevőoldalon pedig visszaállítva az eredeti bináris karakter.

Alábbiakban látható az escape-szekvenciák valódi oktális értéke. (0100 oktális == 0x40 hexadecimális == 64 decimális érték)

<HIGHLIGHTSYNTAX language="c">/* SLIP/KISS protokol karakterek (Linux kernel forráskódjából mellékelve) */

  1. define END 0300 /* jelzi a keretvéget */
  2. define ESC 0333 /* jelzi a byte beszúrást */
  3. define ESC_END 0334 /* ESC ESC_END helyettesíti az END karakterértékkel egyező adatkaraktert */
  4. define ESC_ESC 0335 /* ESC ESC_ESC helyettesíti az ESC karakterértékkel egyező adatkaraktert */

</HIGHLIGHTSYNTAX>


Bővebb információ: