Dependents:   V2_GPSRTC

Revision:
0:55ea30b5de1e
diff -r 000000000000 -r 55ea30b5de1e SCP1000.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SCP1000.h	Fri Jun 17 12:37:27 2011 +0000
@@ -0,0 +1,71 @@
+/**
+ * @section LICENSE
+ * This program is free software; you can redistribute it and/or modify 
+ * it under the terms of the GNU General Public License as published by 
+ * the Free Software Foundation; either version 2 of the License, or 
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 
+ * for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along 
+ * with this program; if not, write to the Free Software Foundation, Inc., 
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * @section DESCRIPTION
+ * Library to interface with the SCP1000 pressure and temperature sensor.
+ */
+
+#ifndef _SCP1000_H
+#define _SCP1000_H
+
+#include "mbed.h"
+
+/**
+ * Class to interface with the SCP1000 pressure and temperature sensor.
+ */
+class SCP1000 {
+    public:
+        /**
+         * Constructor.
+         *
+         * @param mosi SPI MOSI pin
+         * @param miso SPI MISO pin
+         * @param sclk SPI SCLK pin
+         * @param cs Chip select pin
+         */
+        SCP1000(PinName mosi, PinName miso, PinName sclk, PinName cs);
+        
+        ~SCP1000() { /* empty */ };
+        
+        /**
+         * Read the pressure.
+         *
+         * @returns The pressure in pascals.
+         */
+        unsigned long readPressure();
+        
+        /**
+         * Read the temperature.
+         *
+         * @returns The temperature in Celsius.
+         */
+        float readTemperature();
+        
+        
+    private:
+        static const char PRESSURE = 0x1F;   //Pressure 3 MSB
+        static const char PRESSURE_LSB = 0x20; //Pressure 16 LSB
+        static const char TEMP = 0x21;       //16 bit temp
+        SPI m_spi;
+        DigitalOut m_cs;
+        
+        char read_register(char register_name);
+        void write_register(char register_name, char register_value);
+        float read_register16(char register_name);
+
+};
+
+#endif // _SCP1000_H
\ No newline at end of file