Ultrabook Development Using Sensors - Intel AppLab Berlin
Upcoming SlideShare
Loading in...5
×
 

Ultrabook Development Using Sensors - Intel AppLab Berlin

on

  • 1,349 Views

Ultrabook Development Using Sensors - presented by Xavier Hallade

Ultrabook Development Using Sensors - presented by Xavier Hallade

Statistics

Views

Total Views
1,349
Views on SlideShare
1,343
Embed Views
6

Actions

Likes
1
Downloads
27
Comments
1

1 Einbettung 6

https://twitter.com 6

Zugänglichkeit

Kategorien

Details hochladen

Uploaded via as Adobe PDF

Benutzerrechte

© Alle Rechte vorbehalten

Report content

Als unangemessen gemeldet Als unangemessen melden
Als unangemessen melden

Wählen Sie Ihren Grund, warum Sie diese Präsentation als unangemessen melden.

Löschen
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Ihre Nachricht erscheint hier
    Processing...
  • regarding slide 26, on using WinRT from a WPF Application :
    you may have to add a reference to System.Runtime.dll and System.Runtime.InteropServices.WindowsRuntime.dll in addition to Windows.winmd and Platform.winmd
    Are you sure you want to
    Ihre Nachricht erscheint hier
    Processing...
Kommentar posten
Kommentar bearbeiten

