This is a derived library, original authors' name is still in the scripts. Added some extra debug prints for internal use.

Fork of SFE_MicroOLED by Nenad Milosevic

Revision:
0:b7fc78d2b795
Child:
1:9c140b4e9453
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SFE_MicroOLED.h	Thu Mar 19 03:37:35 2015 +0000
@@ -0,0 +1,182 @@
+/****************************************************************************** 
+SFE_MicroOLED.h
+Header file for the MicroOLED mbed Library
+
+Jim Lindblom @ SparkFun Electronics
+October 26, 2014
+https://github.com/sparkfun/Micro_OLED_Breakout/tree/master/Firmware/Arduino/libraries/SFE_MicroOLED
+
+Adapted for mbed by Nenad Milosevic
+March, 2015
+
+This file defines the hardware SPI interface for the Micro OLED Breakout.
+
+Development environment specifics:
+Various suitable mbed platforms
+Micro OLED Breakout v1.0
+
+This code was heavily based around the MicroView library, written by GeekAmmo
+(https://github.com/geekammo/MicroView-Arduino-Library), and released under 
+the terms of the GNU General Public License as published by the Free Software 
+Foundation, either version 3 of the License, or (at your option) any later 
+version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+******************************************************************************/
+
+#ifndef SFE_MICROOLED_H
+#define SFE_MICROOLED_H
+
+static inline void swap(uint8_t &a, uint8_t &b)
+{
+    uint8_t t = a;
+    
+    a = b;
+    b = t;
+}
+ 
+#ifndef _BV
+#define _BV(bit) (1<<(bit))
+#endif
+
+#define BLACK 0
+#define WHITE 1
+
+#define LCDWIDTH			64
+#define LCDHEIGHT			48
+#define LCDCOLUMNOFFSET   32 // Visible start column within SSD1306 controller memory
+#define FONTHEADERSIZE    6
+
+#define LCDTOTALWIDTH   128  // Full width of SSD1306 controller memory
+#define LCDTOTALHEIGHT   64  // Full height of SSD1306 controller memory
+
+#define NORM				0
+#define XOR					1
+
+#define PAGE				0
+#define ALL					1
+
+#define SETCONTRAST 		0x81
+#define DISPLAYALLONRESUME 	0xA4
+#define DISPLAYALLON 		0xA5
+#define NORMALDISPLAY 		0xA6
+#define INVERTDISPLAY 		0xA7
+#define DISPLAYOFF 			0xAE
+#define DISPLAYON 			0xAF
+#define SETDISPLAYOFFSET 	0xD3
+#define SETCOMPINS 			0xDA
+#define SETVCOMDESELECT		0xDB
+#define SETDISPLAYCLOCKDIV 	0xD5
+#define SETPRECHARGE 		0xD9
+#define SETMULTIPLEX 		0xA8
+#define SETLOWCOLUMN 		0x00
+#define SETHIGHCOLUMN 		0x10
+#define SETSTARTLINE 		0x40
+#define MEMORYMODE 			0x20
+#define SETCOLUMNBOUNDS		0x21
+#define SETPAGEBOUNDS		0x22
+#define COMSCANINC 			0xC0
+#define COMSCANDEC 			0xC8
+#define SEGREMAP 			0xA0
+#define CHARGEPUMP 			0x8D
+#define EXTERNALVCC 		0x01
+#define SWITCHCAPVCC 		0x02
+
+// Scroll
+#define ACTIVATESCROLL 					0x2F
+#define DEACTIVATESCROLL 				0x2E
+#define SETVERTICALSCROLLAREA 			0xA3
+#define RIGHTHORIZONTALSCROLL 			0x26
+#define LEFTHORIZONTALSCROLL 			0x27
+#define VERTICALRIGHTHORIZONTALSCROLL	0x29
+#define VERTICALLEFTHORIZONTALSCROLL	0x2A
+
+typedef bool boolean;
+
+class MicroOLED {
+public:
+	// Constructor
+	MicroOLED(SPI &spi, PinName rst, PinName dc, PinName cs) : miol_spi(spi), rstPin(rst), dcPin(dc), csPin(cs)
+	{
+		// Set default states for the DigitalOut pins.
+		rstPin = 1;
+		dcPin = 0;
+		csPin = 1;
+	};
+	
+	// Initialize SPI mode and frequency and SSD1306 for particular display
+	void init(int spi_mode, int spi_freq);
+	
+	// Standard text output functions
+	void putc(char c);
+	void puts(const char *cstring);
+	void printf(const char *format, ...);
+
+	// RAW LCD functions
+	void command(uint8_t c);
+	void command(uint8_t c1, uint8_t c2);
+	void command(uint8_t c1, uint8_t c2, uint8_t c3);
+	void command(uint8_t c1, uint8_t c2, uint8_t c3, uint8_t c4, uint8_t c5, uint8_t c6, uint8_t c7, uint8_t c8);
+	
+	// LCD Draw functions
+	void clear(uint8_t mode);
+	void clear(uint8_t mode, uint8_t c);
+	void invert(boolean inv);
+	void contrast(uint8_t contrast);
+	void display(void);
+	void setCursor(uint8_t x, uint8_t y);
+	void pixel(uint8_t x, uint8_t y);
+	void pixel(uint8_t x, uint8_t y, uint8_t color, uint8_t mode);
+	void line(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1);
+	void line(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t color, uint8_t mode);
+	void lineH(uint8_t x, uint8_t y, uint8_t width);
+	void lineH(uint8_t x, uint8_t y, uint8_t width, uint8_t color, uint8_t mode);
+	void lineV(uint8_t x, uint8_t y, uint8_t height);
+	void lineV(uint8_t x, uint8_t y, uint8_t height, uint8_t color, uint8_t mode);
+	void rect(uint8_t x, uint8_t y, uint8_t width, uint8_t height);
+	void rect(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color , uint8_t mode);
+	void rectFill(uint8_t x, uint8_t y, uint8_t width, uint8_t height);
+	void rectFill(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color , uint8_t mode);
+	void circle(uint8_t x, uint8_t y, uint8_t radius);
+	void circle(uint8_t x, uint8_t y, uint8_t radius, uint8_t color, uint8_t mode);
+	void circleFill(uint8_t x0, uint8_t y0, uint8_t radius);
+	void circleFill(uint8_t x0, uint8_t y0, uint8_t radius, uint8_t color, uint8_t mode);
+	void drawChar(uint8_t x, uint8_t y, uint8_t c);
+	void drawChar(uint8_t x, uint8_t y, uint8_t c, uint8_t color, uint8_t mode);
+	void drawBitmap(const uint8_t * bitArray);
+	uint8_t getLCDWidth(void);
+	uint8_t getLCDHeight(void);
+	void setColor(uint8_t color);
+	void setDrawMode(uint8_t mode);
+	uint8_t *getScreenBuffer(void);
+
+	// Font functions
+	uint8_t getFontWidth(void);
+	uint8_t getFontHeight(void);
+	uint8_t getTotalFonts(void);
+	uint8_t getFontType(void);
+	uint8_t setFontType(uint8_t type);
+	uint8_t getFontStartChar(void);
+	uint8_t getFontTotalChar(void);
+
+	// LCD Rotate Scroll functions	
+	void scrollRight(uint8_t start, uint8_t stop);
+	void scrollLeft(uint8_t start, uint8_t stop);
+	void scrollStop(void);
+	void flipVertical(boolean flip);
+	void flipHorizontal(boolean flip);
+	
+private:
+	SPI &miol_spi;
+	DigitalOut rstPin, dcPin, csPin;
+	uint8_t foreColor, drawMode, fontWidth, fontHeight, fontType, fontStartChar, fontTotalChar, cursorX, cursorY;
+	uint16_t fontMapWidth;
+	static const unsigned char *fontsPointer[];
+};
+#endif