M2M: UDP search: Porovnání verzí

Řádek 20: Řádek 20:
  
 
POZOR - kde \n a \r jsou jednoznakové položky !
 
POZOR - kde \n a \r jsou jednoznakové položky !
 +
 +
Protože hlavička je kratší než typická minimální délka UDP payloadu, je vhodné zbytek paketu (za hlavičkou) vyplnit 0x00, do potřebné délky.
  
  
Řádek 43: Řádek 45:
 
   n*x      |  TYPE-LENGTH-VALUE (TLV) pairs
 
   n*x      |  TYPE-LENGTH-VALUE (TLV) pairs
  
Seznam TLV párů, tak jak jsou (vždy napevno, ve stejném pořadí) umístěny v datové struktuře:
+
Hodnota "n" je pevně dána protokolem (= 6) a hodnota "x" se liší pro každý specifický TLV pár (viz dále).
 +
 
 +
Seznam TLV párů, tak jak jsou umístěny v datové struktuře (vždy o obsahu rozhoduje hodnota TYPE):
  
 
   TYPE | name                    |  LEN (bytes)
 
   TYPE | name                    |  LEN (bytes)
Řádek 63: Řádek 67:
  
 
Takže stačí postupně číst jednotlivé TLV struktury, sledovat jejich délku, a vše je k dispozici. Jednotlivé TLV struktury jsou na sobě těsně navázány (packed).
 
Takže stačí postupně číst jednotlivé TLV struktury, sledovat jejich délku, a vše je k dispozici. Jednotlivé TLV struktury jsou na sobě těsně navázány (packed).
 
 
== info ==
 
 
stránka se připravuje
 

Verze z 19. 7. 2023, 13:27

UDP SEARCH

Pomocí speciálního protokolu, kdy se data přenášejí prostřednictvím UDP, je možné získávat informace z výrobků řady SDS/OnlineTechnology.

PORT 20484

Komunikace probíhá formou DOTAZ - ODPOVĚĎ. To znamená, že ten, kdo má o informace zájem (vzdálený uživatel) pošle dotaz (korektně vyplněný UDP paket, viz dále) a obratem obdrží od zařízení odpověď, UDP paket s informacemi.

Tato funkcionalita se využívá primárně pro nalezení všech modulů SDS, které jsou na dané podsíti - často v situaci, kdy neznáme přesnou IP adresu daného modulu, a chceme takový modul přesto najít a přistupovat k němu.


Dotaz

Aplikace musí do SDS odeslat správně formulovaný dotaz.

Dotazem je UDP paket, který obsahuje následující datový payload (23 bajtů):

AN-D-SEARCH * SDS/1.0\n\r

POZOR - kde \n a \r jsou jednoznakové položky !

Protože hlavička je kratší než typická minimální délka UDP payloadu, je vhodné zbytek paketu (za hlavičkou) vyplnit 0x00, do potřebné délky.


Odpověď

Modul SDS odpoví, pokud obdrží správně formulovaný dotaz. Odpověď obsahuje řadu doplňujících informací, které lze vyhodnotit.

Odpovědí je UDP paket, který obsahuje následující datový payload (hlavička 23 bajtů + další datové položky):

AN-D-SREPLY * SDS/1.0\n\r

POZOR - kde \n a \r jsou jednoznakové položky !


Následující datová struktura (navazuje hned na hlavičku) - všechny hodnoty LITTLE ENDIAN:

 length B  |  contents
-----------+---------------------------------
 TBD       |   reserved
-----------+---------------------------------
 4         |   version (actual value: 0x01)
-----------+---------------------------------
 n*x       |   TYPE-LENGTH-VALUE (TLV) pairs

Hodnota "n" je pevně dána protokolem (= 6) a hodnota "x" se liší pro každý specifický TLV pár (viz dále).

Seznam TLV párů, tak jak jsou umístěny v datové struktuře (vždy o obsahu rozhoduje hodnota TYPE):

 TYPE | name                    |  LEN (bytes)
------+-------------------------+----------------
 0x01 | SDS board version       |  1
 0x02 | SDS MAC addr            |  6
 0x04 | SDS IP+NM+GW+WP+SUP     |  16
 0x08 | SDS sysLocation         |  33
 0x10 | SDS flags               |  8
 0x11 | OEM short string        |  33 

Každá TLV položka se skládá z následující struktury:

 LEN (B)  | item
----------+----------
  1       | length = x
  1       | TYPE
  x       | contents

Takže stačí postupně číst jednotlivé TLV struktury, sledovat jejich délku, a vše je k dispozici. Jednotlivé TLV struktury jsou na sobě těsně navázány (packed).