summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorroot <root@ka-ata-killa.ourano.james.local>2021-03-02 23:22:12 +0000
committerroot <root@ka-ata-killa.ourano.james.local>2021-03-02 23:24:19 +0000
commitb4bfacd4c294966fa09f296aecf6513f9d30c4ed (patch)
treec9506c02ceaf278517970d136f7807c3fa592ef0
parent82ab363d750775e1497d97a5be0110043bf3126c (diff)
downloadclock-b4bfacd4c294966fa09f296aecf6513f9d30c4ed.tar.gz
clock-b4bfacd4c294966fa09f296aecf6513f9d30c4ed.tar.bz2
clock-b4bfacd4c294966fa09f296aecf6513f9d30c4ed.zip
print last octet of mac
-rw-r--r--app/max7219.c51
1 files changed, 46 insertions, 5 deletions
diff --git a/app/max7219.c b/app/max7219.c
index 7d5858e..6cd93f3 100644
--- a/app/max7219.c
+++ b/app/max7219.c
@@ -288,6 +288,49 @@ static void write_triad (uint8_t reg, int d1, int d2, int d3, int dp1, int dp2,
_write_triad (reg, d, dp);
}
+static void _write_triad_h (uint8_t reg, int *d, int *dp)
+{
+
+ uint8_t regs0[3] = {0x0, 0x0, 0x0};
+ uint8_t regs1[3] = {0x0, 0x0, 0x0};
+ unsigned i;
+
+ for (i = 0; i < 2; ++i) {
+
+ if (d[i] < 0) continue;
+
+ if (d[i] > 99) continue;
+
+ regs0[i] = hex (d[i] % 10);
+ regs1[i] = hex (d[i] / 10);
+ }
+
+ do {
+ if (d[i] < 0) continue;
+
+ if (d[i] > 0x100) continue;
+
+ regs0[i] = hex (d[i] & 0xf);
+ regs1[i] = hex (d[i] >> 4);
+ } while (0);
+
+ for (i = 0; i < 3; ++i)
+ if (dp[i]) regs0[i] |= SDP;
+
+
+ _write_regs (reg++, regs0);
+ _write_regs (reg, regs1);
+}
+
+static void write_triad_h (uint8_t reg, int d1, int d2, int d3, int dp1, int dp2, int dp3)
+{
+ int d[3] = {d1, d2, d3};
+ int dp[3] = {dp1, dp2, dp3};
+
+ _write_triad_h (reg, d, dp);
+}
+
+
static void write_string_over_numbers (char *str, int d1, int d2, int d3, int d4)
{
unsigned reg;
@@ -411,9 +454,7 @@ void max7219_dispatch (void)
e.s += 86400;
e.s += gps_utc_diff;
gu = time_epoch_to_utc (e);
- wday = gps_wday;
} else {
- wday = 100;
gu.hour = 100;
gu.minute = 100;
gu.second = 100;
@@ -422,20 +463,20 @@ void max7219_dispatch (void)
write_triad (1, u.nanosecond / 10000000, l.nanosecond / 10000000, gu.second, time_lock_enabled, have_time_lock, have_dgps);
write_triad (3, u.second, l.second, gu.minute, 1, 1, 1);
write_triad (5, u.minute, l.minute, gu.hour, 1, 1, 1);
- write_triad (7, u.hour, l.hour, wday, 1, 1, 1);
+ write_triad_h (7, u.hour, l.hour, (if0.ip_addr.addr >> 24) & 0xff, 1, 1, 1);
if (u.minute == m) return;
m = u.minute;
- printf ("LEDS: %02d.%02d.%02d.%02d %02d.%02d.%02d.%02d %02d.%02d.%02d.%02d lon %.6f\r\n",
+ printf ("LEDS: %02d.%02d.%02d.%02d %02d.%02d.%02d.%02d %02x.%02d.%02d.%02d lon %.6f\r\n",
u.hour, u.minute, u.second,
u.nanosecond / 10000000,
l.hour,
l.minute,
l.second,
l.nanosecond / 10000000,
- gps_wday,
+ (int) ((if0.ip_addr.addr >> 24) & 0xff),
gu.hour,
gu.minute,
gu.second,