summaryrefslogtreecommitdiffstats
path: root/src/device/main.ino
diff options
context:
space:
mode:
Diffstat (limited to 'src/device/main.ino')
-rw-r--r--src/device/main.ino51
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 */