diff options
Diffstat (limited to 'src/device/main.ino')
-rw-r--r-- | src/device/main.ino | 51 |
1 files changed, 33 insertions, 18 deletions
diff --git a/src/device/main.ino b/src/device/main.ino index b4a852c..1a34859 100644 --- a/src/device/main.ino +++ b/src/device/main.ino @@ -21,9 +21,11 @@ #include <ESP8266WiFi.h> #include <WiFiUdp.h> +#include <Wire.h> #include <stdlib.h> #include <stddef.h> -#include "SSD1306Spi.h" +#include "SSD1306Wire.h" +#include "DejaVu_Sans_Mono_13.h" static char udppacketbuffer[32] = {0}; static char *udppacketcursor = NULL; @@ -32,64 +34,77 @@ static unsigned int led_state = 0; static const char servermagic[] = "I love coffee!"; static const char clientmagic[] = "I love tea!"; static const int com_port = 6996; -IPAddress ip; +IPAddress ip; /* Daemon IP */ WiFiUDP Udp; -SSD1306Brzo diplay(0x3c, 4, 5); +SSD1306Wire display(0x3c, 4, 5, GEOMETRY_128_32); +static void init_OLED(void); unsigned int toggle_led(const int ip); -static void discover_client(void); static int wifi_connect(const char * const ssid, const char * const password, const char doblink, const int ledpin); static void discover_client(const int port); static void udp_init_packet(IPAddress ip, const int port); static void udp_push(const void * const data, const size_t size); static int udp_flush(void); static void blink_led(const int pin, const int ontime, const int offtime); -static void init_OLED(void); void setup(void) { extern const char * const ssid; extern const char * const password; pinMode(internal_led, OUTPUT); + toggle_led(internal_led); + init_OLED(); + display.fillCircle(32, 16, 12); + display.display(); wifi_connect(ssid, password, 1, internal_led); Udp.begin(com_port); - discover_client(com_port); - display.fillCircle(32, 16, 12); - wifi_connect("ssid", "password", 1, internal_led); display.fillCircle(64, 16, 12); - discover_client(); + display.display(); + discover_client(com_port); display.fillCircle(92, 16, 12); + display.display(); } /* the logic is a placeholder right now */ void loop(void) { - /* sleep length to use */ - static unsigned int delta = 2000; - static int dot_idx = 0; + static const String devstr = "Device IP:"; + static const String daemonstr = "Daemon IP:"; + static String prefix; + static IPAddress ip_to_print; + static int print_dev_ip = 0; + + static unsigned int delta = 2000; /* sleep length to use (ms) */ + /* static int dot_idx = 0; */ + delay(delta); udp_init_packet(ip, com_port); udp_push(clientmagic, sizeof(clientmagic)); udp_flush(); - +#if 0 if (dot_idx >= 2) { display.clear(); dot_idx = 0; } display.fillCircle(32 * (dot_idx + 1), 16, 12); dot_idx++; +#endif + prefix = (print_dev_ip) ? devstr : daemonstr; + ip_to_print = (print_dev_ip) ? WiFi.localIP() : ip; + display.clear(); + display.drawString(0, 0, prefix); + display.drawString(0, 16, ip_to_print.toString()); + display.display(); + print_dev_ip = !print_dev_ip; } static void init_OLED(void) { display.init(); - - /* Won't be useful until later on. */ - /* + display.flipScreenVertically(); display.setTextAlignment(TEXT_ALIGN_LEFT); - display.setFont(DejaVu_Sans_28); - */ + display.setFont((uint8_t *)DejaVu_Sans_Mono_13); } /* toggle the bult-in led and return current state */ |