From f0e2391a0a9df1cb921b545751a0eb2f42ba0c3e Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Fri, 5 Nov 2021 10:02:36 +0100 Subject: [PATCH 1/3] Adding examples breaking the current build. --- examples/Breaks_1/Breaks_1.ino | 11 +++++++ examples/Breaks_1/SharedVariables.h | 0 examples/Breaks_1/Thread.inot | 23 ++++++++++++++ examples/Breaks_2/Breaks_2.ino | 11 +++++++ examples/Breaks_2/SharedVariables.h | 0 examples/Breaks_2/Thread.inot | 21 +++++++++++++ examples/Breaks_3/Breaks_3.ino | 11 +++++++ examples/Breaks_3/SharedVariables.h | 0 examples/Breaks_3/Thread.inot | 15 +++++++++ examples/Breaks_4/Breaks_4.ino | 11 +++++++ examples/Breaks_4/SharedVariables.h | 0 examples/Breaks_4/Thread.inot | 47 +++++++++++++++++++++++++++++ 12 files changed, 150 insertions(+) create mode 100644 examples/Breaks_1/Breaks_1.ino create mode 100644 examples/Breaks_1/SharedVariables.h create mode 100644 examples/Breaks_1/Thread.inot create mode 100644 examples/Breaks_2/Breaks_2.ino create mode 100644 examples/Breaks_2/SharedVariables.h create mode 100644 examples/Breaks_2/Thread.inot create mode 100644 examples/Breaks_3/Breaks_3.ino create mode 100644 examples/Breaks_3/SharedVariables.h create mode 100644 examples/Breaks_3/Thread.inot create mode 100644 examples/Breaks_4/Breaks_4.ino create mode 100644 examples/Breaks_4/SharedVariables.h create mode 100644 examples/Breaks_4/Thread.inot diff --git a/examples/Breaks_1/Breaks_1.ino b/examples/Breaks_1/Breaks_1.ino new file mode 100644 index 0000000..fbb7922 --- /dev/null +++ b/examples/Breaks_1/Breaks_1.ino @@ -0,0 +1,11 @@ +#include + +void setup() +{ + Thread.start(); +} + +void loop() +{ + +} \ No newline at end of file diff --git a/examples/Breaks_1/SharedVariables.h b/examples/Breaks_1/SharedVariables.h new file mode 100644 index 0000000..e69de29 diff --git a/examples/Breaks_1/Thread.inot b/examples/Breaks_1/Thread.inot new file mode 100644 index 0000000..1f88db4 --- /dev/null +++ b/examples/Breaks_1/Thread.inot @@ -0,0 +1,23 @@ +/* This fails to compile because it doesn't look like a + * declaration and a definitio but rather like an attempt + * to overload myFunc with the same signature (again) + * resulting in a compile error. + */ + +int myFunc(int const a, int const b); + +void setup() +{ + +} + +void loop() +{ + static int c = 0; + c += myFunc(0,c); +} + +int myFunc(int const a, int const b) +{ + return (a + b); +} \ No newline at end of file diff --git a/examples/Breaks_2/Breaks_2.ino b/examples/Breaks_2/Breaks_2.ino new file mode 100644 index 0000000..fbb7922 --- /dev/null +++ b/examples/Breaks_2/Breaks_2.ino @@ -0,0 +1,11 @@ +#include + +void setup() +{ + Thread.start(); +} + +void loop() +{ + +} \ No newline at end of file diff --git a/examples/Breaks_2/SharedVariables.h b/examples/Breaks_2/SharedVariables.h new file mode 100644 index 0000000..e69de29 diff --git a/examples/Breaks_2/Thread.inot b/examples/Breaks_2/Thread.inot new file mode 100644 index 0000000..0eff097 --- /dev/null +++ b/examples/Breaks_2/Thread.inot @@ -0,0 +1,21 @@ +/* This fails to compile because myEventHandler has the + * function signature of 'void Thread::myEventHandler(void)' + * and is a member function of 'class Thread' while + * attachInterrupt expects a function with the signature + * 'void myEventHandler(void)' + */ + +void myEventHandler() +{ + /* Do something. */ +} + +void setup() +{ + attachInterrupt(digitalPinToInterrupt(2), myEventHandler, CHANGE); +} + +void loop() +{ + +} diff --git a/examples/Breaks_3/Breaks_3.ino b/examples/Breaks_3/Breaks_3.ino new file mode 100644 index 0000000..fbb7922 --- /dev/null +++ b/examples/Breaks_3/Breaks_3.ino @@ -0,0 +1,11 @@ +#include + +void setup() +{ + Thread.start(); +} + +void loop() +{ + +} \ No newline at end of file diff --git a/examples/Breaks_3/SharedVariables.h b/examples/Breaks_3/SharedVariables.h new file mode 100644 index 0000000..e69de29 diff --git a/examples/Breaks_3/Thread.inot b/examples/Breaks_3/Thread.inot new file mode 100644 index 0000000..6b2b2b4 --- /dev/null +++ b/examples/Breaks_3/Thread.inot @@ -0,0 +1,15 @@ +/* This fails to compile because in-class-initialisation of + * a static member variable is forbidden. + */ + +static int my_global_variable = 0; + +void setup() +{ + +} + +void loop() +{ + +} diff --git a/examples/Breaks_4/Breaks_4.ino b/examples/Breaks_4/Breaks_4.ino new file mode 100644 index 0000000..fbb7922 --- /dev/null +++ b/examples/Breaks_4/Breaks_4.ino @@ -0,0 +1,11 @@ +#include + +void setup() +{ + Thread.start(); +} + +void loop() +{ + +} \ No newline at end of file diff --git a/examples/Breaks_4/SharedVariables.h b/examples/Breaks_4/SharedVariables.h new file mode 100644 index 0000000..e69de29 diff --git a/examples/Breaks_4/Thread.inot b/examples/Breaks_4/Thread.inot new file mode 100644 index 0000000..91875b5 --- /dev/null +++ b/examples/Breaks_4/Thread.inot @@ -0,0 +1,47 @@ +/* Breaks for all kind of stuff ... + */ + +/************************************************************************************** + * CONSTANTS + **************************************************************************************/ + +static byte constexpr LSM6DSOX_ADDRESS = 0x6A; +static byte constexpr LSM6DSOX_WHO_AM_I_REG = 0x0F; + +/************************************************************************************** + * GLOBAL VARIABLES + **************************************************************************************/ + +BusDevice lsm6dsox(Wire, LSM6DSOX_ADDRESS); + +/************************************************************************************** + * FUNCTIONS + **************************************************************************************/ + +byte lsm6dsox_read_reg(byte const reg_addr) +{ + byte read_buf = 0; + lsm6dsox.wire().write_then_read(®_addr, 1, &read_buf, 1); + return read_buf; +} + +/************************************************************************************** + * SETUP/LOOP + **************************************************************************************/ + +void setup() +{ + Serial.begin(9600); +} + +void loop() +{ + /* Sleep between 5 and 500 ms */ + rtos::ThisThread::sleep_for(rtos::Kernel::Clock::duration_u32(random(5,500))); + /* Try to read some data from the LSM6DSOX. */ + byte const who_am_i = lsm6dsox_read_reg(LSM6DSOX_WHO_AM_I_REG); + /* Print thread id and chip id value to serial. */ + char msg[64] = {0}; + snprintf(msg, sizeof(msg), "%s: LSM6DSOX[WHO_AM_I] = 0x%X", rtos::ThisThread::get_name(), who_am_i); + Serial.println(msg); +} From c9cbe077203c081637ea2e84ce8bf954313fd4f9 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Wed, 10 Nov 2021 08:46:14 +0100 Subject: [PATCH 2/3] Fixing compilation break, unrelated to thread-specific code. --- examples/Breaks_4/Thread.inot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/Breaks_4/Thread.inot b/examples/Breaks_4/Thread.inot index 91875b5..4ba81e9 100644 --- a/examples/Breaks_4/Thread.inot +++ b/examples/Breaks_4/Thread.inot @@ -18,7 +18,7 @@ BusDevice lsm6dsox(Wire, LSM6DSOX_ADDRESS); * FUNCTIONS **************************************************************************************/ -byte lsm6dsox_read_reg(byte const reg_addr) +byte lsm6dsox_read_reg(byte reg_addr) { byte read_buf = 0; lsm6dsox.wire().write_then_read(®_addr, 1, &read_buf, 1); From 9c399edf555e14fcd4e515dec037c2a8c5ee072f Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Thu, 11 Nov 2021 10:08:38 +0100 Subject: [PATCH 3/3] Adding currently still breaking example to source code. --- examples/Breaks_5/Breaks_5.ino | 11 +++++++++++ examples/Breaks_5/SharedVariables.h | 0 examples/Breaks_5/Thread.inot | 19 +++++++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 examples/Breaks_5/Breaks_5.ino create mode 100644 examples/Breaks_5/SharedVariables.h create mode 100644 examples/Breaks_5/Thread.inot diff --git a/examples/Breaks_5/Breaks_5.ino b/examples/Breaks_5/Breaks_5.ino new file mode 100644 index 0000000..fbb7922 --- /dev/null +++ b/examples/Breaks_5/Breaks_5.ino @@ -0,0 +1,11 @@ +#include + +void setup() +{ + Thread.start(); +} + +void loop() +{ + +} \ No newline at end of file diff --git a/examples/Breaks_5/SharedVariables.h b/examples/Breaks_5/SharedVariables.h new file mode 100644 index 0000000..e69de29 diff --git a/examples/Breaks_5/Thread.inot b/examples/Breaks_5/Thread.inot new file mode 100644 index 0000000..c430b03 --- /dev/null +++ b/examples/Breaks_5/Thread.inot @@ -0,0 +1,19 @@ +/* This fails to compile because myEventHandler is declared + * after setup/loop and currently there's not automatic prototype + * generation as done for the ino file. + */ + +void setup() +{ + attachInterrupt(digitalPinToInterrupt(2), myEventHandler, CHANGE); +} + +void loop() +{ + +} + +void myEventHandler() +{ + /* Do something. */ +}