+ All Categories
Home > Technology > Ultrabook Development Using Sensors - Intel AppLab Berlin

Ultrabook Development Using Sensors - Intel AppLab Berlin

Date post: 15-May-2015
Category:
Upload: intel-developer-zone-community
View: 1,102 times
Download: 2 times
Share this document with a friend
Description:
Ultrabook Development Using Sensors - presented by Xavier Hallade
Popular Tags:
40
Application Development using Sensors Intel® Corporation
Transcript
Page 1: Ultrabook Development Using Sensors - Intel AppLab Berlin

Application Development using

Sensors

Intel® Corporation

Page 2: Ultrabook Development Using Sensors - Intel AppLab Berlin

Legal Disclaimer

• INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL® PRODUCTS. EXCEPT AS PROVIDED IN INTEL’S TERMS AND CONDITIONS OF SALE FOR SUCH

PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL IS CLAIMS ANY EXPRESS OR IMPLIED WARRANTY RELATING TO SALE AND/OR USE OF INTEL

PRODUCTS, INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT,

COPYRIGHT, OR OTHER INTELLECTUAL PROPERTY RIGHT. Intel products are not intended for use in medical, life-saving, life sustaining, critical control or safety systems,

or in nuclear facility applications.

• Intel products may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are

available on request.

• Intel may make changes to dates, specifications, product descriptions, and plans referenced in this document at any time, without notice.

• This document may contain information on products in the design phase of development. The information here is subject to change without notice. Do not finalize a

design with this information.

• Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Intel reserves these for future definition and

shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them.

• Intel Corporation may have patents or pending patent applications, trademarks, copyrights, or other intellectual property rights that relate to the presented subject

matter. The furnishing of documents and other materials and information does not provide any license, express or implied, by estoppel or otherwise, to any such

patents, trademarks, copyrights, or other intellectual property rights.

• Wireless connectivity and some features may require you to purchase additional software, services or external hardware.

• Performance tests and ratings are measured using specific computer systems and/or components and reflect the approximate performance of Intel products as measured

by those tests. Any difference in system hardware or software design or configuration may affect actual performance. Buyers should consult other sources of

information to evaluate the performance of systems or components they are considering purchasing. For more information on performance tests and on the

performance of Intel products, visit Intel Performance Benchmark Limitations

• Intel, the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

Copyright © 2011 Intel Corporation. All rights reserved.

Intel Confidential - Customer NDA Use Only

* Other Names and Brands maybe claimed as the property of others. All dates, plans and features are preliminary and subject to change without notice. 2Copyright© 2012, Intel Corporation. All rights reserved. *Other

brands and names are the property of their respective owners

Page 3: Ultrabook Development Using Sensors - Intel AppLab Berlin

Agenda

• Overview of available sensors

• Using sensors in a Windows 8* application

- In C++ desktop applications, using COM interface

- In C++ or C#/.NET Windows 8* store and desktop

applications, using WinRT APIs

• Considerations on Efficiency

3Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.

Page 4: Ultrabook Development Using Sensors - Intel AppLab Berlin

Who am I ?

Xavier Hallade (@ph0b)

Technical Marketing Engineer at Intel

4Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.

Page 5: Ultrabook Development Using Sensors - Intel AppLab Berlin

OVERVIEW OF AVAILABLE SENSORS

Sensors

Copyright(C) 2012 Intel Corporation. All rights reserved.

*Other brands and names are properties of their respective owners. 5

Page 6: Ultrabook Development Using Sensors - Intel AppLab Berlin

Available Sensors

• Sensor Fusion : virtual sensors created by combining data from compass, accelerometer and gyroscope

• Ambient Light, GPS, 3D Motion and orientation sensors are all mandatory on Windows 8* Tablets and Convertibles

• Applications can subscribe to sensor events, set callbacks or directly poll their current state.

Accelerometer Gyroscope GPS Ambient LightCompass NFC

+ with Sensor Fusion: Inclinometer, Orientation, SimpleOrientation

Page 7: Ultrabook Development Using Sensors - Intel AppLab Berlin

Orientation and Motion detection

• Gyrometer returns yaw, pitch and roll velocities

