根据需要的功能写固定的函数结构体,如下:
struct app_callbacks
{
void (*app_on_connection)(const uint8_t, struct gapc_connection_req_ind const *);
void (*app_on_disconnect)(struct gapc_disconnect_ind const *);
}
再初始化时定义全局静态结构体,如下:
static const struct app_callbacks user_app_callbacks = {
.app_on_connection = user_app_connection,
.app_on_disconnect = user_app_disconnect,
};
使用时可以直接如下使用:
CALLBACK_ARGS_2(user_app_callbacks.app_on_connection, conidx, param)
其中CALLBACK_ARGS_2
为:
#define CALLBACK_ARGS_2(cb, arg1, arg2) {if (cb != NULL) cb(arg1, arg2);}
这样的好处是,修改程序时,调用方法固定,只需要改底层。