Confirmed users
16
edits
(Reorganize USB port interface) |
(Bring 'storage' type back) |
||
| (2 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 36: | Line 36: | ||
=== USB Port Interface === | === USB Port Interface === | ||
==== Basic ==== | ==== 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 ==== | ||
| Line 63: | Line 61: | ||
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 === | ||