RKH
Release Notes

Version 3.4.00

Release Date: 2021-21-06
New features & improvements
  • The RKH framework incorporates CMake as a tool for managing the building of the source code project. The RKH CMake project is intended for two purposes, to develop new services, features and examples of RKH, and to create reactive applications based on it.
  • Fixed doxygen warnings.
  • Added a tutorial to the reference manual that explains how to develop applications based on RKH using CMake.
Bug fixes

Version 3.3.00

Release Date: 2021-19-02
New features & improvements
  • Enhanced reference manual and added release notes to README.md
  • Added a Python script to automate the deploy and release process. Most of them are written in Python in order to achieve more flexible and maintainable scripts than those written in Bash. The project changes must be added to the file changelog.json according to its format from now on
  • Allowed applications to run when trace output was configured as file. It modified the libbsp for Linux platform
  • Added code owners file
  • Enhanced periodic timer operations
  • Added several CI workflows to execute static code analyzers, to run Ceedling unit test, to check code compliance and to test build and execution of a demo for Linux platform. These workflows were configurated to run on Pull Request and Push events. The CI platform Travis was replaced with GitHub actions
  • Added gitlint configuration file
  • Added STM32 port critical section priority flexible configuration
  • Added RKH_CFG_FWK_AWARE_ISR_PRIO configuration option
  • Added function rkh_trc_getWholeBlock() to get whole block from trace stream
  • Supported reinit and restart an already started timer
  • Added new options of Uncrustify
  • Sent memory pool symbols as traces
  • Deleted reinitialized timer from the timer list
  • Ported cross demo Blinky to Eclipse for Linux single thread
  • Ported cross demo Shared to Eclipse for Linux single thread
Bug fixes
  • Fixed some doxygen groups in rkhdef.h file
  • Fixed makefile of cross demo Blinky for Linux platform
  • Fixed macros RKH_TR_FWK_EXE_FUN and RKH_TR_FWK_SYNC_EVT for recording sync event traces
  • Fixed macro RKH_TR_FWK_EPOOL for recording evtPool trace
  • Function isCompletionTrn() affected by RKH_CFG_SMA_HCAL_EN when it was enabled
API changes

Version 3.2.03

Release Date: 2019-28-08
New features & improvements
  • Added support for null transitions on init a state machine
  • Added bsp for blinky project on Linux platform
  • Added TimeEvt type for declaring time events
  • Added support for final state in state machine's region
  • Enhanced quick reference and doc related to timers
Bug fixes
  • Fixed tick rate for Linux bsp
  • Fixed stop method of timer module
  • Fixed a race condition in Linux port
API changes
  • Added period to timer start method and a return flag to stop method

Version 3.2.00

Release Date: 2019-09-01
New features & improvements
  • Added Ceedling, LCOV, Codecov, Cppcheck, Uno and Travis CI support!. The main purpose of this is to improve the quality of source code, by means of Continuous Integration process
  • Included a new alternative in license scheme: GPLv3 + linking exception
  • Added Publish-Subscriber module. It addresses the specific issue of how to notify a set of interested active objects (clients) in a timely way that a value that they care about has changed. The basic solution offered by this module is to have the clients 'subscribe' to the server to be notified about the value in question according to the policy: 'when the value changes, receiving a proper event carrying the value of interest
  • Added RKH_SMA_DISPATCH() polymorphic function in native scheduler
  • Added a deploy script to release new versions
  • Enhanced README file
Warning
  • From this version, you must include the files rkhfwk_rdygrp.h and rkhfwk_rdygrp.c located in rkh/source/fwk/inc and rkh/source/fwk/src respectively, to maintain the backward-compatiblity with the existing application projects

Version 3.1.00

Release Date: 2018-05-03
New features & improvements
  • Added support for using any kind of vertex as target of a default transition in both composite state region or root region, according to UML 2.x.
Deprecated:
  • The RKH_TE_SM_NTRNACT trace record is now deprecated and not recommended for new designs. It remains supported for backwards compatibility
  • Deleted RKH_INIT_ACT_T type and deprecated its config option RKH_CFG_SMA_INIT_ARG_SMA_EN. Therefore, was replaced RKH_INIT_ACT_T by RKH_TRN_ACT_T and was fixed every demo application according to that

Version 3.0.00

