Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.c29
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;
}

Back to the top