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