41
41
**************************************************************************************/
42
42
43
43
#define SOURCE (name, type ) \
44
- public: \
45
- Source<type> name; \
46
- private:
44
+ Source<type> name;
47
45
48
46
/* We need to call the SinkBlocking<T>(size_t const size)
49
47
* non-default constructor using size as parameter.
@@ -61,14 +59,10 @@ public: \
61
59
*/
62
60
63
61
#define SINK_2_ARG (name, type ) \
64
- public: \
65
- SinkBlocking<type> name{1 }; \
66
- private:
62
+ SinkBlocking<type> name{1 }
67
63
68
64
#define SINK_3_ARG (name, type, size ) \
69
- public: \
70
- SinkBlocking<type> name{size}; \
71
- private:
65
+ SinkBlocking<type> name{size}
72
66
73
67
/* Black C macro magic enabling "macro overloading"
74
68
* with same name macro, but multiple arguments.
@@ -78,10 +72,10 @@ public: \
78
72
#define SINK (...) GET_SINK_MACRO(__VA_ARGS__, SINK_3_ARG, SINK_2_ARG)(__VA_ARGS__)
79
73
80
74
#define SINK_NON_BLOCKING (name, type ) \
81
- public: \
82
- SinkNonBlocking<type> name{}; \
83
- private:
75
+ SinkNonBlocking<type> name{}
84
76
77
+ #define CONNECT (source_thread, source_name, sink_thread, sink_name ) \
78
+ source_thread##Private::source_name.connectTo(sink_thread##Private::sink_name)
85
79
86
80
#define SHARED_2_ARG (name, type ) \
87
81
Shared<type> name;
@@ -135,13 +129,28 @@ class Arduino_Threads
135
129
void threadFunc ();
136
130
};
137
131
138
- #define THD_ENTER (tabname ) class ARDUINO_THREADS_CONCAT (tabname, Class) : public Arduino_Threads { \
139
- public: \
140
- ARDUINO_THREADS_CONCAT (tabname, Class)() { _tabname = ARDUINO_THREADS_TO_STRING (tabname); } \
141
- private: \
132
+ #define THD_SETUP (ns ) ns::setup()
133
+ #define THD_LOOP (ns ) ns::loop()
134
+
135
+ #define THD_ENTER (tabname ) \
136
+ namespace ARDUINO_THREADS_CONCAT ( tabname,Private)\
137
+ {\
138
+ void setup ();\
139
+ void loop ();\
140
+ }\
141
+ class ARDUINO_THREADS_CONCAT (tabname, Class) : public Arduino_Threads\
142
+ {\
143
+ public: \
144
+ ARDUINO_THREADS_CONCAT (tabname, Class)() { _tabname = ARDUINO_THREADS_TO_STRING (tabname); }\
145
+ protected: \
146
+ virtual void setup () override { THD_SETUP (ARDUINO_THREADS_CONCAT (tabname,Private)); }\
147
+ virtual void loop () override { THD_LOOP (ARDUINO_THREADS_CONCAT (tabname,Private)); }\
148
+ };\
149
+ namespace ARDUINO_THREADS_CONCAT ( tabname,Private)\
150
+ {
142
151
143
- #define THD_DONE (tabname ) \
144
- }; \
152
+ #define THD_DONE (tabname )\
153
+ };\
145
154
ARDUINO_THREADS_CONCAT (tabname,Class) tabname;
146
155
147
156
#endif /* ARDUINO_THREADS_H_ */
0 commit comments