EaPaper Library for EM027BS013

Dependencies:   EM027BS013 TFT_fonts

Fork of EaEpaper by Peter Drescher

Revision:
4:672976335e80
Parent:
3:1371614703cd
diff -r 1371614703cd -r 672976335e80 EPD.h
--- a/EPD.h	Wed Jun 25 17:43:32 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-// Copyright 2013 Pervasive Displays, Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at:
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
-// express or implied.  See the License for the specific language
-// governing permissions and limitations under the License.
-
-#ifndef EPD_H
-#define EPD_H
-
-#include "mbed.h"
-
-#define PROGMEM
-
-
-typedef enum {
-    EPD_1_44,        // 128 x 96
-    EPD_2_0,         // 200 x 96
-    EPD_2_7          // 264 x 176
-} EPD_size;
-
-typedef enum {           // Image pixel -> Display pixel
-    EPD_compensate,  // B -> W, W -> B (Current Image)
-    EPD_white,       // B -> N, W -> W (Current Image)
-    EPD_inverse,     // B -> N, W -> B (New Image)
-    EPD_normal       // B -> B, W -> W (New Image)
-} EPD_stage;
-
-typedef void EPD_reader(void *buffer, uint32_t address, uint16_t length);
-
-class EPD_Class {
-private:
-    DigitalOut EPD_Pin_PANEL_ON;
-    DigitalOut EPD_Pin_BORDER;
-    DigitalOut EPD_Pin_DISCHARGE;
-    PwmOut EPD_Pin_PWM;
-    DigitalOut EPD_Pin_RESET;
-    DigitalIn EPD_Pin_BUSY;
-    DigitalOut EPD_Pin_EPD_CS;
-    SPI spi_;    
-
-    EPD_size size;
-    uint16_t stage_time;
-    uint16_t factored_stage_time;
-    uint16_t lines_per_display;
-    uint16_t dots_per_line;
-    uint16_t bytes_per_line;
-    uint16_t bytes_per_scan;
-    PROGMEM const uint8_t *gate_source;
-    uint16_t gate_source_length;
-    PROGMEM const uint8_t *channel_select;
-    uint16_t channel_select_length;
-
-    bool filler;
-    
-    void SPI_put(uint8_t c);
-    void SPI_put_wait(uint8_t c, DigitalIn busy_pin);
-    void SPI_send(DigitalOut cs_pin, const uint8_t *buffer, uint16_t length);
-
-public:
-    // power up and power down the EPD panel
-    void begin();
-    void end();
-
-    void setFactor(int temperature = 25) {
-        this->factored_stage_time = this->stage_time * this->temperature_to_factor_10x(temperature) / 10;
-    }
-
-    // clear display (anything -> white)
-    void clear() {
-        this->frame_fixed_repeat(0xff, EPD_compensate);
-        this->frame_fixed_repeat(0xff, EPD_white);
-        this->frame_fixed_repeat(0xaa, EPD_inverse);
-        this->frame_fixed_repeat(0xaa, EPD_normal);
-    }
-
-    // assuming a clear (white) screen output an image (PROGMEM data)
-    void image(const uint8_t *image) {
-        this->frame_fixed_repeat(0xaa, EPD_compensate);
-        this->frame_fixed_repeat(0xaa, EPD_white);
-        this->frame_data_repeat(image, EPD_inverse);
-        this->frame_data_repeat(image, EPD_normal);
-    }
-
-    // change from old image to new image (PROGMEM data)
-    void image(const uint8_t *old_image, const uint8_t *new_image) {
-        this->frame_data_repeat(old_image, EPD_compensate);
-        this->frame_data_repeat(old_image, EPD_white);
-        this->frame_data_repeat(new_image, EPD_inverse);
-        this->frame_data_repeat(new_image, EPD_normal);
-    }
-
-#if defined(EPD_ENABLE_EXTRA_SRAM)
-
-    // change from old image to new image (SRAM version)
-    void image_sram(const uint8_t *old_image, const uint8_t *new_image) {
-        this->frame_sram_repeat(old_image, EPD_compensate);
-        this->frame_sram_repeat(old_image, EPD_white);
-        this->frame_sram_repeat(new_image, EPD_inverse);
-        this->frame_sram_repeat(new_image, EPD_normal);
-    }
-#endif
-
-    // Low level API calls
-    // ===================
-
-    // single frame refresh
-    void frame_fixed(uint8_t fixed_value, EPD_stage stage);
-    void frame_data(const uint8_t *new_image, EPD_stage stage);
-#if defined(EPD_ENABLE_EXTRA_SRAM)
-    void frame_sram(const uint8_t *new_image, EPD_stage stage);
-#endif
-    void frame_cb(uint32_t address, EPD_reader *reader, EPD_stage stage);
-
-    // stage_time frame refresh
-    void frame_fixed_repeat(uint8_t fixed_value, EPD_stage stage);
-    void frame_data_repeat(const uint8_t *new_image, EPD_stage stage);
-#if defined(EPD_ENABLE_EXTRA_SRAM)
-    void frame_sram_repeat(const uint8_t *new_image, EPD_stage stage);
-#endif
-    void frame_cb_repeat(uint32_t address, EPD_reader *reader, EPD_stage stage);
-
-    // convert temperature to compensation factor
-    int temperature_to_factor_10x(int temperature);
-
-    // single line display - very low-level
-    // also has to handle AVR progmem
-    void line(uint16_t line, const uint8_t *data, uint8_t fixed_value, bool read_progmem, EPD_stage stage);
-
-    // inline static void attachInterrupt();
-    // inline static void detachInterrupt();
-
-    EPD_Class(EPD_size size,
-          PinName panel_on_pin,
-          PinName border_pin,
-          PinName discharge_pin,
-          PinName pwm_pin,
-          PinName reset_pin,
-          PinName busy_pin,
-          PinName chip_select_pin,
-          PinName mosi,
-          PinName miso,
-          PinName sck);
-
-};
-
-#endif
-