rgbring  2.1.0.0
rgbring.h
Go to the documentation of this file.
1 /****************************************************************************
2 ** Copyright (C) 2020 MikroElektronika d.o.o.
3 ** Contact: https://www.mikroe.com/contact
4 **
5 ** Permission is hereby granted, free of charge, to any person obtaining a copy
6 ** of this software and associated documentation files (the "Software"), to deal
7 ** in the Software without restriction, including without limitation the rights
8 ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 ** copies of the Software, and to permit persons to whom the Software is
10 ** furnished to do so, subject to the following conditions:
11 ** The above copyright notice and this permission notice shall be
12 ** included in all copies or substantial portions of the Software.
13 **
14 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 ** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18 ** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19 ** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 ** USE OR OTHER DEALINGS IN THE SOFTWARE.
21 ****************************************************************************/
22 
28 #ifndef RGBRING_H
29 #define RGBRING_H
30 
31 #ifdef __cplusplus
32 extern "C"{
33 #endif
34 
39 #ifdef PREINIT_SUPPORTED
40 #include "preinit.h"
41 #endif
42 
43 #ifdef MikroCCoreVersion
44  #if MikroCCoreVersion >= 1
45  #include "delays.h"
46  #endif
47 #endif
48 
49 #include "drv_digital_out.h"
50 #include "drv_digital_in.h"
51 
72 #define RGBRING_LED_0 0
73 #define RGBRING_LED_1 1
74 #define RGBRING_LED_2 2
75 #define RGBRING_LED_3 3
76 #define RGBRING_LED_4 4
77 #define RGBRING_LED_5 5
78 #define RGBRING_LED_6 6
79 #define RGBRING_LED_7 7
80 #define RGBRING_NUM_LEDS 8
81 
86 #define RGBRING_COLOR_BLACK 0x000000ul
87 #define RGBRING_COLOR_WHITE 0xFFFFFFul
88 #define RGBRING_COLOR_RED 0xFF0000ul
89 #define RGBRING_COLOR_LIME 0x00FF00ul
90 #define RGBRING_COLOR_BLUE 0x0000FFul
91 #define RGBRING_COLOR_YELLOW 0xFFFF00ul
92 #define RGBRING_COLOR_CYAN 0x00FFFFul
93 #define RGBRING_COLOR_MAGENTA 0xFF00FFul
94 #define RGBRING_COLOR_SILVER 0xC0C0C0ul
95 #define RGBRING_COLOR_GRAY 0x808080ul
96 #define RGBRING_COLOR_MAROON 0x800000ul
97 #define RGBRING_COLOR_OLIVE 0x808000ul
98 #define RGBRING_COLOR_GREEN 0x008000ul
99 #define RGBRING_COLOR_PURPLE 0x800080ul
100 #define RGBRING_COLOR_TEAL 0x008080ul
101 #define RGBRING_COLOR_NAVY 0x000080ul
102 #define RGBRING_NUM_COLORS 16
103 #define RGBRING_SIZE_COLOR_NAME 32
104 
109 #define RGBRING_BUTTON_PRESSED 0
110 #define RGBRING_BUTTON_RELESED 1
111  // rgbring_set
113 
128 #define RGBRING_MAP_MIKROBUS( cfg, mikrobus ) \
129  cfg.din = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
130  cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT );
131  // rgbring_map // rgbring
134 
139 typedef void ( *rgbring_logic_t ) ( void );
140 
145 typedef struct
146 {
147  uint32_t rgb;
148  uint8_t name[ RGBRING_SIZE_COLOR_NAME ];
151 
156 typedef struct
157 {
158  uint8_t red;
159  uint8_t green;
160  uint8_t blue;
162 } rgbring_led_t;
163 
168 typedef struct
169 {
170  digital_out_t din;
172  digital_in_t int_pin;
179 } rgbring_t;
180 
185 typedef struct
186 {
187  pin_name_t din;
188  pin_name_t int_pin;
190 } rgbring_cfg_t;
191 
196 typedef enum
197 {
199  RGBRING_ERROR = -1
200 
202 
219 
235 err_t rgbring_init ( rgbring_t *ctx, rgbring_logic_t logic_zero, rgbring_logic_t logic_one, rgbring_cfg_t *cfg );
236 
249 
264 err_t rgbring_write_leds ( rgbring_t *ctx, rgbring_led_t *leds, uint8_t num_leds );
265 
277 
291 void rgbring_set_led_color ( rgbring_t *ctx, uint8_t led_num, uint32_t rgb );
292 
305 void rgbring_set_leds_color ( rgbring_t *ctx, uint32_t rgb );
306 
317 
318 #ifdef __cplusplus
319 }
320 #endif
321 #endif // RGBRING_H
322  // rgbring
324 
325 // ------------------------------------------------------------------------ END
RGBRING_SIZE_COLOR_NAME
#define RGBRING_SIZE_COLOR_NAME
Definition: rgbring.h:103
RGBRING_NUM_LEDS
#define RGBRING_NUM_LEDS
Definition: rgbring.h:80
rgbring_cfg_t::int_pin
pin_name_t int_pin
Definition: rgbring.h:188
rgbring_color_t
RGB Ring Click RGB color object.
Definition: rgbring.h:146
rgbring_t::din
digital_out_t din
Definition: rgbring.h:170
rgbring_logic_t
void(* rgbring_logic_t)(void)
Function pointer for logic level one and zero.
Definition: rgbring.h:139
rgbring_cfg_t
RGB Ring Click configuration object.
Definition: rgbring.h:186
rgbring_cfg_t::din
pin_name_t din
Definition: rgbring.h:187
rgbring_set_led_color
void rgbring_set_led_color(rgbring_t *ctx, uint8_t led_num, uint32_t rgb)
RGB Ring set LED color function.
rgbring_led_t::green
uint8_t green
Definition: rgbring.h:159
rgbring_init
err_t rgbring_init(rgbring_t *ctx, rgbring_logic_t logic_zero, rgbring_logic_t logic_one, rgbring_cfg_t *cfg)
RGB Ring initialization function.
rgbring_set_leds_color
void rgbring_set_leds_color(rgbring_t *ctx, uint32_t rgb)
RGB Ring set LEDs color function.
RGBRING_OK
@ RGBRING_OK
Definition: rgbring.h:198
rgbring_default_cfg
err_t rgbring_default_cfg(rgbring_t *ctx)
RGB Ring default configuration function.
rgbring_cfg_setup
void rgbring_cfg_setup(rgbring_cfg_t *cfg)
RGB Ring configuration object setup function.
RGBRING_ERROR
@ RGBRING_ERROR
Definition: rgbring.h:199
rgbring_t::int_pin
digital_in_t int_pin
Definition: rgbring.h:172
rgbring_led_t::blue
uint8_t blue
Definition: rgbring.h:160
rgbring_return_value_t
rgbring_return_value_t
RGB Ring Click return value data.
Definition: rgbring.h:197
rgbring_led_t
RGB Ring Click led object.
Definition: rgbring.h:157
rgbring_write_led_matrix
err_t rgbring_write_led_matrix(rgbring_t *ctx)
RGB Ring write LED matrix function.
rgbring_get_int_pin
uint8_t rgbring_get_int_pin(rgbring_t *ctx)
RGB Ring get int pin function.
rgbring_t::logic_one
rgbring_logic_t logic_one
Definition: rgbring.h:175
rgbring_t
RGB Ring Click context object.
Definition: rgbring.h:169
rgbring_color_t::rgb
uint32_t rgb
Definition: rgbring.h:147
rgbring_led_t::red
uint8_t red
Definition: rgbring.h:158
rgbring_write_leds
err_t rgbring_write_leds(rgbring_t *ctx, rgbring_led_t *leds, uint8_t num_leds)
RGB Ring write LEDs function.
rgbring_t::logic_zero
rgbring_logic_t logic_zero
Definition: rgbring.h:174