Hexiwear OLED Display Driver

Dependents:   Hexi_OLED_TextImage_Example Hexi_OLED_Text_Example Hexi_OLED_Image_Example security-console-app ... more

Committer:
khuang
Date:
Fri Aug 19 23:05:58 2016 +0000
Revision:
2:fc06b5b5bf6a
Parent:
1:3b5be0ee5f0c
Child:
5:a5b4b36a1aed
Added Licensing and Reformatted Init Array for SSD1351 init

Who changed what in which revision?

UserRevisionLine numberNew contents of line
khuang 2:fc06b5b5bf6a 1 /**
khuang 2:fc06b5b5bf6a 2 * \file OLED_types.h
khuang 2:fc06b5b5bf6a 3 * \version 1.00
khuang 2:fc06b5b5bf6a 4 * \brief OLED-related data structures
khuang 2:fc06b5b5bf6a 5 *
khuang 2:fc06b5b5bf6a 6 *
khuang 2:fc06b5b5bf6a 7 * Redistribution and use in source and binary forms, with or without modification,
khuang 2:fc06b5b5bf6a 8 * are permitted provided that the following conditions are met:
khuang 2:fc06b5b5bf6a 9 *
khuang 2:fc06b5b5bf6a 10 * Redistributions of source code must retain the above copyright notice, this list
khuang 2:fc06b5b5bf6a 11 * of conditions and the following disclaimer.
khuang 2:fc06b5b5bf6a 12 *
khuang 2:fc06b5b5bf6a 13 * Redistributions in binary form must reproduce the above copyright notice, this
khuang 2:fc06b5b5bf6a 14 * list of conditions and the following disclaimer in the documentation and/or
khuang 2:fc06b5b5bf6a 15 * other materials provided with the distribution.
khuang 2:fc06b5b5bf6a 16 *
khuang 2:fc06b5b5bf6a 17 * Neither the name of NXP, nor the names of its
khuang 2:fc06b5b5bf6a 18 * contributors may be used to endorse or promote products derived from this
khuang 2:fc06b5b5bf6a 19 * software without specific prior written permission.
khuang 2:fc06b5b5bf6a 20 *
khuang 2:fc06b5b5bf6a 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
khuang 2:fc06b5b5bf6a 22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
khuang 2:fc06b5b5bf6a 23 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
khuang 2:fc06b5b5bf6a 24 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
khuang 2:fc06b5b5bf6a 25 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
khuang 2:fc06b5b5bf6a 26 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
khuang 2:fc06b5b5bf6a 27 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
khuang 2:fc06b5b5bf6a 28 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
khuang 2:fc06b5b5bf6a 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
khuang 2:fc06b5b5bf6a 30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
khuang 2:fc06b5b5bf6a 31 *
khuang 2:fc06b5b5bf6a 32 * visit: http://www.mikroe.com and http://www.nxp.com
khuang 2:fc06b5b5bf6a 33 *
khuang 2:fc06b5b5bf6a 34 * get support at: http://www.mikroe.com/forum and https://community.nxp.com
khuang 2:fc06b5b5bf6a 35 *
khuang 2:fc06b5b5bf6a 36 * Project HEXIWEAR, 2015
khuang 2:fc06b5b5bf6a 37 */
khuang 2:fc06b5b5bf6a 38
khuang 2:fc06b5b5bf6a 39
khuang 0:06f42dd3eab3 40 /**
khuang 0:06f42dd3eab3 41 * OLED-related data structures
khuang 0:06f42dd3eab3 42 * Project HEXIWEAR, 2015
khuang 0:06f42dd3eab3 43 */
khuang 0:06f42dd3eab3 44
khuang 0:06f42dd3eab3 45 #ifndef HG_OLED_TYPES
khuang 0:06f42dd3eab3 46 #define HG_OLED_TYPES
khuang 0:06f42dd3eab3 47
khuang 0:06f42dd3eab3 48 #include <stdint.h>
khuang 0:06f42dd3eab3 49
khuang 0:06f42dd3eab3 50 typedef enum
khuang 0:06f42dd3eab3 51 {
khuang 0:06f42dd3eab3 52 OLED_TRANSITION_NONE,
khuang 0:06f42dd3eab3 53 OLED_TRANSITION_TOP_DOWN,
khuang 0:06f42dd3eab3 54 OLED_TRANSITION_DOWN_TOP,
khuang 0:06f42dd3eab3 55 OLED_TRANSITION_LEFT_RIGHT,
khuang 0:06f42dd3eab3 56 OLED_TRANSITION_RIGHT_LEFT
khuang 0:06f42dd3eab3 57
khuang 0:06f42dd3eab3 58 } oled_transition_t;
khuang 0:06f42dd3eab3 59
khuang 0:06f42dd3eab3 60 typedef enum
khuang 0:06f42dd3eab3 61 {
khuang 0:06f42dd3eab3 62 OLED_STATUS_SUCCESS, // success
khuang 0:06f42dd3eab3 63 OLED_STATUS_ERROR, // fail
khuang 0:06f42dd3eab3 64 OLED_STATUS_PROTOCOL_ERROR, // SPI failure
khuang 0:06f42dd3eab3 65 OLED_STATUS_INIT_ERROR, // initialization error
khuang 0:06f42dd3eab3 66 OLED_STATUS_DEINIT_ERROR // deinitialization error
khuang 0:06f42dd3eab3 67
khuang 0:06f42dd3eab3 68 } oled_status_t;
khuang 0:06f42dd3eab3 69
khuang 0:06f42dd3eab3 70
khuang 0:06f42dd3eab3 71 #if 0
khuang 0:06f42dd3eab3 72 typedef struct
khuang 0:06f42dd3eab3 73 {
khuang 0:06f42dd3eab3 74 /**
khuang 0:06f42dd3eab3 75 * SPI relevant information
khuang 0:06f42dd3eab3 76 */
khuang 0:06f42dd3eab3 77 genericSpiHandle_t protocol;
khuang 0:06f42dd3eab3 78
khuang 0:06f42dd3eab3 79 } handleOLED_t;
khuang 0:06f42dd3eab3 80 #endif
khuang 0:06f42dd3eab3 81
khuang 0:06f42dd3eab3 82
khuang 0:06f42dd3eab3 83 typedef uint16_t* oled_pixel_t;
khuang 0:06f42dd3eab3 84
khuang 0:06f42dd3eab3 85 typedef struct
khuang 0:06f42dd3eab3 86 {
khuang 0:06f42dd3eab3 87 uint32_t DCpin;
khuang 0:06f42dd3eab3 88 uint32_t CSpin;
khuang 0:06f42dd3eab3 89 uint32_t RSTpin;
khuang 0:06f42dd3eab3 90 // uint32_t RWpin;
khuang 0:06f42dd3eab3 91 uint32_t ENpin;
khuang 0:06f42dd3eab3 92
khuang 0:06f42dd3eab3 93 } settingsOLED_t;
khuang 0:06f42dd3eab3 94
khuang 0:06f42dd3eab3 95 typedef enum
khuang 0:06f42dd3eab3 96 {
khuang 0:06f42dd3eab3 97 OLED_TEXT_ALIGN_NONE = 0,
khuang 0:06f42dd3eab3 98
khuang 0:06f42dd3eab3 99 OLED_TEXT_ALIGN_LEFT = 0x1,
khuang 0:06f42dd3eab3 100 OLED_TEXT_ALIGN_RIGHT = 0x2,
khuang 0:06f42dd3eab3 101 OLED_TEXT_ALIGN_CENTER = 0x3,
khuang 0:06f42dd3eab3 102
khuang 0:06f42dd3eab3 103 OLED_TEXT_VALIGN_TOP = 0x10,
khuang 0:06f42dd3eab3 104 OLED_TEXT_VALIGN_BOTTOM = 0x20,
khuang 0:06f42dd3eab3 105 OLED_TEXT_VALIGN_CENTER = 0x30
khuang 0:06f42dd3eab3 106
khuang 0:06f42dd3eab3 107 } oled_text_align_t;
khuang 0:06f42dd3eab3 108
khuang 0:06f42dd3eab3 109 typedef struct
khuang 0:06f42dd3eab3 110 {
khuang 0:06f42dd3eab3 111 uint8_t xCrd;
khuang 0:06f42dd3eab3 112 uint8_t yCrd;
khuang 0:06f42dd3eab3 113 uint8_t width;
khuang 0:06f42dd3eab3 114 uint8_t height;
khuang 0:06f42dd3eab3 115 oled_pixel_t areaBuffer;
khuang 0:06f42dd3eab3 116
khuang 0:06f42dd3eab3 117 } oled_dynamic_area_t;
khuang 0:06f42dd3eab3 118
khuang 0:06f42dd3eab3 119 typedef struct
khuang 0:06f42dd3eab3 120 {
khuang 0:06f42dd3eab3 121 const uint8_t* font;
khuang 0:06f42dd3eab3 122 uint16_t fontColor;
khuang 0:06f42dd3eab3 123 oled_text_align_t alignParam;
khuang 0:06f42dd3eab3 124 const uint8_t* background;
khuang 0:06f42dd3eab3 125
khuang 0:06f42dd3eab3 126 } oled_text_properties_t;
khuang 0:06f42dd3eab3 127
khuang 0:06f42dd3eab3 128
khuang 0:06f42dd3eab3 129 /** color chart */
khuang 0:06f42dd3eab3 130 typedef enum
khuang 0:06f42dd3eab3 131 {
khuang 0:06f42dd3eab3 132 COLOR_BLACK = 0x0000,
khuang 0:06f42dd3eab3 133 COLOR_BLUE_1 = 0x06FF,
khuang 0:06f42dd3eab3 134 COLOR_BLUE = 0x001F,
khuang 0:06f42dd3eab3 135 COLOR_RED = 0xF800,
khuang 0:06f42dd3eab3 136 COLOR_GREEN = 0x07E0,
khuang 0:06f42dd3eab3 137 COLOR_CYAN = 0x07FF,
khuang 0:06f42dd3eab3 138 COLOR_MAGENTA = 0xF81F,
khuang 0:06f42dd3eab3 139 COLOR_YELLOW = 0xFFE0,
khuang 0:06f42dd3eab3 140 COLOR_GRAY = 0x528A,
khuang 0:06f42dd3eab3 141 COLOR_WHITE = 0xFFFF
khuang 0:06f42dd3eab3 142
khuang 0:06f42dd3eab3 143 } Color_t;
khuang 0:06f42dd3eab3 144
khuang 2:fc06b5b5bf6a 145 typedef struct _init_cmd_tag
khuang 2:fc06b5b5bf6a 146 {
khuang 2:fc06b5b5bf6a 147 uint32_t cmd;
khuang 2:fc06b5b5bf6a 148 uint8_t type;
khuang 2:fc06b5b5bf6a 149 } init_cmd_t;
khuang 0:06f42dd3eab3 150
khuang 0:06f42dd3eab3 151 #endif
khuang 1:3b5be0ee5f0c 152