bta_sys_register(BTA_ID_DM, &bta_dm_reg );
bta_sys_cb.reg[id] = (tBTA_SYS_REG *) p_reg;
//bta_sys_cb.reg[BTA_ID_DM] = (tBTA_SYS_REG *) &bta_dm_reg;
bta_sys_cb.is_reg[id] = TRUE;
//bta_sys_cb.is_reg[BTA_ID_DM] = TRUE;
fixed_queue_register_dequeue(btu_bta_msg_queue,
thread_get_reactor(bt_workqueue_thread),
btu_bta_msg_ready,
NULL);
void btu_bta_msg_ready(fixed_queue_t *queue, UNUSED_ATTR void *context)
BT_HDR *p_msg = (BT_HDR *)fixed_queue_dequeue(queue);
bta_sys_event(p_msg);
/* get subsystem id from event */
id = (UINT8) (p_msg->event >> 8);
/* verify id and call subsystem event handler */
if ((id < BTA_ID_MAX) && (bta_sys_cb.reg[id] != NULL))
freebuf = (*bta_sys_cb.reg[id]->evt_hdlr)(p_msg);
//bta_sys_cb.reg[BTA_ID_DM] = (tBTA_SYS_REG *) &bta_dm_reg;
//static const tBTA_SYS_REG bta_dm_reg =
//{
// bta_dm_sm_execute,
// bta_dm_sm_disable
//};
bta_dm_sm_execute(p_msg);
UINT16 event = p_msg->event & 0x00ff;
/* execute action functions */
if(event < BTA_DM_NUM_ACTIONS)
{
(*bta_dm_action[event])( (tBTA_DM_MSG*) p_msg);
}