ESP8266-based WiFi serial modem emulator ROM
at main 107 lines 2.5 kB view raw
1/* 2 * WiFiPPP 3 * Copyright (c) 2021 joshua stein <jcs@jcs.org> 4 * 5 * Permission to use, copy, modify, and distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18#include "wifippp.h" 19#include <Adafruit_NeoPixel.h> 20 21Adafruit_NeoPixel pixel(1, pPixel, NEO_GRB + NEO_KHZ800); 22static uint32_t cur_color = 0; 23static char wifi_status = WL_DISCONNECTED; 24 25void 26pixel_setup(void) 27{ 28 pixel.begin(); 29 pixel.clear(); 30 pixel_adjust_brightness(); 31} 32 33void 34pixel_adjust_brightness(void) 35{ 36 /* the brightness can go to 255, but it's blinding */ 37 int br = 80 * (double)(settings->pixel_brightness / 10.0); 38#ifdef PIXEL_TRACE 39 syslog.logf(LOG_DEBUG, "pixel: setting brightness to %d", br); 40#endif 41 pixel.setBrightness(br); 42 pixel.show(); 43 pixel_set_rgb(cur_color); 44} 45 46void 47pixel_set_rgb(int r, int g, int b) 48{ 49 pixel_set_rgb(pixel.Color(r, g, b)); 50} 51 52void 53pixel_set_rgb(uint32_t color) 54{ 55#ifdef PIXEL_TRACE 56 syslog.logf(LOG_DEBUG, "pixel: changing color from %d to %d", 57 cur_color, color); 58#endif 59 cur_color = color; 60 pixel.setPixelColor(0, cur_color); 61 pixel.show(); 62} 63 64void 65pixel_color_by_state(void) 66{ 67 uint32_t color = cur_color; 68 69 if (WiFi.status() != wifi_status) { 70 switch (WiFi.status()) { 71 case WL_CONNECTED: 72 /* yellow */ 73 color = pixel.Color(255, 255, 0); 74 break; 75 default: 76 /* red */ 77 color = pixel.Color(255, 0, 0); 78 } 79 wifi_status = WiFi.status(); 80 } else { 81 switch (state) { 82 case STATE_AT: 83 if (telnet_connected()) 84 /* teal */ 85 color = pixel.Color(0, 255, 255); 86 else 87 /* white */ 88 color = pixel.Color(255, 255, 255); 89 break; 90 case STATE_TELNET: 91 /* green */ 92 color = pixel.Color(0, 255, 0); 93 break; 94 case STATE_PPP: 95 /* blue */ 96 color = pixel.Color(0, 0, 255); 97 break; 98 case STATE_UPDATING: 99 /* purple */ 100 color = pixel.Color(255, 0, 255); 101 break; 102 } 103 } 104 105 if (color != cur_color) 106 pixel_set_rgb(color); 107}