9.0

@gioblu gioblu released this Oct 30, 2017 · 785 commits to master since this release

Assets 2

PJON v9.0 is orders of magnitude more reliable and secure than older versions because of some key changes made in its network protocol stack. Its compatibility has been vastly expanded now covering TCP or UDP standard networking on Windows and Linux real time operative systems.

New specifications:

Changelog:

  • Frame separation feature has been added to each data link or strategy to higher reliability and avoid a set of vulnerabilities. Frame separation is obtained, in some cases, like in TSDL or PJDLS using byte-stuffing, in others like PJDL or PJDLR using a unique low level binary symbol
  • An additional CRC8 has been added after the length to avoid the length corruption vulnerability, that is affecting CAN and many other alternatives, providing with higher reliability at the cost of 1 byte of overhead
  • CRC8 0x8c polynomial used in 1-Wire and PJON older versions has been changed with 0x97, this polynomial has the largest possible length (119 bit) at which HD=4 can be achieved with 8-bit CRC, offering higher reliability on longer strings
  • CRC32 is automatically applied if packet length exceeds 15 bytes, packets requesting CRC8 longer than 15 bytes are considered unacceptable to by default higher reliability and avoid a set of vulnerabilities
  • More accurate header consistency check
  • WINX86 support and examples to EthernetTCP, LocalUDP and GlobalUDP enabling PJON to run over the internet on windows computers by @fredilarsen
  • LINUX support and examples to EthernetTCP, LocalUDP and GlobalUDP enabling PJON to run over the internet on linux computers by @fredilarsen
  • ESP8266 support and examples to GlobalUDP by @fredilarsen
  • send_from_id added id parameter to support async ack packet routing
  • OverSampling, AnalogSampling and SoftwareBitBang communication mode names switched to numeric constants, see related specifications
  • ThroughSerial HC-12 wireless module compatibility and related examples added
  • ThroughSerial RS485 related examples added
  • SoftwareBitBang RecursiveAcknowledge example added using the recursive acknowledgment pattern
  • SoftwareBitBang PacketSeparationTest example added able to test frame separation accuracy

Bugfix:

  • Fix uninitialized response by @Girgitt (b0d2711)
  • receive length check bugfix (e1b97e2)
  • PJONMaster RID condition bugfix (0f1d265)
  • receive acknowledge condition bugfix (92dcdcd)
  • Avoid async ack response if router (18a5857)

This version is not backward compatible, all devices must be updated!

It is recommended to use VPN and/or other security measures when allowing devices to communicate across the internet.