コード例 #1
0
void a2dpProfileHandler(Task task, MessageId id, Message message)
{
    switch (id)
    {
    case A2DP_INTERNAL_L2CAP_CONNECT_REQ + 0:
    case A2DP_INTERNAL_L2CAP_CONNECT_REQ + 1:
    case A2DP_INTERNAL_L2CAP_CONNECT_REQ + 2:
    case A2DP_INTERNAL_L2CAP_CONNECT_REQ + 3:
    case A2DP_INTERNAL_L2CAP_CONNECT_REQ + 4:
    case A2DP_INTERNAL_L2CAP_CONNECT_REQ + 5:
    case A2DP_INTERNAL_L2CAP_CONNECT_REQ + 6:
        PRINT(("A2DP_INTERNAL_L2CAP_CONNECT_REQ\n"));
        a2dpHandleL2capConnectReq((A2DP_INTERNAL_L2CAP_CONNECT_REQ_T *) message);
        break;
    
    case A2DP_INTERNAL_SIGNALLING_CONNECT_REQ:
        PRINT(("A2DP_INTERNAL_SIGNALLING_CONNECT_REQ\n"));
        a2dpHandleSignallingConnectReq((A2DP_INTERNAL_SIGNALLING_CONNECT_REQ_T *) message);
        break;

    case A2DP_INTERNAL_SIGNALLING_CONNECT_RES:
        PRINT(("A2DP_INTERNAL_SIGNALLING_CONNECT_RES\n"));
        a2dpHandleSignallingConnectRes((A2DP_INTERNAL_SIGNALLING_CONNECT_RES_T *) message);
        break;

    case A2DP_INTERNAL_SIGNALLING_DISCONNECT_REQ:
        PRINT(("A2DP_INTERNAL_SIGNALLING_DISCONNECT_REQ\n"));
        a2dpHandleSignallingDisconnectReq((A2DP_INTERNAL_SIGNALLING_DISCONNECT_REQ_T *) message);
        break;

    case A2DP_INTERNAL_CODEC_CONFIGURE_RSP:
        PRINT(("A2DP_INTERNAL_CODEC_CONFIGURE_RSP\n"));
        a2dpHandleCodecConfigureResponse((A2DP_INTERNAL_CODEC_CONFIGURE_RSP_T *) message);
        break;

    case A2DP_INTERNAL_MEDIA_OPEN_REQ:
        PRINT(("A2DP_INTERNAL_OPEN_REQ\n"));
        a2dpStreamEstablish((A2DP_INTERNAL_MEDIA_OPEN_REQ_T *) message);
        break;

    case A2DP_INTERNAL_MEDIA_OPEN_RES:
        PRINT(("A2DP_INTERNAL_OPEN_RES\n"));
        a2dpStreamOpenResponse((A2DP_INTERNAL_MEDIA_OPEN_RES_T *) message);
        break;

    case A2DP_INTERNAL_MEDIA_START_REQ:
        PRINT(("A2DP_INTERNAL_START_REQ\n"));
        a2dpStreamStart((A2DP_INTERNAL_MEDIA_START_REQ_T *) message);
        break;
        
    case A2DP_INTERNAL_MEDIA_START_RES:
        PRINT(("A2DP_INTERNAL_START_RES\n"));
        a2dpStreamStartResponse((A2DP_INTERNAL_MEDIA_START_RES_T *) message);
        break;
        
    case A2DP_INTERNAL_MEDIA_SUSPEND_REQ:
        PRINT(("A2DP_INTERNAL_MEDIA_SUSPEND_REQ\n"));
        a2dpStreamSuspend((A2DP_INTERNAL_MEDIA_SUSPEND_REQ_T *) message);
        break;

    case A2DP_INTERNAL_MEDIA_CLOSE_REQ:
        PRINT(("A2DP_INTERNAL_MEDIA_CLOSE_REQ\n"));
        a2dpStreamRelease((A2DP_INTERNAL_MEDIA_CLOSE_REQ_T *) message);
        break;
        
    case A2DP_INTERNAL_MEDIA_RECONFIGURE_REQ:
        PRINT(("A2DP_INTERNAL_MEDIA_RECONFIGURE_REQ\n"));
        a2dpStreamReconfigure((A2DP_INTERNAL_MEDIA_RECONFIGURE_REQ_T *) message);
        break;
        
    case A2DP_INTERNAL_MEDIA_AV_SYNC_DELAY_REQ:
        PRINT(("A2DP_INTERNAL_MEDIA_AV_SYNC_DELAY_REQ\n"));
        a2dpStreamDelayReport(((A2DP_INTERNAL_MEDIA_AV_SYNC_DELAY_REQ_T *)message)->device, ((A2DP_INTERNAL_MEDIA_AV_SYNC_DELAY_REQ_T *)message)->delay);
        break;
        
    case A2DP_INTERNAL_MEDIA_AV_SYNC_DELAY_RES:
        PRINT(("A2DP_INTERNAL_MEDIA_AV_SYNC_DELAY_RES\n"));
        a2dpStreamDelayReport(((A2DP_INTERNAL_MEDIA_AV_SYNC_DELAY_RES_T *)message)->device, ((A2DP_INTERNAL_MEDIA_AV_SYNC_DELAY_RES_T *)message)->delay);
        break;
        
    case A2DP_INTERNAL_LINKLOSS_TIMEOUT_BASE + 0:
    case A2DP_INTERNAL_LINKLOSS_TIMEOUT_BASE + 1:
    case A2DP_INTERNAL_LINKLOSS_TIMEOUT_BASE + 2:
    case A2DP_INTERNAL_LINKLOSS_TIMEOUT_BASE + 3:
    case A2DP_INTERNAL_LINKLOSS_TIMEOUT_BASE + 4:
    case A2DP_INTERNAL_LINKLOSS_TIMEOUT_BASE + 5:
    case A2DP_INTERNAL_LINKLOSS_TIMEOUT_BASE + 6:
        PRINT(("A2DP_INTERNAL_LINKLOSS_TIMEOUT\n"));
        a2dpHandleL2capLinklossTimeout(id);
        break;
    
    case A2DP_INTERNAL_CLIENT_RSP_TIMEOUT_BASE + 0:
    case A2DP_INTERNAL_CLIENT_RSP_TIMEOUT_BASE + 1:
    case A2DP_INTERNAL_CLIENT_RSP_TIMEOUT_BASE + 2:
    case A2DP_INTERNAL_CLIENT_RSP_TIMEOUT_BASE + 3:
    case A2DP_INTERNAL_CLIENT_RSP_TIMEOUT_BASE + 4:
    case A2DP_INTERNAL_CLIENT_RSP_TIMEOUT_BASE + 5:
    case A2DP_INTERNAL_CLIENT_RSP_TIMEOUT_BASE + 6:
        PRINT(("A2DP_INTERNAL_CLIENT_RSP_TIMEOUT\n"));
        a2dpHandleInternalClientRspTimeout(id);
        break;
    
    case A2DP_INTERNAL_REMOTE_CMD_TIMEOUT_BASE + 0:
    case A2DP_INTERNAL_REMOTE_CMD_TIMEOUT_BASE + 1:
    case A2DP_INTERNAL_REMOTE_CMD_TIMEOUT_BASE + 2:
    case A2DP_INTERNAL_REMOTE_CMD_TIMEOUT_BASE + 3:
    case A2DP_INTERNAL_REMOTE_CMD_TIMEOUT_BASE + 4:
    case A2DP_INTERNAL_REMOTE_CMD_TIMEOUT_BASE + 5:
    case A2DP_INTERNAL_REMOTE_CMD_TIMEOUT_BASE + 6:
        PRINT(("A2DP_INTERNAL_REMOTE_CMD_TIMEOUT\n"));
        a2dpHandleInternalRemoteCmdTimeout(id);
        break;
    
    case A2DP_INTERNAL_WATCHDOG_BASE + 0:
    case A2DP_INTERNAL_WATCHDOG_BASE + 1:
    case A2DP_INTERNAL_WATCHDOG_BASE + 2:
    case A2DP_INTERNAL_WATCHDOG_BASE + 3:
    case A2DP_INTERNAL_WATCHDOG_BASE + 4:
    case A2DP_INTERNAL_WATCHDOG_BASE + 5:
    case A2DP_INTERNAL_WATCHDOG_BASE + 6:
        PRINT(("A2DP_INTERNAL_WATCHDOG_IND\n"));
        a2dpHandleInternalWatchdogTimeout(id);
        break;

#if 0
    case A2DP_INTERNAL_RECONFIGURE_REQ:
        PRINT(("A2DP_INTERNAL_RECONFIGURE_REQ\n"));
        a2dpHandleReconfigureReq((A2DP_INTERNAL_RECONFIGURE_REQ_T *) message);
        break;
#endif

#if 0
    case A2DP_INTERNAL_SEND_CODEC_PARAMS_REQ:
        PRINT(("A2DP_INTERNAL_SEND_CODEC_PARAMS_REQ\n"));
        a2dpSendCodecAudioParams();
        if (((A2DP_INTERNAL_SEND_CODEC_PARAMS_REQ_T *) message)->send_reconfigure_message)
            a2dpSendReconfigureCfm(a2dp_success);
        break;
#endif

#if 0
    case A2DP_INTERNAL_GET_CAPS_TIMEOUT_IND:
        PRINT(("A2DP_INTERNAL_GET_CAPS_TIMEOUT_IND\n"));
        a2dpGetCapsTimeout();
        break;
#endif

    default:
        switch(id)
        {
        case CL_SDP_REGISTER_CFM:
            PRINT(("CL_SDP_REGISTER_CFM\n"));
            a2dpHandleSdpRegisterCfm((CL_SDP_REGISTER_CFM_T *) message);
            break;

        case CL_L2CAP_REGISTER_CFM:
            PRINT(("CL_L2CAP_REGISTER_CFM\n"));
            a2dpHandleL2capRegisterCfm((CL_L2CAP_REGISTER_CFM_T *) message);
            break;

        case CL_L2CAP_CONNECT_IND:
            PRINT(("CL_L2CAP_CONNECT_IND\n"));
            a2dpHandleL2capConnectInd((CL_L2CAP_CONNECT_IND_T *) message);
            break;

        case CL_L2CAP_CONNECT_CFM:
            PRINT(("CL_L2CAP_CONNECT_CFM\n"));
            a2dpHandleL2capConnectCfm((CL_L2CAP_CONNECT_CFM_T *) message);
            break;

        case CL_L2CAP_DISCONNECT_IND:
            PRINT(("CL_L2CAP_DISCONNECT_IND\n"));
            a2dpHandleL2capDisconnect(((CL_L2CAP_DISCONNECT_IND_T *)message)->identifier, ((CL_L2CAP_DISCONNECT_IND_T *)message)->sink, ((CL_L2CAP_DISCONNECT_IND_T *)message)->status);
            ConnectionL2capDisconnectResponse(((CL_L2CAP_DISCONNECT_IND_T *)message)->identifier, ((CL_L2CAP_DISCONNECT_IND_T *)message)->sink);
            break;

        case CL_L2CAP_DISCONNECT_CFM:
            PRINT(("CL_L2CAP_DISCONNECT_CFM\n"));
            a2dpHandleL2capDisconnect(0, ((CL_L2CAP_DISCONNECT_CFM_T *)message)->sink, ((CL_L2CAP_DISCONNECT_CFM_T *)message)->status);
            break;

        case CL_SM_ENCRYPTION_CHANGE_IND:
            PRINT(("CL_SM_ENCRYPTION_CHANGE_IND\n"));
            /* We have received an indication that the encryption status of the sink has changed */
            sendEncryptionChangeInd((CL_SM_ENCRYPTION_CHANGE_IND_T *) message);
            break;

        case CL_DM_ROLE_CFM:
        case CL_SM_ENCRYPTION_KEY_REFRESH_IND:
        case CL_L2CAP_TIMEOUT_IND:
            break;

        case CL_SDP_SERVICE_SEARCH_ATTRIBUTE_CFM:
            a2dpHandleSdpServiceSearchAttributeCfm ((CL_SDP_SERVICE_SEARCH_ATTRIBUTE_CFM_T *)message);
            break;

        default:
            switch(id)
            {
            case MESSAGE_MORE_DATA:
                PRINT(("MESSAGE_MORE_DATA\n"));
                /* Data has arrived on the signalling channel */
                a2dpHandleSignalPacket( a2dpFindDeviceFromSink( StreamSinkFromSource(((MessageMoreData *)message)->source) ));
                break;

            case MESSAGE_MORE_SPACE:
            case MESSAGE_STREAM_DISCONNECT:
            case MESSAGE_SOURCE_EMPTY:
                break;

            default:
                handleUnexpected(id);
                break;
            }
        }
    }
}
コード例 #2
0
void a2dpProfileHandler(Task task, MessageId id, Message message)
{
    A2DP *a2dp = (A2DP *) task;
	uint16 app;

    switch (id)
    {
	case A2DP_INTERNAL_TASK_INIT_REQ:
		PRINT(("A2DP_INTERNAL_TASK_INIT_REQ\n"));
		app = (*((uint16 *)message));
		a2dpInitTask(a2dp, (Task) app);
		break;

	case A2DP_INTERNAL_CONNECT_SIGNALLING_REQ:
		PRINT(("A2DP_INTERNAL_CONNECT_SIGNALLING_REQ\n"));
		a2dpHandleConnectSignallingReq(a2dp, (A2DP_INTERNAL_CONNECT_SIGNALLING_REQ_T *) message);
		break;

	case A2DP_INTERNAL_CONNECT_SIGNALLING_RES:
		PRINT(("A2DP_INTERNAL_CONNECT_SIGNALLING_RES\n"));
		a2dpHandleConnectSignallingRes(a2dp, (A2DP_INTERNAL_CONNECT_SIGNALLING_RES_T *) message);
		break;

	case A2DP_INTERNAL_CONFIGURE_CODEC_RSP:
		PRINT(("A2DP_INTERNAL_CONFIGURE_CODEC_RSP\n"));
		a2dpHandleConfigureCodecRes(a2dp, (A2DP_INTERNAL_CONFIGURE_CODEC_RSP_T *) message);
		break;

    case A2DP_INTERNAL_OPEN_REQ:
        PRINT(("A2DP_INTERNAL_OPEN_REQ\n"));
        a2dpHandleOpenReq(a2dp, (A2DP_INTERNAL_OPEN_REQ_T *) message);
        break;

	case A2DP_INTERNAL_TASK_DELETE_REQ:
		PRINT(("A2DP_INTERNAL_TASK_DELETE_REQ\n"));
        a2dpHandleDeleteTask(a2dp);
        break;

	case A2DP_INTERNAL_WATCHDOG_IND:
		PRINT(("A2DP_INTERNAL_WATCHDOG_IND\n"));
		a2dpHandleWatchdogInd(a2dp);
		break;

	case A2DP_INTERNAL_SIGNAL_PACKET_IND:
		PRINT(("A2DP_INTERNAL_SIGNAL_PACKET_IND\n"));
		a2dpHandleNewSignalPacket(a2dp);
		break;

	case A2DP_INTERNAL_SIGNAL_CONNECTION_TIMEOUT_IND:
		PRINT(("A2DP_INTERNAL_SIGNAL_CONNECTION_TIMEOUT_IND\n"));
		a2dpHandleSignalConnectionTimeoutInd(a2dp);
		break;

	case A2DP_INTERNAL_RECONFIGURE_REQ:
		PRINT(("A2DP_INTERNAL_RECONFIGURE_REQ\n"));
		a2dpHandleReconfigureReq(a2dp, (A2DP_INTERNAL_RECONFIGURE_REQ_T *) message);
		break;

	case A2DP_INTERNAL_START_REQ:
		PRINT(("A2DP_INTERNAL_START_REQ\n"));
		a2dpHandleStartReq(a2dp);
		break;

	case A2DP_INTERNAL_SUSPEND_REQ:
		PRINT(("A2DP_INTERNAL_SUSPEND_REQ\n"));
		a2dpHandleSuspendReq(a2dp);
		break;

	case A2DP_INTERNAL_CLOSE_REQ:
		PRINT(("A2DP_INTERNAL_CLOSE_REQ\n"));
		a2dpHandleCloseReq(a2dp);
		break;

	case A2DP_INTERNAL_DISCONNECT_ALL_REQ:
		PRINT(("A2DP_INTERNAL_DISCONNECT_ALL_REQ\n"));
		a2dpHandleDisconnectAllReq(a2dp);
		break;

	case A2DP_INTERNAL_SEND_CODEC_PARAMS_REQ:
		PRINT(("A2DP_INTERNAL_SEND_CODEC_PARAMS_REQ\n"));
		a2dpSendCodecAudioParams(a2dp);
		if (((A2DP_INTERNAL_SEND_CODEC_PARAMS_REQ_T *) message)->send_reconfigure_message)
			a2dpSendReconfigureCfm(a2dp, a2dp_success);
		break;

	case A2DP_INTERNAL_GET_CAPS_TIMEOUT_IND:
		PRINT(("A2DP_INTERNAL_GET_CAPS_TIMEOUT_IND\n"));
		a2dpGetCapsTimeout(a2dp);
		break;


	default:
		switch(id)
		{
		case CL_SDP_REGISTER_CFM:
			PRINT(("CL_SDP_REGISTER_CFM\n"));				
			a2dpHandleSdpRegisterCfm(a2dp, (CL_SDP_REGISTER_CFM_T *) message);		
			break;

		case CL_L2CAP_REGISTER_CFM:
			PRINT(("CL_L2CAP_REGISTER_CFM\n"));
			a2dpHandleL2capRegisterCfm(a2dp, (CL_L2CAP_REGISTER_CFM_T *) message);
			break;

		case CL_L2CAP_CONNECT_IND:
			PRINT(("CL_L2CAP_CONNECT_IND\n"));
			a2dpHandleL2capConnectInd(a2dp, (CL_L2CAP_CONNECT_IND_T *) message);
			break;

		case CL_L2CAP_CONNECT_CFM:
			PRINT(("CL_L2CAP_CONNECT_CFM\n"));
			a2dpHandleL2capConnectCfm(a2dp, (CL_L2CAP_CONNECT_CFM_T *) message);
			break;

		case CL_L2CAP_DISCONNECT_IND:
			PRINT(("CL_L2CAP_DISCONNECT_IND\n"));
			a2dpHandleL2capDisconnectInd(a2dp, (CL_L2CAP_DISCONNECT_IND_T *) message);
			break;

		case CL_SM_ENCRYPTION_CHANGE_IND:
			PRINT(("CL_SM_ENCRYPTION_CHANGE_IND\n"));
			/* We have received an indication that the encryption status of the sink has changed */
			sendEncryptionChangeInd(a2dp, (CL_SM_ENCRYPTION_CHANGE_IND_T *) message);
			break;

		case CL_DM_ROLE_CFM:
			break;

		default:
			switch(id)
			{
			case MESSAGE_MORE_DATA:
				PRINT(("MESSAGE_MORE_DATA\n"));
				/* Data has arrived on the signalling channel */
				a2dpHandleSignalPacket(a2dp, ((MessageMoreData *) message)->source);
				break;

			case MESSAGE_MORE_SPACE:
			case MESSAGE_STREAM_DISCONNECT:
			case MESSAGE_SOURCE_EMPTY:
				break;

			default:
				handleUnexpected(id);
				break;
			}
		}
    }
}