Releases: Luos-io/luos_engine
Luos version 2.3.0
Changelog Luos version 2.3.0:
Dependencies:
- LuosHAL version >= 0.5.3
- Pyluos version >= 2.1.0
What's new:
🆕 Added: [Timestamp] We can now create future Timestamp events
🛠️ Fix: [Self Test] Luos Engine library includes self test for Hardware validation
🛠️ Fix: [Unit Test] Unit tests random crash
Packages:
- Luos library
- Luos library for Arduino environment with example
- Luos gate library for Arduino environment
Luos version 2.2.0
Changelog Luos version 2.2.0:
Dependencies:
- LuosHAL version >= 0.5.2
- Pyluos version >= 2.1.0
What's new:
🆕 Feature: [RTB Filtering] New API functions for Routing Table
🆕 Feature: [RTB Integrity] Check integrity to improve Routing Table sharing
🆕 Added: [Detection] Improve detection state machine
🆕 Added: [Luos Engine Init] Add 2 ms latency to ensure all boards in network are initialized
🆕 Added: [Bootloader] New reset command
🆕 Added: [Quality Assurance] Unit tests for new and updated features
🆕 Added: [Quality Assurance] Default scenarios for unit tests contexts
🆕 Changed: [Bootloader] Wait 1 second before booting to application
🆕 Changed: [Statistics] Reset statistics after detection
🆕 Changed: [Luos Engine Commands] Update commands
🆕 Changed: [Luos_ReceiveData] This function now return the number of received datas
🆕 Changed: [Dependencies] LuosHAL is now in package.json
🆕 Changed: [Quality Assurance] Update CI jobs
🛠️ Fix: [Detection] Increase Network Timeout
🛠️ Fix: [Detection] Many detection bugs are resolved thanx to new detection mechanism
🛠️ Fix: [Filtering] Robus masks are initialized before detection
Packages:
- Luos library
- Luos library for Arduino environment with example
- Luos gate library for Arduino environment
Luos version 2.1.1
Changelog Luos version 2.1.1:
Dependencies:
- LuosHAL version >= 0.5.0
- Pyluos version >= 2.0.3
What's new:
🛠️ Fix: [Messages filter] Bug correction in shift mask computing.
Packages:
- Luos library
- Luos library for Arduino environment with example
- Luos gate library for Arduino environment
Luos version 2.1.0
Changelog Luos version 2.1.0:
Dependencies:
- LuosHAL version >= 0.5.0
- Pyluos version >= 2.0.3
What's new:
🆕 Feature: [Timestamp] When an event occurs, timing informations about this event can be added in messages.
🆕 Feature: [Inspector] Monitoring tool app Service to facilitate debug process (luos network sniffer & monitoring commands)
Soon availaible on Luos SAAS !
🆕 Changed: [Detection] Detection now send you a end detection massage allowing you to have an event for your service configurations.
Packages:
- Luos library
- Luos library for Arduino environment with example
- Luos gate library for Arduino environment
Luos version 2.0.1
Changelog Luos version 2.0.1:
🆕 Added: [Routing Table] Add default parameter for maximum entries
🆕 Added: [Quality Assurance] Templates rules and cheklist for PR merging
🆕 Changed: [Routing Table] Separate RTB generation mechanism from RTB sharing mechanism
🆕 Changed: [Routing table] Function "RoutingTB_BigestID" is now public
🆕 Changed: [Luos message handler] Improve checks for forbidden character in alias
🆕 Changed: [Selftest] Improvement : remove PTP flag, pb ll_service
🆕 Changed: [Selftest] Test interruptions
🆕 Changed: [Bootloader] Manage case when no application is loaded
🛠️ Fix: [Selftest] Low level minor bugs
🛠️ Fix: [Documentation] Readme broken urls
Dependencies:
- LuosHAL version >= 0.4.1
- Pyluos version >= 2.0.2
Packages:
- Luos library
- Luos library for Arduino environment with example
- Luos gate library for Arduino environment
2.0.0
Luos 2.0.0:
🆕 Feature: Profiles to simplify user API
🆕 Feature: Packages to simplify portability
🆕 Feature: Bootloader
🆕 Feature: Gate discovering
🆕 Feature: Pyluos shell
🆕 Added: Unit tests
🆕 Added: Miscellaneous code comment updates
🆕 Changed: Luos API: Containers are renamed to services
🆕 Changed: Luos API: Luos reserved commands and User commands are now separated
🆕 Changed: Luos API: Luos list and routing table return names
🛠️ Fix: During detection we reset msg_allocation outside IRQ
🛠️ Fix : During detection we forbid tx from user messages
🛠️ Fix: During detection we reset big data reception state
🛠️ Fix: Routing table research function all return 0 if service is not found
🛠️ Fix: Typography on OD_linear
🛠️ Fix: Luos assert if too many services on the node
Dependencies:
- LuosHAL version >= 0.4.0
- Pyluos version >= 2.0.0
Packages:
- Luos library
- Luos library for Arduino environment with example
- Luos gate library for Arduino environment
Tutorial : How to update your code from Luos v1.x.x to Luos v2.0.0
Since the current version (v2.0.0), Luos API has changed.
If you have already started a project with a former Luos version (v1.x.x), you MUST do the following steps to ensure compatibility with Luos v2.0.0.
-
In your code, replace all these definitions :
- "container" => "service",
- "Container" => "Service",
- "ASK_PUB_CMD" => "GET_CMD",
- "DCMOTOR_MOD" => "MOTOR_TYPE",
- "STATE_MOD" => "STATE_TYPE",
- "CONTROLLER_MOTOR_MOD" => "SERVO_MOTOR_TYPE",
- "ANGLE_MOD" => "ANGLE_TYPE",
- "COLOR_MOD" => "COLOR_TYPE",
- "DISTANCE_MOD" => "DISTANCE_TYPE",
- "GATE_MOD" => "GATE_TYPE",
- "IMU_MOD" => "IMU_TYPE",
- "LIGHT_MOD" => "LIGHT_TYPE",
- "LOAD_MOD" => "LOAD_TYPE",
- "PIPE_MOD" => "PIPE_TYPE".
-
If needed, don't forget to update :
- Pyluos : v2.0.0 (https://github.com/Luos-io/Pyluos)
- Gate project : (https://github.com/Luos-io/Examples/tree/master/Projects/l0/Gate_SerialCom)
Template management and Gate major update
Template management and Gate major update
Date: July 12, 2021
Version: 1.3.0
Hello everybody, we are thrilled to share this new release note with you: Luos v1.3.0 is out!
Like every young technology growing fast, Luos is going through an intense period of development. This means new critical features and many fixes at the same time, both into frequent releases. Fully dedicated to easing your life as an embedded developer, an electronic engineer, or a product manager, our R&D team is growing and working hard with passion for delivering a powerful technology to you.
As an open-source solution, Luos aims to be wildly distributed and used by as many embedded developers as possible. Thanks to Luos, you can easily design, test and deploy embedded applications on multi-MCUs devices. Spread the word!
What's new in this version?
This is the sixth release of Luos. We described below the various features and fixes that it provides.
🆕 Feature: Manage Pipe type and command
The Gate in a Luos environment is something tremendously important and used to check or control a Luos network, and (teaser...) it will be even more important for the next revision! 😉
Basically, its task is to share the entire machine capabilities to the outer world by translating Luos things into a standard format easy to use with standard software languages such as Python, JS, Ruby, C++, etc.
On the previous version of the Gate example, you needed to modify the code to adapt it to your project's specificities, and it was an arduous task. Then we decided to make it simple and portable for you.
We split it into 2 parts, the main Gate App and a Driver:
- Now the Gate is an App. Meaning it doesn't have any code related to hardware. It's a basic ANSI C that you can compile directly for any MCU or CPU without any additional configuration! This way, you can easily add it to your setup.
We also added a build option allowing you to select the output format managed by the Gate or create your own easily. For now, we have 2 Json options, the one we use on the previous version (cJSON), and a new one (TinyJSON) that doesn't make any dynamic allocation.
The Pipe is the driver part: This Driver allows sending or receiving data from the outer world and converting those data to the Luos side. A Pipe can be USB, serial, Wifi, Bluetooth, an SD card, or anything allowing to send and receive information to/from another machine.
This new type of driver can be used for different purposes, and the Gate App needs it to exchange information and share its output format.
As a Gate user, you will only have to adapt this Pipe driver to your needs. The Gate will deal with it.
More details about this can be found in the Gate section of our documentation.
🆕 Feature: Add access management to container
Sometimes the same container type can be used for input or output purposes. For example, a STATE_TYPE container (which is a basic True/False state) can be used for a button (read-only) or a relay (write-only). This is no big deal regarding the capability of your code because you deal with the messages as you want and make it work as you want, but other containers don't know if it's read-only or write-only.
This new access management feature allows you to declare the readability of your container for the other containers in your device. By default, a container is on a READ_WRITE_ACCESS, and you can choose to make it READ_ONLY_ACCESS, WRITE_ONLY_ACCESS, or even NO_ACCESS.
More details about this can be found in the Containers accessibility section of our documentation.
🆕 Feature: Template Creation for State, Voltage, Motor, Servo
To make the embedded development easier, we have to make everything work the same way.
For example, there are many different motor technologies and control, but all motors have the same purpose: making something move. And because all of them have the same purpose, we also should have the same profile or API for all of them!
That's why we created the Templates.
Profiles are advanced APIs dedicated to common Drivers such as motors, and we call template the container hosting a profile.
Templates are containers that will manage for you the profile (API) of your driver.
By developing this kind of container, you don't need to take care of message management anymore. You only need to deal with simple variables adapted to your container's needs!
And of course, you can create your own profiles, compose a new one with the already existing ones and share it with your team or the community.
More details in the Luos profile section of our documentation.
🆕 Feature: Add some research API in the routing table
When it comes to developing the behavior of your machine, you will have to access some drivers.
With Luos, all the resources of your system are resumed into a routing_table structure. This structure allows you to find the resources you need to make your application work. We are constantly updating and optimizing the functions allowing you to easily find the resources you need.
In this revision 1.3.0 of Luos, we added index research, giving you the most optimized way of getting resource information.
More details about this are on the routing_table section of our documentation.
🆕 Feature: Localhost verbose management
Every board on your Luos network can deal with multiple containers, and sometimes those containers have to exchange information.
To save some data bandwidth on your network and RAM on your MCU, we added a new feature allowing you to deal with localhost messaging. Localhost messages are not shared into your network and stay in the MCU.
This is a huge deal to improve your Luos system performances, and you should take care to put your applications close to the drivers they are using!
If you need to get all the data into the network, for example for debugging purposes, you can use the VERBOSE_LOCALHOST build flag that disables this feature!
More details about this subject in the messages handling section of our documentation.
🛠️ Fix: Streaming better management for DMA transmission
Luos can now deal with streaming channels.
To make it, Luos manages a ring buffer for you that you can use to store samples, for example. In this Luos 1.3.0 revision, we updated the API allowing you to deal with DMA. This way, Luos interacts directly with your hardware, saving you a lot of execution time dealing with those data.
More details about this can be found in the streaming section of our documentation.
🛠️ Fix: Streaming sends data more than 128 bytes.
On the previous revision of Luos, we discovered that Streaming couldn't deal with more than 128-byte messages.
We fixed it, allowing you to deal with massive streaming data.
🛠️ Fix: Routing table exclusion optimization
On the previous revision of Luos, we discovered that excluded containers were not removed from the routing_table.
We fixed it, allowing you to avoid multiple access to a dead container.
🛠️ Fix: Memory data overlap
On some specific conditions (simultaneous RX and TX with more already received bytes from RX than the size of the TX), we discovered that some data copy into Luos was corrupted.
This copying issue resulted in some incorrect 0 values reception.
We had to add some padding on RAM to avoid this problem, but in this specific case, Luos will use a little more RAM.
🛠️ Fix: RX task protection when TX task created
On some particular conditions (when a header reception ended during a transmission setup), we spotted some corrupted tasks.
We added some check steps at the begging and the end of the TX allocation to make it work for any case.
🛠️ Fix: Transmission retry optimization
Sometimes when a container retried too many times reaching a container, it leads to container exclusion and removal of the TX message. But when this situation happened on some specific conditions, the next TX messages for other containers were also removed.
We fixed it and made sure to always be able to transmit anything to anyone.
Other Luos' releases
Click here to see all Luos' releases.
TL;DR
You will find below the original changelog.
Luos 1.3.0:
🆕 Feature: Manage Pipe type and command
🆕 Feature: Add access management to container
🆕 Feature: Template Creation for State, Voltage, Motor, Servo
🆕 Feature: Add some research API in the routing table
🆕 Feature: Localhost verbose management
🛠️ Fix: Streaming better management for DMA transmission
🛠️ Fix: Streaming send data more than 128 byte
🛠️ Fix: Routing table exclusion optimization
🛠️ Fix: Memory data overlap
🛠️ Fix: RX task protection when TX task created
🛠️ Fix: Transmission retry optimization
Dependencies:
- LuosHAL version >= 0.3.0
- Pyluos version >= 1.5.0
Package:
- Luos library
- Luos library for Arduino environment with example
- Luos gate library for Arduino environnement
TX IT and DMA
-Feature: Luos_SendMsg not blocking function
-Feature: Buffering Tx Msg
-Feature: Use IT or DMA (default configuration) for transfert
-Feature: CRC Rx and Tx calculate saparatly
-Feature: New statistic computation
-Fix: Luos_assert improvement
-Fix: Atomic traitement optimisation
-Fix: Timeout communication optimisation
-Fix: Rx IT timing optimisation
-Fix: Collision risk reduction
-Dependencies:
LuosHAL version >= 0.3.0 Pyluos version >= 1.4.2
-Package:
-Luos library
-Luos library for Arduino environnement with example
-Luos gate library for Arduino environnement
Timeout/Communication optimisation/One wire/Arduino
-1.1.1:
-Feature: Use Hardware Timeout for Luos communication
-Feature: Collision detection optimisation
-Feature: Transmission in one time and communication optimisation
-Fix: Protocole delay base on MCU frequency
-Fix: CRC calculation before transmit and not on retry
-Fix: Node Concerned detection before transmit to not depend on containers number in a node
-Fix: Droping message not concerned for timing optimisation
-Dependencies: LuosHAL version >= 0.2.0 Pyluos version >= 1.3.0
-Package:
-Luos library
-Luos library for Arduino environnement with example
-Luos gate library for Arduino environnement
Assertion
-1.1.0
-Fix: Update Alarm example to work properly
-Feature: Add Assertion management on Luos