@@ -180,6 +180,51 @@ unsigned long LedManagerTask::loop(MicroTasks::WakeReason reason)
180180 setNewState (false );
181181 return TEST_LED_TIME;
182182
183+ #ifdef WIFI_PIXEL_NUMBER
184+ case LedState_Evse_State:
185+ case LedState_WiFi_Access_Point_Waiting:
186+ case LedState_WiFi_Access_Point_Connected:
187+ case LedState_WiFi_Client_Connecting:
188+ case LedState_WiFi_Client_Connected:
189+ {
190+ uint8_t lcdCol = _evse->getStateColour ();
191+ DBUGVAR (lcdCol);
192+ uint32_t col = status_colour_map[lcdCol];
193+ DBUGVAR (col, HEX);
194+ uint8_t evseR = (col >> 16 ) & 0xff ;
195+ uint8_t evseG = (col >> 8 ) & 0xff ;
196+ uint8_t evseB = col & 0xff ;
197+
198+ switch (state)
199+ {
200+ case LedState_Evse_State:
201+ setAllRGB (evseR, evseG, evseB);
202+ return MicroTask.Infinate ;
203+
204+ case LedState_WiFi_Access_Point_Waiting:
205+ setEvseAndWifiRGB (evseR, evseG, evseB, flashState ? 255 : 0 , flashState ? 255 : 0 , 0 );
206+ flashState = !flashState;
207+ return CONNECTING_FLASH_TIME;
208+
209+ case LedState_WiFi_Access_Point_Connected:
210+ setEvseAndWifiRGB (evseR, evseG, evseB, flashState ? 255 : 0 , 0 , flashState ? 255 : 0 );
211+ flashState = !flashState;
212+ return CONNECTED_FLASH_TIME;
213+
214+ case LedState_WiFi_Client_Connecting:
215+ setEvseAndWifiRGB (evseR, evseG, evseB, 0 , flashState ? 255 : 0 , flashState ? 255 : 0 );
216+ flashState = !flashState;
217+ return CONNECTING_FLASH_TIME;
218+
219+ case LedState_WiFi_Client_Connected:
220+ setEvseAndWifiRGB (evseR, evseG, evseB, 0 , 255 , 0 );
221+ return MicroTask.Infinate ;
222+
223+ default :
224+ break ;
225+ }
226+ }
227+ #else
183228 case LedState_Evse_State:
184229 {
185230 uint8_t lcdCol = _evse->getStateColour ();
@@ -193,28 +238,24 @@ unsigned long LedManagerTask::loop(MicroTasks::WakeReason reason)
193238 } return MicroTask.Infinate ;
194239
195240 case LedState_WiFi_Access_Point_Waiting:
196- setAllRGB (flashState ? 255 : 0 ,
197- flashState ? 255 : 0 ,
198- 0 );
241+ setAllRGB (flashState ? 255 : 0 , flashState ? 255 : 0 , 0 );
199242 flashState = !flashState;
200243 return CONNECTING_FLASH_TIME;
201244
202245 case LedState_WiFi_Access_Point_Connected:
203- setAllRGB (0 , flashState ? 255 : 0 , 0 );
246+ setAllRGB (flashState ? 255 : 0 , 0 , flashState ? 255 : 0 );
204247 flashState = !flashState;
205248 return CONNECTED_FLASH_TIME;
206249
207250 case LedState_WiFi_Client_Connecting:
208- setAllRGB (flashState ? 255 : 0 ,
209- flashState ? 255 : 0 ,
210- 0 );
251+ setAllRGB (0 , flashState ? 255 : 0 , flashState ? 255 : 0 );
211252 flashState = !flashState;
212253 return CONNECTING_FLASH_TIME;
213254
214255 case LedState_WiFi_Client_Connected:
215256 setAllRGB (0 , 255 , 0 );
216257 return MicroTask.Infinate ;
217-
258+ # endif
218259 }
219260#endif
220261
@@ -317,6 +358,58 @@ void LedManagerTask::setAllRGB(uint8_t red, uint8_t green, uint8_t blue)
317358}
318359#endif
319360
361+ #if WIFI_PIXEL_NUMBER
362+ void LedManagerTask::setEvseAndWifiRGB (uint8_t evseRed, uint8_t evseGreen, uint8_t evseBlue, uint8_t wifiRed, uint8_t wifiGreen, uint8_t wifiBlue)
363+ {
364+ DBUG (" EVSE LED R:" );
365+ DBUG (evseRed);
366+ DBUG (" G:" );
367+ DBUG (evseGreen);
368+ DBUG (" B:" );
369+ DBUGLN (evseBlue);
370+
371+ DBUG (" WiFi LED R:" );
372+ DBUG (wifiRed);
373+ DBUG (" G:" );
374+ DBUG (wifiGreen);
375+ DBUG (" B:" );
376+ DBUGLN (wifiBlue);
377+
378+ if (brightness) { // See notes in setBrightness()
379+ evseRed = (evseRed * brightness) >> 8 ;
380+ evseGreen = (evseGreen * brightness) >> 8 ;
381+ evseBlue = (evseBlue * brightness) >> 8 ;
382+ wifiRed = (wifiRed * brightness) >> 8 ;
383+ wifiGreen = (wifiGreen * brightness) >> 8 ;
384+ wifiBlue = (wifiBlue * brightness) >> 8 ;
385+ }
386+
387+ #if defined(NEO_PIXEL_PIN) && defined(NEO_PIXEL_LENGTH)
388+ uint32_t col = strip.gamma32 (strip.Color (evseRed, evseGreen, evseBlue));
389+ DBUGVAR (col, HEX);
390+ strip.fill (col);
391+ strip.setPixelColor (WIFI_PIXEL_NUMBER, wifiRed, wifiGreen, wifiBlue);
392+ strip.show ();
393+ #endif
394+
395+ #if defined(RED_LED) && defined(GREEN_LED) && defined(BLUE_LED)
396+ analogWrite (RED_LED, pgm_read_byte (&gamma8[wifiRed]));
397+ analogWrite (GREEN_LED, pgm_read_byte (&gamma8[wifiGreen]));
398+ analogWrite (BLUE_LED, pgm_read_byte (&gamma8[wifiBlue]));
399+
400+ #ifdef WIFI_BUTTON_SHARE_LED
401+ #if RED_LED == WIFI_BUTTON_SHARE_LED
402+ buttonShareState = wifiRed;
403+ #elif GREEN_LED == WIFI_BUTTON_SHARE_LED
404+ buttonShareState = wifiGreen;
405+ #elif BLUE_LED == WIFI_BUTTON_SHARE_LED
406+ buttonShareState = wifiBlue;
407+ #endif
408+ #endif
409+ #endif
410+ }
411+ #endif
412+
320413#ifdef WIFI_LED
321414void LedManagerTask::setWiFiLed (uint8_t state)
322415{
0 commit comments