Release Date: 2017-08-01
New features & improvements
  • Added unit test cases of trace, sma and fwk modules
  • Added test harness of framework's modules to test for
  • Added Ceedling submodule
  • Rearranged files and directories (modules, ports and demo apps)
  • Improved trace module
  • Improved doc files (doxygen) and comments

Version 2.4.06

Release Date: 2016-12-14
New features & improvements
  • Improved doc files (doxygen) and comments
  • Improved template of C implementation file
  • Deleted template_aoAct.c/.h
  • Changed the template files for active object definition
  • Rearranged the blinky.c and blinky.h files
Bug fixes
  • After executing the SM's initial action the trace event RKH_TE_SM_INIT is sent to trazer, to avoid trace events without symbols which are frequently sent within initial action

Version 2.4.05

Release Date: 2016-04-25
New features & improvements
  • Added support for code beautifier Uncrustify in /tools/uncrustify, to be used as a code formatting tool according to RKH rules. Also, included source and header file templates
  • Reformatted source and header files in /sources and /sources/include
  • Added support for TDD with Unity + Cmock + Trazer. The directory /tests includes the related files
  • Added RKH_CFG_HOOK_PUT_TRCEVT_EN configuration option to include the new bsp dependent function rkh_hook_putTrcEvt()
  • Refactored trace module (/tests/trace), state machine module (/tests/sm) and trazer (/tests/utrazer) through the test harness. It implies various performance improvements, memory usage reduction, better documentation, and learning tests
  • Removed NULL macro usage from rkh.h file, and thus <stdlib.h> inclusion
  • Improved doc files (doxygen) and comments
  • Added deprecated list
  • Enhanced module section by including the configuration, trace, test, and API referecen manual sections
  • Added test suite of state machine module
  • Multiple enabled transitions (same trigger) with mutually exclusive guards according to UML is now supported. This usage of this feature is demonstrated through various and provided learning tests
  • Completion transition (also as known as null transition) and completion event in simple and composite states is now supported. This usage of this feature is demonstrated through various and provided learning tests
  • Final state in composite states is now supported. This usage of this feature is demonstrated through various and provided learning tests
  • The default transition (also as known as initial transition) in a composite state can have its own associated behavior (effect) is now supported. This usage of this feature is demonstrated through various and provided learning tests
  • Added macro RKH_CREATE_COMP_REGION_STATE() to instantiate a composite state with a single region, including its own initial pseudostate, history (shallow or deep type) pseudostate, as well as its own final state. This usage of this feature is demonstrated through various and provided learning tests
  • Multiple enabled transitions (same trigger) with mutually exclusive guards according to UML is now supported. This usage of this feature is demonstrated through various and provided learning tests
  • A state machine is now allowed to be instantiated regardless of an active object instance. It is very useful to create reactive parts (or orthogonal regions) of composite active objects. Also, by means of RKH_CFG_SMA_SM_CONST_EN option a state machine instance could be allocated into ROM or RAM. It is useful to dynamic allocation. This usage of this feature is demonstrated through various and provided learning tests
  • Polimorphic active objects with 'virtual. table (in C) is now supported. It is composed as activate, task, post_fifo, and post_lifo operations. This usage of this feature is demonstrated through various and provided learning tests
  • Added runtime constructors for active object and state machine classes for multiple and single instances. This usage of this feature is demonstrated through various and provided learning tests
  • Added RKH_CFG_SMA_VFUNCT_EN and RKH_CFG_SMA_RT_CTOR_EN options to set the active object as polymorphic and to use the runtime constructors of RKH_SMA_T/RKH_SM_T classes. This usage of this feature is demonstrated through various and provided learning tests
  • Template files for dealing with implementation and specification of active objects is now added to /template
  • Added RKH_DECLARE_TR_TBL(), RKH_INIT_BASIC_STATE(), and RKH_INIT_COMPOSITE_STATE() macros to derive a state (basic or composite) class to any other using single inheritance in C by literally embedding the base type (or super-class), RKHSBSC_T or RKHSCMP_T, as the first member of the derived structure
Bug fixes
  • Fixed a old bug at rkh_sm_dispatch() function in rkh.c file related with entry and exited states on a loop transition. The implemented solution have adopted the UML's local transition feature
API changes
Deprecated:

Version 2.4.03

