Skip to content

Commit 828008b

Browse files
authored
Several smaller fixes and improvements after porting Polulu robot to uc (#154)
* Fix the preamble generator * Also test imported preambles * Fix scoping * Update macros * Add support for inheritance * Also collect prembles in suport type * Fix preamble include system * Formatting * Rmove STDC_FORMAT_MACROS define * Minor fixes * Port deadline macros to new system * Also add support for main reactor with parameters * Formatting * Native platform for Deadline.lf * Add a couple of target properties and add interleaved connections * support both bank_idx and bank_indxe * Fix
1 parent 5bd4aa6 commit 828008b

File tree

88 files changed

+1148
-775
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+1148
-775
lines changed

benchmarks/src/PingPongUc.lf

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
* @author Edward A. Lee
2020
*/
2121
target uC {
22+
platform: Native,
2223
fast: true,
2324
build-type: Release
2425
}
@@ -32,9 +33,6 @@ reactor Ping(count: size_t = 1000000) {
3233
output finished: bool
3334
state pingsLeft: size_t = count
3435
logical action serve
35-
reaction(startup) {=
36-
self->pingsLeft = self->count;
37-
=}
3836

3937
reaction(start, serve) -> send {=
4038
lf_set(send, self->pingsLeft--);

benchmarks/src/ReactionLatencyUc.lf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
target uC {
2-
build-type: Release
2+
build-type: Release,
3+
platform: Native,
34
}
45

56

examples/common/timer_source.h

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
#include "reactor-uc/reactor-uc.h"
22

3-
DEFINE_TIMER_STRUCT(TimerSource, t, 1, 0);
4-
DEFINE_TIMER_CTOR(TimerSource, t, 1, 0);
5-
DEFINE_REACTION_STRUCT(TimerSource, r, 0);
6-
DEFINE_REACTION_CTOR(TimerSource, r, 0);
3+
LF_DEFINE_TIMER_STRUCT(TimerSource, t, 1, 0);
4+
LF_DEFINE_TIMER_CTOR(TimerSource, t, 1, 0);
5+
LF_DEFINE_REACTION_STRUCT(TimerSource, r, 0);
6+
LF_DEFINE_REACTION_CTOR(TimerSource, r, 0);
77

88
typedef struct {
99
Reactor super;
10-
TIMER_INSTANCE(TimerSource, t);
11-
REACTION_INSTANCE(TimerSource, r);
12-
REACTOR_BOOKKEEPING_INSTANCES(1,1,0);
10+
LF_TIMER_INSTANCE(TimerSource, t);
11+
LF_REACTION_INSTANCE(TimerSource, r);
12+
LF_REACTOR_BOOKKEEPING_INSTANCES(1,1,0);
1313
} TimerSource;
1414

1515

16-
REACTOR_CTOR_SIGNATURE(TimerSource) {
17-
REACTOR_CTOR_PREAMBLE();
18-
REACTOR_CTOR(TimerSource);
19-
INITIALIZE_REACTION(TimerSource, r);
20-
INITIALIZE_TIMER(TimerSource, t, MSEC(0), MSEC(500));
21-
TIMER_REGISTER_EFFECT(self->t, self->r);
16+
LF_REACTOR_CTOR_SIGNATURE(TimerSource) {
17+
LF_REACTOR_CTOR_PREAMBLE();
18+
LF_REACTOR_CTOR(TimerSource);
19+
LF_INITIALIZE_REACTION(TimerSource, r);
20+
LF_INITIALIZE_TIMER(TimerSource, t, MSEC(0), MSEC(500));
21+
LF_TIMER_REGISTER_EFFECT(self->t, self->r);
2222
}
2323

24-
ENTRY_POINT(TimerSource, SEC(1), false, false);
24+
LF_ENTRY_POINT(TimerSource, SEC(1), false, false);

examples/flexpret/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ project(fp-lf)
1414
include(src-gen/Smoke/CMakeLists.txt)
1515
add_subdirectory(${REACTOR_UC_PATH})
1616

17-
add_executable(fp-smoke main.c ${LF_SOURCES})
17+
add_executable(fp-smoke main.c ${LFC_GEN_SOURCES})
1818
target_link_libraries(fp-smoke PUBLIC reactor-uc)
19-
target_include_directories(fp-smoke PRIVATE ${LF_INCLUDE_DIRS})
19+
target_include_directories(fp-smoke PRIVATE ${LFC_GEN_INCLUDE_DIRS})
2020

2121
fp_add_outputs(fp-smoke)

examples/pico/blinky.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ void pico_toggle_led() {
3737
#endif
3838
}
3939

40-
DEFINE_REACTION_BODY(TimerSource, r) {
41-
SCOPE_SELF(TimerSource);
42-
SCOPE_ENV();
40+
LF_DEFINE_REACTION_BODY(TimerSource, r) {
41+
LF_SCOPE_SELF(TimerSource);
42+
LF_SCOPE_ENV();
4343
printf("Hello World @ %lld\n", env->get_elapsed_logical_time(env));
4444
pico_toggle_led();
4545
}

examples/posix/federated/receiver.c

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -19,71 +19,71 @@ lf_ret_t deserialize_msg_t(void *user_struct, const unsigned char *msg_buf, size
1919
return LF_OK;
2020
}
2121

22-
DEFINE_REACTION_STRUCT(Receiver, r, 0);
23-
DEFINE_REACTION_CTOR(Receiver, r, 0);
24-
DEFINE_INPUT_STRUCT(Receiver, in, 1, 0, msg_t, 0);
25-
DEFINE_INPUT_CTOR(Receiver, in, 1, 0, msg_t, 0);
22+
LF_DEFINE_REACTION_STRUCT(Receiver, r, 0);
23+
LF_DEFINE_REACTION_CTOR(Receiver, r, 0);
24+
LF_DEFINE_INPUT_STRUCT(Receiver, in, 1, 0, msg_t, 0);
25+
LF_DEFINE_INPUT_CTOR(Receiver, in, 1, 0, msg_t, 0);
2626

2727
typedef struct {
2828
Reactor super;
29-
REACTION_INSTANCE(Receiver, r);
30-
PORT_INSTANCE(Receiver, in, 1);
29+
LF_REACTION_INSTANCE(Receiver, r);
30+
LF_PORT_INSTANCE(Receiver, in, 1);
3131
int cnt;
32-
REACTOR_BOOKKEEPING_INSTANCES(1, 1, 0);
32+
LF_REACTOR_BOOKKEEPING_INSTANCES(1, 1, 0);
3333
} Receiver;
3434

35-
DEFINE_REACTION_BODY(Receiver, r) {
36-
SCOPE_SELF(Receiver);
37-
SCOPE_ENV();
38-
SCOPE_PORT(Receiver, in);
35+
LF_DEFINE_REACTION_BODY(Receiver, r) {
36+
LF_SCOPE_SELF(Receiver);
37+
LF_SCOPE_ENV();
38+
LF_SCOPE_PORT(Receiver, in);
3939
printf("Input triggered @ %" PRId64 " with %s size %d\n", env->get_elapsed_logical_time(env), in->value.msg,
4040
in->value.size);
4141
}
4242

43-
REACTOR_CTOR_SIGNATURE_WITH_PARAMETERS(Receiver, InputExternalCtorArgs *in_external) {
44-
REACTOR_CTOR_PREAMBLE();
45-
REACTOR_CTOR(Receiver);
46-
INITIALIZE_REACTION(Receiver, r);
47-
INITIALIZE_INPUT(Receiver, in, 1, in_external);
43+
LF_REACTOR_CTOR_SIGNATURE_WITH_PARAMETERS(Receiver, InputExternalCtorArgs *in_external) {
44+
LF_REACTOR_CTOR_PREAMBLE();
45+
LF_REACTOR_CTOR(Receiver);
46+
LF_INITIALIZE_REACTION(Receiver, r);
47+
LF_INITIALIZE_INPUT(Receiver, in, 1, in_external);
4848

4949
// Register reaction as an effect of in
50-
PORT_REGISTER_EFFECT(self->in, self->r, 1);
50+
LF_PORT_REGISTER_EFFECT(self->in, self->r, 1);
5151
}
5252

53-
DEFINE_FEDERATED_INPUT_CONNECTION(Receiver, in, msg_t, 5, MSEC(100), false);
53+
LF_DEFINE_FEDERATED_INPUT_CONNECTION(Receiver, in, msg_t, 5, MSEC(100), false);
5454

5555
typedef struct {
5656
FederatedConnectionBundle super;
5757
TcpIpChannel channel;
58-
FEDERATED_INPUT_CONNECTION_INSTANCE(Receiver, in);
59-
FEDERATED_CONNECTION_BUNDLE_BOOKKEEPING_INSTANCES(1, 0)
60-
} FEDERATED_CONNECTION_BUNDLE_NAME(Receiver, Sender);
58+
LF_FEDERATED_INPUT_CONNECTION_INSTANCE(Receiver, in);
59+
LF_FEDERATED_CONNECTION_BUNDLE_BOOKKEEPING_INSTANCES(1,0)
60+
} LF_FEDERATED_CONNECTION_BUNDLE_NAME(Receiver, Sender);
6161

62-
FEDERATED_CONNECTION_BUNDLE_CTOR_SIGNATURE(Receiver, Sender) {
63-
FEDERATED_CONNECTION_BUNDLE_CTOR_PREAMBLE();
62+
LF_FEDERATED_CONNECTION_BUNDLE_CTOR_SIGNATURE(Receiver, Sender) {
63+
LF_FEDERATED_CONNECTION_BUNDLE_CTOR_PREAMBLE();
6464
TcpIpChannel_ctor(&self->channel, parent->env, "127.0.0.1", PORT_NUM, AF_INET, false);
65-
FEDERATED_CONNECTION_BUNDLE_CALL_CTOR();
66-
INITIALIZE_FEDERATED_INPUT_CONNECTION(Receiver, in, deserialize_msg_t);
65+
LF_FEDERATED_CONNECTION_BUNDLE_CALL_CTOR();
66+
LF_INITIALIZE_FEDERATED_INPUT_CONNECTION(Receiver, in, deserialize_msg_t);
6767
}
6868

6969
typedef struct {
7070
Reactor super;
71-
CHILD_REACTOR_INSTANCE(Receiver, receiver, 1);
72-
FEDERATED_CONNECTION_BUNDLE_INSTANCE(Receiver, Sender);
73-
FEDERATE_BOOKKEEPING_INSTANCES(1);
74-
CHILD_INPUT_SOURCES(receiver, in, 1, 1, 0);
71+
LF_CHILD_REACTOR_INSTANCE(Receiver, receiver, 1);
72+
LF_FEDERATED_CONNECTION_BUNDLE_INSTANCE(Receiver, Sender);
73+
LF_FEDERATE_BOOKKEEPING_INSTANCES(1);
74+
LF_CHILD_INPUT_SOURCES(receiver, in, 1, 1, 0);
7575
} MainRecv;
7676

77-
REACTOR_CTOR_SIGNATURE(MainRecv) {
78-
FEDERATE_CTOR_PREAMBLE();
79-
REACTOR_CTOR(MainRecv);
80-
DEFINE_CHILD_INPUT_ARGS(receiver, in, 1, 1);
81-
INITIALIZE_CHILD_REACTOR_WITH_PARAMETERS(Receiver, receiver, 1, _receiver_in_args[i]);
82-
INITIALIZE_FEDERATED_CONNECTION_BUNDLE(Receiver, Sender);
83-
BUNDLE_REGISTER_DOWNSTREAM(Receiver, Sender, receiver, in);
77+
LF_REACTOR_CTOR_SIGNATURE(MainRecv) {
78+
LF_FEDERATE_CTOR_PREAMBLE();
79+
LF_REACTOR_CTOR(MainRecv);
80+
LF_DEFINE_CHILD_INPUT_ARGS(receiver, in, 1, 1);
81+
LF_INITIALIZE_CHILD_REACTOR_WITH_PARAMETERS(Receiver, receiver, 1, _receiver_in_args[i]);
82+
LF_INITIALIZE_FEDERATED_CONNECTION_BUNDLE(Receiver, Sender);
83+
LF_BUNDLE_REGISTER_DOWNSTREAM(Receiver, Sender, receiver, in);
8484
}
8585

86-
ENTRY_POINT_FEDERATED(MainRecv, SEC(1), true, true, 1, false)
86+
LF_ENTRY_POINT_FEDERATED(MainRecv, SEC(1), true, true, 1, false)
8787

8888
int main() {
8989
lf_start();

examples/posix/federated/sender.c

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -21,25 +21,25 @@ size_t serialize_msg_t(const void *user_struct, size_t user_struct_size, unsigne
2121
return sizeof(msg->size) + msg->size;
2222
}
2323

24-
DEFINE_TIMER_STRUCT(Sender, t, 1, 0)
25-
DEFINE_TIMER_CTOR(Sender, t, 1, 0)
26-
DEFINE_REACTION_STRUCT(Sender, r, 1)
27-
DEFINE_REACTION_CTOR(Sender, r, 0)
28-
DEFINE_OUTPUT_STRUCT(Sender, out, 1, msg_t)
29-
DEFINE_OUTPUT_CTOR(Sender, out, 1)
24+
LF_DEFINE_TIMER_STRUCT(Sender, t, 1, 0)
25+
LF_DEFINE_TIMER_CTOR(Sender, t, 1, 0)
26+
LF_DEFINE_REACTION_STRUCT(Sender, r, 1)
27+
LF_DEFINE_REACTION_CTOR(Sender, r, 0)
28+
LF_DEFINE_OUTPUT_STRUCT(Sender, out, 1, msg_t)
29+
LF_DEFINE_OUTPUT_CTOR(Sender, out, 1)
3030

3131
typedef struct {
3232
Reactor super;
33-
TIMER_INSTANCE(Sender, t);
34-
REACTION_INSTANCE(Sender, r);
35-
PORT_INSTANCE(Sender, out, 1);
36-
REACTOR_BOOKKEEPING_INSTANCES(1, 2, 0);
33+
LF_TIMER_INSTANCE(Sender, t);
34+
LF_REACTION_INSTANCE(Sender, r);
35+
LF_PORT_INSTANCE(Sender, out, 1);
36+
LF_REACTOR_BOOKKEEPING_INSTANCES(1, 2, 0);
3737
} Sender;
3838

39-
DEFINE_REACTION_BODY(Sender, r) {
40-
SCOPE_SELF(Sender);
41-
SCOPE_ENV();
42-
SCOPE_PORT(Sender, out);
39+
LF_DEFINE_REACTION_BODY(Sender, r) {
40+
LF_SCOPE_SELF(Sender);
41+
LF_SCOPE_ENV();
42+
LF_SCOPE_PORT(Sender, out);
4343

4444
printf("Timer triggered @ %" PRId64 "\n", env->get_elapsed_logical_time(env));
4545
msg_t val;
@@ -48,55 +48,55 @@ DEFINE_REACTION_BODY(Sender, r) {
4848
lf_set(out, val);
4949
}
5050

51-
REACTOR_CTOR_SIGNATURE_WITH_PARAMETERS(Sender, OutputExternalCtorArgs *out_external) {
52-
REACTOR_CTOR_PREAMBLE();
53-
REACTOR_CTOR(Sender);
54-
INITIALIZE_REACTION(Sender, r);
55-
INITIALIZE_TIMER(Sender, t, MSEC(0), SEC(1));
56-
INITIALIZE_OUTPUT(Sender, out, 1, out_external);
51+
LF_REACTOR_CTOR_SIGNATURE_WITH_PARAMETERS(Sender, OutputExternalCtorArgs *out_external) {
52+
LF_REACTOR_CTOR_PREAMBLE();
53+
LF_REACTOR_CTOR(Sender);
54+
LF_INITIALIZE_REACTION(Sender, r);
55+
LF_INITIALIZE_TIMER(Sender, t, MSEC(0), SEC(1));
56+
LF_INITIALIZE_OUTPUT(Sender, out, 1, out_external);
5757

58-
TIMER_REGISTER_EFFECT(self->t, self->r);
59-
PORT_REGISTER_SOURCE(self->out, self->r, 1);
58+
LF_TIMER_REGISTER_EFFECT(self->t, self->r);
59+
LF_PORT_REGISTER_SOURCE(self->out, self->r, 1);
6060
}
6161

62-
DEFINE_FEDERATED_OUTPUT_CONNECTION(Sender, out, msg_t, 1)
62+
LF_DEFINE_FEDERATED_OUTPUT_CONNECTION(Sender, out, msg_t, 1)
6363

6464
typedef struct {
6565
FederatedConnectionBundle super;
6666
TcpIpChannel channel;
67-
FEDERATED_OUTPUT_CONNECTION_INSTANCE(Sender, out);
68-
FEDERATED_CONNECTION_BUNDLE_BOOKKEEPING_INSTANCES(0, 1);
69-
} FEDERATED_CONNECTION_BUNDLE_NAME(Sender, Receiver);
67+
LF_FEDERATED_OUTPUT_CONNECTION_INSTANCE(Sender, out);
68+
LF_FEDERATED_CONNECTION_BUNDLE_BOOKKEEPING_INSTANCES(0, 1);
69+
} LF_FEDERATED_CONNECTION_BUNDLE_NAME(Sender, Receiver);
7070

71-
FEDERATED_CONNECTION_BUNDLE_CTOR_SIGNATURE(Sender, Receiver) {
72-
FEDERATED_CONNECTION_BUNDLE_CTOR_PREAMBLE();
71+
LF_FEDERATED_CONNECTION_BUNDLE_CTOR_SIGNATURE(Sender, Receiver) {
72+
LF_FEDERATED_CONNECTION_BUNDLE_CTOR_PREAMBLE();
7373
TcpIpChannel_ctor(&self->channel, parent->env, "127.0.0.1", PORT_NUM, AF_INET, true);
7474

75-
FEDERATED_CONNECTION_BUNDLE_CALL_CTOR();
76-
77-
INITIALIZE_FEDERATED_OUTPUT_CONNECTION(Sender, out, serialize_msg_t);
75+
LF_FEDERATED_CONNECTION_BUNDLE_CALL_CTOR();
76+
77+
LF_INITIALIZE_FEDERATED_OUTPUT_CONNECTION(Sender, out, serialize_msg_t);
7878
}
7979

8080
// Reactor main
8181
typedef struct {
8282
Reactor super;
83-
CHILD_REACTOR_INSTANCE(Sender, sender, 1);
84-
FEDERATED_CONNECTION_BUNDLE_INSTANCE(Sender, Receiver);
85-
FEDERATE_BOOKKEEPING_INSTANCES(1);
86-
CHILD_OUTPUT_CONNECTIONS(sender, out, 1, 1, 1);
87-
CHILD_OUTPUT_EFFECTS(sender, out, 1, 1, 0);
88-
CHILD_OUTPUT_OBSERVERS(sender, out, 1, 1, 0);
83+
LF_CHILD_REACTOR_INSTANCE(Sender, sender, 1);
84+
LF_FEDERATED_CONNECTION_BUNDLE_INSTANCE(Sender, Receiver);
85+
LF_FEDERATE_BOOKKEEPING_INSTANCES(1);
86+
LF_CHILD_OUTPUT_CONNECTIONS(sender, out, 1, 1, 1);
87+
LF_CHILD_OUTPUT_EFFECTS(sender, out, 1, 1, 0);
88+
LF_CHILD_OUTPUT_OBSERVERS(sender, out, 1, 1, 0);
8989
} MainSender;
9090

91-
REACTOR_CTOR_SIGNATURE(MainSender) {
92-
FEDERATE_CTOR_PREAMBLE();
93-
DEFINE_CHILD_OUTPUT_ARGS(sender, out, 1, 1);
94-
INITIALIZE_CHILD_REACTOR_WITH_PARAMETERS(Sender, sender, 1, _sender_out_args[i]);
95-
INITIALIZE_FEDERATED_CONNECTION_BUNDLE(Sender, Receiver);
96-
BUNDLE_REGISTER_UPSTREAM(Sender, Receiver, sender, out);
97-
REACTOR_CTOR(MainSender);
91+
LF_REACTOR_CTOR_SIGNATURE(MainSender) {
92+
LF_FEDERATE_CTOR_PREAMBLE();
93+
LF_DEFINE_CHILD_OUTPUT_ARGS(sender, out,1,1);
94+
LF_INITIALIZE_CHILD_REACTOR_WITH_PARAMETERS(Sender, sender, 1, _sender_out_args[i]);
95+
LF_INITIALIZE_FEDERATED_CONNECTION_BUNDLE(Sender, Receiver);
96+
LF_BUNDLE_REGISTER_UPSTREAM(Sender, Receiver, sender, out);
97+
LF_REACTOR_CTOR(MainSender);
9898
}
99-
ENTRY_POINT_FEDERATED(MainSender, SEC(1), true, false, 1, true)
99+
LF_ENTRY_POINT_FEDERATED(MainSender, SEC(1), true, false, 1, true)
100100

101101
int main() {
102102
lf_start();

examples/posix/hello/hello.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#include "reactor-uc/reactor-uc.h"
22
#include "../../common/timer_source.h"
33

4-
DEFINE_REACTION_BODY(TimerSource, r) {
5-
SCOPE_SELF(TimerSource);
6-
SCOPE_ENV();
4+
LF_DEFINE_REACTION_BODY(TimerSource, r) {
5+
LF_SCOPE_SELF(TimerSource);
6+
LF_SCOPE_ENV();
77
printf("TimerSource World @ %lld\n", env->get_elapsed_logical_time(env));
88
}
99

examples/riot/blinky/main.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
#include "../../common/timer_source.h"
55

66

7-
DEFINE_REACTION_BODY(TimerSource, r) {
8-
SCOPE_SELF(TimerSource);
9-
SCOPE_ENV();
7+
LF_DEFINE_REACTION_BODY(TimerSource, r) {
8+
LF_SCOPE_SELF(TimerSource);
9+
LF_SCOPE_ENV();
1010
printf("Hello World @ %lld\n", env->get_elapsed_logical_time(env));
1111
LED0_TOGGLE;
1212
}

examples/riot/hello/main.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
#include "../../common/timer_source.h"
44

5-
DEFINE_REACTION_BODY(TimerSource, r) {
6-
SCOPE_SELF(TimerSource);
7-
SCOPE_ENV();
5+
LF_DEFINE_REACTION_BODY(TimerSource, r) {
6+
LF_SCOPE_SELF(TimerSource);
7+
LF_SCOPE_ENV();
88
printf("TimerSource World @ %lld\n", env->get_elapsed_logical_time(env));
99
}
1010

0 commit comments

Comments
 (0)