public byte[] GetStatus(USBPacket packet, USBSetupPacket setupPacket) { var arr = new byte[2]; MessageRecipient recipient = (MessageRecipient)(setupPacket.requestType & 0x3); switch(recipient) { case MessageRecipient.Device: arr[0] = (byte)(((configurationDescriptor.RemoteWakeup ? 1 : 0) << 1) | (configurationDescriptor.SelfPowered ? 1 : 0)); break; case MessageRecipient.Endpoint: //TODO: endpoint halt status goto default; default: arr[0] = 0; break; } return arr; }
public void SetInterface(USBPacket packet, USBSetupPacket setupPacket) { }
public void ProcessVendorSet(USBPacket packet, USBSetupPacket setupPacket) { ushort index = setupPacket.index; byte request = setupPacket.request; ushort value = setupPacket.value; if(request == (byte)vendorRequest.WriteRegister) { switch((SCSR)index) { case SCSR.HwConfig: if(packet.data != null) hardwareConfigurationRegister = BitConverter.ToUInt32(packet.data, 0); break; case SCSR.PmControl: if(packet.data != null) powerMenagementConfigurationRegister = BitConverter.ToUInt32(packet.data, 0); break; case SCSR.MACAddressLo: break; case SCSR.MACAddressHi: break; case SCSR.MACControl: if(packet.data != null) macControlRegister = BitConverter.ToUInt32(packet.data, 0); this.Log(LogLevel.Warning, "macControlRegister=0x{0:X}", macControlRegister); break; case SCSR.E2PData: break; case SCSR.E2PCommand: if(packet.data != null) e2pCommand = BitConverter.ToUInt32(packet.data, 0) & (~(0x80000000 | 0x00000400)); break; case SCSR.MediaIndependentInterfaceAddress: if(packet.data != null) miiAddress = BitConverter.ToUInt32(packet.data, 0); break; case SCSR.MediaIndependentInterfaceData: if(packet.data != null) miiData = BitConverter.ToUInt32(packet.data, 0); break; default: this.Log(LogLevel.Warning, "Unknown register write request (request=0x{0:X}, value=0x{1:X}, index=0x{2:X})", request, value, index); break; } } }
public byte[] ProcessClassGet(USBPacket packet, USBSetupPacket setupPacket) { byte request = setupPacket.request; switch((MassStorageRequestCode)request) { case MassStorageRequestCode.GetMaxLUN: controlPacket = new [] {MaxLun}; return new [] {MaxLun}; default: controlPacket = new byte[0]; return new byte[0]; } }
public byte[] GetInterface(USBPacket packet, USBSetupPacket setupPacket) { throw new System.NotImplementedException(); }
public void SetConfiguration(USBPacket packet, USBSetupPacket setupPacket) { }
public byte[] ProcessClassGet(USBPacket packet, USBSetupPacket setupPacket) { byte[] returnValue; //MessageRecipient recipient = (MessageRecipient)(setupPacket.requestType & 0x3); ushort index = setupPacket.index; byte request = setupPacket.request; //ushort value = setupPacket.value; returnValue = new byte[4]; switch((HUBRequestCode)request) { case HUBRequestCode.GetStatus: if(index == 0) { returnValue[0] = 0; returnValue[1] = 0; returnValue[2] = 0; returnValue[3] = 0; controlPacket = returnValue; return controlPacket; } else { if(index - 1 < NumberOfPorts) { returnValue[0] = (byte)ports[index - 1]; returnValue[1] = (byte)(ports[index - 1] >> 8); returnValue[2] = (byte)(ports[index - 1] >> 16); returnValue[3] = (byte)(ports[index - 1] >> 24); } else { return null; } controlPacket = returnValue; return controlPacket; } case HUBRequestCode.GetHubDescriptor: controlPacket = hubDescriptor.ToArray(); return controlPacket; default: controlPacket = new byte[0]; this.Log(LogLevel.Warning, "Unsupported HUB ProcessClassGet request!!!"); return controlPacket; } }
public byte[] GetStatus(USBPacket packet, USBSetupPacket setupPacket) { var arr = new byte[2]; return(arr); }
public byte[] GetStatus(USBPacket packet, USBSetupPacket setupPacket) { throw new System.NotImplementedException(); }
public void SetFeature(USBPacket packet, USBSetupPacket setupPacket) { throw new System.NotImplementedException(); }
public byte[] GetDescriptor(USBPacket packet, USBSetupPacket setupPacket) { return null; }
public byte[] GetStatus(USBPacket packet, USBSetupPacket setupPacket) { throw new NotImplementedException (); }
public void ProcessClassSet(USBPacket packet, USBSetupPacket setupPacket) { //MessageRecipient recipient = (MessageRecipient)(setupPacket.requestType & 0x3); ushort index = setupPacket.index; byte request = setupPacket.request; ushort value = setupPacket.value; switch((HUBRequestCode)request) { case HUBRequestCode.ClearHubFeature: if(index > 0) { switch((PortFeature)value) { case PortFeature.CPortSuspend: ports[index - 1] = (uint)(ports[index - 1] & (~((uint)PortStatus.CPortSuspend))); break; case PortFeature.CPortOverCurrent: ports[index - 1] = (uint)(ports[index - 1] & (~((uint)PortStatus.CPortOverCurrent))); break; case PortFeature.CPortEnable: ports[index - 1] = (uint)(ports[index - 1] & (~((uint)PortStatus.CPortEnable))); break; case PortFeature.PortEnable: ports[index - 1] = (uint)(ports[index - 1] & (uint)PortStatus.PortEnable); break; case PortFeature.PortSuspend: ports[index - 1] = (uint)(ports[index - 1] & (uint)PortStatus.PortSuspend); break; case PortFeature.CPortConnection: ports[index - 1] = (uint)(ports[index - 1] & (~((uint)PortStatus.CPortConnection))); break; case PortFeature.CPortReset: ActiveDevice(this.GetDevice((byte)(index))); ports[index - 1] = (uint)(ports[index - 1] & (~((uint)PortStatus.CPortReset))); break; default: this.Log(LogLevel.Warning, "Unsupported ClearHubFeature request!!!"); break; } } break; case HUBRequestCode.SetHubFeature: if(index > 0) { if((PortFeature)value == PortFeature.PortReset) { IUSBPeripheral device = GetDevice((byte)(index)); ports[index - 1] |= (uint)PortStatus.CPortReset; ports[index - 1] |= (uint)PortStatus.PortEnable; if(device != null) { device.SetAddress(0); device.Reset(); } } else if((PortFeature)value == PortFeature.PortSuspend) { ports[index - 1] |= (uint)PortStatus.PortSuspend; } } break; default: this.Log(LogLevel.Warning, "Unsupported HUB ProcessClassSet request!!!"); break; } }
public byte[] ProcessClassGet(USBPacket packet, USBSetupPacket setupPacket) { return controlPacket; }
public byte[] ProcessClassGet(USBPacket packet, USBSetupPacket setupPacket) { return(controlPacket); }
public void ClearFeature(USBPacket packet, USBSetupPacket setupPacket) { throw new USBRequestException(); }
public void ProcessClassSet(USBPacket packet, USBSetupPacket setupPacket) { }
public void SetInterface(USBPacket packet, USBSetupPacket setupPacket) { throw new NotImplementedException(); }
public void ClearFeature(USBPacket packet, USBSetupPacket setupPacket) { throw new NotImplementedException(); }
public void SetConfiguration(USBPacket packet, USBSetupPacket setupPacket) { // throw new NotImplementedException(); }
public void ClearFeature(USBPacket packet, USBSetupPacket setupPacket) { throw new System.NotImplementedException(); }
public void SetConfiguration(USBPacket packet, USBSetupPacket setupPacket) { throw new NotImplementedException(); }
public void SetFeature(USBPacket packet, USBSetupPacket setupPacket) { }
public void SetDescriptor(USBPacket packet, USBSetupPacket setupPacket) { throw new NotImplementedException(); }
public byte[] ProcessVendorGet(USBPacket packet, USBSetupPacket setupPacket) { ushort index = setupPacket.index; byte request = setupPacket.request; ushort value = setupPacket.value; if(request == (byte)vendorRequest.ReadRegister) { switch((SCSR)index) { case SCSR.MACAddressLo: break; case SCSR.MACAddressHi: break; case SCSR.E2PData: if((e2pCommand & 0x000001FF) >= 0x1 && (e2pCommand & 0x000001FF) <= 0x6) { controlPacket = new byte[1]; controlPacket[0] = MAC.Bytes[(e2pCommand & 0x000001FF) - 1]; return controlPacket; } else { controlPacket = BitConverter.GetBytes((uint)0); return BitConverter.GetBytes((uint)0); } case SCSR.MACControl: controlPacket = BitConverter.GetBytes(macControlRegister); return BitConverter.GetBytes(macControlRegister); case SCSR.E2PCommand: controlPacket = BitConverter.GetBytes(e2pCommand); return BitConverter.GetBytes(e2pCommand); case SCSR.HwConfig: controlPacket = BitConverter.GetBytes(hardwareConfigurationRegister & (~0x00000008)); return (BitConverter.GetBytes(hardwareConfigurationRegister & (~0x00000008))); case SCSR.PmControl: controlPacket = BitConverter.GetBytes(powerMenagementConfigurationRegister & (~0x00000010)); return BitConverter.GetBytes(powerMenagementConfigurationRegister & (~0x00000010)); case SCSR.MediaIndependentInterfaceData: controlPacket = BitConverter.GetBytes(miiData & (~0x8000) | 0x0004 | 0x0100); return BitConverter.GetBytes(miiData & (~0x8000) | 0x0004 | 0x0100); case SCSR.MediaIndependentInterfaceAddress: controlPacket = BitConverter.GetBytes(miiAddress); controlPacket[0] &= ((byte)(0xFEu)); return controlPacket; default: this.Log(LogLevel.Warning, "Unknown register read request (request=0x{0:X}, value=0x{1:X}, index=0x{2:X})", request, value, index); break; } } var arr = new byte[] { 0 }; controlPacket = arr; return arr; }
public byte[] ProcessClassGet(USBPacket packet, USBSetupPacket setupPacket) { throw new System.NotImplementedException(); }
public void ProcessVendorSet(USBPacket packet, USBSetupPacket setupPacket) { throw new NotImplementedException(); }
public byte[] GetDescriptor(USBPacket packet, USBSetupPacket setupPacket) { DescriptorType type; type = (DescriptorType)((setupPacket.value & 0xff00) >> 8); uint index = (uint)(setupPacket.value & 0xff); switch(type) { case DescriptorType.Device: controlPacket = new byte[deviceDescriptor.ToArray().Length]; deviceDescriptor.ToArray().CopyTo(controlPacket, 0); return deviceDescriptor.ToArray(); case DescriptorType.Configuration: controlPacket = new byte[configurationDescriptor.ToArray().Length]; configurationDescriptor.ToArray().CopyTo(controlPacket, 0); controlPacket = mouseConfigDescriptor; return configurationDescriptor.ToArray(); case DescriptorType.DeviceQualifier: controlPacket = new byte[deviceQualifierDescriptor.ToArray().Length]; deviceQualifierDescriptor.ToArray().CopyTo(controlPacket, 0); return deviceQualifierDescriptor.ToArray(); case DescriptorType.InterfacePower: throw new NotImplementedException("Interface Power Descriptor is not yet implemented. Please contact AntMicro for further support."); case DescriptorType.OtherSpeedConfiguration: controlPacket = new byte[otherConfigurationDescriptor.ToArray().Length]; otherConfigurationDescriptor.ToArray().CopyTo(controlPacket, 0); return otherConfigurationDescriptor.ToArray(); case DescriptorType.String: if(index == 0) { stringDescriptor = new StringUSBDescriptor(1); stringDescriptor.LangId[0] = EnglishLangId; } else { stringDescriptor = new StringUSBDescriptor(stringValues[setupPacket.index][index]); } controlPacket = new byte[stringDescriptor.ToArray().Length]; stringDescriptor.ToArray().CopyTo(controlPacket, 0); return stringDescriptor.ToArray(); case (DescriptorType)0x22: controlPacket = mouseHIDReportDescriptor; break; default: this.Log(LogLevel.Warning, "Unsupported mouse request!!!"); return null; } return null; }
public byte[] GetDescriptor(USBPacket packet, USBSetupPacket setupPacket) { return(null); }
public void ProcessClassSet(USBPacket packet, USBSetupPacket setupPacket) { throw new System.NotImplementedException(); }
public byte[] GetStatus(USBPacket packet, USBSetupPacket setupPacket) { var arr = new byte[2]; return arr; }
public byte[] GetDescriptor(USBPacket packet, USBSetupPacket setupPacket) { var type = (DescriptorType)((setupPacket.value & 0xff00) >> 8); switch(type) { case DescriptorType.Device: controlPacket = deviceDescriptor.ToArray(); break; case DescriptorType.Configuration: controlPacket = configurationDescriptor.ToArray(); break; case DescriptorType.DeviceQualifier: controlPacket = deviceQualifierDescriptor.ToArray(); break; case DescriptorType.InterfacePower: throw new NotImplementedException("Interface Power Descriptor is not yet implemented. Please contact AntMicro for further support."); case DescriptorType.OtherSpeedConfiguration: controlPacket = otherConfigurationDescriptor.ToArray(); break; case DescriptorType.String: uint index = (uint)(setupPacket.value & 0xff); if(index == 0) { stringDescriptor = new StringUSBDescriptor(1); stringDescriptor.LangId[0] = EnglishLangId; } else { stringDescriptor = new StringUSBDescriptor(stringValues[setupPacket.index][index]); } controlPacket = stringDescriptor.ToArray(); break; default: this.Log(LogLevel.Warning, "Unsupported descriptor"); return null; } return controlPacket; }
public void ProcessClassSet(USBPacket packet, USBSetupPacket setupPacket) { byte request = setupPacket.request; switch((MassStorageRequestCode)request) { case MassStorageRequestCode.MassStorageReset: this.DebugLog("Mass storage reset"); break; default: this.Log(LogLevel.Warning, "Unknown Class Set Code ({0:X})", request); break; } }
public byte[] ProcessVendorGet(USBPacket packet, USBSetupPacket setupPacket) { throw new System.NotImplementedException(); }