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 26 19:56:07 2016 +0000
Revision:
6:0060ffa3f4dc
Parent:
5:a5b4b36a1aed
Added OpenSans Font. Added proper licensing text. Changed a xCrd,yCrd, width, height variables to correct types. Moved SetTextProperties Init inside constructor.

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