Skip to content

Commit

Permalink
Code-generate for federated programs (#175)
Browse files Browse the repository at this point in the history
* Have LFC generate a main function that can optionally be included in the build

* CI

* CI

* CI

* Setup LFC in RIOT container

* Switch to riot master

* Fix

* Install LFC deps in zephyr CI also

* WIP

* WIP

* WIP: SimpleFederated.lf now compiles.
But invoking CMake correctly to generate two binaries and a shell script in `bin` is not working

* Generate a launch script for federated native

* Make federated launch script executable

* WIP

* Rework the handling of connections

* Various fixes to get all standalone tests to pass again

* Formatting

* More WIP

* Formatting

* More WIP

* Add @interface attr

* More WIP

* More WIP

* More WIP

* All tests are passing

* Refactor

* Formatting

* Refactorings

* More docs

* CI

* Fixes

* TcpIp fixes

* Revert more tcp stuff

* Avoid flooding log when a federate closes a socket

* Remove merge mistake

* Formatting

* Fix posix federated

* More minor fixes

* Format

* Minimum event queue of 2

* Remove some dead code

* Also close send_failed socketpair on reset

* Generate return 0 in main function

* Only generate launch script when we target native

* Set timeout of 1minute on our LF tests

* Add some info prints

* Add was_ever_connected API to network_channel

* Fix some warnings in unit-tests

* Avoid some unnecessary LF_INFO calls

* Do not timestamp logs for FlexPRET

* Format

* Remove build.sh in riot Lf example

* Use global _lf_environment

* Fix missing _lf_environment in test

* Dont need environment arg to TcpIp and CoapUdp ctors

* Coap updates

* Remove stale ref

---------

Co-authored-by: Lasse Rosenow <[email protected]>
  • Loading branch information
erlingrj and LasseRosenow authored Jan 21, 2025
1 parent 15ea9ba commit c592b89
Show file tree
Hide file tree
Showing 78 changed files with 2,533 additions and 926 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
**/build/
**/src-gen/
**/bin/
**/*.log
benchmarks/include
.vscode/
cmake-build-debug
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ if (NOT PLATFORM STREQUAL "ZEPHYR")
endif()

# Add compile definitions for platform and network channel specifics.
target_compile_definitions(reactor-uc PRIVATE "PLATFORM_${PLATFORM}")
target_compile_definitions(reactor-uc PUBLIC "PLATFORM_${PLATFORM}")

# Add compile definition for scheduler used
target_compile_definitions(reactor-uc PRIVATE "SCHEDULER_${SCHEDULER}")
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,4 @@ format-check:
ci: clean test coverage format-check

clean:
rm -rf build
rm -rf build test/lf/src-gen test/lf/bin
9 changes: 5 additions & 4 deletions examples/posix/federated/receiver.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,18 +50,19 @@ LF_REACTOR_CTOR_SIGNATURE_WITH_PARAMETERS(Receiver, InputExternalCtorArgs *in_ex
LF_PORT_REGISTER_EFFECT(self->in, self->r, 1);
}

LF_DEFINE_FEDERATED_INPUT_CONNECTION(Receiver, in, msg_t, 5, MSEC(100), false);
LF_DEFINE_FEDERATED_INPUT_CONNECTION_STRUCT(Receiver, in, msg_t, 5);
LF_DEFINE_FEDERATED_INPUT_CONNECTION_CTOR(Receiver, in, msg_t, 5, MSEC(100), false);

typedef struct {
FederatedConnectionBundle super;
TcpIpChannel channel;
LF_FEDERATED_INPUT_CONNECTION_INSTANCE(Receiver, in);
LF_FEDERATED_CONNECTION_BUNDLE_BOOKKEEPING_INSTANCES(1, 0)
} LF_FEDERATED_CONNECTION_BUNDLE_NAME(Receiver, Sender);
} LF_FEDERATED_CONNECTION_BUNDLE_TYPE(Receiver, Sender);

LF_FEDERATED_CONNECTION_BUNDLE_CTOR_SIGNATURE(Receiver, Sender) {
LF_FEDERATED_CONNECTION_BUNDLE_CTOR_PREAMBLE();
TcpIpChannel_ctor(&self->channel, parent->env, "127.0.0.1", PORT_NUM, AF_INET, false);
TcpIpChannel_ctor(&self->channel, "127.0.0.1", PORT_NUM, AF_INET, false);
LF_FEDERATED_CONNECTION_BUNDLE_CALL_CTOR();
LF_INITIALIZE_FEDERATED_INPUT_CONNECTION(Receiver, in, deserialize_msg_t);
}
Expand All @@ -80,7 +81,7 @@ LF_REACTOR_CTOR_SIGNATURE(MainRecv) {
LF_DEFINE_CHILD_INPUT_ARGS(receiver, in, 1, 1);
LF_INITIALIZE_CHILD_REACTOR_WITH_PARAMETERS(Receiver, receiver, 1, _receiver_in_args[i]);
LF_INITIALIZE_FEDERATED_CONNECTION_BUNDLE(Receiver, Sender);
LF_BUNDLE_REGISTER_DOWNSTREAM(Receiver, Sender, receiver, in);
lf_connect_federated_input(&self->Receiver_Sender_bundle.inputs[0]->super, &self->receiver->in[0].super);
}

LF_ENTRY_POINT_FEDERATED(MainRecv, SEC(1), true, true, 1, false)
Expand Down
10 changes: 6 additions & 4 deletions examples/posix/federated/sender.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,18 +59,19 @@ LF_REACTOR_CTOR_SIGNATURE_WITH_PARAMETERS(Sender, OutputExternalCtorArgs *out_ex
LF_PORT_REGISTER_SOURCE(self->out, self->r, 1);
}

LF_DEFINE_FEDERATED_OUTPUT_CONNECTION(Sender, out, msg_t, 1)
LF_DEFINE_FEDERATED_OUTPUT_CONNECTION_STRUCT(Sender, out, msg_t)
LF_DEFINE_FEDERATED_OUTPUT_CONNECTION_CTOR(Sender, out, msg_t)

typedef struct {
FederatedConnectionBundle super;
TcpIpChannel channel;
LF_FEDERATED_OUTPUT_CONNECTION_INSTANCE(Sender, out);
LF_FEDERATED_CONNECTION_BUNDLE_BOOKKEEPING_INSTANCES(0, 1);
} LF_FEDERATED_CONNECTION_BUNDLE_NAME(Sender, Receiver);
} LF_FEDERATED_CONNECTION_BUNDLE_TYPE(Sender, Receiver);

LF_FEDERATED_CONNECTION_BUNDLE_CTOR_SIGNATURE(Sender, Receiver) {
LF_FEDERATED_CONNECTION_BUNDLE_CTOR_PREAMBLE();
TcpIpChannel_ctor(&self->channel, parent->env, "127.0.0.1", PORT_NUM, AF_INET, true);
TcpIpChannel_ctor(&self->channel, "127.0.0.1", PORT_NUM, AF_INET, true);

LF_FEDERATED_CONNECTION_BUNDLE_CALL_CTOR();

Expand All @@ -94,8 +95,9 @@ LF_REACTOR_CTOR_SIGNATURE(MainSender) {
LF_DEFINE_CHILD_OUTPUT_ARGS(sender, out, 1, 1);
LF_INITIALIZE_CHILD_REACTOR_WITH_PARAMETERS(Sender, sender, 1, _sender_out_args[i]);
LF_INITIALIZE_FEDERATED_CONNECTION_BUNDLE(Sender, Receiver);
LF_BUNDLE_REGISTER_UPSTREAM(Sender, Receiver, sender, out);
lf_connect_federated_output(self->Sender_Receiver_bundle.outputs[0], self->sender->out);
}

LF_ENTRY_POINT_FEDERATED(MainSender, SEC(1), true, false, 1, true)

int main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/posix/hello/hello.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
LF_DEFINE_REACTION_BODY(TimerSource, r) {
LF_SCOPE_SELF(TimerSource);
LF_SCOPE_ENV();
printf("TimerSource World @ %lld\n", env->get_elapsed_logical_time(env));
printf("TimerSource World @ %"PRId64"\n", env->get_elapsed_logical_time(env));
}

int main() {
Expand Down
9 changes: 5 additions & 4 deletions examples/riot/coap_federated/receiver/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,18 +53,19 @@ LF_REACTOR_CTOR_SIGNATURE_WITH_PARAMETERS(Receiver, InputExternalCtorArgs *in_ex
LF_PORT_REGISTER_EFFECT(self->in, self->r, 1);
}

LF_DEFINE_FEDERATED_INPUT_CONNECTION(Receiver, in, lf_msg_t, 5, MSEC(100), false)
LF_DEFINE_FEDERATED_INPUT_CONNECTION_STRUCT(Receiver, in, msg_t, 5);
LF_DEFINE_FEDERATED_INPUT_CONNECTION_CTOR(Receiver, in, msg_t, 5, MSEC(100), false);

typedef struct {
FederatedConnectionBundle super;
CoapUdpIpChannel channel;
LF_FEDERATED_INPUT_CONNECTION_INSTANCE(Receiver, in);
LF_FEDERATED_CONNECTION_BUNDLE_BOOKKEEPING_INSTANCES(1, 0)
} LF_FEDERATED_CONNECTION_BUNDLE_NAME(Receiver, Sender);
} LF_FEDERATED_CONNECTION_BUNDLE_TYPE(Receiver, Sender);

LF_FEDERATED_CONNECTION_BUNDLE_CTOR_SIGNATURE(Receiver, Sender) {
LF_FEDERATED_CONNECTION_BUNDLE_CTOR_PREAMBLE();
CoapUdpIpChannel_ctor(&self->channel, parent->env, REMOTE_ADDRESS, REMOTE_PROTOCOL_FAMILY);
CoapUdpIpChannel_ctor(&self->channel, REMOTE_ADDRESS, REMOTE_PROTOCOL_FAMILY);
LF_FEDERATED_CONNECTION_BUNDLE_CALL_CTOR();
LF_INITIALIZE_FEDERATED_INPUT_CONNECTION(Receiver, in, deserialize_msg_t);
}
Expand All @@ -83,7 +84,7 @@ LF_REACTOR_CTOR_SIGNATURE(MainRecv) {
LF_DEFINE_CHILD_INPUT_ARGS(receiver, in, 1, 1);
LF_INITIALIZE_CHILD_REACTOR_WITH_PARAMETERS(Receiver, receiver, 1, _receiver_in_args[i]);
LF_INITIALIZE_FEDERATED_CONNECTION_BUNDLE(Receiver, Sender);
LF_BUNDLE_REGISTER_DOWNSTREAM(Receiver, Sender, receiver, in);
lf_connect_federated_input(&self->Receiver_Sender_bundle.inputs[0]->super, &self->receiver->in[0].super);
}

LF_ENTRY_POINT_FEDERATED(MainRecv, SEC(1), true, true, 1, false)
Expand Down
9 changes: 5 additions & 4 deletions examples/riot/coap_federated/sender/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,18 +60,19 @@ LF_REACTOR_CTOR_SIGNATURE_WITH_PARAMETERS(Sender, OutputExternalCtorArgs *out_ex
LF_PORT_REGISTER_SOURCE(self->out, self->r, 1);
}

LF_DEFINE_FEDERATED_OUTPUT_CONNECTION(Sender, out, lf_msg_t, 1)
LF_DEFINE_FEDERATED_OUTPUT_CONNECTION_STRUCT(Sender, out, msg_t)
LF_DEFINE_FEDERATED_OUTPUT_CONNECTION_CTOR(Sender, out, msg_t)

typedef struct {
FederatedConnectionBundle super;
CoapUdpIpChannel channel;
LF_FEDERATED_OUTPUT_CONNECTION_INSTANCE(Sender, out);
LF_FEDERATED_CONNECTION_BUNDLE_BOOKKEEPING_INSTANCES(0, 1);
} LF_FEDERATED_CONNECTION_BUNDLE_NAME(Sender, Receiver);
} LF_FEDERATED_CONNECTION_BUNDLE_TYPE(Sender, Receiver);

LF_FEDERATED_CONNECTION_BUNDLE_CTOR_SIGNATURE(Sender, Receiver) {
LF_FEDERATED_CONNECTION_BUNDLE_CTOR_PREAMBLE();
CoapUdpIpChannel_ctor(&self->channel, parent->env, REMOTE_ADDRESS, REMOTE_PROTOCOL_FAMILY);
CoapUdpIpChannel_ctor(&self->channel, REMOTE_ADDRESS, REMOTE_PROTOCOL_FAMILY);
LF_FEDERATED_CONNECTION_BUNDLE_CALL_CTOR();
LF_INITIALIZE_FEDERATED_OUTPUT_CONNECTION(Sender, out, serialize_msg_t);
}
Expand All @@ -93,7 +94,7 @@ LF_REACTOR_CTOR_SIGNATURE(MainSender) {
LF_DEFINE_CHILD_OUTPUT_ARGS(sender, out, 1, 1);
LF_INITIALIZE_CHILD_REACTOR_WITH_PARAMETERS(Sender, sender, 1, _sender_out_args[i]);
LF_INITIALIZE_FEDERATED_CONNECTION_BUNDLE(Sender, Receiver);
LF_BUNDLE_REGISTER_UPSTREAM(Sender, Receiver, sender, out);
lf_connect_federated_output((Connection *)self->Sender_Receiver_bundle.outputs[0], (Port *)self->sender->out);
}

LF_ENTRY_POINT_FEDERATED(MainSender, SEC(1), true, false, 1, true)
Expand Down
2 changes: 1 addition & 1 deletion examples/riot/hello/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
LF_DEFINE_REACTION_BODY(TimerSource, r) {
LF_SCOPE_SELF(TimerSource);
LF_SCOPE_ENV();
printf("TimerSource World @ %lld\n", env->get_elapsed_logical_time(env));
printf("Hello World @ %lld\n", env->get_elapsed_logical_time(env));
}

int main() {
Expand Down
9 changes: 5 additions & 4 deletions examples/zephyr/basic_federated/common/receiver.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,18 +64,19 @@ LF_REACTOR_CTOR_SIGNATURE_WITH_PARAMETERS(Receiver, InputExternalCtorArgs *in_ex
LF_PORT_REGISTER_EFFECT(self->in, self->r, 1);
}

LF_DEFINE_FEDERATED_INPUT_CONNECTION(Receiver, in, msg_t, 5, MSEC(100), false);
LF_DEFINE_FEDERATED_INPUT_CONNECTION_STRUCT(Receiver, in, msg_t, 5);
LF_DEFINE_FEDERATED_INPUT_CONNECTION_CTOR(Receiver, in, msg_t, 5, MSEC(100), false);

typedef struct {
FederatedConnectionBundle super;
TcpIpChannel channel;
LF_FEDERATED_INPUT_CONNECTION_INSTANCE(Receiver, in);
LF_FEDERATED_CONNECTION_BUNDLE_BOOKKEEPING_INSTANCES(1, 0)
} LF_FEDERATED_CONNECTION_BUNDLE_NAME(Receiver, Sender);
} LF_FEDERATED_CONNECTION_BUNDLE_TYPE(Receiver, Sender);

LF_FEDERATED_CONNECTION_BUNDLE_CTOR_SIGNATURE(Receiver, Sender) {
LF_FEDERATED_CONNECTION_BUNDLE_CTOR_PREAMBLE();
TcpIpChannel_ctor(&self->channel, parent->env, IP_ADDR, PORT_NUM, AF_INET, false);
TcpIpChannel_ctor(&self->channel, IP_ADDR, PORT_NUM, AF_INET, false);
LF_FEDERATED_CONNECTION_BUNDLE_CALL_CTOR();
LF_INITIALIZE_FEDERATED_INPUT_CONNECTION(Receiver, in, deserialize_payload_default);
}
Expand All @@ -94,6 +95,6 @@ LF_REACTOR_CTOR_SIGNATURE(MainRecv) {
LF_DEFINE_CHILD_INPUT_ARGS(receiver, in, 1, 1);
LF_INITIALIZE_CHILD_REACTOR_WITH_PARAMETERS(Receiver, receiver, 1, _receiver_in_args[i]);
LF_INITIALIZE_FEDERATED_CONNECTION_BUNDLE(Receiver, Sender);
LF_BUNDLE_REGISTER_DOWNSTREAM(Receiver, Sender, receiver, in);
lf_connect_federated_input(&self->Receiver_Sender_bundle.inputs[0]->super, &self->receiver->in[0].super);
}
LF_ENTRY_POINT_FEDERATED(MainRecv, FOREVER, true, true, 1, false)
15 changes: 8 additions & 7 deletions examples/zephyr/basic_federated/federated_sender/src/sender.c
Original file line number Diff line number Diff line change
Expand Up @@ -97,25 +97,26 @@ LF_REACTOR_CTOR_SIGNATURE_WITH_PARAMETERS(Sender, OutputExternalCtorArgs *out_ex
LF_PORT_REGISTER_SOURCE(self->out, self->r, 1);
}

LF_DEFINE_FEDERATED_OUTPUT_CONNECTION(Sender, out, msg_t, 1)
LF_DEFINE_FEDERATED_OUTPUT_CONNECTION_STRUCT(Sender, out, msg_t)
LF_DEFINE_FEDERATED_OUTPUT_CONNECTION_CTOR(Sender, out, msg_t)

typedef struct {
FederatedConnectionBundle super;
TcpIpChannel channel;
LF_FEDERATED_OUTPUT_CONNECTION_INSTANCE(Sender, out);
LF_FEDERATED_CONNECTION_BUNDLE_BOOKKEEPING_INSTANCES(0, 1);
} LF_FEDERATED_CONNECTION_BUNDLE_NAME(Sender, Receiver1);
} LF_FEDERATED_CONNECTION_BUNDLE_TYPE(Sender, Receiver1);

typedef struct {
FederatedConnectionBundle super;
TcpIpChannel channel;
LF_FEDERATED_OUTPUT_CONNECTION_INSTANCE(Sender, out);
LF_FEDERATED_CONNECTION_BUNDLE_BOOKKEEPING_INSTANCES(0, 1);
} LF_FEDERATED_CONNECTION_BUNDLE_NAME(Sender, Receiver2);
} LF_FEDERATED_CONNECTION_BUNDLE_TYPE(Sender, Receiver2);

LF_FEDERATED_CONNECTION_BUNDLE_CTOR_SIGNATURE(Sender, Receiver1) {
LF_FEDERATED_CONNECTION_BUNDLE_CTOR_PREAMBLE();
TcpIpChannel_ctor(&self->channel, parent->env, "192.168.1.100", PORT_CONN_1, AF_INET, true);
TcpIpChannel_ctor(&self->channel, "192.168.1.100", PORT_CONN_1, AF_INET, true);

LF_FEDERATED_CONNECTION_BUNDLE_CALL_CTOR();

Expand All @@ -124,7 +125,7 @@ LF_FEDERATED_CONNECTION_BUNDLE_CTOR_SIGNATURE(Sender, Receiver1) {

LF_FEDERATED_CONNECTION_BUNDLE_CTOR_SIGNATURE(Sender, Receiver2) {
LF_FEDERATED_CONNECTION_BUNDLE_CTOR_PREAMBLE();
TcpIpChannel_ctor(&self->channel, parent->env, "192.168.1.100", PORT_CONN_2, AF_INET, true);
TcpIpChannel_ctor(&self->channel, "192.168.1.100", PORT_CONN_2, AF_INET, true);

LF_FEDERATED_CONNECTION_BUNDLE_CALL_CTOR();

Expand Down Expand Up @@ -152,8 +153,8 @@ LF_REACTOR_CTOR_SIGNATURE(MainSender) {
LF_INITIALIZE_FEDERATED_CONNECTION_BUNDLE(Sender, Receiver1);
LF_INITIALIZE_FEDERATED_CONNECTION_BUNDLE(Sender, Receiver2);

LF_BUNDLE_REGISTER_UPSTREAM(Sender, Receiver1, sender, out);
LF_BUNDLE_REGISTER_UPSTREAM(Sender, Receiver2, sender, out);
lf_connect_federated_output(self->Sender_Receiver1_bundle.outputs[0], self->sender->out);
lf_connect_federated_output(self->Sender_Receiver2_bundle.outputs[0], self->sender->out);
}

LF_ENTRY_POINT_FEDERATED(MainSender, FOREVER, true, true, 2, true)
Expand Down
1 change: 1 addition & 0 deletions include/reactor-uc/environment.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "reactor-uc/scheduler.h"

typedef struct Environment Environment;
extern Environment *_lf_environment; // NOLINT

struct Environment {
Reactor *main; // The top-level reactor of the program.
Expand Down
41 changes: 26 additions & 15 deletions include/reactor-uc/logging.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,86 +5,97 @@

// The different verbosity levels supported
#define LF_LOG_LEVEL_OFF 0
#define LF_LOG_LEVEL_INFO 1
#define LF_LOG_LEVEL_ERR 2
#define LF_LOG_LEVEL_WARN 3
#define LF_LOG_LEVEL_DEBUG 4
#define LF_LOG_LEVEL_ERROR 1
#define LF_LOG_LEVEL_WARN 2
#define LF_LOG_LEVEL_INFO 3
#define LF_LOG_LEVEL_LOG 4
#define LF_LOG_LEVEL_DEBUG 5

// Add color codes to the output
#ifndef LF_COLORIZE_LOGS
#define LF_COLORIZE_LOGS 1
#endif

// Add timestamp to the logs
#if !defined(LF_TIMESTAMP_LOGS) && !defined(PLATFORM_FLEXPRET)
#define LF_TIMESTAMP_LOGS 1
#else
#undef LF_TIMESTAMP_LOGS
#define LF_TIMESTAMP_LOGS 0
#endif

// The default log level for any unspecified module
#ifndef LF_LOG_LEVEL_ALL
#ifndef NDEBUG
#define LF_LOG_LEVEL_ALL LF_LOG_LEVEL_DEBUG
#else
#define LF_LOG_LEVEL_ALL LF_LOG_LEVEL_ERR
#define LF_LOG_LEVEL_ALL LF_LOG_LEVEL_ERROR
#endif
#endif

// Define the log level for each module. If not defined, use LF_LOG_LEVEL_ALL
// or set to LF_LOG_LEVEL_ERR if LF_LOG_LEVEL_ALL is not defined.
// or set to LF_LOG_LEVEL_ERROR if LF_LOG_LEVEL_ALL is not defined.
#ifndef LF_LOG_LEVEL_ENV
#ifdef LF_LOG_LEVEL_ALL
#define LF_LOG_LEVEL_ENV LF_LOG_LEVEL_ALL
#else
#define LF_LOG_LEVEL_ENV LF_LOG_LEVEL_ERR
#define LF_LOG_LEVEL_ENV LF_LOG_LEVEL_ERROR
#endif
#endif

#ifndef LF_LOG_LEVEL_SCHED
#ifdef LF_LOG_LEVEL_ALL
#define LF_LOG_LEVEL_SCHED LF_LOG_LEVEL_ALL
#else
#define LF_LOG_LEVEL_SCHED LF_LOG_LEVEL_ERR
#define LF_LOG_LEVEL_SCHED LF_LOG_LEVEL_ERROR
#endif
#endif

#ifndef LF_LOG_LEVEL_QUEUE
#ifdef LF_LOG_LEVEL_ALL
#define LF_LOG_LEVEL_QUEUE LF_LOG_LEVEL_ALL
#else
#define LF_LOG_LEVEL_QUEUE LF_LOG_LEVEL_ERR
#define LF_LOG_LEVEL_QUEUE LF_LOG_LEVEL_ERROR
#endif
#endif

#ifndef LF_LOG_LEVEL_FED
#ifdef LF_LOG_LEVEL_ALL
#define LF_LOG_LEVEL_FED LF_LOG_LEVEL_ALL
#else
#define LF_LOG_LEVEL_FED LF_LOG_LEVEL_ERR
#define LF_LOG_LEVEL_FED LF_LOG_LEVEL_ERROR
#endif
#endif

#ifndef LF_LOG_LEVEL_TRIG
#ifdef LF_LOG_LEVEL_ALL
#define LF_LOG_LEVEL_TRIG LF_LOG_LEVEL_ALL
#else
#define LF_LOG_LEVEL_TRIG LF_LOG_LEVEL_ERR
#define LF_LOG_LEVEL_TRIG LF_LOG_LEVEL_ERROR
#endif
#endif

#ifndef LF_LOG_LEVEL_PLATFORM
#ifdef LF_LOG_LEVEL_ALL
#define LF_LOG_LEVEL_PLATFORM LF_LOG_LEVEL_ALL
#else
#define LF_LOG_LEVEL_PLATFORM LF_LOG_LEVEL_ERR
#define LF_LOG_LEVEL_PLATFORM LF_LOG_LEVEL_ERROR
#endif
#endif

#ifndef LF_LOG_LEVEL_CONN
#ifdef LF_LOG_LEVEL_ALL
#define LF_LOG_LEVEL_CONN LF_LOG_LEVEL_ALL
#else
#define LF_LOG_LEVEL_CONN LF_LOG_LEVEL_ERR
#define LF_LOG_LEVEL_CONN LF_LOG_LEVEL_ERROR
#endif
#endif

#ifndef LF_LOG_LEVEL_NET
#ifdef LF_LOG_LEVEL_ALL
#define LF_LOG_LEVEL_NET LF_LOG_LEVEL_ALL
#else
#define LF_LOG_LEVEL_NET LF_LOG_LEVEL_ERR
#define LF_LOG_LEVEL_NET LF_LOG_LEVEL_ERROR
#endif
#endif

Expand All @@ -106,7 +117,7 @@
} \
} while (0)

#define LF_ERR(module, fmt, ...) LF_LOG(LF_LOG_LEVEL_ERR, module, fmt, ##__VA_ARGS__)
#define LF_ERR(module, fmt, ...) LF_LOG(LF_LOG_LEVEL_ERROR, module, fmt, ##__VA_ARGS__)
#define LF_WARN(module, fmt, ...) LF_LOG(LF_LOG_LEVEL_WARN, module, fmt, ##__VA_ARGS__)
#define LF_INFO(module, fmt, ...) LF_LOG(LF_LOG_LEVEL_INFO, module, fmt, ##__VA_ARGS__)
#define LF_DEBUG(module, fmt, ...) LF_LOG(LF_LOG_LEVEL_DEBUG, module, fmt, ##__VA_ARGS__)
Expand Down
Loading

0 comments on commit c592b89

Please sign in to comment.