A class for managing SSD1306 controlled LCD´s (cheap 128x64 models, 0.96'') with more scroll features

Dependents:   2PA2S 2PA2S_v2

Revision:
6:cff0e772910f
Parent:
5:4f7cdc2ee49a
Child:
7:b0e7ccc9138b
--- a/ssd1306.h	Wed Nov 01 16:32:22 2017 +0000
+++ b/ssd1306.h	Wed Nov 01 16:43:48 2017 +0000
@@ -65,6 +65,9 @@
 
 class SSD1306 {
 public:
+    /**
+     * PlotStyle. Defines how pixels being plotted interact with existing pixels on the screen
+     */
     enum PlotStyle
     {
         Normal,
@@ -72,6 +75,9 @@
         Xor
     };
     
+    /**
+     * I2CSpeed. Defines the speed of the I2C bus
+     */
     enum I2CSpeed
     {
         Slow,
@@ -79,116 +85,132 @@
         Fast
     };
     
-    /** Creates an instance of a SSD1306 driver, specifying I2C pins to use
-    *
-    *  @param sda I2C data line pin
-    *  @param scl I2C clock line pin
-    */
+    /**
+     * Creates an instance of a SSD1306 driver, specifying I2C pins to use
+     *
+     * @param sda I2C data line pin
+     * @param scl I2C clock line pin
+     */
     SSD1306 (PinName sda, PinName scl, char ssd1306_addr = 0x78);
     
-    /** Creates an instance of a SSD1306 driver using an existing I2C object
-    *
-    *  @param busi2c I2C object
-    *  @param ssd1306_addr I2C addr of SSD1306 controller
-    */
+    /**
+     * Creates an instance of a SSD1306 driver using an existing I2C object
+     *
+     * @param busi2c I2C object
+     * @param ssd1306_addr I2C addr of SSD1306 controller
+     */
     SSD1306 (I2C &busi2c, char ssd1306_addr = 0x78);
     
-    /** Set the frequency of the I2C interface
-    *
-    *  @param hz The bus frequency in hertz
-    */
+    /**
+     * Set the frequency of the I2C interface
+     *
+     * @param hz The bus frequency in hertz
+     */
     void speed (I2CSpeed spd);
     
-    /** Initialize the SSD1306 controller
-    */
+    /**
+     * Initialize the SSD1306 controller
+     */
     int init (void);
     
-    /** Scrolls up one text line
-    *
-    *  @param refresh (optional) Force an actual screen redraw after scrolling
-    */
+    /**
+     * Scrolls up one text line
+     *
+     * @param refresh (optional) Force an actual screen redraw after scrolling
+     */
     void scroll (bool refresh=false);
     
-    /** Print a character at the current text position. Updates the text position and forces a scroll if at the end of the screen
-    *
-    *  @param c ASCII code of the character to print (8-bit ASCII code, use original IBM code page 437. No control codes.
-    *  @param refresh (optional) Force an actual screen redraw after scrolling
-    */
+    /**
+     * Print a character at the current text position. Updates the text position and forces a scroll if at the end of the screen
+     *
+     * @param c ASCII code of the character to print (8-bit ASCII code, use original IBM code page 437. No control codes.
+     * @param refresh (optional) Force an actual screen redraw after scrolling
+     */
     void putchar (char c, bool refresh=false);
     
-    /** Prints a NUL terminated string
-    *
-    *  @param s C-style string (NUL terminated) to print.
-    *  @param refresh (optional) Force an actual screen redraw after scrolling
-    */
+    /**
+     * Prints a NUL terminated string
+     *
+     * @param s C-style string (NUL terminated) to print.
+     * @param refresh (optional) Force an actual screen redraw after scrolling
+     */
     void puts (char *s, bool refresh=false);
         
-    /** printf interface to SSD1306 controller
-    *
-    *  @param fmt Format string.
-    */
+    /**
+     * printf interface to SSD1306 controller
+     *
+     * @param fmt Format string.
+     */
     void printf (const char *fmt,...);
     
-    /** Change the text position
-    *
-    *  @param row Text row (0-7) to print the next character
-    *  @param column Text column (0-15) to print the next character
-    */
+    /**
+     * Change the text position
+     *
+     * @param row Text row (0-7) to print the next character
+     * @param column Text column (0-15) to print the next character
+     */
     void locate (char row, char column);
     
-    /** Redraw the physical display, sending the content of the display memory to the SSD1306 controller using the I2C bus
-    */
+    /**
+     * Redraw the physical display, sending the content of the display memory to the SSD1306 controller using the I2C bus
+     */
     void display (void);
     
-    /** Changes the contrast (actually, pixel brightness) of the screen
-    *
-    *  @param v Contrast level (0-255)
-    */
+    /**
+     * Changes the contrast (actually, pixel brightness) of the screen
+     *
+     * @param v Contrast level (0-255)
+     */
     void set_contrast (char v);
     
-    /** Clear screen and optionally, fills it with a predefined picture (in 128x64 OLED format, see display datasheet). Also resets the text position.
-    *
-    *  @param bkground If not NULL, should point to a 1024 byte buffer with the image to load to the display
-    *  @param refresh (optional) Force an actual screen redraw after scrolling
-    */
+    /**
+     * Clear screen and optionally, fills it with a predefined picture (in 128x64 OLED format, see display datasheet). Also resets the text position.
+     *
+     * @param bkground If not NULL, should point to a 1024 byte buffer with the image to load to the display
+     * @param refresh (optional) Force an actual screen redraw after scrolling
+     */
     void cls (char *bkground=NULL, bool refresh=false);
     
-    /** Plots a pixel.
-    *
-    *  @param x x-coordinate (0-127) of the pixel. X coordinates go left to right.
-    *  @param y y-coordinate (0-63) of the pixel. Y coordinates go up to down.
-    *  @param mode. Plot style mode: Normal (pixel is drawn), Inverse (pixel is erased), or Xor (pixel is erased if background position is already set, otherwise is drawn)
-    *  @param refresh (optional) Force an actual screen redraw after scrolling
-    */
+    /**
+     * Plots a pixel.
+     *
+     * @param x x-coordinate (0-127) of the pixel. X coordinates go left to right.
+     * @param y y-coordinate (0-63) of the pixel. Y coordinates go up to down.
+     * @param mode. Plot style mode: Normal (pixel is drawn), Inverse (pixel is erased), or Xor (pixel is erased if background position is already set, otherwise is drawn)
+     * @param refresh (optional) Force an actual screen redraw after scrolling
+     */
     void plot (char x, char y, PlotStyle mode, bool refresh=false);
     
-    /** Returns the state of a pixel coordinate from screen
-    *
-    *  @param x x-coordinate (0-127) of the pixel. X coordinates go left to right.
-    *  @param y y-coordinate (0-63) of the pixel. Y coordinates go up to down.
-    *  @return true if the pixel was set, or false otherwise
-    */
+    /**
+     * Returns the state of a pixel coordinate from screen
+     *
+     * @param x x-coordinate (0-127) of the pixel. X coordinates go left to right.
+     * @param y y-coordinate (0-63) of the pixel. Y coordinates go up to down.
+     * @return true if the pixel was set, or false otherwise
+     */
     bool point (char x, char y);
     
-    /** Draws a line using the Bresenham algorithm
-    *
-    *  @param x0 x-coordinate (0-127) of the starting point
-    *  @param y0 y-coordinate (0-63) of the starting point
-    *  @param x1 x-coordinate (0-127) of the ending point
-    *  @param y1 y-coordinate (0-63) of the ending point
-    *  @param mode. Plot style mode: Normal (pixel is drawn), Inverse (pixel is erased), or Xor (pixel is erased if background position is already set, otherwise is drawn)
-    *  @param refresh (optional) Force an actual screen redraw after scrolling
-    */
+    /**
+     * Draws a line using the Bresenham algorithm
+     *
+     * @param x0 x-coordinate (0-127) of the starting point
+     * @param y0 y-coordinate (0-63) of the starting point
+     * @param x1 x-coordinate (0-127) of the ending point
+     * @param y1 y-coordinate (0-63) of the ending point
+     * @param mode. Plot style mode: Normal (pixel is drawn), Inverse (pixel is erased), or Xor (pixel is erased if background position is already set, otherwise is drawn)
+     * @param refresh (optional) Force an actual screen redraw after scrolling
+     */
     void line (char x0, char y0, char x1, char y1, PlotStyle mode, bool refresh=false);
     
-    /** Draws a circle
-    *
-    *  @param x0 x-coordinate (0-127) of the center point
-    *  @param y0 y-coordinate (0-63) of the center point
-    *  @param r radius of the circle
-    *  @param mode. Plot style mode: Normal (pixel is drawn), Inverse (pixel is erased), or Xor (pixel is erased if background position is already set, otherwise is drawn)
-    *  @param refresh (optional) Force an actual screen redraw after scrolling
-    */
+    /**
+     * Draws a circle
+     *
+     * @param x0 x-coordinate (0-127) of the center point
+     * @param y0 y-coordinate (0-63) of the center point
+     * @param r radius of the circle
+     * @param mode. Plot style mode: Normal (pixel is drawn), Inverse (pixel is erased), or Xor (pixel is erased if background position is already set, otherwise is drawn)
+     * @param refresh (optional) Force an actual screen redraw after scrolling
+     */
     void circle (char x0, char y0, char r, PlotStyle mode, bool refresh=false);
     
     virtual ~SSD1306 () {