# HG changeset patch # User Mario de Sousa # Date 1545740129 0 # Node ID b37de6a9ad7fbc335dd902f8381244c8263c1518 # Parent efaa818ef637715259e4b83ad798bae3febcbf75 partial fix to issue #76 - calculate task periods with 1ms (instead of 1ns) resolution. Allows for tasks with periods larger than 4.295s, but smaller than 50 days. diff -r efaa818ef637 -r b37de6a9ad7f stage4/generate_c/generate_c.cc --- a/stage4/generate_c/generate_c.cc Tue Dec 25 11:10:11 2018 +0000 +++ b/stage4/generate_c/generate_c.cc Tue Dec 25 12:15:29 2018 +0000 @@ -544,7 +544,7 @@ /***********************************************************************/ /***********************************************************************/ -#define MILLISECOND 1000000 +#define MILLISECOND 1 #define SECOND 1000 * MILLISECOND unsigned long long calculate_time(symbol_c *symbol) { @@ -567,10 +567,6 @@ /* SYM_REF5(interval_c, days, hours, minutes, seconds, milliseconds) */ unsigned long long int time_ull = 0; long double time_ld = 0; - /* - const unsigned long long int MILLISECOND = 1000000; - const unsigned long long int SECOND = 1000 * MILLISECOND - */ if (NULL != interval->milliseconds) { if (VALID_CVALUE( int64, interval->milliseconds) && GET_CVALUE( int64, interval->milliseconds) < 0) ERROR; // interval elements should always be positive! @@ -2670,6 +2666,8 @@ config_s4o.print("unsigned long long common_ticktime__ = "); config_s4o.print_long_long_integer(common_ticktime); + config_s4o.print(" * "); + config_s4o.print_long_long_integer(1000000 / MILLISECOND); config_s4o.print("; /*ns*/\n"); config_s4o.print("unsigned long greatest_tick_count__ = (unsigned long)"); config_s4o.print_long_integer(calculate_common_ticktime.get_greatest_tick_count());