]> code.bitgloo.com Git - clyne/smartwatch.git/commitdiff
app communication working
authortcsullivan <tullivan99@gmail.com>
Thu, 14 Mar 2019 14:14:40 +0000 (10:14 -0400)
committertcsullivan <tullivan99@gmail.com>
Thu, 14 Mar 2019 14:14:40 +0000 (10:14 -0400)
source/controller.cpp
source/driverSharp.cpp
source/driverSharp.h
source/rtc.hpp

index bd316b582a6c6fc2eaa8ce2114c3f1c5707ed44f..fc1b70be71f9c0517e87bc29e4aa7bba9323f658 100755 (executable)
@@ -7,6 +7,8 @@
 
 BLEUart bleuart;
 
+void handlePacket(void);
+
 void app_error_handler_bare([[maybe_unused]] uint32_t error_code)
 {
     Serial.println("Received an error");
@@ -48,7 +50,30 @@ void setup(void)
 void loop(void)
 {
        if (bleuart.available())
-               Serial.print((char)bleuart.read());
+               handlePacket();
 
        delay(10);
 }
+
+void handlePacket(void)
+{
+       char buf[64];
+       char *p = buf;
+       do {
+               *p++ = bleuart.read();
+       } while (bleuart.available());
+       *p = '\0';
+
+       switch (buf[0]) {
+       case 'L':
+               Sharp::setMessage(buf + 1);
+               break;
+       case 'T':
+               Serial.println("Setting time!");
+               RTC::setTicks(std::atoi(buf + 1) * 60);
+               break;
+       default:
+               break;
+       }
+}
+
index c68790e9adee67e4158bfb1e99bfea08ddd8a028..4cdc6f171a549347037ca4adfa39c25a6fbb60c4 100644 (file)
@@ -8,6 +8,7 @@ constexpr unsigned int SHARP_SS = 14;
 Adafruit_SharpMem Sharp::display(SHARP_SCK, SHARP_MOSI, SHARP_SS, 144, 168);
 TaskHandle_t Sharp::taskHandle;
 bool Sharp::holdRendering = false;
+char Sharp::message[16] = "";
 
 #define BLACK 0
 #define WHITE 1
@@ -33,8 +34,13 @@ void Sharp::updateTask([[maybe_unused]] void *arg)
 
                if (auto t = RTC::ticks(); t != old) {
                        old = t;
-                       display.setCursor(0, 60);
-                       display.printf("%2d:%02d", t / 60, t % 60);
+                       display.setCursor(0, 10);
+                       display.printf("%2d:%02d:%02d", t / 3600, (t % 3600) /
+                               60, t % 60);
+                       if (*message != '\0') {
+                               display.setCursor(0, 100);
+                               display.printf("%-16s", message);
+                       }
                        display.refresh();
                }
        }
index 799c8282364de1b7af3aa6628c6d77a4a6ee0563..986205bb2d7cc8942d52a0bc853aa165c8b05d5d 100644 (file)
@@ -5,6 +5,7 @@ private:
        static Adafruit_SharpMem display;
        static TaskHandle_t taskHandle;
        static bool holdRendering;
+       static char message[16];
 
 public:
        static void begin(void);
@@ -17,6 +18,10 @@ public:
                holdRendering = false;
        }
 
+       inline static void setMessage(const char *s) {
+               strncpy(message, s, 16);
+       }
+
 private:
        static void updateTask(void *);
 };
index 1eb71a85947f871a2a65545802d25a849d8bdbe3..7f64100d0143b39e941d0239046c0f5849157c32 100644 (file)
@@ -12,6 +12,10 @@ public:
                return rtcCount;
        }
 
+       inline static void setTicks(unsigned int t) {
+               rtcCount = t;
+       }
+
 private:
        static void handler(nrf_drv_rtc_int_type_t type);
 };