Release Date: 2013-07-15
New features & improvements
  • Added cross-platform demo 'shared' for s08 and x86 platforms
  • Adds RKH_TR_QUE_FULL macro from rkh_queue_put_fifo() and rkh_queue_put_lifo() functions
  • Added RKH_VERSION_CODE to RKH_TR_FWK_TCFG
  • Updated comments
  • Changed RKH_TRC_EN_SM_CSTATE by RKH_CFG_TRC_SM_TS_STATE_EN
  • Changed RKH_TE_SM_CSTATE by RKH_TE_SM_TS_STATE
  • Added assert in rkh_queue_put_fifo()/lifo() when queue is full
  • Added little code in favor of defensive programming (rkhmempool.c)
  • Added new arguments to trace event macros. See 'trace event table'
  • Updated configuration table and preprocessor checking in rkhitl.h
API changes
Deprecated:
  • Removed RKH_TRC_MAX_EVENTS from rkhcfg.h file

Version 2.4.00

Release Date: 2013-05-03
New features & improvements
Deprecated:
  • Eliminated rkhdata.h file from demos

Version 2.3.00

Release Date: 2013-02-05
New features & improvements
  • Enhanced runtime trace filter
  • Enhanced software timer module
  • Added arbitrary trace records to be used in the application space
  • Added RKH_CFG_TRC_USER_TRACE_EN configuration option for enabling/disabling the user trace records
  • Added RKH_TR_FWK_TUSR() macro for sending to Trazer a symbolic name of the user-defined trace event
  • Moved configurations RKH_CFGPORT_SMA_THREAD_EN, RKH_CFGPORT_SMA_THREAD_DATA_EN, RKH_CFGPORT_NATIVE_SCHEDULER_EN, RKH_CFGPORT_NATIVE_EQUEUE_EN, RKH_CFGPORT_NATIVE_DYN_EVT_EN, and RKH_CFGPORT_REENTRANT_EN from rkhcfg.h to rkhport.h file to achieve the platform independence in rkhcfg.h file
  • Added macro RKH_TR_FWK_TCFG() to send the trace configuration parameters to Trazer
  • Added RKH_CFG_TRC_ASSERT_EN configuration option to rkhcfg.h file, RKH_TE_FWK_ASSERT trace record and RKH_TR_FWK_ASSERT() macro to RKH_ASSERT() macro
Bug fixes
  • Fixed the linux port
Deprecated:
  • Eliminated RKH_TIM_EN_RESTART from rkhcfg.h.

Version 2.2.00

Release Date: 2013-08-13
New features & improvements
  • Added runtime filter of active objects to emmit or suppress all events from a specified AO, by means of RKH_FILTER_ON_SMA() and RKH_FILTER_OFF_SMA() macros. See the main.c demo file. Used to clean up the trazer output
  • Added RKH_TRC_FLUSH() macro in RKH_TRCR_RKH_OBJ() and RKH_TRCR_RKH_SIG()
  • Added CCE() macro
  • Added RKH_RESERVE() macro
  • Added dtcptrc.c and tcptrc.h files to demo projects
  • Added support to trazer program in ahsm and subm projects
  • Added RKH_TRC_OPEN, RKH_TRC_CLOSE, and RKH_TRC_FLUSH
  • Added CV() macro
Bug fixes
  • Fixed name of the deplete queue, function rkh_queue_deplete().
  • Fixed RKH_TRC_CLOSE() macro.
  • Fixed a bug in rkhtmr.c file. Complete the RKH_SET_THOOK() macro when configuring RKH_CFG_TMR_HOOK_EN = 0.
  • Fixed a bug in RKH_SMA_BLOCK() macro.
  • Fixed a bug in rkh_queue_get() function, when invocking the rkh_sma_recall() function.
  • Fixed a bug in rkh_tmr_restart() function RKH_REQUIRE() args.
  • Fixed a bug in rkh_sma_defer() function. Also, include an internal macro RKH_INC_REF() to avoid the dependence of dynamic event in deferral mechanism.
  • Fixed a bug in rkh_add_tr_action() function.
API changes
Deprecated:
  • Elimate RKH_MP_QUERY definition and change RKH_MP_GET_BLKSIZE to RKH_MP_GET_BSIZE
  • Delete the CRR() macro
  • Delete trazer.c and trazer.h files

Version 2.1.00

Release Date: 2012-05-09
New features & improvements
  • Added a submachine state and demo application 'subm' to illustrate the submachine usage

Version 2.0.00

