# US 8,572,631 B2 · Distributed control of devices using discrete device interfaces over single shared input/output

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,572,631 B2
- Document ID: US8572631B2
- Status: Granted
- Kind: B2
- Application number: 13/001,008
- Filed: 2008-06-25
- Published: 2011-04-28
- Granted: 2013-10-29
- Earliest claimed: 2008-06-25
- Assignees: Gvbb Holdings S.A.R.L.
- Applicants: Gerald Philip Wilson
- Inventors: Gerald Philip Wilson
- Web page: https://patentgrep.com/patent/US8572631B2

## CPC

- G06F 13/102: {where the program performs an interfacing function, e.g. device driver (G06F13/105 takes precedence; contention policies within device drivers G06F9/4881; scheduling within device drivers G06F9/52)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems and methods are provided for controlling a device. In one aspect, a method for controlling a device includes exposing a plurality of virtual device interfaces (13) for a device (11), wherein each virtual device interface (13) enables client control of a discrete function of the device, and controlling concurrent communication between the device (11) and two or more virtual device interfaces (13) operating on a single shared I/O connection (15) using a shared I/O port controlled by a device I/O module (12). The device I/O module (12) enables independent development of multiple device interfaces (13) that can seamlessly and independently operate on a single (physical) device communication connection (15), wherein the device shared I/O (input/output) module (12) implements functions to arbitrate and coordinate I/O activity between the device interfaces (13) and target device (11).

## Claims

### Claim 1

A method, comprising the steps of:
providing a plurality of virtual device interfaces for a device, wherein each virtual device interface enables client control of a discrete function of the device;
placing messages in separate client queues associated with each client operating a virtual device interface;
moving messages from the client queues and placing the message into a timeline in order of time and priority;
periodically determining a priority of messages in the timeline;
detecting if potential timing collisions exist for message transmission;
providing collision notification to the virtual device interfaces; and
controlling concurrent communication between the device and two or more virtual device interfaces operating on a single shared I/O connection using a device input/output (I/O) interface.

### Claim 2 (depends on 1)

The method of claim 1, further comprising the steps of:
assigning equal priority to virtual device interfaces executing tasks; and
prioritizing messages from the virtual device interfaces based on assigned priority.

### Claim 3 (depends on 1)

The method of claim 1, further comprising the steps of:
periodically determining the priority of messages in the timeline; and
transmitting messages from the timeline according to priority.

### Claim 4 (depends on 1)

The method of claim 1, further comprising the step of:
using an I/O API (application programming interface) that enables a client to specify the priority and timing of messages for that client.

### Claim 5 (depends on 1)

The method of claim 1, further comprising the step of:
using an I/O API (application programming interface) that enables a client to specify response messages received from the target device, which are to be provided to that client.

### Claim 6

A non-transitory program storage device readable by a computer, tangibly embodying a program of instructions executable by the computer to perform method steps for controlling a device, the method steps comprising:
using a plurality of virtual device interfaces for a device, wherein each virtual device interface enables client control of a discrete function of the device;
controlling concurrent communication between the device and two or more virtual device interfaces operating on a single shared I/O connection using a device input/output (I/O) interface, wherein the instructions for controlling concurrent communication comprise instructions for:
placing messages in separate client queues associated with each client operating a virtual device interface;
moving messages from the client queues and placing the messages into a timeline in order of time and priority;
periodically determining a priority of messages in the timeline;
detecting if potential timing collisions exist for message transmission; and
providing collision notification to the virtual device interfaces.

### Claim 7 (depends on 6)

The non-transitory program storage device of claim 6, wherein the instructions for controlling concurrent communication comprise instructions for:
assigning equal priority to virtual device interfaces executing tasks; and
prioritizing messages from the virtual device interfaces based on assigned priority.

### Claim 8 (depends on 6)

The non-transitory program storage device of claim method of claim 6, wherein the instructions for controlling concurrent communication comprise instructions for:
periodically determining a priority of messages in the timeline; and
transmitting messages from the timeline according to priority.

### Claim 9 (depends on 6)

The non-transitory program storage device of claim 6, further comprising instructions for using an I/O API (application programming interface) that enables a client to specify a priority or timing of messages for that client.

### Claim 10 (depends on 6)

The non-transitory program storage device of claim 6, further comprising instructions for using an I/O API (application programming interface) that enables a client to specify response messages received from the target device, which are to be provided to that client.

### Claim 11

A system, comprising:
a hardware component configured to interface with a plurality of virtual devices and a target device to concurrently control communications over a single connection between two or more of the virtual devices and the device, wherein the concurrent communications comprises the steps of:
placing messages in separate queues associated with each client operated virtual device interface;
moving messages from the client queues and placing the messages into a timeline in order of time and priority;
periodically determining a priority of messages in the timeline;
detecting if potential timing collisions exist for message transmission; and
providing collision notification to the virtual device interfaces.

### Claim 12 (depends on 11)

The system of claim 11, further comprising:
a front end interface that interfaces with virtual devices and determines message queues for the virtual devices; and
an input/output (I/O) port interface that interacts with a target device based on the queued messages.

### Claim 13 (depends on 12)

The system of claim 12, wherein the front end interface assigns equal priority to virtual devices executing tasks and prioritizes messages from the virtual devices based on assigned priority.

### Claim 14 (depends on 12)

The system of claim 12, wherein the front end interface places the messages in the separate client queues associated with each client operating a virtual device interface, moves the messages from the client queues and places the messages into a timeline in order of time and priority.

### Claim 15 (depends on 14)

The system of claim 14, wherein the front end interface periodically determines the priority of messages in the timeline and transmits messages from the timeline according to time and priority.

### Claim 16 (depends on 14)

The system of claim 14, further comprising:
an I/O API (application programming interface) that enables the client to specify a priority and timing of messages for that client.

### Claim 17 (depends on 14)

The system of claim 14, further comprising:
an I/O API (application programming interface) that enables the client to specify response messages received from the target device, which are to be provided to that client.
