OpenNNGP

From OpenCITT

Jump to: navigation, search

Here you will find information about the TCP/UDP based "open NetNode Grid Protocol".

openNNGP refers to the "open NetNode-Grid-Protocol", an TCP and/or UDP based open network protocol specification defined by the opencitt team it will be used to enable standardized communication between openCITT and some decentralized NetNodes building a IP-net based data grid. See Hardware for openNNGP enabled controller module projects.

Beware, this is still in specification phase, though it got implemented and works for communication between openCITT and some net nodes.

Some thoughts

- use connection based TCP vs. packet based UDP
- a netnode registrates with another to get some of its data, i.e. openCITT registrates with a NNGP-enabled mcu unit with an speed sensor attached to get some dead-reckoning capabilities for map-navigation within tunnels
  with TCP this might be done by establishing a connection and sending message to request the speed signal at a desired update rate

Protocol version 1 definition:

- version 1 only supports UDP on the openNNGP port _t.b.d_
- data server has to send openNNGP packets freerunning to data client's ip/mac without the need of initialization at the moment
- data is x86 format (little/big endian?!?, tell me)
- one udp packet consists of an openNNGP header and a limited number of payload packages to not exceed the version 1 udp packet maximum length of 255 bytes
- the version 1 header consists of [version(one byte),length(one byte)] where version is always 0x01 and length is the number of bytes of header+payload thus limiting one openNNGP packet to a maximum size of 255 bytes.
- one payload package consists of a payload command byte (0x01=data_float), option byte for additional command options, two byte data-id (identifying data channel), 4 byte float containing data value
- see openNNGP commands for defined payload commands

openNNGP v1 Frame

  • header * payload * payload * ...... *

where header is

  • 0...........7*8......15*
  • 10000000*Length*

and payload is

  • 0...........7*8......15*16....23*24....31*32...........63*
  • 10000000*option *ID_L *ID_H *Data *