@@ -81,16 +81,6 @@ typedef void (*adacb_5arg_t) (uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
8181
8282#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__)
8383
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-
9484/**
9585 * Schedule an function and parameters to be invoked in Ada Callback Task
9686 * 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);
10090 * - 3rd arg : function to be invoked
10191 * - 3rd-7th arg : function argument, will be cast to uint32_t
10292 */
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+ })
10599
106100void 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 );
108102void ada_callback_queue (ada_callback_t * cb_item );
109103bool ada_callback_queue_resize (uint32_t new_depth );
110104
0 commit comments