@@ -81,16 +81,6 @@ typedef void (*adacb_5arg_t) (uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
81
81
82
82
#define _ADA_CB_ARGS (...) _GET_6TH_ARG(_0, ##__VA_ARGS__, _ADA_CB_ARGS_5, _ADA_CB_ARGS_4, _ADA_CB_ARGS_3, _ADA_CB_ARGS_2, _ADA_CB_ARGS_1, _ADA_CB_ARGS_0)(__VA_ARGS__)
83
83
84
- /**
85
- * Macro function is called by other module with all intended parameters.
86
- */
87
- #define _cb_setup (_malloc_data , _malloc_len , _func , ... ) \
88
- do { \
89
- uint8_t const _count = VA_ARGS_NUM(__VA_ARGS__); \
90
- uint32_t arguments[] = { _ADA_CB_ARGS(__VA_ARGS__) }; \
91
- ada_callback_invoke(_malloc_data, _malloc_len, (void const*) _func, arguments, _count); \
92
- } while(0)
93
-
94
84
/**
95
85
* Schedule an function and parameters to be invoked in Ada Callback Task
96
86
* Macro can take at least 2 and at max 7 arguments
@@ -100,11 +90,15 @@ typedef void (*adacb_5arg_t) (uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
100
90
* - 3rd arg : function to be invoked
101
91
* - 3rd-7th arg : function argument, will be cast to uint32_t
102
92
*/
103
- #define ada_callback (...) _cb_setup(__VA_ARGS__)
104
-
93
+ #define ada_callback (_malloc_data , _malloc_len , _func , ... ) \
94
+ ({ \
95
+ uint8_t const _count = VA_ARGS_NUM(__VA_ARGS__); \
96
+ uint32_t arguments[] = { _ADA_CB_ARGS(__VA_ARGS__) }; \
97
+ ada_callback_invoke(_malloc_data, _malloc_len, (void const*) _func, arguments, _count); \
98
+ })
105
99
106
100
void ada_callback_init (uint32_t stack_sz );
107
- void ada_callback_invoke (const void * mdata , uint32_t mlen , const void * func , uint32_t arguments [], uint8_t argcount );
101
+ bool ada_callback_invoke (const void * mdata , uint32_t mlen , const void * func , uint32_t arguments [], uint8_t argcount );
108
102
void ada_callback_queue (ada_callback_t * cb_item );
109
103
bool ada_callback_queue_resize (uint32_t new_depth );
110
104
0 commit comments