Library for Waveshare 2.7" tri-colour e-Paper display.

Dependents:   ePD_2_7b_example

Revision:
0:9e6a8e3cd8de
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/epd2in7b.h	Fri Dec 06 23:24:50 2019 +0000
@@ -0,0 +1,170 @@
+/**
+ *  @filename   :   epd2in7b.h
+ *  @brief      :   Header file for Dual-color e-paper library epd2in7b.cpp
+ *  @author     :   Yehui from Waveshare (modified by Mark Roberts / mdroberts1243)
+ *
+ *  Copyright (C) Waveshare     July 31 2017
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documnetation 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
+ * furished 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 OR 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.
+ */
+
+/*
+ *  Modified by Kenji Arai / JH1PJL
+ *
+ *  http://www.page.sannet.ne.jp/kenjia/index.html
+ *  http://mbed.org/users/kenjiArai/
+ *      Created:    April     27th, 2019
+ *      Revised:    April     30th, 2019
+ *
+ *  Refrence software
+ *  https://github.com/waveshare/e-Paper
+ *  https://os.mbed.com/users/imachooon/code/epd1in54/
+ *
+ *  Technical documents
+ *  https://www.waveshare.com/wiki/2.13inch_e-Paper_HAT_(B)
+ *
+ *  Product
+ *  http://akizukidenshi.com/catalog/g/gP-13757/
+ *  https://www.waveshare.com/2.13inch-e-paper-hat-b.htm
+ *
+ */
+
+#ifndef EPD2IN7B_H
+#define EPD2IN7B_H
+
+#include "epdif.h"
+#define LOW 0
+#define HIGH 1
+
+// Display resolution
+
+// 2.7 Inch version
+#define EPD_VERT       264
+#define EPD_HORIZ      176
+
+// EPD2IN13B commands
+#define PANEL_SETTING                               0x00
+#define POWER_SETTING                               0x01
+#define POWER_OFF                                   0x02
+#define POWER_OFF_SEQUENCE_SETTING                  0x03
+#define POWER_ON                                    0x04
+#define POWER_ON_MEASURE                            0x05
+#define BOOSTER_SOFT_START                          0x06
+#define DEEP_SLEEP                                  0x07
+#define DATA_START_TRANSMISSION_1                   0x10
+#define DATA_STOP                                   0x11
+#define DISPLAY_REFRESH                             0x12
+#define DATA_START_TRANSMISSION_2                   0x13
+// Partial Data Start Transmission 1 (0x14), 2 (0x15), Partial Display Refresh (0x16)
+// Added for 2.7 inch version
+#define PARTIAL_DATA_START_TRANSMISSION_1	    0x14
+#define PARTIAL_DATA_START_TRANSMISSION_2	    0x15
+#define PARTIAL_DISPLAY_REFRESH			    0x16
+// end new stuff for 2.7
+#define VCOM_LUT                                    0x20
+#define W2W_LUT                                     0x21
+#define B2W_LUT                                     0x22
+#define W2B_LUT                                     0x23
+#define B2B_LUT                                     0x24
+#define PLL_CONTROL                                 0x30
+#define TEMPERATURE_SENSOR_COMMAND                  0x40  // changed in 2.7
+#define TEMPERATURE_SENSOR_CALIBRATION              0x41  // changed in 2.7
+#define TEMPERATURE_SENSOR_WRITE                    0x42
+#define TEMPERATURE_SENSOR_READ                     0x43
+#define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+#define LOW_POWER_DETECTION                         0x51
+#define TCON_SETTING                                0x60
+#define RESOLUTION_SETTING                          0x61
+// Source & gate start setting (0x62)
+#define GET_STATUS                                  0x71
+#define AUTO_MEASURE_VCOM                           0x80
+#define READ_VCOM_VALUE                             0x81
+#define VCM_DC_SETTING                              0x82
+//#define PARTIAL_WINDOW                              0x90 // Partial not defined in 2.7
+//#define PARTIAL_IN                                  0x91
+//#define PARTIAL_OUT                                 0x92
+#define PROGRAM_MODE                                0xA0
+#define ACTIVE_PROGRAM                              0xA1
+#define READ_OTP_DATA                               0xA2
+//#define POWER_SAVING                                0xE3 // Not in 2.7?
+
+
+extern const unsigned char lut_vcom_dc[];
+extern const unsigned char lut_ww[];
+extern const unsigned char lut_bw[];
+extern const unsigned char lut_bb[];
+extern const unsigned char lut_wb[];
+
+class Epd : EpdIf
+{
+public:
+    int horiz;
+    int vert;
+
+    Epd(PinName mosi,
+        PinName miso,
+        PinName sclk,
+        PinName cs,
+        PinName dc,
+        PinName rst,
+        PinName busy,
+        PinName pwr
+       );
+    ~Epd()
+    {
+        ;
+    }
+
+    int  Init(void);
+    void SendCommand(unsigned char command);
+    void SendData(unsigned char data);
+    void WaitUntilIdle(void);
+    void Reset(void);
+    void SetLut(void);
+    void SetPartialWindow(const unsigned char* buffer_black,
+                          const unsigned char* buffer_red,
+                          int x,
+                          int y,
+                          int w,
+                          int l);
+    void SetPartialWindowBlack(const unsigned char* buffer_black,
+                               int x,
+                               int y,
+                               int w,
+                               int l);
+    void SetPartialWindowRed(const unsigned char* buffer_red,
+                                int x,
+                                int y,
+                                int w,
+                                int l);
+    void DisplayFrame(const unsigned char* frame_buffer_black,
+                      const unsigned char* frame_buffer_red);
+    void DisplayFrame(void);
+    void ClearFrame(void);
+    void Sleep(void);
+    void PwrOn(void);
+    void PwrOff(void);
+
+private:
+
+};
+
+#endif /* EPD2IN7B_H */
+
+/* END OF FILE */