|
| 1 | +// |
| 2 | +//#define INT_IN(name) int name |
| 3 | +//#ifdef __cplusplus |
| 4 | +//#define STRING_IN(name) const std::string& name |
| 5 | +//#define STRING_OUT(name) std::string& name |
| 6 | +//#define BOOL_IN(name) const bool name |
| 7 | +//#define BOOL_OUT(name) bool& name |
| 8 | +//#define INT_OUT(name) int& name |
| 9 | +//#define INTEGER_LIST_IN(name) const int* name |
| 10 | +//#define STRUCT_OUT(struct_name, name) struct_name& name |
| 11 | +//#else |
| 12 | +//#define STRING_IN(name) const char* name |
| 13 | +//#define STRING_OUT(name) char* name |
| 14 | +//#define BOOL_IN(name) const bool name |
| 15 | +//#define BOOL_OUT(name) bool* name |
| 16 | +//#define INT_OUT(name) int* name |
| 17 | +//#define INTEGER_LIST_IN(name) const int* name |
| 18 | +//#define STRUCT_OUT(struct_name, name) esp_modem_ ## struct_name ## _t* name |
| 19 | +//#endif |
| 20 | +// |
| 21 | +//#define FORWARD_INT_IN(name) name |
| 22 | +//#define FORWARD_STRING_IN(name) name |
| 23 | +//#define FORWARD_STRING_OUT(name) name |
| 24 | +//#define FORWARD_BOOL_IN(name) name |
| 25 | +//#define FORWARD_BOOL_OUT(name) name |
| 26 | +//#define FORWARD_INT_OUT(name) name |
| 27 | +//#define FORWARD_INTEGER_LIST_IN(name) name |
| 28 | +//#define FORWARD_STRUCT_OUT(struct_name, name) name |
| 29 | + |
| 30 | +// Utility to count arguments (works for up to two parameters here) |
| 31 | +#define ESP_MODEM_GET_MACRO(_0, _1, _2, _3, _4, _5, _6, ESP_MODEM_MACRO_NAME, ...) ESP_MODEM_MACRO_NAME |
| 32 | +#define ESP_MODEM_COMMAND_PARAMS(...) ESP_MODEM_GET_MACRO(_0, ##__VA_ARGS__, ESP_MODEM_HELPER6, ESP_MODEM_HELPER5, ESP_MODEM_HELPER4, ESP_MODEM_HELPER3, ESP_MODEM_HELPER2, ESP_MODEM_HELPER1, ESP_MODEM_HELPER0)(PARAM_, ESP_MODEM_NO_COMMA, ESP_MODEM_NO_COMMA, ##__VA_ARGS__) |
| 33 | +#define ESP_MODEM_COMMAND_PARAMS_AFTER(...) ESP_MODEM_GET_MACRO(_0, ##__VA_ARGS__, ESP_MODEM_HELPER6, ESP_MODEM_HELPER5, ESP_MODEM_HELPER4, ESP_MODEM_HELPER3, ESP_MODEM_HELPER2, ESP_MODEM_HELPER1, ESP_MODEM_HELPER0)(PARAM_, ESP_MODEM_COMMA, ESP_MODEM_NO_COMMA, ##__VA_ARGS__) |
| 34 | +#define ESP_MODEM_COMMAND_FORWARD(...) ESP_MODEM_GET_MACRO(_0, ##__VA_ARGS__, ESP_MODEM_HELPER6, ESP_MODEM_HELPER5, ESP_MODEM_HELPER4, ESP_MODEM_HELPER3, ESP_MODEM_HELPER2, ESP_MODEM_HELPER1, ESP_MODEM_HELPER0)(FORWARD_, ESP_MODEM_NO_COMMA, ESP_MODEM_NO_COMMA, ##__VA_ARGS__) |
| 35 | +#define ESP_MODEM_COMMAND_FORWARD_AFTER(...) ESP_MODEM_GET_MACRO(_0, ##__VA_ARGS__, ESP_MODEM_HELPER6, ESP_MODEM_HELPER5, ESP_MODEM_HELPER4, ESP_MODEM_HELPER3, ESP_MODEM_HELPER2, ESP_MODEM_HELPER1, ESP_MODEM_HELPER0)(FORWARD_, ESP_MODEM_COMMA, ESP_MODEM_NO_COMMA, ##__VA_ARGS__) |
| 36 | + |
| 37 | +#define PARAM_STR_OUT(name) std::string& name |
| 38 | +#define FORWARD_STR_OUT(name) name |
| 39 | +#define PARAM_STR_IN(name) const std::string& name |
| 40 | +#define FORWARD_STR_IN(name) name |
| 41 | +#define PARAM_INT_OUT(name) int& name |
| 42 | +#define FORWARD_INT_OUT(name) name |
| 43 | +#define PARAM_INT_IN(name) int name |
| 44 | +#define FORWARD_INT_IN(name) name |
| 45 | +#define ESP_MODEM_COMMA , |
| 46 | +#define ESP_MODEM_NO_COMMA |
| 47 | + |
| 48 | +#define ESP_MODEM_HELPER_EVAL(x) x |
| 49 | +#define ESP_MODEM_HELPER_GENERIC(a, b) ESP_MODEM_HELPER_EVAL(a ## b) |
| 50 | +#define ESP_MODEM_HELPER0(prefix, lead_comma, trail_comma) |
| 51 | +#define ESP_MODEM_HELPER1(prefix, lead_comma, trail_comma, p1) lead_comma ESP_MODEM_HELPER_GENERIC(prefix, p1) trail_comma |
| 52 | +#define ESP_MODEM_HELPER2(prefix, lead_comma, trail_comma, p1, p2) lead_comma ESP_MODEM_HELPER_GENERIC(prefix, p1), ESP_MODEM_HELPER_GENERIC(prefix, p2) trail_comma |
| 53 | +#define ESP_MODEM_HELPER3(prefix, lead_comma, trail_comma, p1, p2, p3) lead_comma ESP_MODEM_HELPER_GENERIC(prefix, p1), ESP_MODEM_HELPER_GENERIC(prefix, p2), ESP_MODEM_HELPER_GENERIC(prefix, p3) trail_comma |
| 54 | +#define ESP_MODEM_HELPER4(prefix, lead_comma, trail_comma, p1, p2, p3, p4) lead_comma \ |
| 55 | + ESP_MODEM_HELPER_GENERIC(prefix, p1), \ |
| 56 | + ESP_MODEM_HELPER_GENERIC(prefix, p2), \ |
| 57 | + ESP_MODEM_HELPER_GENERIC(prefix, p3), \ |
| 58 | + ESP_MODEM_HELPER_GENERIC(prefix, p4) trail_comma |
| 59 | +#define ESP_MODEM_HELPER5(prefix, lead_comma, trail_comma, p1, p2, p3, p4, p5) lead_comma \ |
| 60 | + ESP_MODEM_HELPER_GENERIC(prefix, p1), \ |
| 61 | + ESP_MODEM_HELPER_GENERIC(prefix, p2), \ |
| 62 | + ESP_MODEM_HELPER_GENERIC(prefix, p3), \ |
| 63 | + ESP_MODEM_HELPER_GENERIC(prefix, p4), \ |
| 64 | + ESP_MODEM_HELPER_GENERIC(prefix, p5) trail_comma |
0 commit comments