A library to interface to the PAW3102DB optical mouse sensor. It cannot write to the sensor as of yet.

Revision:
0:dda73f38c264
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PAW3102DB.cpp	Mon Jun 13 19:03:22 2011 +0000
@@ -0,0 +1,55 @@
+#include "PAW3102DB.h"
+#include "mbed.h"
+
+PAW3102DB::PAW3102DB(PinName pMOSI, PinName pMISO, PinName pSCK): sensor(pMOSI, pMISO, pSCK) {
+    MOSI = pMOSI;
+    MISO = pMISO;
+    SCK = pSCK;
+    
+    sensor.frequency(10000000); // set it to 10MHz
+    sensor.format(8, 3); // send 8 bits, change on falling, read on rising
+    sensor.slave_format(8); // 8 bits returned
+}
+
+unsigned char PAW3102DB::read(unsigned char address) {
+    return (char)sensor.write(address & 0x7F);
+}
+
+unsigned short PAW3102DB::getProductID(void) {
+    return (sensor.write(PRODUCT_ID2) << 4) | (sensor.write(PRODUCT_ID3) >> 4);
+}
+
+unsigned short PAW3102DB::getResolution(void) {
+    unsigned short resolution = 0;
+    unsigned char buffer = sensor.write(MOTION_STATUS);
+    buffer = (buffer >> 4) & 0x03;
+    switch (buffer)
+    {
+        case 0:
+            resolution = 1000;
+            break;
+        case 1:
+            resolution = 1200;
+            break;
+        case 2:
+            resolution = 1600;
+            break;
+        case 3:
+            resolution = 800;
+            break;
+        default:
+            break;    
+    }
+    return resolution;
+}
+
+signed char PAW3102DB::getDeltaX(void) {
+    signed char buffer = read(DELTA_X);
+    buffer *= -1; // dirty hack
+    return buffer;     
+}
+signed char PAW3102DB::getDeltaY(void) {
+    signed char buffer = read(DELTA_Y);
+    buffer *= -1; // dirty hack
+    return buffer;   
+}