Sensor Objects

This includes all the sensor objects including a few
implementations, including dbus and sysfs sensors.

Change-Id: I9897c79f9fd463f00f0e02aeb6c32ffa89635dbe
Signed-off-by: Patrick Venture <venture@google.com>
diff --git a/notimpl/README b/notimpl/README
new file mode 100644
index 0000000..268de39
--- /dev/null
+++ b/notimpl/README
@@ -0,0 +1,2 @@
+These are convenience objects that let one create a read-only sensor or a
+write-only object in whatever scenario.
\ No newline at end of file
diff --git a/notimpl/readonly.cpp b/notimpl/readonly.cpp
new file mode 100644
index 0000000..f6ddad3
--- /dev/null
+++ b/notimpl/readonly.cpp
@@ -0,0 +1,30 @@
+/**
+ * Copyright 2017 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdexcept>
+
+#include "readonly.hpp"
+
+
+void ReadOnly::write(double value)
+{
+    throw std::runtime_error("Not supported.");
+}
+
+void ReadOnlyNoExcept::write(double value)
+{
+    return;
+}
diff --git a/notimpl/readonly.hpp b/notimpl/readonly.hpp
new file mode 100644
index 0000000..a609e22
--- /dev/null
+++ b/notimpl/readonly.hpp
@@ -0,0 +1,26 @@
+#pragma once
+
+/* Interface that implements an exception throwing read method. */
+
+#include "interfaces.hpp"
+
+
+class ReadOnly: public WriteInterface
+{
+    public:
+        ReadOnly()
+            : WriteInterface(0, 0)
+        { }
+
+        void write(double value) override;
+};
+
+class ReadOnlyNoExcept: public WriteInterface
+{
+    public:
+        ReadOnlyNoExcept()
+            : WriteInterface(0, 0)
+        { }
+
+        void write(double value) override;
+};
diff --git a/notimpl/writeonly.cpp b/notimpl/writeonly.cpp
new file mode 100644
index 0000000..a465ecf
--- /dev/null
+++ b/notimpl/writeonly.cpp
@@ -0,0 +1,26 @@
+/**
+ * Copyright 2017 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdexcept>
+
+#include "writeonly.hpp"
+
+
+ReadReturn WriteOnly::read(void)
+{
+    throw std::runtime_error("Not supported.");
+}
+
diff --git a/notimpl/writeonly.hpp b/notimpl/writeonly.hpp
new file mode 100644
index 0000000..4c26fbd
--- /dev/null
+++ b/notimpl/writeonly.hpp
@@ -0,0 +1,15 @@
+/* Interface that implements an exception throwing write method. */
+#pragma once
+
+#include "interfaces.hpp"
+
+
+class WriteOnly: public ReadInterface
+{
+    public:
+        WriteOnly()
+            : ReadInterface()
+        { }
+
+        ReadReturn read(void) override;
+};