mbed library

Dependents:   Printf

Fork of mbed by mbed official

Revision:
44:24d45a770a51
Parent:
43:e2ed12d17f06
Child:
54:71b101360fb9
--- a/AnalogOut.h	Fri Oct 26 17:40:46 2012 +0100
+++ b/AnalogOut.h	Wed Nov 21 10:49:56 2012 +0000
@@ -1,18 +1,32 @@
-/* mbed Microcontroller Library - AnalogOut
- * Copyright (c) 2006-2011 ARM Limited. All rights reserved.
- */ 
- 
+/* mbed Microcontroller Library
+ * Copyright (c) 2006-2012 ARM Limited
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
 #ifndef MBED_ANALOGOUT_H
 #define MBED_ANALOGOUT_H
 
-#include "device.h"
+#include "platform.h"
 
 #if DEVICE_ANALOGOUT
 
-#include "platform.h"
-#include "PinNames.h"
-#include "PeripheralNames.h"
-#include "Base.h"
+#include "analogout_api.h"
 
 namespace mbed {
 
@@ -36,7 +50,7 @@
  * }
  * @endcode
  */
-class AnalogOut : public Base {
+class AnalogOut {
 
 public:
 
@@ -44,23 +58,29 @@
      * 
      *  @param AnalogOut pin to connect to (18)
      */
-    AnalogOut(PinName pin, const char *name = NULL);
+    AnalogOut(PinName pin) {
+        analogout_init(&_dac, pin);
+    }
     
     /** Set the output voltage, specified as a percentage (float)
      *
      *  @param value A floating-point value representing the output voltage, 
      *    specified as a percentage. The value should lie between
      *    0.0f (representing 0v / 0%) and 1.0f (representing 3.3v / 100%).
-     *    Values outside this range will be saturated to 0.0f or 1.0f.     
+     *    Values outside this range will be saturated to 0.0f or 1.0f.
      */
-    void write(float value);
+    void write(float value) {
+        analogout_write(&_dac, value);
+    }
     
     /** Set the output voltage, represented as an unsigned short in the range [0x0, 0xFFFF]
      *
      *  @param value 16-bit unsigned short representing the output voltage,
-     *    normalised to a 16-bit value (0x0000 = 0v, 0xFFFF = 3.3v)
+     *            normalised to a 16-bit value (0x0000 = 0v, 0xFFFF = 3.3v)
      */
-    void write_u16(unsigned short value);
+    void write_u16(unsigned short value) {
+        analogout_write_u16(&_dac, value);
+    }
 
     /** Return the current output voltage setting, measured as a percentage (float)
      *
@@ -71,30 +91,33 @@
      *
      *  @note
      *    This value may not match exactly the value set by a previous write().
-     */    
-    float read();
-
+     */
+    float read() {
+        return analogout_read(&_dac);
+    }
 
 #ifdef MBED_OPERATORS
     /** An operator shorthand for write()
      */
-    AnalogOut& operator= (float percent);
-    AnalogOut& operator= (AnalogOut& rhs);
+    AnalogOut& operator= (float percent) {
+        write(percent);
+        return *this;
+    }
+    
+    AnalogOut& operator= (AnalogOut& rhs) {
+        write(rhs.read());
+        return *this;
+    }
 
     /** An operator shorthand for read()
-     */    
-    operator float();
-#endif
-
-#ifdef MBED_RPC
-    virtual const struct rpc_method *get_rpc_methods();
-    static struct rpc_class *get_rpc_class();
+     */
+    operator float() {
+        return read();
+    }
 #endif
 
 protected:
-
-    DACName _dac;
-
+    dac_t _dac;
 };
 
 } // namespace mbed