doc: improve & complete documentation on many sensors
[contrib/upm.git] / src / lcd / ssd1327.h
index bb11768..f5bc132 100644 (file)
@@ -25,7 +25,7 @@
 #pragma once
 
 #include <string>
-#include "iiclcd.h"
+#include "i2clcd.h"
 
 namespace upm {
 /*
@@ -145,29 +145,82 @@ typedef enum {
     PAGE          =  2
 } displayAddressingMode;
 
-class SSD1327 : public IICLcd {
+/**
+ * @brief C++ API for SSD1327 i2c controlled OLED displays
+ *
+ * The [SSD1327](http://garden.seeedstudio.com/images/8/82/SSD1327_datasheet.pdf)
+ * is a 96x96 Dot matrix OLED/PLED segment driver with controller. This
+ * implementation was tested using the
+ * [Grove LED 96×96 Display module]
+ * (http://www.seeedstudio.com/wiki/Grove_-_OLED_Display_1.12%22)
+ * which is an OLED monochrome display
+ *
+ * @snippet oled-1327.cxx Interesting
+ * @image html ssd1327.jpeg
+ */
+class SSD1327 : public I2CLcd {
     public:
-        /** SSD1308 Constructor.
-         * Calls MAA initialisation functions.
+        /**
+         * SSD1327 Constructor, calls libmraa initialisation functions
+         *
          * @param bus i2c bus to use
-         * @param address the slave address the lcd is registered on.
+         * @param address the slave address the lcd is registered on
          */
         SSD1327 (int bus, int address);
+       /**
+        * SSD1327 destructor
+        */
         ~SSD1327 ();
-        maa_result_t draw(uint8_t *data, int bytes);
-
-        // virtual methods
-        maa_result_t write (std::string msg);
-        maa_result_t setCursor (int row, int column);
-        maa_result_t clear ();
-        maa_result_t home ();
-        maa_result_t setGrayLevel (uint8_t level);
+       /**
+        * Draw an image, see examples/python/make_oled_pic.py for an
+        * explanation on how the pixels are mapped to bytes
+        *
+        * @param data the buffer to read
+        * @param bytes the amount of bytes to read from the pointer
+        * @return Result of operation
+        */
+        mraa_result_t draw(uint8_t *data, int bytes);
+       /**
+        * Set gray level for LCD panel
+        *
+        * @param gray level from 0-255
+        * @return Result of operation
+        */
+        mraa_result_t setGrayLevel (uint8_t level);
+       /**
+        * Write a string to LCD
+        *
+        * @param msg The std::string to write to display, note only ascii
+        *     chars are supported
+        * @return Result of operation
+        */
+        mraa_result_t write(std::string msg);
+       /**
+        * Set cursor to a coordinate
+        *
+        * @param row The row to set cursor to
+        * @param column The column to set cursor to
+        * @return Result of operation
+        */
+        mraa_result_t setCursor(int row, int column);
+       /**
+        * Clear display from characters
+        *
+        * @return Result of operatio
+        */
+        mraa_result_t clear();
+       /**
+        * Return to coordinate 0,0
+        *
+        * @return Result of operation
+        */
+        mraa_result_t home();
 
     private:
-        maa_result_t writeChar (maa_i2c_context ctx, uint8_t value);
-        maa_result_t setNormalDisplay ();
-        maa_result_t setHorizontalMode ();
-        maa_result_t setVerticalMode ();
+        mraa_result_t writeChar (mraa_i2c_context ctx, uint8_t value);
+        mraa_result_t setNormalDisplay ();
+        mraa_result_t setHorizontalMode ();
+        mraa_result_t setVerticalMode ();
 
         uint8_t grayHigh;
         uint8_t grayLow;