typedef struct {
int event;
+ unsigned int size;
gpointer event_data;
} event_t;
if (!event_handler_cb) {
BT_ERR("Upstream handler not registered");
} else
- (*event_handler_cb) (event_info->event, event_info->event_data);
+ (*event_handler_cb) (event_info->event, event_info->event_data, event_info->size);
BT_DBG("-");
return G_SOURCE_REMOVE;
g_thread_new ("OALEventScheduler", __event_handler_loop, NULL);
}
-void send_event_no_trace(oal_event_t event, gpointer event_data)
+void send_event_no_trace(oal_event_t event, gpointer event_data, gsize len)
{
event_t *event_info;
* between threads. */
event_info = g_slice_new0 (event_t);
event_info->event = event;
+ event_info->size = len;
event_info->event_data = event_data;
/* Invoke the function. */
(GDestroyNotify) event_data_free);
}
-void send_event_bda_trace(oal_event_t event, gpointer event_data, bt_address_t *address)
+void send_event_bda_trace(oal_event_t event, gpointer event_data, gsize len, bt_address_t *address)
{
- send_event_no_trace(event, event_data);
+ send_event_no_trace(event, event_data, len);
}
-void send_event(oal_event_t event, gpointer event_data)
+void send_event(oal_event_t event, gpointer event_data, gsize len)
{
- send_event_bda_trace(event, event_data, NULL);
+ send_event_bda_trace(event, event_data, len, NULL);
}
#undef _OAL_EVENT_DISPATCHER_C_
#define BLUETOOTH_UUID_STRING_MAX 50
-typedef void (*oal_event_callback)(int event, gpointer event_data);
+typedef void (*oal_event_callback)(int event, gpointer event_data, gsize size);
typedef struct {
unsigned char addr[BT_ADDRESS_BYTES_NUM];
ret = blued_api->init(&callbacks);
- if(ret != BT_STATUS_SUCCESS) {
+ if (ret != BT_STATUS_SUCCESS) {
BT_ERR("Adapter callback registration failed: [%s]", status2string(ret));
blued_api->cleanup();
return convert_to_oal_status(ret);
event = (BT_STATE_ON == status)?OAL_EVENT_ADAPTER_ENABLED:OAL_EVENT_ADAPTER_DISABLED;
- send_event(event, NULL);
+ send_event(event, NULL, 0);
}
static gboolean retry_enable_adapter(gpointer data)
#define API_TRACE(fmt, args...) {LOG_(LOG_ID_SYSTEM, DLOG_INFO, "OAL_API", GREEN(fmt), ##args); \
LOG_(LOG_ID_MAIN, DLOG_INFO, LOG_TAG, GREEN("[OAL_API]"fmt), ##args);}
-#define send_event_trace(e,d,a, fmt, args...) do {\
+#define send_event_trace(e, d, l, a, fmt, args...) do {\
bdstr_t bdstr;\
- send_event_no_trace(e, d); \
+ send_event_no_trace(e, d, l); \
LOG_(LOG_ID_SYSTEM, DLOG_INFO, "OAL_EVENT", GREEN(fmt" [%s] %s"), ##args, bdt_bd2str(a, &bdstr), str_event[event]); \
LOG_(LOG_ID_MAIN, DLOG_INFO, LOG_TAG, GREEN("[OAL_EVENT]"fmt" [%s] %s"), ##args, bdt_bd2str(a, &bdstr), str_event[event]);\
} while(0)
/* Event Manager */
/* Use this when Address is to be printed */
-void send_event_bda_trace(oal_event_t event, gpointer event_data, bt_address_t *address);
+void send_event_bda_trace(oal_event_t event, gpointer event_data, gsize len, bt_address_t *address);
/* Use this when no address printing is required */
#define _bt_dispatch_event send_event
-void send_event(oal_event_t event, gpointer event_data);
+void send_event(oal_event_t event, gpointer event_data, gsize len);
void _bt_event_dispatcher_init(oal_event_callback cb);
#ifdef __cplusplus
} else {
ret = oal_mgr_init_internal();
if(OAL_STATUS_SUCCESS == ret)
- send_event(OAL_EVENT_OAL_INITIALISED_SUCCESS, NULL);
+ send_event(OAL_EVENT_OAL_INITIALISED_SUCCESS, NULL, 0);
else
- send_event(OAL_EVENT_OAL_INITIALISED_FAILED, NULL);
+ send_event(OAL_EVENT_OAL_INITIALISED_FAILED, NULL, 0);
}
} else {
BT_DBG("Chip Not Yet Ready, try again...");
}
}
-void _bt_service_oal_event_receiver(int event_type, gpointer event_data)
+void _bt_service_oal_event_receiver(int event_type, gpointer event_data, gsize len)
{
- BT_INFO("event_type: [%d]", event_type);
+ BT_INFO("event_type: [%d], data size: [%d]", event_type, len);
switch(event_type) {
case OAL_EVENT_OAL_INITIALISED_SUCCESS:
BT_ADAPTER_MODULE,
} bt_service_module_t;
-void _bt_service_oal_event_receiver(int event_type, gpointer event_data);
+void _bt_service_oal_event_receiver(int event_type, gpointer event_data, gsize len);
void _bt_service_register_event_handler_callback(
bt_service_module_t module, _bt_service_event_handler_callback cb);
void _bt_service_unregister_event_handler_callback(bt_service_module_t module);