# US 9,519,529 B2 · Message communication of sensor and other data

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

- Number: US 9,519,529 B2
- Document ID: US9519529B2
- Status: Granted
- Kind: B2
- Application number: 14/708,183
- Filed: 2015-05-08
- Published: 2015-08-27
- Granted: 2016-12-13
- Earliest claimed: 2009-09-23
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Gregory H. Parks; Steven P. Dodge; Zheng Wang
- Web page: https://patentgrep.com/patent/US9519529B2

## CPC

- G06F 9/546: {Message passing systems or structures, e.g. queues}
- G06F 9/542: {Event management; Broadcasting; Multicasting; Notifications}
- G06F 2209/544: Remote
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A service may be provided that reads sensors, and that communicates information based on the sensor readings to applications. In one example, an operating system provides a sensor interface that allows programs that run on a machine to read the values of sensors (such as an accelerometer, light meter, etc.). A service may use the interface to read the value of sensors, and may receive subscriptions to sensor values from other programs. The service may then generate messages that contain the sensor value, and may provide these messages to programs that have subscribed to the messages. The messages may contain raw sensor data. Or, the messages may contain information that is derived from the sensor data and/or from other data.

## Claims

### Claim 1

One or more computer-readable storage media that comprise executable instructions to provide information to an application, wherein the executable instructions, when executed by a computer, cause the computer to perform acts comprising:
receiving, from said application, a subscription request;
using a sensor interface to obtain a reading from a sensor, said sensor interface comprising software that provides a mechanism through which sensor values are readable by programs that use said sensor interface, said sensor being physically disassociated from said computer; and
creating a message based on a set of one or more readings, wherein said set comprises said reading.

### Claim 2 (depends on 1)

The one or more computer-readable storage media of claim 1, said computer being a handheld computer.

### Claim 3 (depends on 1)

The one or more computer-readable storage media of claim 1, said application taking an action based on said message.

### Claim 4 (depends on 1)

The one or more computer-readable storage media of claim 1, said acts being performed by a service, said service applying a model to said set of one or more readings in order to create said message, and said message comprising information that differs from any of the readings in said set.

### Claim 5 (depends on 1)

The one or more computer-readable storage media of claim 1, said acts being performed by a service, said service applying a model to said set of one or more readings in order to create said message, and said model taking into account both said set of one or more readings and some data that is not a sensor reading.

### Claim 6 (depends on 1)

The one or more computer-readable storage media of claim 1, said sensor comprising an accelerometer, and wherein obtaining said reading from said sensor comprises obtaining an acceleration vector from said sensor.

### Claim 7 (depends on 1)

The one or more computer-readable storage media of claim 1, said sensor comprising a light sensor, and wherein obtaining said reading from said sensor comprises obtaining an indication of (a) a temperature of light detected by said sensor, or (b) a color of light detected by said sensor.

### Claim 8

A method of providing information to a program, the method comprising:
using a processor to perform acts comprising:
receiving, from said program, a request to subscribe to notifications from a service;
at said service, using a programming interface to obtain a reading from a sensor, said programming interface being provided by an operating system that is present at a machine that comprises said processor, said sensor being physically detached from said machine;
creating a message that is based on a set of one or more sensor readings, wherein said set comprises said reading; and
providing said message to said program.

### Claim 9 (depends on 8)

The method of claim 8, said operating system providing a message service to send messages between components that execute on said message, said providing of said message being performed using said message service.

### Claim 10 (depends on 8)

The method of claim 8, said message being created by said service, said service, in creating said message, taking into account both said set of sensor readings and some data that is not a sensor reading.

### Claim 11 (depends on 8)

The method of claim 8, said message being created by said service, said service applying a model to said set of one or more sensor readings in order to create said message, said message being different from the sensor readings in said set.

### Claim 12 (depends on 8)

The method of claim 8, said message being created by said service, said service creating said message by applying a model to said set of one or more sensor readings and to at least some data that is not a sensor reading, said message being different from the sensor readings in said set.

### Claim 13 (depends on 8)

The method of claim 8, said sensor comprising a Global Positioning System (GPS) receiver, and said reading comprising latitude and longitude readings from said GPS receiver.

### Claim 14 (depends on 8)

The method of claim 8, said sensor comprising a light sensor, said reading comprising an indication of a temperature of light or a color of light detected by said sensor.

### Claim 15

A machine for providing information to an application, the machine comprising:
a memory;
a processor; and
executable instructions that are stored in said memory, that execute on said processor, that receive, from said application, a subscription request, that use a sensor interface to obtain a reading from a sensor that is physically disassociated from said machine, said sensor interface comprising software that provides a mechanism through which sensor values are readable by programs that use said sensor interface, and that create a message based on a set of one or more readings, wherein said set comprises said reading.

### Claim 16 (depends on 15)

The machine of claim 15, said application taking an action based on said message.

### Claim 17 (depends on 15)

The machine of claim 15, said executable instructions implementing a service, said service applying a model to said set of one or more readings in order to create said message, and said message comprising information that differs from any of the readings in said set.

### Claim 18 (depends on 15)

The machine of claim 15, said executable instructions implementing a service, said service applying a model to said set of one or more readings in order to create said message, and said model taking into account both said set of one or more readings and some data that is not a sensor reading.

### Claim 19 (depends on 15)

The machine of claim 15, said sensor comprising an accelerometer, and wherein obtaining said reading from said sensor comprises obtaining an acceleration vector from said sensor.

### Claim 20 (depends on 15)

The machine of claim 15, said sensor comprising a light sensor, and wherein obtaining said reading from said sensor comprises obtaining an indication of (a) a temperature of light detected by said sensor, or (b) a color of light detected by said sensor.
