Pico Led Controller 1.0.3
A project to control LEDs using Raspberry Pi Pico W
Loading...
Searching...
No Matches
cgi.h File Reference
#include <stdio.h>
#include "lwip/apps/httpd.h"

Go to the source code of this file.

Functions

const char * cgi_onboard_led_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI onboard LED handler.
 
const char * cgi_led_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI LED handler.
 
const char * cgi_led_mode_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI LED mode handler.
 
const char * cgi_led_color_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI LED color handler.
 
const char * cgi_led_brightness_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI LED strip brightness handler.
 
const char * cgi_favicon_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI favicon handler.
 
const char * cgi_m_icon_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI m icon handler.
 
const char * cgi_manifest_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI manifest handler.
 
const char * cgi_data_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI data handler.
 
const char * cgi_timestamp_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI timestamp handler.
 
void cgi_init ()
 Initialize CGI handlers.
 

Variables

static const tCGI cgi_handlers []
 CGI handlers.
 

Function Documentation

◆ cgi_data_handler()

const char * cgi_data_handler ( int  iIndex,
int  iNumParams,
char *  pcParam[],
char *  pcValue[] 
)

CGI data handler.

Function handles CGI requests for the data.

Parameters
iIndexindex of the CGI handler
iNumParamsnumber of parameters
pcParamarray of parameters
pcValuearray of values
Returns
: redirect URL

Definition at line 277 of file cgi.c.

278{
279 printf("Handling data request\n");
280 return "/data.shtml";
281}

◆ cgi_favicon_handler()

const char * cgi_favicon_handler ( int  iIndex,
int  iNumParams,
char *  pcParam[],
char *  pcValue[] 
)

CGI favicon handler.

Function handles CGI requests for the favicon.

Parameters
iIndexindex of the CGI handler
iNumParamsnumber of parameters
pcParamarray of parameters
pcValuearray of values
Returns
: redirect URL

Definition at line 259 of file cgi.c.

260{
261 printf("Handling favicon request\n");
262 return "/favicon.ico";
263}

◆ cgi_init()

void cgi_init ( )

Initialize CGI handlers.

Function initializes the CGI handling and respective handlers.

Definition at line 289 of file cgi.c.

290{
291 http_set_cgi_handlers(cgi_handlers, LWIP_ARRAYSIZE(cgi_handlers));
292}
static const tCGI cgi_handlers[]
CGI handlers.
Definition cgi.h:120

References cgi_handlers.

Referenced by init().

◆ cgi_led_brightness_handler()

const char * cgi_led_brightness_handler ( int  iIndex,
int  iNumParams,
char *  pcParam[],
char *  pcValue[] 
)

CGI LED strip brightness handler.

Function handles CGI requests for the LED strip brightness change.

Parameters
iIndexindex of the CGI handler
iNumParamsnumber of parameters
pcParamarray of parameters
pcValuearray of values
Returns
: redirect URL

Definition at line 220 of file cgi.c.

221{
222 printf("Handling brightness request\n");
223 for (int i = 0; i < iNumParams; ++i)
224 {
225 int brightness = atoi(pcParam[i]);
226 if (brightness < 0 || brightness > 100)
227 printf("Invalid brightness value\n");
228 else
229 {
230 printf("Setting brightness to %d\n", brightness);
231 int scaled_brightness = 0;
232 if (brightness <= 0)
233 {
234 light_state.state = false;
237 }
238 else if (brightness == 100)
239 {
240 scaled_brightness = 255;
241 light_state.state = true;
243 }
244 else
245 {
246 scaled_brightness = (int)(brightness * 255.0 / 100.0) + 1;
247 if (scaled_brightness > 255)
248 scaled_brightness = 255;
249 light_state.state = true;
251 }
252 }
255 }
256 return "/index.html";
257}
#define NUM_PIXELS
Definition light_state.h:4
void set_light_color(enum light_colors color)
Set light color.
Definition light_state.c:68
@ MODE_STATIC
Definition light_state.h:21
volatile struct light_state_t light_state
Light state.
Definition light_state.c:8
uint8_t brightness
Definition light_state.h:59
uint8_t previous_brightness
Definition light_state.h:60
enum light_modes light_mode
Definition light_state.h:61
enum light_colors color
Definition light_state.h:62
void turn_off_all(uint32_t len)
Turn off all leds.
Definition ws2812b.c:23

References light_state_t::brightness, light_state_t::color, light_state_t::light_mode, light_state, MODE_STATIC, NUM_PIXELS, light_state_t::previous_brightness, set_light_color(), light_state_t::state, and turn_off_all().

◆ cgi_led_color_handler()

const char * cgi_led_color_handler ( int  iIndex,
int  iNumParams,
char *  pcParam[],
char *  pcValue[] 
)

CGI LED color handler.

Function handles CGI requests for the LED strip color.

Parameters
iIndexindex of the CGI handler
iNumParamsnumber of parameters
pcParamarray of parameters
pcValuearray of values
Returns
: redirect URL

Definition at line 134 of file cgi.c.

135{
136 printf("Handling color request\n");
137 for (int i = 0; i < iNumParams; ++i)
138 {
139 if (!strcmp(pcParam[i], "red"))
140 {
141 printf("Setting red mode\n");
142 light_state.state = true;
144 break;
145 }
146 else if (!strcmp(pcParam[i], "green"))
147 {
148 printf("Setting green mode\n");
149 light_state.state = true;
151 break;
152 }
153 else if (!strcmp(pcParam[i], "blue"))
154 {
155 printf("Setting blue mode\n");
156 light_state.state = true;
158 break;
159 }
160 else if (!strcmp(pcParam[i], "cyan"))
161 {
162 printf("Setting cyan mode\n");
163 light_state.state = true;
165 break;
166 }
167 else if (!strcmp(pcParam[i], "yellow"))
168 {
169 printf("Setting yellow mode\n");
170 light_state.state = true;
172 break;
173 }
174 else if (!strcmp(pcParam[i], "magenta"))
175 {
176 printf("Setting magenta mode\n");
177 light_state.state = true;
179 break;
180 }
181 else if (!strcmp(pcParam[i], "purple"))
182 {
183 printf("Setting purple mode\n");
184 light_state.state = true;
186 break;
187 }
188 else if (!strcmp(pcParam[i], "pink"))
189 {
190 printf("Setting pink mode\n");
191 light_state.state = true;
193 break;
194 }
195 else if (!strcmp(pcParam[i], "orange"))
196 {
197 printf("Setting orange mode\n");
198 light_state.state = true;
200 break;
201 }
202 else if (!strcmp(pcParam[i], "turquoise"))
203 {
204 printf("Setting turquoise mode\n");
205 light_state.state = true;
207 break;
208 }
209 else if (!strcmp(pcParam[i], "white"))
210 {
211 printf("Setting white mode\n");
212 light_state.state = true;
214 break;
215 }
216 }
217 return "/index.html";
218}
@ COLOR_ORANGE
Definition light_state.h:41
@ COLOR_BLUE
Definition light_state.h:36
@ COLOR_PINK
Definition light_state.h:43
@ COLOR_PURPLE
Definition light_state.h:40
@ COLOR_TURQUOISE
Definition light_state.h:42
@ COLOR_MAGENTA
Definition light_state.h:39
@ COLOR_RED
Definition light_state.h:34
@ COLOR_CYAN
Definition light_state.h:37
@ COLOR_YELLOW
Definition light_state.h:38
@ COLOR_GREEN
Definition light_state.h:35
@ COLOR_WHITE
Definition light_state.h:44

References COLOR_BLUE, COLOR_CYAN, COLOR_GREEN, COLOR_MAGENTA, COLOR_ORANGE, COLOR_PINK, COLOR_PURPLE, COLOR_RED, COLOR_TURQUOISE, COLOR_WHITE, COLOR_YELLOW, light_state, set_light_color(), and light_state_t::state.

◆ cgi_led_handler()

const char * cgi_led_handler ( int  iIndex,
int  iNumParams,
char *  pcParam[],
char *  pcValue[] 
)

CGI LED handler.

Function handles CGI requests for the LED strip.

Parameters
iIndexindex of the CGI handler
iNumParamsnumber of parameters
pcParamarray of parameters
pcValuearray of values
Returns
: redirect URL

Definition at line 39 of file cgi.c.

40{
41 printf("Handling LED request\n");
42 for (int i = 0; i < iNumParams; ++i)
43 {
44 if (!strcmp(pcParam[i], "toggle"))
45 {
46 printf("Toggling LED strip\n");
47 if (light_state.state == false && light_state.brightness == 0)
50 break;
51 }
52 else if (!strcmp(pcParam[i], "on"))
53 {
54 printf("Turning LED strip on\n");
55 light_state.state = true;
56 break;
57 }
58 else if (!strcmp(pcParam[i], "off"))
59 {
60 printf("Turning LED strip off\n");
61 light_state.state = false;
63 break;
64 }
65 }
66 return "/index.html";
67}
void toggle_light_state()
Toggle light state.
Definition light_state.c:10

References light_state_t::brightness, light_state, NUM_PIXELS, light_state_t::previous_brightness, light_state_t::state, toggle_light_state(), and turn_off_all().

◆ cgi_led_mode_handler()

const char * cgi_led_mode_handler ( int  iIndex,
int  iNumParams,
char *  pcParam[],
char *  pcValue[] 
)

CGI LED mode handler.

Function handles CGI requests for the LED strip mode.

Parameters
iIndexindex of the CGI handler
iNumParamsnumber of parameters
pcParamarray of parameters
pcValuearray of values
Returns
: redirect URL

Definition at line 69 of file cgi.c.

70{
71 printf("Handling mode request\n");
72 for (int i = 0; i < iNumParams; ++i)
73 {
74 if (!strcmp(pcParam[i], "rainbow-wheel"))
75 {
76 printf("Setting rainbow wheel mode\n");
77 light_state.state = true;
79 break;
80 }
81 else if (!strcmp(pcParam[i], "rainbow-cycle"))
82 {
83 printf("Setting rainbow cycle mode\n");
84 light_state.state = true;
86 break;
87 }
88 else if (!strcmp(pcParam[i], "static"))
89 {
90 printf("Setting static mode\n");
91 light_state.state = true;
93 break;
94 }
95 else if (!strcmp(pcParam[i], "breathing"))
96 {
97 printf("Setting breathing mode\n");
98 light_state.state = true;
100 break;
101 }
102 else if (!strcmp(pcParam[i], "flashing"))
103 {
104 printf("Setting flashing mode\n");
105 light_state.state = true;
107 break;
108 }
109 else if (!strcmp(pcParam[i], "loading"))
110 {
111 printf("Setting loading mode\n");
112 light_state.state = true;
114 break;
115 }
116 else if (!strcmp(pcParam[i], "wave"))
117 {
118 printf("Setting wave mode\n");
119 light_state.state = true;
121 break;
122 }
123 else if (!strcmp(pcParam[i], "fade"))
124 {
125 printf("Setting fade mode\n");
126 light_state.state = true;
128 break;
129 }
130 }
131 return "/index.html";
132}
void set_light_mode(enum light_modes mode)
Set light mode.
Definition light_state.c:31
@ MODE_RAINBOW_CYCLE
Definition light_state.h:20
@ MODE_FLASHING
Definition light_state.h:23
@ MODE_LOADING
Definition light_state.h:24
@ MODE_WAVE
Definition light_state.h:25
@ MODE_BREATHING
Definition light_state.h:22
@ MODE_RAINBOW_WHEEL
Definition light_state.h:19
@ MODE_FADE
Definition light_state.h:26

References light_state, MODE_BREATHING, MODE_FADE, MODE_FLASHING, MODE_LOADING, MODE_RAINBOW_CYCLE, MODE_RAINBOW_WHEEL, MODE_STATIC, MODE_WAVE, set_light_mode(), and light_state_t::state.

◆ cgi_m_icon_handler()

const char * cgi_m_icon_handler ( int  iIndex,
int  iNumParams,
char *  pcParam[],
char *  pcValue[] 
)

CGI m icon handler.

Function handles CGI requests for the m icon.

Parameters
iIndexindex of the CGI handler
iNumParamsnumber of parameters
pcParamarray of parameters
pcValuearray of values
Returns
: redirect URL

Definition at line 265 of file cgi.c.

266{
267 printf("Handling m.png\n");
268 return "/m.png";
269}

◆ cgi_manifest_handler()

const char * cgi_manifest_handler ( int  iIndex,
int  iNumParams,
char *  pcParam[],
char *  pcValue[] 
)

CGI manifest handler.

Function handles CGI requests for the manifest.

Parameters
iIndexindex of the CGI handler
iNumParamsnumber of parameters
pcParamarray of parameters
pcValuearray of values
Returns
: redirect URL

Definition at line 271 of file cgi.c.

272{
273 printf("Handling manifest request\n");
274 return "/manifest.json";
275}

◆ cgi_onboard_led_handler()

const char * cgi_onboard_led_handler ( int  iIndex,
int  iNumParams,
char *  pcParam[],
char *  pcValue[] 
)

CGI onboard LED handler.

Function handles CGI requests for the onboard LED.

Parameters
iIndexindex of the CGI handler
iNumParamsnumber of parameters
pcParamarray of parameters
pcValuearray of values
Returns
: redirect URL

Definition at line 12 of file cgi.c.

13{
14 printf("Handling onboard LED request\n");
15 for (int i = 0; i < iNumParams; ++i)
16 {
17 if (!strcmp(pcParam[i], "toggle"))
18 {
19 printf("Toggling onboard LED\n");
20 cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, !cyw43_arch_gpio_get(CYW43_WL_GPIO_LED_PIN));
21 break;
22 }
23 else if (!strcmp(pcParam[i], "on"))
24 {
25 printf("Turning onboard LED on\n");
26 cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 1);
27 break;
28 }
29 else if (!strcmp(pcParam[i], "off"))
30 {
31 printf("Turning onboard LED off\n");
32 cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 0);
33 break;
34 }
35 }
36 return "/index.html";
37}

◆ cgi_timestamp_handler()

const char * cgi_timestamp_handler ( int  iIndex,
int  iNumParams,
char *  pcParam[],
char *  pcValue[] 
)

CGI timestamp handler.

Function handles CGI requests for the timestamp.

Parameters
iIndexindex of the CGI handler
iNumParamsnumber of parameters
pcParamarray of parameters
pcValuearray of values
Returns
: redirect URL

Definition at line 283 of file cgi.c.

284{
285 printf("Handling start timestamp request\n");
286 return "/timestamp.shtml";
287}

Variable Documentation

◆ cgi_handlers

const tCGI cgi_handlers[]
static
Initial value:
=
{
{ "/onboard_led", cgi_onboard_led_handler },
{ "/led", cgi_led_handler },
{ "/mode", cgi_led_mode_handler },
{ "/color", cgi_led_color_handler },
{ "/brightness", cgi_led_brightness_handler },
{ "/favicon.ico", cgi_favicon_handler },
{ "/m.png", cgi_m_icon_handler },
{ "/manifest.json", cgi_manifest_handler },
{ "/data.shtml", cgi_data_handler },
{ "/timestamp.shtml", cgi_timestamp_handler },
{ NULL, NULL }
}
const char * cgi_led_mode_handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
CGI LED mode handler.
Definition cgi.c:69
const char * cgi_led_brightness_handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
CGI LED strip brightness handler.
Definition cgi.c:220
const char * cgi_onboard_led_handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
CGI onboard LED handler.
Definition cgi.c:12
const char * cgi_timestamp_handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
CGI timestamp handler.
Definition cgi.c:283
const char * cgi_data_handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
CGI data handler.
Definition cgi.c:277
const char * cgi_led_color_handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
CGI LED color handler.
Definition cgi.c:134
const char * cgi_manifest_handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
CGI manifest handler.
Definition cgi.c:271
const char * cgi_m_icon_handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
CGI m icon handler.
Definition cgi.c:265
const char * cgi_favicon_handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
CGI favicon handler.
Definition cgi.c:259
const char * cgi_led_handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
CGI LED handler.
Definition cgi.c:39

CGI handlers.

Array of CGI handlers with endpoint and handler function.

Definition at line 120 of file cgi.h.

121{
122 { "/onboard_led", cgi_onboard_led_handler },
123 { "/led", cgi_led_handler },
124 { "/mode", cgi_led_mode_handler },
125 { "/color", cgi_led_color_handler },
126 { "/brightness", cgi_led_brightness_handler },
127 { "/favicon.ico", cgi_favicon_handler },
128 { "/m.png", cgi_m_icon_handler },
129 { "/manifest.json", cgi_manifest_handler },
130 { "/data.shtml", cgi_data_handler },
131 { "/timestamp.shtml", cgi_timestamp_handler },
132 { NULL, NULL }
133};

Referenced by cgi_init().