Confirmed users
16
edits
(→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 | * 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. | ||
=== | === 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; | ||
}; | }; | ||
'''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. | 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. | ||
==== 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 | readonly attribute unsigned long long totalSpace; | ||
readonly attribute unsigned long long | 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. | ||
}; | }; | ||
''' | '''totalSpace''' of type unsigned long long, readonly <br/> | ||
The total | The total space of the USB storage device. | ||
''' | '''availableSpace''' of type unsigned long long, readonly <br/> | ||
The available | 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 === | ||