diff --git a/core/include/sys/runtime.h b/core/include/sys/runtime.h index cae9fe2..807044b 100755 --- a/core/include/sys/runtime.h +++ b/core/include/sys/runtime.h @@ -9,8 +9,6 @@ #include - - #define ASSERT_BUFFER_LEN 8 #define RTA_USER0 0x01 @@ -101,9 +99,13 @@ struct rt_ram { uint32_t unix_timeoffset; unix_time_changing_t unix_time_changing; - + +#if !defined(RUNTIME_USES_THREADING) SYSTIMER *timer; - +#else + thread_t *rtThread; +#endif + systick_t secs_last; systick_t secs_current, secs_gone; diff --git a/core/src/runtime.c b/core/src/runtime.c index 35239c3..e1d87c7 100755 --- a/core/src/runtime.c +++ b/core/src/runtime.c @@ -11,17 +11,23 @@ * * @{ */ - - volatile struct rt_ram rt_ram; +volatile struct rt_ram rt_ram; /*! \brief Signal Thread. * */ void runtime_signal(void) { +#if !defined(RUNTIME_USES_THREADING) timer_start( rt_ram.timer, 1L ); +#else + thread_wake( rt_ram.rtThread ); +#endif }; + + + /*! \brief Runtime-Thread. * * Ermittelt Betriebsstunden des Geräts @@ -44,6 +50,23 @@ void runtime_cycle(void) rt_ram.secs_last = rt_ram.secs_current; }; + + +#if defined(RUNTIME_USES_THREADING) + +void runtime_thread(void* arg){ + + while (1){ + wait_ms( 10000l ); + runtime_cycle(); + }; + +}; + +#endif + + + /*! \brief Startet Runtime-Thread. * */ @@ -62,8 +85,16 @@ void runtime_start(int16_t bank) rt_ram.secs_last = systick_secs(); rt_ram.bank = bank; +#if !defined(RUNTIME_USES_THREADING) + rt_ram.timer = timer_create_ex( TIMERID_SYS_RUNTIME, 10000000L, runtime_cycle, TF_REPEAT); timer_start( rt_ram.timer, 0 ); + +#else + + thread_alloc( runtime_thread, NULL, 256 ); + +#endif };