PJON Versions Save

PJON (Padded Jittering Operative Network) is an experimental, arduino-compatible, multi-master, multi-media network protocol.

13.0

3 years ago

New specifications:

  • PJON v4.0 includes the hardware identification, the hop count and deprecates the asynchronous acknowledgement
  • PJDL v5.0 includes a coherent specification of timing and tolerance of each mode, a new preamble able to reduce retransmissions and specifies the timeout to be derived from the length of the frame instead of requiring a common static configuration
  • TSDL v3.0 includes a more reliable acknowledgement exchange

Changelog:

  • Sender's and recipient's MAC address can be optionally included and used for addressing
  • The hop count is included in shared mode to enable more advanced routing schemes
  • The library can now be included and used more easily, see configuration
  • SoftwareBitBang implements PJDL v5.0
  • SoftwareBitBang full support for STM32F103/BluePill added by @jcallano
  • ThroughSerial implements TSDL v3.0 and receives data asynchronously
  • Zephyr support and examples by @Cimex97
  • Routing improvements and examples by @fredilarsen
  • The LINUX interface now uses termios2 for generic baudrate support by @callalilychen
  • The LINUX interface delayMicroseconds now uses select to reduce the CPU usage by @Girgitt
  • ESPNOW can use MAC addresses directly by @porkyneal
  • Send functions can now receive a PJON_Packet_Info, see documentation
  • The asynchronous acknowledgement has been removed
  • Bus id getter and setter added

Bugfix:

This version is not backward compatible! If you need help see update from 12.x to 13.0

12.1

4 years ago

New specifications:

  • PJDL v4.1 includes the maximum range of each mode experimentally determined by @jdaandersj
  • PJON v3.2 is updated with more detailed description of the model and its procedures

