This is a simple wrapper class for the MPL3115A5 pressure and temperature sensor. It allows either single readings for continuous readings using polling or interrupts. It also contains a wrapper class for mbed-rpc.

Revision:
0:b12a7d396be9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RpcMPL3115A2.cpp	Sun Mar 22 20:55:38 2015 +0000
@@ -0,0 +1,66 @@
+#include "RpcMPL3115A2.h"
+
+RpcMPL3115A2::RpcMPL3115A2(PinName sda, PinName scl, const char *name) : 
+    RPC(name),
+    chip(sda, scl) 
+{
+}
+
+int RpcMPL3115A2::id(void) {
+    return chip.getId();
+}
+
+void RpcMPL3115A2::setMode(int mode) {
+    chip.setDataMode(static_cast<MPL3115A2::DataMode>(mode));
+}
+
+int RpcMPL3115A2::getMode(void) {
+    return chip.getDataMode();
+}
+
+void RpcMPL3115A2::setOverSampling(int rate) {
+    chip.setOverSampling(rate);
+}
+
+int RpcMPL3115A2::getOverSampling() {
+    return chip.getOverSampling();
+}
+
+void RpcMPL3115A2::read(Arguments *args, Reply *reply) {
+    float pres;
+    float temp;
+    
+    chip.getReadings(pres, temp);
+    
+    reply->putData(pres);
+    reply->putData(temp);
+}
+
+
+const struct rpc_method *RpcMPL3115A2::get_rpc_methods() {
+    static const rpc_method rpc_methods[] = {
+        {"id", rpc_method_caller<int, RpcMPL3115A2, &RpcMPL3115A2::id>},
+        {"read", rpc_method_caller<RpcMPL3115A2, &RpcMPL3115A2::read> },
+        {"writeMode", rpc_method_caller<RpcMPL3115A2, int, &RpcMPL3115A2::setMode> },
+        {"readMode", rpc_method_caller<int, RpcMPL3115A2, &RpcMPL3115A2::getMode> },
+        {"writeSamples", rpc_method_caller<RpcMPL3115A2, int, &RpcMPL3115A2::setOverSampling> },
+        {"readSamples", rpc_method_caller<int, RpcMPL3115A2, &RpcMPL3115A2::getOverSampling> },
+        RPC_METHOD_SUPER(RPC)
+    };
+    
+    return rpc_methods;
+}
+
+const char *RpcMPL3115A2::get_rpc_class_name() {
+    return get_rpc_class()->name;
+}
+
+struct rpc_class *RpcMPL3115A2::get_rpc_class() {
+    static const rpc_function funcs[] = {
+        {"new", rpc_function_caller<const char*, PinName, PinName, const char*, &RPC::construct<RpcMPL3115A2, PinName, PinName, const char*> >},
+        RPC_METHOD_END
+    };
+    static rpc_class c = {"MPL3115A2", funcs, NULL};
+    
+    return &c;
+}