示例#1
0
void my_handle_message(struct cfw_message * msg, void * param) {
	pr_info(LOG_MODULE_MAIN, "%s:%s for param: %s conn:%p", __FILE__, __func__, (char*)param, msg->conn);
	cfw_dump_message(msg);

	switch (CFW_MESSAGE_ID(msg)) {
	case MSG_ID_CFW_OPEN_SERVICE_RSP: {
		pr_info(LOG_MODULE_MAIN, "%s:%s for conn: %s", __FILE__, __func__, (char*)msg->priv);
		cfw_open_conn_rsp_msg_t * cnf = (cfw_open_conn_rsp_msg_t*)msg;
		int events[1] = {MSG_ID_TEST_1_EVT};
		test_service_conn = cnf->service_conn;
		cfw_register_events(test_service_conn, events, 1, msg->priv);
	}
	break;

	case MSG_ID_CFW_REGISTER_EVT_RSP:
		if (!strcmp(msg->priv, "Conn2")) {
			test_service_test_1(test_service_conn, "Coucou");
		}
		break;

	case MSG_ID_TEST_1_RSP: {
		pr_info(LOG_MODULE_MAIN, "got MSG_ID_TEST_1_RSP Priv: %s", (char*)msg->priv);
		test_service_test_2(test_service_conn, "Testing 2");
		break;
	}
	case MSG_ID_TEST_2_RSP: {
		pr_info(LOG_MODULE_MAIN, "got MSG_ID_TEST_2_RSP Priv: %s", (char*)msg->priv);
		test_service_test_1(test_service_conn, "Testing 1");
		break;
	}
	}
	cfw_msg_free(msg);

}
示例#2
0
void default_msg_handler(struct cfw_message *msg, void *data)
{
	pr_error(LOG_MODULE_CFW, "Bug: %s should not be called data: %p",
		 __func__,
		 data);
	cfw_dump_message(msg);
}
示例#3
0
static void srv_client_handle_msg(struct cfw_message * msg, void * data)
{
	cfw_dump_message(msg);
	switch (CFW_MESSAGE_ID(msg)) {
	case MSG_ID_CFW_OPEN_SERVICE_RSP:
	{
		cfw_open_conn_rsp_msg_t *resp = (cfw_open_conn_rsp_msg_t *)msg;
		printf("server_main:%s(): MSG_ID_CFW_OPEN_SERVICE_RSP::port_id: %d, cpu_id: %d, "
				"service_conn: 0x%p, priv 0x%p\n", __func__,
				resp->port, resp->cpu_id, resp->service_conn,
				msg->priv);
		break;
	}
	case MSG_ID_CFW_REGISTER_SVC_AVAIL_EVT_RSP:
		printf("server_main::%s(): MSG_ID_CFW_REGISTER_SVC_AVAIL_EVT_RSP, priv:"
				" 0x%p\n",
				__func__, msg->priv);
		break;
	case MSG_ID_CFW_SVC_AVAIL_EVT: {
		cfw_svc_available_evt_msg_t * evt =
				(cfw_svc_available_evt_msg_t *)msg;
		if ((evt->service_id == BLE_CORE_SERVICE_ID) ||
				(0 != cfw_service_registered(
						BLE_CORE_SERVICE_ID))) {
			_server_cb.ble_svc_started = 1;
			printf("\n%s(): BLE_CORE_SERVICE_ID registered!\n", __func__);
#ifdef CONFIG_BLE_CORE_TEST
			extern void test_ble_service_init(void);

			test_ble_service_init();
#endif
		}
		break;
		}
	default:
		pr_info(LOG_MODULE_MAIN, "server_main::%s(): Unhandled Msg: 0x%x",
				__func__, CFW_MESSAGE_ID(msg));
		break;
	}
	cfw_msg_free(msg);
}
示例#4
0
/**@brief Function to handle messages from framework.
 *
 * @details In this function are handled messages of
 *          communications with the Audio service.
 * @param[in]  msg   Message from framework.
 * @param[in]  param Additional data. NULL if not used.
 * @return   none.
 */
void ui_audio_svc_handle_message(message_t * msg, void *param)
{
    int client_events[4];
    cfw_open_conn_rsp_msg_t *cnf = NULL;
    audio_stream_mgr_evt_msg *evt = NULL;

    pr_debug(LOG_MODULE_UI_SVC,
        "Audio: received msg: %d src: %d dst: %d",
        msg->id,
        msg->src,
        msg->dst);

    /* Dump message content. */
    cfw_dump_message(msg);

    ui_port = msg->dst;

    switch (msg->id) {
    case MSG_ID_CFW_OPEN_SERVICE_RSP:{
        cnf = (cfw_open_conn_rsp_msg_t *) msg;
        if (cnf == NULL) force_panic();

        audio_client_cfw_hdl = cnf->service_conn;
        if (audio_client_cfw_hdl == NULL) force_panic();

        client_events[0] = MSG_ID_AS_LPAL_EVT;
        client_events[1] = MSG_ID_AS_ASR_EVT;
        client_events[2] = MSG_ID_AS_STREAM_STOPPED_EVT;
        client_events[3] = MSG_ID_AS_STREAM_TERMINATED_EVT;

        /* Events registration. */
        cfw_register_events(audio_client_cfw_hdl,
                    client_events, 4, msg->priv);

        pr_info(LOG_MODULE_UI_SVC,
            "Audio: Audio service id %lu opened",
            UI_SVC_ID);
        }
        break;
    case MSG_ID_CFW_CLOSE_SERVICEi_RSP:
        pr_info(LOG_MODULE_UI_SVC,
            "Audio: Audio service has been closed");
        break;
    case MSG_ID_CFW_REGISTER_EVT_RSP:
        pr_debug(LOG_MODULE_UI_SVC,
            "Audio: Events registered for Audio service");
        break;
    case MSG_ID_AS_LPAL_EVT:
        ui_broadcast_svc_lpal_event(msg);
        break;
    case MSG_ID_AS_ASR_EVT:
        ui_broadcast_svc_asr_event(msg);
        break;
    case MSG_ID_AS_STREAM_STOPPED_EVT:
        /* Need to filter MSG_ID_AS_STREAM_XX messages, as the UI SVC is */
        /* not the only one listening to them.                           */
        /* If not tone or speech sequence initialized, msg is ignored.   */
        evt = (audio_stream_mgr_evt_msg *)msg;

        if ((evt->sHandle == tone_stream) || (evt->sHandle == sps_stream)) {
            pr_debug(LOG_MODULE_UI_SVC,
                "Audio: stream 0x%08x stopped, reason %d",
                evt->sHandle,
                evt->sHandle->reason);

            if (evt->sHandle->reason == AUDIO_STREAM_STATE_INIT_SUCCESS) {
                if (tone_stream)
                    ui_tone_play_start();
                else if (sps_stream)
                    ui_sps_play_start();
            }
        }
        break;
    case MSG_ID_AS_STREAM_TERMINATED_EVT:
        ui_handle_as_stream_end(msg);
        break;
    default:
        break;
    }

    cfw_msg_free(msg);
}