Releases: Hyperloop-UPV/ST-LIB
v6.1.1
v6.1.1 - 2026-05-11
Fixes
- Allow protections to read volatile sample sources
Protection sources now preserve the storage cv-qualification through a reference source wrapper,
so protections can be declared directly over volatile variables while rule evaluation still uses
plain sample values.
v6.1.0
v6.1.0 - 2026-05-11
Features
- It is just a one word change, makes it possible to use
Board::instanceof()to get aconstexpr auto& obj. It works perfectly as long as you don't try using the reference beforeBoard::init().
Fixes
- Fix reorder issue in PWM constructor
- Unify get_global_tick behaviour and make format_numeric_value return if value was written in DiagnosticFormatter
- The macros changes in fix/volatiles where reverted in a merge in the last release, this pr applies the changes once more to fix the undefined behaviour.
v6.0.0
v6.0.0 - 2026-05-06
Breaking Changes
-
Redesign fault handling, protections, and Board bootstrap around explicit fault policies
This PR changes the public integration contract for applications built on ST-LIB.Breaking changes:
Boardnow takes the fault policy type as its first template parameter.- The global
FAULTruntime is owned exclusively byFaultController. - User state machines are now nested under the global
OPERATIONALstate throughFaultPolicyorFaultPolicyNoMachine. - Protections are now compile-time
Boardrequest objects evaluated throughBoard::ProtectionEngine; the previousProtectionManagerand boundary split is no longer the active model. - Runtime reporting is unified under
PANIC(...),FAULT(...),WARNING(...), andINFO(...). - The real bootstrap path is
Board::init(). LegacySTLIB::start(),STLIB::update(),STLIB_LOW::start(), andSTLIB_HIGH::start()must not be used as the integration path.
Migration notes:
- Declare the board as
Board<YourFaultPolicy, ...>. - Use
FaultPolicy<app_machine, on_fault_enter>when you want an operational state machine nested under the global runtime. - Use
FaultPolicyNoMachine<on_fault_enter>when you only need a fault-entry callback. - Use
DefaultFaultPolicywhen you want neither an operational machine nor a fault-entry callback. - Declare protections with
Protections::protection<"name", source>(...)and pass the resulting request objects toBoard. - In the main loop, drive the runtime through
FaultController::check_transitions(),Board::evaluate_protections(), andDiagnostics::Hub::flush().
Features
-
add an ethernet connected check
-
move initialization outside constructor in PWM, DualPWM, Encoder and InputCapture
-
Small refactor of some spi and timerwrapper functionality
timerwrapper:- Add
set_callback(void (*callback)(void*), void* callback_data)to set the callback and its data instead of needing to callconfigurexxbit()and set the period. set_limit_value(uint32_t arr)to set the arr, this will likely be changed to use auint32_ttype only when using a 32 bit timer, for now it is just an alias toinstance->tim->ARR = arr;. Was not added in this pr but also wasn't mentioned before.
spi:
- Add
transceivewith ptr + data explicitly instead of using a span since it's sometimes a pain in the ass to use.
- Add
Fixes
- Fix incorrect usage of non-volatile buffers in peripherals. This wrong usage was causing undefined behaviour, since the compiler could optimize out reads and writes that should have been going directly to memory.
There's a minor API change: now the MPU macros for memory regions include the volatile keyword for the non-cached variants. - MPUDomain dynamic regions were configured using the linker symbol values instead of their addresses (that is the correct way of using linker symbols). That made non-cached regions cached, and caused harware undefined behaviour.
- fix pwm channel 4 config in TimerWrapper
- fix prescaler calculation in scheduler
v5.2.0
v5.2.0 - 2026-04-22
Features
- move a struct outside template class
- Create a parameter to choose the type of the variables
Fixes
- RXER pin for Ethernet is now optional
H11 ethernet doesn't use RXER pin. The RXER pin is now a pointer so it can hold a nullptr. Ethernet constructor now has a std::optional for this pin - input capture hotfix for errorhandler
fix: make dummy have invalid channel nº for rising, falling
v5.1.0
v5.1.0 - 2026-04-05
Features
- Refactor the ADC stack around DMA-backed acquisition using new MPU
Includes the DMA-backedADCDomainmigration, the shared ADC sensor base, and the updated ADC integration/tests in theadc-dmabranch. - Added module dfsdm tested
- Fix remaining scheduler race conditions and add warning when tasks are not ran in time
The mechanism for checking if tasks are not ran in time is very simple but that also means the scheduler can only know if a task has not been called when the waiting time runs out for the second time.
This means you will know if you're too slow to execute the task in less than 2x its period but not if you're between 1 and 2x its period. - Input capture implementation
Also changed how the timer interrupts are handled since this was required for inputcapture
Fixes
- Add a FLASH_ST in .ld to keep the flash information that is not code
- Fix incorrect GPIO alternate-function availability bitmaps
Correct the STM32H723 pin alternate-function masks inPin.hppso GPIO configuration reflects the actual AF support per pin.
Internal
- Introduce semver tooling and release automation infrastructure
Bootstrap the semiautomated release flow for ST-LIB without publishing a new library version yet.
H10
Release H10
Final stable state with which H10 was finished.
This release will put together a lot of changes, as the releases workflow was abandoned for two years. The purpose of this release is to have a reference to the code that was working with H10 boards and, hopefully, get back into making releases again.
What's Changed
- Development by @g0nz4I0 in #350
- Test automated build on development by @g0nz4I0 in #351
- Time::cancel_timeout feature by @g0nz4I0 in #348
- removed str constructor as IPV4 can resolve by @ricardochust in #340
- feature/fix build script by @g0nz4I0 in #345
- Spi slave with DMA by @ricardochust in #339
- Feature/warning notifications by @g0nz4I0 in #359
- Protections refactor by @g0nz4I0 in #357
- Features/fmac by @ricardochust in #360
- ADC doc by @ricardochust in #334
- NTC now uses same approach as other sensors by @g0nz4I0 in #361
- Feature/warning notifications by @g0nz4I0 in #362
- update Ethernet ifdef guard by @g0nz4I0 in #369
- ForwardOrder by @g0nz4I0 in #374
- 🔥 Mpu manager 🔥 by @ricardochust in #371
- Changed send function name on DatagramSocket by @ricardochust in #368
- SPI workingwithout DMA by @g0nz4I0 in #373
- State order fix by @1kerProg in #384
- dont trigger ErrorHandler if SPI transmission fails by @g0nz4I0 in #379
- now spi recovers from a bus collision by @ricardochust in #377
- Keepalives fix by @ricardochust in #378
- Development by @ricardochust in #386
- Detect Ethernet cable disconnection by @g0nz4I0 in #381
- Development by @ricardochust in #387
- Keepalive configuration by @ricardochust in #388
- Feature/encoder improvements by @g0nz4I0 in #380
- Development oscar by @g0nz4I0 in #391
- error handler spam solved. Now only sends once by @ricardochust in #389
- add WARNING, just like ErrorHandler by @g0nz4I0 in #390
- Bring changes into PCU by @g0nz4I0 in #392
- time config now working on runes by @ricardochust in #393
- Feature/pwm rework by @g0nz4I0 in #372
- Features/watchdog by @ricardochust in #398
- Features/watchdog by @ricardochust in #397
- Merge all the minor changes by @jmaralo in #399
- Documentacion landing page by @jmaralo in #404
- Feature/const correctness by @jmaralo in #409
- Feature/compiles without warnings by @g0nz4I0 in #412
- Feature/supercaps by @jmaralo in #407
- Fix/spi chip select by @jmaralo in #408
- Feature/fdcan improvements by @jmaralo in #410
- Fix/fdcan interrupts by @jmaralo in #403
- Feature/encoder sensor reset by @jmaralo in #402
- Changes/i2 c by @jmaralo in #401
- Bc ubranch by @ricardochust in #396
- Fix add attrib to control hereited fault by @1kerProg in #395
- Pcu by @jmaralo in #411
- [FW-73] Actualizar modelo PIN de la HALAL Mock by @jdmarmen in #417
- Fw 58 by @oganigl in #416
- DigitalOutputService for Halal_Mock by @Cantonplas in #418
- Fw-74 Added Pin model for memory structure abstraction by @jorgesg82 in #414
- Fw 50 defines halal mock by @Ikubimu in #419
- Merge latest changes to development by @jmaralo in #420
- [FW-59] DualPWM by @jdmarmen in #424
- [FW-50] Make the template compile with the mock by @jmaralo in #425
- Added function to read DigitalInput by @Ikubimu in #422
- FW-52 by @Cantonplas in #423
- [FW-56] GPIO EXTI by @Cantonplas in #428
- [FW-72] Create SHM zone on SharedMemory::start by @oganigl in #430
- Feature/fw 55 by @oganigl in #421
- FW-78 HALAL Mock Time by @StefanCostea in #427
- Added Input Capture Mock Implementation by @Ikubimu in #429
- Fix xx/pin class by @g0nz4I0 in #435
- Feature/fw xx remove unused components by @g0nz4I0 in #434
- remove MPUManager component by @g0nz4I0 in #436
- [FW-86] StateMachine state on SHM by @jdmarmen in #433
- [FW-54] Developed ADC mock by @jorgesg82 in #426
- [FW-88] Added stuff to allow developing inside a container by @jorgesg82 in #441
- [Fw-80] HalalMock FDCAN by @Cantonplas in #439
- RTC module by @g0nz4I0 in #442
- [FW-82] Mocked SPI by @jorgesg82 in #432
- New implementation for the ringBuffer by index by @Ikubimu in #431
- Change public to private In Communication by @oganigl in #440
- Fix/make simulator compile by @g0nz4I0 in #437
- [FW-110] Encoder and EncoderSensor refactor by @jdmarmen in #444
- [FW-82] Better IP and ports declaration in SPI mock by @jorgesg82 in #445
- [FW-90] Add GTest integration by @jmaralo in #450
- [FW-116] overload start in shared_memory_gpio and create close functions, improve the class with slight changes by @oganigl in #447
- [FW-117] New start function for StateMachine shared memory and close() function by @jdmarmen in #449
- [FW-106] [FW-91] [FW-112] [FW-111] Make the template project compile by @jmaralo in #448
- [FW-118] Minor fixes for compiling SharedMemory by @jdmarmen in #452
- Added setup file by @StefanCostea in #451
- Fixed initialization problem in SharedMemory and started adding DO tests by @g0nz4I0 in #453
- [FW-79]- Creation of ethernet Mock by @g0nz4I0 in #438
- Feature/ci pipeline by @g0nz4I0 in #455
- [FW-108] Added cubeclt to container by @jorgesg82 in #443
- Better ip and port config on FDCAN by @jorgesg82 in #446
- [FW-93] Test DigitalIn/DigitalOut by @jdmarmen in #454
- [FW-95]TestEncoder by @Ikubimu in #457
- [FW-97]TestInputCapture by @Ikubimu in #458
- [FW-123] Time tests by @jdmarmen in #456
- FIX Inputcapture Inscribe by @Ikubimu in #460
- Fixed simple error in FDCAN by @Cantonplas in #466
- Fixed intellisense on container by @jorgesg82 in #464
- Better container by @jorgesg82 in #465
- [FW-124/FW-96] Implementes and tested EXTI by @Ikubimu in https://github.com/HyperloopUPV-H8/ST-LIB/pull/...
Testing Purposes
I want to compare with last-working-pcu to find differences in IMD
H9
🚀 per Hyperloop firmare team 🚀
Starting working point of H9 STLIB.
This release contains:
- Support for building via a python script or with traditional tools like STM32CubeIDE
- Support for developing in VScode, in Linux based OSes
- Improved documentation for some classes
- Added support for multiple connections when using TCP/IP
- The static library compiled with debug symbols for Linux
- Source code
🚀 per Hyperloop firmare team 🚀
v2.7.0
v2.7.0
v2.6.0
Merge pull request #293 from HyperloopUPV-H8/development v2.6.0