Release Date: 2012-04-13
New features & improvements
  • Added a platform abstraction layer
  • Added queue, software timer and dynamic memory modules
  • Added a dispatching event mechanism based on active object's priority
  • Because of applied drastic changes this release is not compatible with previous releases

Version 1.1.06

Release Date: 2012-02-13
Bug fixes
  • Fixed bug in call rkhallege() macro
  • Fixed bug in rkhallege(), rkhrequire(), rkhensure(), and rkhinvariant() macros

Version 1.1.05

Release Date: 2012-01-02
New features & improvements
  • Added RKH_ROM_STATIC_EVENT macro to declare and initialize a event object as one static event
  • Added a new configuration option RKH_EN_STATE_ID to reduce the state structure
  • Added RKH_DCLR_SM_GLOBAL macro to declare a state machine object as global pointer
  • Added assertions within rkh.c module
  • Added assertion events in rkhtrace.h
  • Added definition of rkh_trace_getts() in rkhtrace.h
  • Added condition #if RKH_CFG_FWK_DYN_EVT_EN == 1 to include rkh_put_fifo() and rkh_put_lifo() functions
  • Added checks every config. options from rkhcfg.h in rkhitl.h
  • Enhanced tested version of rkh_engine() function with TEST_GUARD option, see code
  • Tested version of rkh_engine() function with TEST_GUARD option, see code
  • Changed internal RKH_T structure definition to reduce the use of precious RAM when instantiating a state machine
  • Added if is not defined RKH_EN_DOXYGEN then RKH_EN_DOXYGEN = 0
  • Added RKH_EN_RT_INIT_HSM_OBJ preprocessor option to include rkh_init_hsm_obj() function. Frequently, this function is not used
  • Added rkh_init_hsm_obj() function to initialize a RKH_T structure in runtime
  • Changed RKH_CREATE_HSM and RKH_DCLR_HSM macros to implement a easy way for deriving state machine structures from RKH_T.
  • Added dynamic and defer event support. This facility is implemented by means of rkh_fwk_ae(), rkh_fwk_gc(), rkh_put_fifo(), rkh_put_lifo(), rkh_sma_defer() and rkh_sma_recall() and added member dynamic_ to RKH_EVT_T structure
  • Changed rkh.h file name to rkhitl.h
  • Changed rkhsm.h file name to rkh.h
  • Added rkh_enter_critical() and rkh_exit_critical() to be defined within rkhport.h file
  • Added assert feature. This facility is defined in rkhassert.h file
  • Added RKH_NUM_STATE_MACHINES directive in rkhcfg.h and rkhtrace.c files
  • Added checks to platform-dependent functions within rkhtrace.h
  • Added mksevt() macro
Bug fixes
  • Fixed rkh_tropen, rkh_trclose, rkh_trflush and rkh_trgetts macro definitions
  • Fixed rkh_tropen, rkh_trclose, rkh_trflush and rkh_trgetts macro definitions
Deprecated:
  • Eliminated rkhdata.h dependence from rkhtrace.c and rkh.c files

Version 1.1.04

Release Date: 2011-06-10
New features & improvements
  • Changed RKH_PPRO_T type to support pointer to HSM as argument
  • Added RKH_EN_PPRO_HSM_ARG configuration
  • Added RKH_HPPTY_T enumeration to be used in RKH_CREATE_HSM() macro
  • Update demo and doc files

Version 1.1.03

Release Date: 2011-05-19
New features & improvements
  • Changed RKH_EVT_T data type
  • Added rkh_get_sdata() macro to rkhsm.h file
  • Added state's abstract data by means of single inheritance
  • Update demo and doc files

Version 1.1.02

Release Date: 2011-05-05
New features & improvements
  • Changed external transition to local transition support. Therefore, just modified rkh_define_ex_en_states() macro to support this feature according to UML 2.0
  • Modified demo directory to test local transition feature and added some improvements to main.c file
Bug fixes
  • Fixed and update doc files

Version 1.0.00

Release Date: 2011-05-03
New features & improvements
  • Added rkh_sm_else function to be used when if all the guards on the other branches are false
  • Changed conditional (branch) pseudostate related macros. Therefore, the demo and doc files too
  • Changed macros RKH_CREATE_*_STATE, RKH_CREATE_TRANS_TABLE and RKH_END_TRANS_TABLE
  • Changed demo files
Bug fixes
  • Fixed VC08 project settings