diff options
Diffstat (limited to 'runtime/org.eclipse.etrice.runtime.c/src/common/helpers/etTimeHelpers.c')
-rw-r--r-- | runtime/org.eclipse.etrice.runtime.c/src/common/helpers/etTimeHelpers.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/helpers/etTimeHelpers.c b/runtime/org.eclipse.etrice.runtime.c/src/common/helpers/etTimeHelpers.c index 439d7a68e..1ce25573e 100644 --- a/runtime/org.eclipse.etrice.runtime.c/src/common/helpers/etTimeHelpers.c +++ b/runtime/org.eclipse.etrice.runtime.c/src/common/helpers/etTimeHelpers.c @@ -12,15 +12,34 @@ #include "helpers/etTimeHelpers.h" -void etTimeHelpers_subtract(etTime *first, etTime* second){ - /* TODO: implement */ +#define _1E9 1000000000 + +static void normalize(etTime* time) { + etInt32 f = time->nSec / _1E9; + if (f>0) { + time->sec += f; + time->nSec -= f*_1E9; + } + else if (f<0) { + ++f; + time->sec -= f; + time->nSec += f*_1E9; + } +} + +void etTimeHelpers_subtract(etTime *first, const etTime* second){ + first->sec -= second->sec; + first->nSec -= second->nSec; + normalize(first); } -void etTimeHelpers_add(etTime *first, etTime* second){ - /* TODO: implement */ +void etTimeHelpers_add(etTime *first, const etTime* second){ + first->sec += second->sec; + first->nSec += second->nSec; + normalize(first); } -etInt32 etTimeHelpers_convertToMSec(etTime *time){ +etInt32 etTimeHelpers_convertToMSec(const etTime *time){ return time->sec * 1000 + time->nSec / 1000000; } |