User:Seanlin/USB Manager API: Difference between revisions

Bring 'storage' type back
(→‎Specific USB Port Interface: Adding "Storage" subtitle)
(Bring 'storage' type back)
 
(3 intermediate revisions by the same user not shown)
Line 8: Line 8:


== Features ==
== Features ==
* Enumerate available USB ports on the current device. So far supported types of USB ports include Storage.
* Enumerate available USB ports on the current device. So far supported types of USB ports include Keyboard, Mouse, Camera.
* Support hot-plug detection on each USB port.
* Support hot-plug detection on each USB port.


Line 34: Line 34:
Whenever the hardware detects connection/disconnection, a USBConnectEvent or USBDisconnectEvent against this USB port should be fired.
Whenever the hardware detects connection/disconnection, a USBConnectEvent or USBDisconnectEvent against this USB port should be fired.


=== Basic USB Port Interface ===
=== USB Port Interface ===
 
==== Basic ====
   enum USBPortType { "storage" };
   enum USBPortType { "storage", "keyboard", "mouse" };


   interface USBPort : EventTarget {
   interface USBPort : EventTarget {
     readonly attribute DOMString id;
     readonly attribute DOMString id;
    readonly attribute DOMString name;
     readonly attribute USBPortType type;
     readonly attribute USBPortType type;
     readonly attribute boolean connected;
     readonly attribute boolean connected;
            attribute EventHandler onconnect;
            attribute EventHandler ondisconnect;
   };
   };


'''id''' of type DOMString, readonly <br/>
'''id''' of type DOMString, readonly <br/>
The unique identifier for the represented USB port. It MUST be unique to the application, and persistent between application sessions.
The unique identifier for the represented USB port. It MUST be unique to the application, and persistent between application sessions.
'''name''' of type DOMString, readonly <br/>
The name of this USB port.


'''type''' of type USBPortType, readonly <br/>
'''type''' of type USBPortType, readonly <br/>
The type of this USB port, value must be defined in the enum of USBPortType. So far only "storage" is supported. (This might be extended in the future.)
The type of this USB port, value must be defined in the enum of USBPortType.


'''connected''' of type boolean, readonly <br/>
'''connected''' of type boolean, readonly <br/>
True if this USB port is connected, and vice versa.
True if this USB port is connected, and vice versa.


'''onconnect'''  of type EventHandler <br/>
'''ondisconnect'''  of type EventHandler <br/>
Whenever the hardware detects connection/disconnection, a USBConnectEvent or USBDisconnectEvent against this USB port should be fired.
=== Specific USB Port Interface ===
==== Storage ====
==== Storage ====
''In reality, a specific USB port may have its specific attributes and methods. And our goal is to collect the "common" ones as many as possible. However, with limited information, we will not focus on implementing hardware dependent members in this draft.''
''In reality, a specific USB port may have its specific attributes and methods. And our goal is to collect the "common" ones as many as possible. However, with limited information, we will not focus on implementing hardware dependent members in this draft.''


   interface StorageUSBPort : USBPort {
   interface StorageUSBPort : USBPort {
     readonly attribute unsigned long long totalVolume;
     readonly attribute unsigned long long totalSpace;
     readonly attribute unsigned long long availableVolume;
     readonly attribute unsigned long long availableSpace;
     readonly attribute DOMString fileSystem;
     readonly attribute DOMString fileSystem;
            attribute EventHandler onAvailableSpaceChange;
     // Other possible hardware-dependent attributes.
     // Other possible hardware-dependent attributes.
   };
   };


'''totalVolume''' of type unsigned long long, readonly <br/>
'''totalSpace''' of type unsigned long long, readonly <br/>
The total volume of the USB storage device.
The total space of the USB storage device.


'''availableVolume''' of type unsigned long long, readonly <br/>
'''availableSpace''' of type unsigned long long, readonly <br/>
The available volume of the USB storage device.
The available space of the USB storage device.


'''fileSystem''' of type DOMString, readonly <br/>
'''fileSystem''' of type DOMString, readonly <br/>
The type of the file system, e.g. FAT32, NTFS, etc.
The type of the file system, e.g. FAT32, NTFS, etc.
'''onAvailableSpaceChange''' of type EventHandler <br/>
Whenever the hardware detects a change on the available space, an simple event with the updated available space against the USB port should be fired.
==== Keyboard ====
  interface KeyboardUSBPort : USBPort {
    // Possible hardware-dependent attributes.
  };
==== Mouse ====
  interface MouseUSBPort : USBPort {
    // Possible hardware-dependent attributes.
  };


=== USB Port Connect/Disconnect Event Interface ===
=== USB Port Connect/Disconnect Event Interface ===
Confirmed users
16

edits