A simple library for building and parsing data frames for serial interfaces (like UART / RS232)
This release adds support for custom checksums, the 1-wire type XOR8 and for sending multi-part frames.
Multi-part frames can have their payload generated on-the-fly without having it all available at once to be passed to the send functions. Those are the *_Multipart
send functions.
See the updated README.MD for details.
Some changes are needed to update to this version:
#define TF_USE_MUTEX 1
size_t
were replaced with uint32_t
. This includes TF_WriteImpl()
. Update your TF_WriteImpl()
to use uint32_t
for the last argument.TF_ClaimTx()
now returns false if the mutex could not be claimed. This results in the Send functions returning false and a message being printed using TF_Error()
, if providedThis release adds a debug logging support using a TF_Error(format, ...)
macro defined in TF_Config.h
.
The macro is public and can be also used by higher level application logic relating to TinyFrame in error situations.
#define TF_Error(format, ...) printf("[TF] " format "\n", ##__VA_ARGS__)
Make sure to update your config file before installing this update.
If you don't want debug logging, use
#define TF_Error(format, ...)
(without anything to call)
there was a bug caused by reckless function rename
make it possible for a received message to have the maximum possible size that can fit in the rx buffer
This is how it was meant to be, but there was a regression in version 2.0 that caused the checksums to be added always
Fixes the bug where listeners were not being removed after returning TF_CLOSE.
fixed issues found when upgrading an existing project to use the 2.0.0 version.
This release changes the API to support multiple instances and get rid of all global variables.
For more details, see the PR that added re-entrancy: https://github.com/MightyPork/TinyFrame/pull/9
I wanted to use TF with FreeRTOS and run into an issue with concurrent accesses. To solve this issue, TF version 1.2 contains two callback functions to claim and release a mutex when composing/sending a frame.
For an example see the new TF_Integration.example.c
file.
This release also (finally) provides a TF_VERSION
constant that can be used to log the used TF version and also know what version you have installed.
Please avoid editing the library code and instead discussing required new features here in the issue tracker so they can be added. The library files should be immutable and easy to update.
This update adds support for sending very long frames.
Reception still uses a buffer, because the frame can't be handled until the checksum is verified, however transmission is now virtually unconstrained.
The TX buffer can be very small - perhaps 16 bytes - (must be enough to fit the entire header) and it'll still work fine. Caution: Make sure your LEN field can contain length of the largest payloads!
This is useful for data harvesting applications where TinyFrame in the end device sends large data (perhaps samples from ADC), but doesn't necessarily need to receive anything big. On the other side, the master (PC) can afford to allocate kilobytes of RX buffer without problems.