Ultrabook Development Using Sensors - Intel AppLab Berlin Ultrabook Development Using Sensors - Intel AppLab Berlin Presentation Transcript

  • Application Development using Sensors Intel® Corporation
  • 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 Copyright© 2012, Intel Corporation. All rights reserved. *Other* Other Names and Brands maybe claimed as the property of others.names are the property features are preliminary and subject to change without notice. brands and All dates, plans and of their respective owners 2
  • 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 Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 3
  • Who am I ?Xavier Hallade (@ph0b)Technical Marketing Engineer at Intel Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 4
  • SensorsOVERVIEW OF AVAILABLE SENSORS Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 5
  • Available Sensors Compass Accelerometer Gyroscope GPS Ambient Light NFC+ with Sensor Fusion: Inclinometer, Orientation, SimpleOrientation• 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.
  • 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
  • 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°
  • 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
  • LocationReturns 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 HeadingDepending on user’s choice, its use can be denied.A Windows 8* store app has to declare the“location” capability in its manifest.
  • 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 !
  • 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
  • NFC messagesProtocol Pub. Sub. Message contentsWindows X X binary data.WindowsUri X X UTF-16LE encoded string that is a URI. use PublishUriMessageWindowsMime 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 X WindowsMime message to be written to a static tag.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.
  • NFC messages Windows messages are fully compatible with NDEF messages, but you can also directly manipulate them :Protocol Pub. Sub. Message contentsNDEF 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).
  • SensorsLET’S DIVE INTO SOME CODE ! Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 15
  • Sensors and Location Platformusing COM interfaceFROM C++ Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 16
  • 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 Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 17
  • COM: Connect to sensor manager // Create the sensor manager• Access to sensors is through the sensor manager ISensorManager pSensorManager; hr = CoCreateInstance(CLSID_SensorManager,• Group policy settings may deny NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pSensorManager)); access to the system sensors if(hr == HRESULT_FROM_WIN32 (ERROR_ACCESS_DISABLED_BY_POLICY)) { // Unable to retrieve sensor manager due // to group policy settings. // Alert the user. } (Source: Microsoft) Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 18
  • COM: Retrieve a sensor object // Get the sensor collection• Request sensors by category, type hr = pSensorManager->GetSensorsByCategory( SENSOR_CATEGORY_ALL, or ID &pSensorColl); if(SUCCEEDED(hr)) { ULONG ulCount = 0; // Verify that the collection contains at // least one sensor hr = pSensorColl->GetCount(&ulCount); if(SUCCEEDED(hr)) { if(ulCount < 1) {• Request permission to use the wprintf_s(L"nNo sensors of the requested category.n"); hr = E_UNEXPECTED; sensor(s) } else { • Windows 8 will open a dialog // Request permissions for all sensors // in the collection box to ask the user hr = pSensorManager-> RequestPermissions(0, pSensorColl, • Granting permission triggers } FALSE); … the OnStateChanged event (Source: Microsoft) Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 19
  • COM: Sensor event callback class CMyEvents : public ISensorEvents• Receive event notifications by { implementing required COM public: interfaces STDMETHODIMP QueryInterface(…) {…} STDMETHODIMP_(ULONG) AddRef() {…}• Sensor events require STDMETHODIMP_(ULONG) Release() {…} ISensorEvents // ISensorEvents methods. // STDMETHODIMP OnEvent(…) {…}• Sensor Manager events require STDMETHODIMP OnDataUpdated(…) {…} STDMETHODIMP OnLeave(…) {…} ISensorManagerEvents STDMETHODIMP OnStateChanged(…) {…} … (Source: Microsoft) Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 20
  • COM: Start receiving events // Create an instance of the event• To start receiving events provide // class the sensor with a pointer to your pEventClass = new(std::nothrow) CMyEvents(); callback if(SUCCEEDED(hr))• To stop receiving events call { // Retrieve the pointer to the SetEventSink with a parameter of // callback interface NULL hr = pEventClass->QueryInterface( IID_PPV_ARGS(&pMyEvents)); } if(SUCCEEDED(hr)) { // Start receiving events hr = pSensor-> SetEventSink(pMyEvents); } (Source: Microsoft) Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 21
  • Ambient Light SensorDEMO Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 22
  • Using WinRT Sensors andLocation APIFROM C# AND C++/CX Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 23
  • 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
  • Using the WinRT APIWinRT Sensors and Location APIs are available toWindows 8* Desktop applicationsYou need to use WinRT Windows MetaData files :• Platform.winmd: C:Program Files (x86)Microsoft SDKsWindowsv8.0ExtensionSDKsMicrosoft.VCLi bs11.0ReferencesCommonConfigurationneutral• Windows.winmd: C:Program Files (x86)Windows Kits8.0ReferencesCommonConfigurationNeutral How ? Copyright© 2012, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners
  • WinRT From Desktop (C#)Unload your C# ProjectManually edit the .csproj file to add :<PropertyGroup> <TargetPlatformVersion>8.0</TargetPlatformVersion> </PropertyGroup>Reload the projectAdd Windows.winmd and Platform.winmd as referencesfrom their respective locations Copyright© 2012, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners
  • 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
  • WinRT Sensor APINo need for a sensor manager:1 – Retrieve the default sensor/device using GetDefault()2 – Set the ReportInterval3 – Add a delegate to ReadingChanged event Copyright© 2012, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners
  • WinRT Sensor API_accelero = Accelerometer.GetDefault();if (_accelero != null){ _accelero.ReportInterval = 50 <= _accelero.MinimumReportInterval ?_accelerometer.MinimumReportInterval : 50; //Register for reading changed events _accelero.ReadingChanged += (Accelerometer s, AccelerometerReadingChangedEventArgsargs) => { //use e.Data.AccelerationX/Y/Z };} C#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 });} Copyright© 2012, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners C++
  • C#/WPF Accelerometer Demo• Ellipse (ball) drawn on a canvas• Accelerometer data is used to update X/Y/Z display and location of ball• Data is read using accelerometer events in conjunction with a timer to move the ball Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 30
  • C#/WPF NFC DEMO• Subscribe to incoming WindowsURI messages• Publish a WindowsURI message to any active device• Write that message to any writable tag Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 31
  • USING SENSORS EFFICIENTLY Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 32
  • 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 Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 33
  • 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. 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 Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 34
  • 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 Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 35
  • 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/ Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 36
  • 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 Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 37
  • 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 Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 38
  • Q&ACopyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 39
  • END• START OF NEXT SESSION IN 15 MINS.• Ultrabook Developer Resources Copyright(C) 2012 Intel Corporation. All rights reserved. *Other brands and names are properties of their respective owners. 40