summaryrefslogtreecommitdiff
path: root/include/arch
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2019-03-04 15:31:21 +0100
committerDaniel Friesel <derf@finalrewind.org>2019-03-04 15:31:21 +0100
commitf0c087f4ab3cae2d8da65cf51bb5b0e69fe72a76 (patch)
treed25c48766a295311c1f451dd26f5626d842c1ddb /include/arch
parent6fd09b2bb22f70b429b53a1205ced2487324fdd4 (diff)
counter: Provide typedefs fore value/overflow type
Diffstat (limited to 'include/arch')
-rw-r--r--include/arch/arduino-nano/driver/counter.h3
-rw-r--r--include/arch/esp8266/driver/counter.h13
-rw-r--r--include/arch/msp430fr5969lp/driver/counter.h3
-rw-r--r--include/arch/msp430fr5994lp/driver/counter.h3
-rw-r--r--include/arch/posix/driver/counter.h3
5 files changed, 21 insertions, 4 deletions
diff --git a/include/arch/arduino-nano/driver/counter.h b/include/arch/arduino-nano/driver/counter.h
index 9105219..43ddd15 100644
--- a/include/arch/arduino-nano/driver/counter.h
+++ b/include/arch/arduino-nano/driver/counter.h
@@ -1,6 +1,9 @@
#include <avr/io.h>
#include <avr/interrupt.h>
+typedef counter_value_t uint16_t;
+typedef counter_overflowed_t uint8_t;
+
class Counter {
private:
Counter(const Counter &copy);
diff --git a/include/arch/esp8266/driver/counter.h b/include/arch/esp8266/driver/counter.h
index 754f4d6..42f6f14 100644
--- a/include/arch/esp8266/driver/counter.h
+++ b/include/arch/esp8266/driver/counter.h
@@ -7,26 +7,31 @@ extern "C" {
}
#include "c_types.h"
+typedef counter_value_t uint32_t;
+typedef counter_overflowed_t uint32_t;
+
class Counter {
private:
Counter(const Counter &copy);
uint32_t start_cycles;
public:
- Counter() : start_cycles(0) {}
+ uint32_t value;
uint32_t overflowed;
+ Counter() : start_cycles(0), value(0), overflowed(0) {}
+
inline void start() {
asm volatile ("esync; rsr %0,ccount":"=a" (start_cycles));
}
- inline uint32_t stop() {
+ inline void stop() {
uint32_t stop_cycles;
asm volatile ("esync; rsr %0,ccount":"=a" (stop_cycles));
if (stop_cycles > start_cycles) {
- return stop_cycles - start_cycles;
+ value = stop_cycles - start_cycles;
} else {
- return 0;
+ overflowed = 1;
}
}
};
diff --git a/include/arch/msp430fr5969lp/driver/counter.h b/include/arch/msp430fr5969lp/driver/counter.h
index e7f0507..501808b 100644
--- a/include/arch/msp430fr5969lp/driver/counter.h
+++ b/include/arch/msp430fr5969lp/driver/counter.h
@@ -1,6 +1,9 @@
#include <msp430.h>
#include <stdint.h>
+typedef counter_value_t uint16_t;
+typedef counter_overflowed_t uint8_t;
+
class Counter {
private:
Counter(const Counter &copy);
diff --git a/include/arch/msp430fr5994lp/driver/counter.h b/include/arch/msp430fr5994lp/driver/counter.h
index e7f0507..21c5ec5 100644
--- a/include/arch/msp430fr5994lp/driver/counter.h
+++ b/include/arch/msp430fr5994lp/driver/counter.h
@@ -1,6 +1,9 @@
#include <msp430.h>
#include <stdint.h>
+typedef uint16_t counter_value_t;
+typedef uint8_t counter_overflowed_t;
+
class Counter {
private:
Counter(const Counter &copy);
diff --git a/include/arch/posix/driver/counter.h b/include/arch/posix/driver/counter.h
index 6390d14..4f575a8 100644
--- a/include/arch/posix/driver/counter.h
+++ b/include/arch/posix/driver/counter.h
@@ -1,6 +1,9 @@
#include <stdint.h>
#include <time.h>
+typedef uint64_t counter_value_t;
+typedef uint8_t counter_overflowed_t;
+
class Counter {
private:
Counter(const Counter &copy);