• Accelerometer returns acceleration along x, y and z, and optionally a Shake event

• Simple Orientation : returns device orientation into one of four quadrants, face-up, or face-down

• Orientation Sensor and inclinometer both returns the complete device orientation

– Inclinometer returns yaw, pitch, and roll angles

– Orientation Sensor returns a quaternion as well as a 3x3 orientation matrix

Page 8: Ultrabook Development Using Sensors - Intel AppLab Berlin

Orientation and Motion detection

same convention as on Android

and in the HTML5 specification

0.0° ≤ Yaw < 360.0°

-180.0° ≤ Pitch < 180.0°

-90.0° ≤ Roll < 90.0°

Page 9: Ultrabook Development Using Sensors - Intel AppLab Berlin

Ambient Light

• Can be used to adapt application interface

depending on light conditions : contrast,

font size

• Screen brightness control should be handled

by the operating system.

Lighting condition Illuminance (lux)

Pitch black 1

Very dark 10

Dark indoors 50

Dim indoors 100

Normal indoors 300

Bright indoors 1,000

Dim outdoors 5,000

Cloudy outdoors 30,000

Direct sunlight 100,000

Page 10: Ultrabook Development Using Sensors - Intel AppLab Berlin

Location

Returns latitude, longitude:

- using Wi-Fi if available

- using IP Address otherwise

- using GPS if available and desired accuracy is set on High- then it can also return Altitude, Speed and Heading

Depending on user’s choice, its use can be denied.

A Windows 8* store app has to declare the “location” capability in its manifest.

Page 11: Ultrabook Development Using Sensors - Intel AppLab Berlin

Near Field Communication

• Short range (<4cm)

• Contactless

• Used between active and/or passive devices

– Active: Smartphone, Tablet, Ultrabook™…

– Passive: Tags, Smart cards…

• Small amount of data, low data transfer rate

• Easy to use, feels instantaneous (<1/10s)

-> Great user experience !

Page 12: Ultrabook Development Using Sensors - Intel AppLab Berlin

Near Field Communication

• Pairing

– with Bluetooth* peripherals, at the OS level

– with another running application, by establishing

a BT or Wi-Fi direct socket, at the application level

• Short data read/write on NFC tags

• Short data exchange with active devices

– Sharing URIs, contacts, positions

– Secure transactions

Page 13: Ultrabook Development Using Sensors - Intel AppLab Berlin

NFC messagesProtocol Pub. Sub. Message contents

Windows X X binary data.

WindowsUri X X UTF-16LE encoded string that is a URI.

use PublishUriMessage

WindowsMime X X message data of a specific mime type.

For example, "WindowsMime.image/jpeg".

You can subscribe to "WindowsMime" message

without specifying the mime type. If so, the first 256

bytes received is the ASCII mime type string.

Windows:WriteTag X Windows message to be written to a static tag.

WindowsUri:WriteTag X WindowsUri message to be written to a static tag.

WindowsMime:Write

Tag

X WindowsMime message to be written to a static tag.

Example, “WindowsMime:WriteTag.image/jpeg”

LaunchApp:WriteTag X Write a tag that can be used to launch a specific app.

more information on msdn.

WriteableTag X if a writeable tag is brought in to proximity, a

proximity message is received that contains an

int32 indicating the maximum writeable size.

Page 14: Ultrabook Development Using Sensors - Intel AppLab Berlin

NFC messages

Protocol Pub. Sub. Message contents

NDEF X X properly formatted NDEF records.

NDEF:ext X application defined NDEF records (TNF field value of 0x04).

NDEF:MIME X properly formatted NDEF mime message (TNF field value

of 0x02). For example, "NDEF:MIME.image/jpeg".

NDEF:URI X properly formatted NDEF message of a type defined by a

URI namespace (TNF field value of 0x03). For example,

"NDEF:URI.http://contoso.com/sometype".

NDEF:wkt X properly formatted NDEF message of a type defined by the

NFC forum (TNF field value of 0x01).An example of this

type is "NDEF:wkt.U" for the well known type of URI.

NDEF:WriteTag X message data that should be written to an NFC forum

