Modul sk.ipesoft.sgcom.udp slúži na vytvorenie dojmu spojovo orientovanej komunikácie cez UDP, aby bolo možné použiť existujúcu implementáciu IEC62056-47 a DLMS/COSEM protokolu v knižnici jDLMS na komunikáciu s elektromermi ADDAX NP73E v režime s dynamickou IP adresou a na UDP komunikáciu s MOXA zariadením.
Trieda DatagramWrapperServerImpl riadi celý subsystém. Otvára UDP porty, na ktoré môžu prichádzať notifikácie z elektromerov, v ktorých oznamujú svoju aktuálny IP adresu a svoj unikátny identifikátor. Každý z týchto portov je obsluhovaný inštanciou triedy DatagramSocketWrapper, ktorý volaním createStreamedDatagramSocket vytvára objekt typu StreamedDatagramSocket. Ten už reprezentuje „spojovo orientovaný kanál" medzi SGCom-om a elektromerom a poskytuje InputStream a OutputStream ako aj možnosť nastaviť timeout na čítanie.
Každý prichádzajúci UDP datagram je spracovaný inštanciou triedy DatagramSocketWrapper. Ak je to datagram od „pripojeného" partnera – tzn. existuje preň inštancia triedy StreamedDatagramSocket – je presmerovaný do príslušného StreamedDatagramSocket-u. V opačnom prípade je presmerovaný do DatagramWrapperServer-a.
V prípade komunikácie s MOXA zariadením je spojenie zjednodušené na jednu inštanciu DatagramSocketWrapper-a a jednu inštanciu StreamedDatagramSocket-u.
Trieda DatagramTransportLayer obaľuje triedu DatagramSocketWrapper do rozhrania org.openmuc.jdlms.transportlayer.client.TransportLayer, aby ju bolo možné použiť ako zásuvný modul do knižnice jDLMS.
0 komentárov