1 // 2 // Copyright (c) 2010-2018 Antmicro 3 // Copyright (c) 2011-2015 Realtime Embedded 4 // 5 // This file is licensed under the MIT License. 6 // Full license text is available in 'licenses/MIT.txt'. 7 // 8 using System; 9 using System.Collections.Generic; 10 using Antmicro.Renode.Logging; 11 using Antmicro.Renode.Utilities; 12 13 namespace Antmicro.Renode.Peripherals.USBDeprecated 14 { 15 public class DummyUSBDevice : IUSBPeripheral 16 { 17 public event Action <uint> SendInterrupt 18 { 19 add {} 20 remove {} 21 } 22 23 public event Action <uint> SendPacket 24 { 25 add {} 26 remove {} 27 } 28 DummyUSBDevice()29 public DummyUSBDevice() 30 { 31 } 32 GetSpeed()33 public USBDeviceSpeed GetSpeed() 34 { 35 return USBDeviceSpeed.Low; 36 } 37 WriteDataBulk(USBPacket packet)38 public void WriteDataBulk(USBPacket packet) 39 { 40 41 } 42 WriteDataControl(USBPacket packet)43 public void WriteDataControl(USBPacket packet) 44 { 45 } 46 Reset()47 public void Reset() 48 { 49 } GetAddress()50 public uint GetAddress() 51 { 52 return 0; 53 } GetTransferStatus()54 public byte GetTransferStatus() 55 { 56 return 0; 57 } 58 WriteInterrupt(USBPacket packet)59 public byte[] WriteInterrupt(USBPacket packet) 60 { 61 return null; 62 } 63 GetDataBulk(USBPacket packet)64 public byte[] GetDataBulk(USBPacket packet) 65 { 66 return null; 67 } 68 GetDataControl(USBPacket packet)69 public byte[] GetDataControl(USBPacket packet) 70 { 71 return null; 72 } 73 GetDescriptor(USBPacket packet, USBSetupPacket setupPacket)74 public byte[] GetDescriptor(USBPacket packet, USBSetupPacket setupPacket) 75 { 76 return null; 77 } 78 ProcessClassGet(USBPacket packet, USBSetupPacket setupPacket)79 public byte[] ProcessClassGet(USBPacket packet, USBSetupPacket setupPacket) 80 { 81 throw new System.NotImplementedException(); 82 } 83 ProcessClassSet(USBPacket packet, USBSetupPacket setupPacket)84 public void ProcessClassSet(USBPacket packet, USBSetupPacket setupPacket) 85 { 86 throw new System.NotImplementedException(); 87 } 88 SetDataToggle(byte endpointNumber)89 public void SetDataToggle(byte endpointNumber) 90 { 91 throw new NotImplementedException(); 92 } 93 CleanDataToggle(byte endpointNumber)94 public void CleanDataToggle(byte endpointNumber) 95 { 96 throw new NotImplementedException(); 97 } 98 ToggleDataToggle(byte endpointNumber)99 public void ToggleDataToggle(byte endpointNumber) 100 { 101 throw new NotImplementedException(); 102 } 103 GetDataToggle(byte endpointNumber)104 public bool GetDataToggle(byte endpointNumber) 105 { 106 throw new NotImplementedException(); 107 } 108 ClearFeature(USBPacket packet, USBSetupPacket setupPacket)109 public void ClearFeature(USBPacket packet, USBSetupPacket setupPacket) 110 { 111 throw new USBRequestException(); 112 } 113 GetConfiguration()114 public byte[] GetConfiguration() 115 { 116 throw new NotImplementedException(); 117 } 118 119 120 #region IUSBDevice GetInterface(USBPacket packet, USBSetupPacket setupPacket)121 public byte[] GetInterface(USBPacket packet, USBSetupPacket setupPacket) 122 { 123 throw new NotImplementedException(); 124 } 125 GetStatus(USBPacket packet, USBSetupPacket setupPacket)126 public byte[] GetStatus(USBPacket packet, USBSetupPacket setupPacket) 127 { 128 var arr = new byte[2]; 129 MessageRecipient recipient = (MessageRecipient)(setupPacket.requestType & 0x3); 130 switch(recipient) 131 { 132 case MessageRecipient.Device: 133 arr[0] = (byte)(((configurationDescriptor.RemoteWakeup ? 1 : 0) << 1) | (configurationDescriptor.SelfPowered ? 1 : 0)); 134 break; 135 case MessageRecipient.Endpoint: 136 //TODO: endpoint halt status 137 goto default; 138 default: 139 arr[0] = 0; 140 break; 141 } 142 return arr; 143 } 144 SetAddress(uint address)145 public void SetAddress(uint address) 146 { 147 148 } 149 SetConfiguration(USBPacket packet, USBSetupPacket setupPacket)150 public void SetConfiguration(USBPacket packet, USBSetupPacket setupPacket) 151 { 152 throw new NotImplementedException(); 153 } 154 SetDescriptor(USBPacket packet, USBSetupPacket setupPacket)155 public void SetDescriptor(USBPacket packet, USBSetupPacket setupPacket) 156 { 157 throw new NotImplementedException(); 158 } 159 SetFeature(USBPacket packet, USBSetupPacket setupPacket)160 public void SetFeature(USBPacket packet, USBSetupPacket setupPacket) 161 { 162 throw new NotImplementedException(); 163 } 164 SetInterface(USBPacket packet, USBSetupPacket setupPacket)165 public void SetInterface(USBPacket packet, USBSetupPacket setupPacket) 166 { 167 throw new NotImplementedException(); 168 } 169 SyncFrame(uint endpointId)170 public void SyncFrame(uint endpointId) 171 { 172 throw new NotImplementedException(); 173 } 174 WriteData(byte[] data)175 public void WriteData(byte[] data) 176 { 177 //throw new NotImplementedException (); 178 this.Log(LogLevel.Info, "Bulk Data write"); 179 } 180 #endregion 181 182 #region descriptors 183 private ConfigurationUSBDescriptor configurationDescriptor = new ConfigurationUSBDescriptor() 184 { 185 ConfigurationIndex = 3, 186 SelfPowered = true 187 }; 188 189 #endregion 190 191 192 193 private const ushort EnglishLangId = 0x09; 194 195 196 #region IUSBDevice implementation ProcessVendorGet(USBPacket packet, USBSetupPacket setupPacket)197 public byte[] ProcessVendorGet(USBPacket packet, USBSetupPacket setupPacket) 198 { 199 throw new NotImplementedException(); 200 } 201 ProcessVendorSet(USBPacket packet, USBSetupPacket setupPacket)202 public void ProcessVendorSet(USBPacket packet, USBSetupPacket setupPacket) 203 { 204 throw new NotImplementedException(); 205 } 206 207 208 209 #endregion 210 } 211 } 212 213