standard static tag.

NDEF:Unknown X untyped NDEF message (TNF field value of 0x05).

Windows messages are fully compatible with NDEF messages,

but you can also directly manipulate them :

Page 15: Ultrabook Development Using Sensors - Intel AppLab Berlin

LET’S DIVE INTO SOME CODE !

Sensors

Copyright(C) 2012 Intel Corporation. All rights reserved.

*Other brands and names are properties of their respective owners. 15

Page 16: Ultrabook Development Using Sensors - Intel AppLab Berlin

FROM C++

Sensors and Location Platform using COM interface

Copyright(C) 2012 Intel Corporation. All rights reserved.

*Other brands and names are properties of their respective owners. 16

Page 17: Ultrabook Development Using Sensors - Intel AppLab Berlin

Sensors and Location Platform

• Same interface as on Windows 7– Sensor fusion available through new GUIDs

• Sensor manager controls sensors– Use sensor manager to get to sensors

– Notifies when a sensor connects

• Sensors report data, changes in state and disconnection

• Access both via COM interfaces– Use API to communicate to sensors

– Sensor events handled using callbacks

– API reference at msdn.microsoft.com/en-us/library/windows/desktop/dd318953%28v=vs.85%29.aspx

17Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.

Page 18: Ultrabook Development Using Sensors - Intel AppLab Berlin

COM: Connect to sensor manager

// Create the sensor manager

ISensorManager pSensorManager;

hr = CoCreateInstance(CLSID_SensorManager,NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(& pSensorManager));

if(hr == HRESULT_FROM_WIN32

( ERROR_ACCESS_DISABLED_BY_POLICY))

{

// Unable to retrieve sensor manager due

// to group policy settings.

// Alert the user.

}

18Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.

(Source: Microsoft)

• Access to sensors is through the

sensor manager

• Group policy settings may deny

access to the system sensors

Page 19: Ultrabook Development Using Sensors - Intel AppLab Berlin

COM: Retrieve a sensor object

// Get the sensor collectionhr = pSensorManager->GetSensorsByCategory(

SENSOR_CATEGORY_ALL,&pSensorColl);

