The blog has been pretty quiet for the last few months because I've been working hard on our latest, formerly top secret, APIs-- the Sensor and Location Platform for Windows 7! I've been busting at the seams wanting to write about this stuff, but alas, I've had to wait until the official announcement. Well, at the Professional Developers Conference this week, we finally did it.

I really wish I'd had time to blog from the conference, but we were just swamped. I passed out in my hotel room each night, after nursing the blisters on my feet from running around the convention floor. The sensors kiosk was crazy! If you were there, you know what I mean--throngs of people lining up to get our Windows 7 Sensor Development Kit, a jumpstart package that includes a really cool Freescale badge board, complete with 3 axis accelerometer, ambient light sensor, and capacitive touch sensors. Not to mention all the sample dirver and application code.

 So, just what is this new platform all about? I'll be writing here regularly about it, so stay tuned. But for now, here's the nickel tour:

  • Sensors are becoming more common in computers. Laptops have light sensors that are used to adjust display brightness or keyboard backlight. GPS sensors are built into some mobile devices. Accelerometers are becoming more common, for instance to park hard drive heads during a drop scenario. The problem is, as a developer, you can't access most of these. Even if you can get to the hardware, you have tons of work to do to learn proprietary systems and protocols for addressing the hardware.
  • The Windows 7 Sensor API changes all that. We've created a standard, generic model for working with sensors. We've made it easy for hardware OEMs to extend their UMDF drivers to talk to our platform. Once they've done that, you can use our APIs to work with the sensors without knowing any of the details about the hardware and without caring who made it.
  • Sensors are organized into categories, which tell you what the sensors do, and types, which tell you how the sensors get their data. So, for example, a GPS sensor would be a type of a location sensor. Other location types might include a cellular phone tower triangulator or an IP address lookup table.
  • Sensor data types and properties have been standardized as PROPERTYKEYs. So, all data is just provided as collections of name/value pairs.
  • Sensors can provide data synchronously or through events.
  • Categories, types, data types, properties, and events are extensible. OEMs can define their own constants for these elements.
  • We've made it even easier to access location data, if that's your bag. The Location API, built on the Sensor API, is specialized for providing either lattitude/longitude reports or street address reports (called civic address reports).

Both APIs are COM/C++-based, but work well with .NET interoperablility. The Location API also offers dispatchable interfaces for use in scripting languages.

 If you have about an hour, go watch Dan Polivy's PDC session, where he goes into some detail about the platform and some interesting scenarios, here.

This is exciting stuff! I've been learning about this new technology for the last few months, but trust me, I'm not far ahead of you. So, I'll be sharing what I learn, here, as I create the official documentation. Follow along and learn with me.