1 /**
2   ******************************************************************************
3   * @file    st7735.h
4   * @author  MCD Application Team
5   * @brief   This file contains all the functions prototypes for the st7735.c
6   *          driver.
7   ******************************************************************************
8   * @attention
9   *
10   * <h2><center>&copy; Copyright (c) 2018 STMicroelectronics.
11   * All rights reserved.</center></h2>
12   *
13   * This software component is licensed by ST under BSD 3-Clause license,
14   * the "License"; You may not use this file except in compliance with the
15   * License. You may obtain a copy of the License at:
16   *                        opensource.org/licenses/BSD-3-Clause
17   *
18   ******************************************************************************
19   */
20 
21 /* Define to prevent recursive inclusion -------------------------------------*/
22 #ifndef ST7735_H
23 #define ST7735_H
24 
25 #ifdef __cplusplus
26  extern "C" {
27 #endif
28 
29 /* Includes ------------------------------------------------------------------*/
30 #include "st7735_reg.h"
31 #include <stddef.h>
32 
33 /** @addtogroup BSP
34   * @{
35   */
36 
37 /** @addtogroup Components
38   * @{
39   */
40 
41 /** @defgroup ST7735 ST7735
42   * @{
43   */
44 
45 /** @defgroup ST7735_Exported_Types Exported Types
46   * @{
47   */
48 typedef int32_t (*ST7735_Init_Func)     (void);
49 typedef int32_t (*ST7735_DeInit_Func)   (void);
50 typedef int32_t (*ST7735_GetTick_Func)  (void);
51 typedef int32_t (*ST7735_Delay_Func)    (uint32_t);
52 typedef int32_t (*ST7735_WriteReg_Func) (uint8_t, uint8_t*, uint32_t);
53 typedef int32_t (*ST7735_ReadReg_Func)  (uint8_t, uint8_t*);
54 typedef int32_t (*ST7735_SendData_Func) (uint8_t*, uint32_t);
55 typedef int32_t (*ST7735_RecvData_Func) (uint8_t*, uint32_t);
56 
57 typedef struct
58 {
59   ST7735_Init_Func          Init;
60   ST7735_DeInit_Func        DeInit;
61   uint16_t                  Address;
62   ST7735_WriteReg_Func      WriteReg;
63   ST7735_ReadReg_Func       ReadReg;
64   ST7735_SendData_Func      SendData;
65   ST7735_RecvData_Func      RecvData;
66   ST7735_GetTick_Func       GetTick;
67 } ST7735_IO_t;
68 
69 
70 typedef struct
71 {
72   ST7735_IO_t         IO;
73   st7735_ctx_t        Ctx;
74   uint8_t             IsInitialized;
75 } ST7735_Object_t;
76 
77 typedef struct
78 {
79   /* Control functions */
80   int32_t (*Init             )(ST7735_Object_t*, uint32_t, uint32_t);
81   int32_t (*DeInit           )(ST7735_Object_t*);
82   int32_t (*ReadID           )(ST7735_Object_t*, uint32_t*);
83   int32_t (*DisplayOn        )(ST7735_Object_t*);
84   int32_t (*DisplayOff       )(ST7735_Object_t*);
85   int32_t (*SetBrightness    )(ST7735_Object_t*, uint32_t);
86   int32_t (*GetBrightness    )(ST7735_Object_t*, uint32_t*);
87   int32_t (*SetOrientation   )(ST7735_Object_t*, uint32_t);
88   int32_t (*GetOrientation   )(ST7735_Object_t*, uint32_t*);
89 
90   /* Drawing functions*/
91   int32_t ( *SetCursor       ) (ST7735_Object_t*, uint32_t, uint32_t);
92   int32_t ( *DrawBitmap      ) (ST7735_Object_t*, uint32_t, uint32_t, uint8_t *);
93   int32_t ( *FillRGBRect     ) (ST7735_Object_t*, uint32_t, uint32_t, uint8_t*, uint32_t, uint32_t);
94   int32_t ( *DrawHLine       ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t, uint32_t);
95   int32_t ( *DrawVLine       ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t, uint32_t);
96   int32_t ( *FillRect        ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
97   int32_t ( *GetPixel        ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t*);
98   int32_t ( *SetPixel        ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t);
99   int32_t ( *GetXSize        ) (ST7735_Object_t*, uint32_t *);
100   int32_t ( *GetYSize        ) (ST7735_Object_t*, uint32_t *);
101 
102 }ST7735_LCD_Drv_t;
103 
104 /**
105   * @}
106   */
107 
108 /** @defgroup ST7735_Exported_Constants Exported Constants
109   * @{
110   */
111 
112 /**
113   * @brief  ST7735 Size
114   */
115 #define ST7735_OK                (0)
116 #define ST7735_ERROR             (-1)
117 
118 /**
119   * @brief  ST7735 ID
120   */
121 #define  ST7735_ID              0x5CU
122 
123 /**
124   * @brief  ST7735 Size
125   */
126 #define  ST7735_WIDTH           80U
127 #define  ST7735_HEIGHT          160U
128 
129 /**
130  *  @brief LCD_OrientationTypeDef
131  *  Possible values of Display Orientation
132  */
133 #define ST7735_ORIENTATION_PORTRAIT         0x00U /* Portrait orientation choice of LCD screen               */
134 #define ST7735_ORIENTATION_PORTRAIT_ROT180  0x01U /* Portrait rotated 180° orientation choice of LCD screen  */
135 #define ST7735_ORIENTATION_LANDSCAPE        0x02U /* Landscape orientation choice of LCD screen              */
136 #define ST7735_ORIENTATION_LANDSCAPE_ROT180 0x03U /* Landscape rotated 180° orientation choice of LCD screen */
137 
138 /**
139  *  @brief  Possible values of pixel data format (ie color coding)
140  */
141 #define ST7735_FORMAT_RBG444                0x03U /* Pixel format chosen is RGB444 : 12 bpp */
142 #define ST7735_FORMAT_RBG565                0x05U /* Pixel format chosen is RGB565 : 16 bpp */
143 #define ST7735_FORMAT_RBG666                0x06U /* Pixel format chosen is RGB666 : 18 bpp */
144 #define ST7735_FORMAT_DEFAULT               ST7735_FORMAT_RBG565
145 /**
146   * @}
147   */
148 
149 /** @defgroup ST7735_Exported_Functions Exported Functions
150   * @{
151   */
152 int32_t ST7735_RegisterBusIO (ST7735_Object_t *pObj, ST7735_IO_t *pIO);
153 int32_t ST7735_Init(ST7735_Object_t *pObj, uint32_t ColorCoding, uint32_t Orientation);
154 int32_t ST7735_DeInit(ST7735_Object_t *pObj);
155 int32_t ST7735_ReadID(ST7735_Object_t *pObj, uint32_t *Id);
156 int32_t ST7735_DisplayOn(ST7735_Object_t *pObj);
157 int32_t ST7735_DisplayOff(ST7735_Object_t *pObj);
158 int32_t ST7735_SetBrightness(ST7735_Object_t *pObj, uint32_t Brightness);
159 int32_t ST7735_GetBrightness(ST7735_Object_t *pObj, uint32_t *Brightness);
160 int32_t ST7735_SetOrientation(ST7735_Object_t *pObj, uint32_t Orientation);
161 int32_t ST7735_GetOrientation(ST7735_Object_t *pObj, uint32_t *Orientation);
162 
163 int32_t ST7735_SetCursor(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos);
164 int32_t ST7735_DrawBitmap(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint8_t *pBmp);
165 int32_t ST7735_FillRGBRect(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint8_t *pData, uint32_t Width, uint32_t Height);
166 int32_t ST7735_DrawHLine(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t Length, uint32_t Color);
167 int32_t ST7735_DrawVLine(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t Length, uint32_t Color);
168 int32_t ST7735_FillRect(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t Width, uint32_t Height, uint32_t Color);
169 int32_t ST7735_SetPixel(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t Color);
170 int32_t ST7735_GetPixel(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t *Color);
171 int32_t ST7735_GetXSize(ST7735_Object_t *pObj, uint32_t *XSize);
172 int32_t ST7735_GetYSize(ST7735_Object_t *pObj, uint32_t *YSize);
173 
174 extern ST7735_LCD_Drv_t   ST7735_LCD_Driver;
175 
176 /**
177   * @}
178   */
179 
180 #ifdef __cplusplus
181 }
182 #endif
183 
184 #endif /* ST7735_H */
185 
186 /**
187   * @}
188   */
189 
190 /**
191   * @}
192   */
193 
194 /**
195   * @}
196   */
197 
198 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
199