From b4bfacd4c294966fa09f296aecf6513f9d30c4ed Mon Sep 17 00:00:00 2001 From: root Date: Tue, 2 Mar 2021 23:22:12 +0000 Subject: print last octet of mac --- app/max7219.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file 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, -- cgit v1.2.3