Changelog:

  • PJONLocal class implements a subset of the PJON protocol's features and it was developed to enable PJON networking on very limited microcontrollers, where even few bytes of ram can make a difference
  • MQTTTranslate strategy can connect PJON networks and more standard applications with each other using MQTT, developed by @fredilarsen
  • SoftwareBitBang maximum range is 800-2000m, experimentally determined by @jdaandersj
  • SoftwareBitBang ATmega328PB support added by @Willie68 (#309)
  • PJONVirtualBusRouter detection of missing/moved devices added by @fredilarsen
  • ESPNOW PlatformIO examples added by @justoke
  • Enhanced routing documentation

Bugfix:

Backward compatibility is preserved.

12.0

4 years ago

New specifications:

  • PJDL v4.0 includes the response initializer to avoid a set of vulnerabilities in multi-master mode
  • PJDLR v3.0 is now able to keep the medium busy in between an exchange and includes the response initializer to avoid a set of vulnerabilities in multi-master mode

Changelog:

  • The Dynamic addressing feature has been moved in the OSPREY repository because of development ease
  • SoftwareBitBang now implements PJDL v4.0 and it is more secure if used in multi-master mode
  • OverSampling now implements PJDLR v3.0, it is more secure and it supports multi-master mode without requiring a common configuration for all devices
  • LocalFile strategy uses a file present on the hard drive to let multiple processes communicate on the same machine, can be used for inter-process communication, simulation, test applications and networks on a real time operative system. Developed by @DetAtHome and @fredilarsen
  • ThroughLoRa does not support anymore the synchronous acknowledgement and retransmission because of the inherent limitations of LoRa (ALOHA) and its usage policy
  • InteractiveRouter synchronous acknowledgement transmission added (https://github.com/gioblu/PJON/issues/292) proposed by @chestwood96
  • SoftwareBitBang SAMD21 (Arduino Zero) supported pins added and timing optimized
  • Early support for Android added by @gnomathibus
  • Added support for STM32-duino installed via boards.json by @chestwood96
  • Optional separation of functions declarations for linux interface by @mattze96
  • PJON data buffer was of type char now changed in uint8_t
  • PJON send functions payload parameter is now of type const void *
  • Strategy send_string and receive_string method names changed to send_frame and receive_frame
  • Security policy added

Bugfix:

If you want to know more and support PJON see the PJON protocol handbook and the PJON 12.0 big box.

This version is not backward compatible!

11.2

5 years ago

New specifications:

  • PJON Protocol specification v3.1 simplifies the model, and more clearly specifies the encoding
  • PJDL v3.0 more clearly specifies the medium access method and the communication modes
  • TSDL v2.1 more clearly describes the medium access method and the limits of multi-master mode

Changelog:

Bugfix:

If your setup using W5x00 Ethernet shield and UDP freezes after an undetermined amount of time, it is affected by a bug present in the Ethernet library isolated and fixed by fred here.

Backward compatibility is preserved.

11.1

5 years ago

Changelog:

Bugfix:

11.0

6 years ago

Changelog:

  • The src directory now contains all the source code
  • SimpleSwitch, Switch, Router, DynamicRouter, InteractiveRouter and VirtualBusRouter classes added to handle switching and transparent routing for tree topologies by @fredilarsen
  • Any strategy added including virtual inheritance and supporting strategy dynamic handling after instantiation and dynamic collections of PJON objects using different strategies by @fredilarsen
  • ThroughLoRa documentation added by @matheus-garbelini
  • SoftwareBitBang mode 2 and 3 are more reliable and more easily applied on limited micontrollers
  • SoftwareBitBang ATMega1284P support by @fabpolli
  • SoftwareBitBang examples with 2 instances now use pins of different port groups to avoid cross-talk
  • OverSampling examples with 2 instances now use pins of different port groups to avoid cross-talk
  • PJONMaster with check_slaves_presence method can discard ids of slaves that are unreachable
  • PJONMaster and PJONSlave addressing documentation added
  • ThroughSerial WINX86 example building process simplified
  • Packet id parameter added to send_packet_blocking
  • The error callback parameter data type has been changed from uint8_t to uint16_t to contain all possible packet lengths and a pointer to a custom function has been added to ease integration:
  // Older versions
  void error_handler(uint8_t code, uint8_t data) {
    // User's code here
  }

  // v11
  void error_handler(uint8_t code, uint16_t data, void *custom_pointer) {
    // User's code here
  }

Bugfix:

Communication backward compatibility is preserved except for SoftwareBitBang mode 2 and 3. All programs using the error handler must be updated as described above.

10.1

6 years ago

Changelog:

  • Documentation expanded and corrected
  • SoftwareBitBang current limiting resistors docs added (#160) reported by @filogranaf
  • Initial LoRa support with ThroughLoRa strategy developed by @Matheus-Garbelini
  • ThroughLoRa examples added by @Matheus-Garbelini
  • Port support in surrogate sketch by @fredilarsen

Bugfix:

10.0

6 years ago

New specifications:

Changelog:

  • Extended header feature removed saving 200 bytes of program memory
  • Implementation updated to operate with both little and big endian byte order
  • SFSP v1.0 frame separation is more secure thanks to the new xor based flags obfuscation method
  • Packet id optional feature added to avoid duplication and to ensure uniqueness
  • Dynamic handling of known encapsulated protocols is supported with the use of ports
  • The PJON known protocols list is proposed as the shared dictionary of supported protocols
  • Dynamic addressing using a known protocol port id 1 instead of a dedicated header bit
  • ModuleInterface protocol added to the PJON known protocols list obtaining port id 100
  • Broadcast support added to GlobalUDP by @fredilarsen
  • EthernetTCP, LocalUDP and GlobalUDP little and big endian byte order support by @fredilarsen
  • Optional class member callback feature added (https://github.com/gioblu/PJON/issues/122) by @fredilarsen
  • SoftwareBitBang ClassMemberCallback example added
  • SoftwareBitBang ESP8266 SpeedTest example added
  • SoftwareBitBang UsePacketId example added showcasing the packet id feature
  • SoftwareBitBang PortsUseExample example added showcasing the port identification feature

Bugfix:

This version is not backward compatible!

9.1

6 years ago

Changelog:

  • SoftwareBitBang ATtiny84 compatibility added
  • SoftwareBitBang ATtiny84A compatibility added
  • SoftwareBitBang Digispark ATtiny85 USB board compatiblity assessed by @dontsovcmc
  • Added donation links

Bugfix: