Pico Led Controller 1.0.3
A project to control LEDs using Raspberry Pi Pico W
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. More...
 
const char * cgi_led_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI LED handler. More...
 
const char * cgi_led_mode_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI LED mode handler. More...
 
const char * cgi_led_color_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI LED color handler. More...
 
const char * cgi_led_brightness_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI LED strip brightness handler. More...
 
const char * cgi_favicon_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI favicon handler. More...
 
const char * cgi_m_icon_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI m icon handler. More...
 
const char * cgi_manifest_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI manifest handler. More...
 
const char * cgi_data_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI data handler. More...
 
const char * cgi_timestamp_handler (int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
 CGI timestamp handler. More...
 
void cgi_init ()
 Initialize CGI handlers. More...
 

Variables

static const tCGI cgi_handlers []
 CGI handlers. More...
 

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.

◆ 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_favicon_handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
CGI favicon handler.
Definition: cgi.c:259
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_led_mode_handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
CGI LED mode handler.
Definition: cgi.c:69
const char * cgi_led_handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
CGI LED handler.
Definition: cgi.c:39
const char * cgi_timestamp_handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
CGI timestamp handler.
Definition: cgi.c:283
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_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

CGI handlers.

Array of CGI handlers with endpoint and handler function.

Definition at line 120 of file cgi.h.

Referenced by cgi_init().