Hexiwear OLED Display Driver

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

Committer:
khuang
Date:
Sat Sep 24 19:45:48 2016 +0000
Revision:
8:ae5fad429790
Parent:
6:0060ffa3f4dc
Commented out checking to see if text will fit in textbox for DrawTextBox. Font width and height specified in font information may be too much.

Who changed what in which revision?

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