}
}
+static void clock_blank(void)
+{
+ memset(lights, 0, sizeof(lights));
+}
+
+static void clock_time(uint h, uint m)
+{
+ memset(lights, 0, sizeof(lights));
+
+ uint x = (h << 6) | m;
+ const uint NBITS = 11;
+ const uint BITSIZE = 5;
+ const uint BITGAP = 6;
+ const uint BIGGAP_AT = 6;
+ const uint BIGGAP_ENLARGE = 10;
+ const uint BITOFF = (NPIX_NUM_LEDS - NBITS * BITSIZE - (NBITS - 1) * BITGAP - BIGGAP_ENLARGE) / 2;
+
+ for (uint i=0; i < NBITS; i++) {
+ uint j = BITOFF + (BITSIZE + BITGAP) * i;
+ if (i >= BIGGAP_AT)
+ j += BIGGAP_ENLARGE;
+ for (uint k = 0; k < BITSIZE; k++) {
+ if (x & (1 << i)) {
+ lights[j+k][0] = 0;
+ lights[j+k][1] = 0;
+ lights[j+k][2] = 255;
+ } else {
+ lights[j+k][0] = 64;
+ lights[j+k][1] = 64;
+ lights[j+k][2] = 64;
+ }
+ }
+ }
+}
+
static void clock_tick(void)
{
struct timeval tv;
sleep(1);
return;
}
- uint t = (uint) tv.tv_sec + 1;
+ time_t t = tv.tv_sec + 1;
usleep(1000000 - tv.tv_usec);
- uint midnight = 1767222000;
+#if 0
+ // Countdown to New Year
+ time_t midnight = 1767222000;
if (t < midnight)
- clock_countdown(midnight - t);
+ clock_countdown((uint)(midnight - t));
else
clock_year(2026);
+#else
+ struct tm *tm = localtime(&t);
+ if (tm->tm_hour >= 9 && tm->tm_hour < 16)
+ clock_blank();
+ else
+ clock_time(tm->tm_hour, tm->tm_min);
+#endif
}
/*** Main ***/