Releases: gioblu/PJON
13.1
Changelog:
- Documentation has been enhanced
- Updated the MQTTTranslate strategy to use PJON_Packet_Info by @fredilarsen
- Limited scope of some Windows-specific defines for LocalFile strategy by @fredilarsen
- add column to 1-wire comparison by @jdaandersj
- PJONDefines.h PJON_MASTER_ID default added
- SoftwareBitBang Surrogate avoid polling for ETCP
- Inline LINUX_Interface functions and remove global vars by @rainerschoe
Bugfix:
- Fixed undefined behavior when using ports by @rainerschoe
- PJONLocal examples fixed strategy inclusion error
Backward compatibility is preserved.
13.0 stable
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 usesselect
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:
- Fixed ThroughSerial and ThroughLoRa acknowledgement vulnerability in multi-master mode
This version is not backward compatible!
If you need help see update from 12.x to 13.0
12.1 stable
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:
- DualUDP back-off frequency reduced to avoid performance loss by @fredilarsen
- DualUDP peformance loss on ESP8266 fixed by @fredilarsen (0325299)
Backward compatibility is preserved.
12.0 stable
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 (#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 inuint8_t
- PJON send functions
payload
parameter is now of typeconst void *
- Strategy
send_string
andreceive_string
method names changed tosend_frame
andreceive_frame
- Security policy added
Bugfix:
- Fixed ESP32 compilation error on Arduino 1.8.6+ by @mxbranson
- Added to
ThroughSerial
andThroughSerialAsync
the full buffer handling (#288) by @chestwood96
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
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:
- ThroughSerialAsync strategy developed by @sticilface, it supports non-blocking data reception and has a higher performance than ThroughSerial in most usecases
- ESPNOW strategy developed by @xlfe added enabling communication over the ESPNOW protocol
- DualUDP strategy combining the best of LocalUDP and GlobalUDP by @fredilarsen
- Wiznet W5500 support added (8979977) by @fredilarsen
- Support to Network Address Translation (NAT) in switch (72a93b0) added by @fredilarsen
- Linux Serial system calls implemented within the interface, wiring-pi discarded, as proposed by @xlfe
OS_PREAMBLE_PULSE_WIDTH
added to OverSampling to enable preamble length configuration (53769a4)PJON_BROADCAST
,PJON_MASTER_ID
andPJON_NOT_ASSIGNED
constants can be predefined and changed if required as requested by Adrian Slawinski- To ease users and developers working upon PJON all internal inclusions have been changed from
include <...>
toinclude "..."
(6fcfd75) as requested by @Girgitt - Documentation and specifications have been expanded and corrected
Bugfix:
- Avoid compilation error using Arduino 1.8.6 (#245) reported by @Girgitt
- Examples receiver function moved to avoid compilation error (#205) reported by @fcastrovilli
- Packet id forwarding in router mode bug fixed (9457bc3) reported by @Halytskyi
- ThroughSerial WIN32 bug fixed (9b5ccdc) reported by @Girgitt
- AnalogSampling
can_start
bug fixed (#240) reported by @andrei-volkau - ThroughSerial and ThroughSerialAsync
can_start
bug fixed (1f61a10) - PJONMaster and PJONSlave compilation error fixed (#248) reported by @maniekq
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
Changelog:
- Documentation and specifications enhanced and corrected
- HC-12 LocalChat messaging application example added
- RS485-BlinkWithResponse example added
- Arduino Nucleo ThroughSerial support added
- Arduino STM32F1 SoftwareBitBang support added by @osman-aktepe
- Arduino ESP32 SoftwareBitBang support by @Jorgen-VikingGod
- LINUX ThroughSerial early support added by @drtrigon
- Apple MacOS X LocalUDP and GlobalUDP support (#225) assessed by @xlfe
- More reliable startup of LUDP-SWBB switches by @fredilarsen
PJON_MAX_PACKETS = 0
routers support added by @fredilarsen- Improved routing robustness for non-present devices by @fredilarsen
- ThroughSerial SoftwareBitBangSurrogate example added by @drtrigon
- ThroughSerial
set_RS485_delay
setter added to configure enable pin timing (#210) by @hyndruide - ThroughSerial RS485 wait for txe pin state change by @fabpolli
- Added "Warning" section as suggested by @drtrigon
PJON_INCLUDE_ANY
documentation added by @sticilface- AnalogSampling, Oversampling and SoftwareBitBang pin handling optimization, -36 bytes of program memory
- Header type was
uint16_t
now isuint8_t
, -46 bytes of program memory (506c936) send_packet
,send_packet_blocking
andsend
default header parameter value has been changed fromPJON_FAIL
toPJON_NO_HEADER
or01001000
(506c936)PJON_DELAY
system call added
Bugfix:
11.0
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
withcheck_slaves_presence
method can discard ids of slaves that are unreachablePJONMaster
andPJONSlave
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 fromuint8_t
touint16_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:
- ATtiny85
PJON_IO_PIN_TO_BIT
bugfix (6f55069) - Many compiler warnings removed
- Fix to WINX86 Serial interface (5c58e94) reported by @sigmaeo
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
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:
- PJONMaster ensure rid uniqueness on
PJON_ID_REFRESH
request (0188e8a) - PJONSlave
aquire_id_multi_master
bugfix (3443bc5) - ThroughSerial failed reception type bugfix (1a5b436)
- ThroughSerial bytestuffing bugfix (ae58366) reported by @galitskiy
- Fixed
millis
in WINX86 and LINUX interfaces (7a3fa29) by @fredilarsen - Fixed
9
minor compiler warnings
10.0
New specifications:
- PJON protocol specification v3.0
- PJON Dynamic addressing v2.0
- PJON known protocols list
- PJDLS v2.0 - TSDL v2.0 - SFSP v1.0
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 (#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:
- WINX86 interface byte redefinition error bugfix (#151) reported by @gonnavis
- LINUX interface byte redefinition fix (8b604da)
- EthernetUdp.h inclusion error fix reported by @ibantxo
- Dynamic addressing
PJON_NOT_ASSIGNED
bugfix (#152) reported by @maxidroms83 - Removed packet state snooping from examples, using
update
call result instead
This version is not backward compatible!
9.1
Changelog:
- SoftwareBitBang ATtiny84 compatibility added
- SoftwareBitBang ATtiny84A compatibility added
- SoftwareBitBang Digispark ATtiny85 USB board compatiblity assessed by @dontsovcmc
- Added donation links
Bugfix:
- PlatformIO fix broken manifest by @ivankravets
send_packet_blocking
function bugfix (c749139)