protected EusbType GetPduType(byte[] data) { if (null == data) { return(EusbType.UNKNOWN); } EusbPdu pdu = new EusbPdu(); if (!PduMarshaler.Unmarshal(data, pdu)) { return(EusbType.UNKNOWN); } switch (pdu.Mask) { case Mask_Values.STREAM_ID_NONE: { return(EusbType.RIM_EXCHANGE_CAPABILITY_REQUEST); } case Mask_Values.STREAM_ID_PROXY: { if (pdu.InterfaceId == (uint)EusbInterfaceId_Values.ADD_VIRTUAL_CHANNEL_OR_DEVICE) { EusbRequestPdu requestPdu = new EusbRequestPdu(); if (!PduMarshaler.Unmarshal(data, requestPdu)) { return(EusbType.UNKNOWN); } switch ((FunctionId_Values)requestPdu.FunctionId) { case FunctionId_Values.ADD_DEVICE: return(EusbType.ADD_DEVICE); case FunctionId_Values.ADD_VIRTUAL_CHANNEL: return(EusbType.ADD_VIRTUAL_CHANNEL); default: break; } } else if (pdu.InterfaceId == (uint)EusbInterfaceId_Values.CHANNEL_CREATED_CLIENT) { return(EusbType.CHANNEL_CREATED); } else { EusbRequestPdu requestPdu = new EusbRequestPdu(); if (!PduMarshaler.Unmarshal(data, requestPdu)) { return(EusbType.UNKNOWN); } if (requestPdu.InterfaceId == RequestCompletionInterfaceId) { switch ((FunctionId_Values)requestPdu.FunctionId) { case FunctionId_Values.IOCONTROL_COMPLETION: return(EusbType.IOCONTROL_COMPLETION); case FunctionId_Values.URB_COMPLETION: return(EusbType.URB_COMPLETION); case FunctionId_Values.URB_COMPLETION_NO_DATA: return(EusbType.URB_COMPLETION_NO_DATA); default: break; } } } } break; case Mask_Values.STREAM_ID_STUB: { return(EusbType.QUERY_DEVICE_TEXT); } default: return(EusbType.UNKNOWN); } return(EusbType.UNKNOWN); }
private EusbType GetPduType(byte[] data) { if (null == data) { return(EusbType.UNKNOWN); } EusbRequestPdu pdu = new EusbRequestPdu(); if (!PduMarshaler.Unmarshal(data, pdu)) { return(EusbType.UNKNOWN); } switch (pdu.Mask) { case Mask_Values.STREAM_ID_NONE: { return(EusbType.RIM_EXCHANGE_CAPABILITY_REQUEST); } case Mask_Values.STREAM_ID_PROXY: { if (pdu.InterfaceId == (uint)EusbInterfaceId_Values.ADD_VIRTUAL_CHANNEL_OR_DEVICE) { EusbRequestPdu requestPdu = new EusbRequestPdu(); if (!PduMarshaler.Unmarshal(data, requestPdu)) { return(EusbType.UNKNOWN); } switch ((FunctionId_Values)requestPdu.FunctionId) { case FunctionId_Values.ADD_DEVICE: return(EusbType.ADD_DEVICE); case FunctionId_Values.ADD_VIRTUAL_CHANNEL: return(EusbType.ADD_VIRTUAL_CHANNEL); default: break; } } else if (pdu.InterfaceId == (uint)EusbInterfaceId_Values.CHANNEL_CREATED_SERVER) { return(EusbType.CHANNEL_CREATED); } else { EusbRequestPdu requestPdu = new EusbRequestPdu(); if (!PduMarshaler.Unmarshal(data, requestPdu)) { return(EusbType.UNKNOWN); } switch ((FunctionId_Values)requestPdu.FunctionId) { case FunctionId_Values.CANCEL_REQUEST: return(EusbType.CANCEL_REQUEST); case FunctionId_Values.REGISTER_REQUEST_CALLBACK: return(EusbType.REGISTER_REQUEST_CALLBACK); case FunctionId_Values.IO_CONTROL: return(EusbType.IO_CONTROL); case FunctionId_Values.INTERNAL_IO_CONTROL: return(EusbType.INTERNAL_IO_CONTROL); case FunctionId_Values.QUERY_DEVICE_TEXT: return(EusbType.QUERY_DEVICE_TEXT); case FunctionId_Values.TRANSFER_IN_REQUEST: return(EusbType.TRANSFER_IN_REQUEST); case FunctionId_Values.TRANSFER_OUT_REQUEST: return(EusbType.TRANSFER_OUT_REQUEST); case FunctionId_Values.RETRACT_DEVICE: return(EusbType.RETRACT_DEVICE); default: break; } } } break; case Mask_Values.STREAM_ID_STUB: { return(EusbType.QUERY_DEVICE_TEXT); } default: return(EusbType.UNKNOWN); } return(EusbType.UNKNOWN); }