if(SUCCEEDED(hr)){

ULONG ulCount = 0;// Verify that the collection contains at// least one sensorhr = pSensorColl->GetCount(&ulCount);if(SUCCEEDED(hr)){

if(ulCount < 1){

wprintf_s(L"\nNo sensors of therequested category.\n");

hr = E_UNEXPECTED;} else{// Request permissions for all sensors// in the collectionhr = pSensorManager->

RequestPermissions(0, pSensorColl,FALSE);

}…

19Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.

• Request sensors by category, type

or ID

• Request permission to use the

sensor(s)

• Windows 8 will open a dialog

box to ask the user

• Granting permission triggers

the OnStateChanged event

(Source: Microsoft)

Page 20: Ultrabook Development Using Sensors - Intel AppLab Berlin

COM: Sensor event callback

class CMyEvents : public ISensorEvents

{

public:

STDMETHODIMP QueryInterface(…) {…}

STDMETHODIMP_(ULONG) AddRef() {…}

STDMETHODIMP_(ULONG) Release() {…}

// ISensorEvents methods. //

STDMETHODIMP OnEvent(…) {…}

STDMETHODIMP OnDataUpdated(…) {…}

STDMETHODIMP OnLeave(…) {…}

STDMETHODIMP OnStateChanged(…) {…}

20Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.

(Source: Microsoft)

• Receive event notifications by

implementing required COM

interfaces

• Sensor events require

ISensorEvents

• Sensor Manager events require

ISensorManagerEvents

Page 21: Ultrabook Development Using Sensors - Intel AppLab Berlin

COM: Start receiving events

// Create an instance of the event// classpEventClass = new(std::nothrow)

CMyEvents();

if(SUCCEEDED(hr)){

// Retrieve the pointer to the// callback interfacehr = pEventClass->QueryInterface(

IID_PPV_ARGS(&pMyEvents));}if(SUCCEEDED(hr)){ // Start receiving eventshr = pSensor->

SetEventSink(pMyEvents);}

21Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.

(Source: Microsoft)

• To start receiving events provide

the sensor with a pointer to your

callback

• To stop receiving events call

SetEventSink with a parameter of

NULL

Page 22: Ultrabook Development Using Sensors - Intel AppLab Berlin

Ambient Light Sensor

DEMO

Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 22

Page 23: Ultrabook Development Using Sensors - Intel AppLab Berlin

FROM C# AND C++/CX

Using WinRT Sensors and Location API

Copyright(C) 2012 Intel Corporation. All rights reserved.

*Other brands and names are properties of their respective owners. 23

Page 24: Ultrabook Development Using Sensors - Intel AppLab Berlin

WinRT API

• Windows.Sensors.

• Accelerometer

• Gyrometer

• Inclinometer

• OrientationSensor

• SimpleOrientationSensor

• Compass

• LightSensor

• Windows.Networking.Proximity.ProximityDevice (NFC)

• Windows.Device.Geolocation (GPS)

Copyright© 2012, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners

Page 25: Ultrabook Development Using Sensors - Intel AppLab Berlin

Using the WinRT API

WinRT Sensors and Location APIs are available to

Windows 8* Desktop applications

You need to use WinRT Windows MetaData files :

• Platform.winmd: C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\Microsoft.VCLi

bs\11.0\References\CommonConfiguration\neutral

• Windows.winmd: C:\Program Files (x86)\Windows Kits\8.0\References\CommonConfiguration\Neutral

Copyright© 2012, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners

How ?

Page 26: Ultrabook Development Using Sensors - Intel AppLab Berlin

WinRT From Desktop (C#)

Unload your C# Project

Manually edit the .csproj file to add :

<PropertyGroup>

<TargetPlatformVersion>8.0</TargetPlatformVersion>

</PropertyGroup>

Reload the project

Add Windows.winmd and Platform.winmd as references from their respective locations

Copyright© 2012, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners

Page 27: Ultrabook Development Using Sensors - Intel AppLab Berlin

WinRT From Desktop (C++)

In your project properties, in C/C++->General:

• Set “Consume Windows Runtime Extension” on Yes

(/ZW)

• Add Windows.winmd and Platform.winmd paths to

“Additional #using Directories”

In your source code, add :

#using <Windows.winmd>

#using <Platform.winmd>

Copyright© 2012, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners

Page 28: Ultrabook Development Using Sensors - Intel AppLab Berlin

WinRT Sensor API

No need for a sensor manager:

1 – Retrieve the default sensor/device using GetDefault()

2 – Set the ReportInterval

3 – Add a delegate to ReadingChanged event

Copyright© 2012, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners

Page 29: Ultrabook Development Using Sensors - Intel AppLab Berlin

WinRT Sensor API

Copyright© 2012, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners

_accelero = Accelerometer.GetDefault();

if (_accelero != null)

{

_accelero.ReportInterval = 50 <= _accelero.MinimumReportInterval ?

_accelerometer.MinimumReportInterval : 50;

//Register for reading changed events

_accelero.ReadingChanged += (Accelerometer s, AccelerometerReadingChangedEventArgs

args) =>

{

//use e.Data.AccelerationX/Y/Z

};

}

Accelerometer ^accelero = Accelerometer::GetDefault();

if(accelero!=nullptr)

{

accelero->ReportInterval = 50 <= accelero->MinimumReportInterval ? accelero-

>MinimumReportInterval : 50;

accelero->ReadingChanged += ref new TypedEventHandler<Accelerometer^,

AccelerometerReadingChangedEventArgs^>(

[](Object^ sender, AccelerometerReadingChangedEventArgs^ e)

{

//read e->Data->AccelerationX/Y/Z

});

}

C#

C++

Page 30: Ultrabook Development Using Sensors - Intel AppLab Berlin

C#/WPF Accelerometer Demo

• Ellipse (ball) drawn on a canvas

• Accelerometer data is used to update X/Y/Z

display and location of ball

30Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.

• Data is read using

accelerometer events in

conjunction with a

timer to move the ball

Page 31: Ultrabook Development Using Sensors - Intel AppLab Berlin

C#/WPF NFC DEMO

• Subscribe to incoming WindowsURI messages

• Publish a WindowsURI message to any active

device

• Write that

message to any

writable tag

31Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.

Page 32: Ultrabook Development Using Sensors - Intel AppLab Berlin

USING SENSORS EFFICIENTLY

Copyright(C) 2012 Intel Corporation. All rights reserved.

*Other brands and names are properties of their respective owners. 32

Page 33: Ultrabook Development Using Sensors - Intel AppLab Berlin

General Considerations

• The effects of applications on power use

• Both idle workloads and active workloads

• The rules of power management

– Computational efficiency

– Maximize idle

– Data efficiency

– Power-aware behavior

• Align, coalesce or batch activity whenever possible

33Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.

Page 34: Ultrabook Development Using Sensors - Intel AppLab Berlin

Regarding Sensors

• Do not set a small ReportInterval if your application doesn’t need it

• Avoid periodic registry or disk accesses in order to let the hard disk spin down

• Avoid status polling, statistics & background bookkeeping

• Avoid using sensors when application is not active

• Consider using accelerometer or gyroscope alone if full orientation is not needed.

34Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.

Sensors objects in Sensors API: At least one client connected

Hardware: Accelerometer Gyroscope Inclinometer Compass Device Orientation

Accelerometer On Off On On On

Gyro Off On On On On

Magnetometer Off Off On On On

Page 35: Ultrabook Development Using Sensors - Intel AppLab Berlin

Advanced : Context/power-aware

behavior

• Handling sleep transitions seamlessly– Saving an restoring state

– Stopping ongoing activity prior to sleeping

– Closing open resources & disconnecting communications

• Respond/adapt to system power events– Switching from AC to battery; low battery status

• Scale behavior based on power state

• Context awareness toolkits– software.intel.com/en-us/mobility

– softwarecommunity.intel.com/articles/eng/1070.htm

– softwarecommunity.intel.com/articles/eng/1026.htm

35Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.

Page 36: Ultrabook Development Using Sensors - Intel AppLab Berlin

Intel Software Development Products

Intel Power Tools

• Intel® Power Checker

– Reveals how much power your application is using

– software.intel.com/partner/app/software-

assessment/?cid=sw:ubpower004

• Energy-Efficient Software Checklist

– software.intel.com/en-us/articles/energy-

efficient-software-checklist/

36Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.

Page 37: Ultrabook Development Using Sensors - Intel AppLab Berlin

References• Intel® Software Network

– software.intel.com

• COM Sensor API– msdn.microsoft.com/en-us/library/windows/desktop/dd318953(v=vs.85).aspx

• COM Location API– msdn.microsoft.com/en-us/library/dd464636(v=VS.85).aspx

• WinRT Sensors API– msdn.microsoft.com/en-us/library/windows/apps/br206408.aspx

• WinRT Geolocation API– msdn.microsoft.com/en-us/library/windows/apps/windows.devices.geolocation.aspx

• WinRT ProximityAPI– msdn.microsoft.com/en-us/library/windows/apps/windows.networking.proximity.aspx

• Detecting Ultrabook Sensors– software.intel.com/en-us/blogs/2012/07/26/detecting-ultrabook-sensors

• Ultrabook and Tablet Windows 8* Sensors Development Guide– software.intel.com/en-us/articles/ultrabook-and-tablet-windows-8-sensors-development-guide/

• Intel® Energy Efficient Software Guidelines– software.intel.com/partner/assets/pdf/misc/Energy_Efficient_Software_Guidelines_v3_4_10_11.pdf

37Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.

Page 38: Ultrabook Development Using Sensors - Intel AppLab Berlin

Summary

– sensors are a natural way to interact with end

users

– Desktop apps can utilize them as well as Windows

8* Store Apps

– Utilize efficient designs and coding practices to

save battery life

38Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.

Page 39: Ultrabook Development Using Sensors - Intel AppLab Berlin

Q & A

39Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.

Page 40: Ultrabook Development Using Sensors - Intel AppLab Berlin

END

• START OF NEXT SESSION IN 15 MINS.

• Ultrabook Developer Resources

40Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners.


Recommended