From 87f0ddc2d4a75b3b977164dc660bd0a4bf4d574a Mon Sep 17 00:00:00 2001 From: Allen Hill Date: Fri, 15 May 2026 22:49:21 +0000 Subject: [PATCH] Rename field broadcast => is_unicast Improves readability and logical flow clarity --- src/avclandrv.c | 37 +++++++++++++++++++------------------ src/avclandrv.h | 4 +--- src/sniffer.c | 17 +++++++---------- 3 files changed, 27 insertions(+), 31 deletions(-) diff --git a/src/avclandrv.c b/src/avclandrv.c index 4e0efca..b303d95 100644 --- a/src/avclandrv.c +++ b/src/avclandrv.c @@ -619,7 +619,8 @@ uint8_t AVCLAN_readframe(AVCLAN_frame_t *frame, log_t print) { } // Otherwise that was a start bit - AVCLAN_readbits(&frame->broadcast, 1); + AVCLAN_readbits(&tmp, 1); + frame->is_unicast = tmp; uint8_t parity = AVCLAN_readbits(&frame->controller_addr, 12); AVCLAN_readbits(&tmp, 1); @@ -802,7 +803,7 @@ uint8_t AVCLAN_sendframe(const AVCLAN_frame_t *frame, log_t print) { } else { AVCLAN_sendbit(bit_start); } - AVCLAN_sendbits((uint8_t *)&frame->broadcast, 1); + AVCLAN_sendbits(&(uint8_t){frame->is_unicast}, 1); avclan_bit_t parity = AVCLAN_sendbits(&frame->controller_addr, 12); AVCLAN_sendbit(parity); @@ -810,7 +811,7 @@ uint8_t AVCLAN_sendframe(const AVCLAN_frame_t *frame, log_t print) { parity = AVCLAN_sendbits(&frame->peripheral_addr, 12); AVCLAN_sendbit(parity); - if (frame->broadcast && !AVCLAN_readbit_ACK()) { + if (frame->is_unicast && !AVCLAN_readbit_ACK()) { err.errno = NAK_ADDRESS; goto handle_err; } @@ -818,7 +819,7 @@ uint8_t AVCLAN_sendframe(const AVCLAN_frame_t *frame, log_t print) { parity = AVCLAN_sendbits(&frame->control, 4); AVCLAN_sendbit(parity); - if (frame->broadcast && !AVCLAN_readbit_ACK()) { + if (frame->is_unicast && !AVCLAN_readbit_ACK()) { err.errno = NAK_CONTROL; goto handle_err; } @@ -826,7 +827,7 @@ uint8_t AVCLAN_sendframe(const AVCLAN_frame_t *frame, log_t print) { parity = AVCLAN_sendbyte(&frame->length); // data length AVCLAN_sendbit(parity); - if (frame->broadcast && !AVCLAN_readbit_ACK()) { + if (frame->is_unicast && !AVCLAN_readbit_ACK()) { err.errno = NAK_MESSAGE_LENGTH; goto handle_err; } @@ -837,7 +838,7 @@ uint8_t AVCLAN_sendframe(const AVCLAN_frame_t *frame, log_t print) { // Based on the µPD6708 datasheet, ACK bit for broadcast doesn't seem // necessary (i.e. This deviates from the previous broadcast specific // function that sent an extra `1` bit after each byte/parity) - if (frame->broadcast && !AVCLAN_readbit_ACK()) { + if (frame->is_unicast && !AVCLAN_readbit_ACK()) { err.errno = NAK_DATA; err.val = i; goto handle_err; @@ -906,7 +907,7 @@ response_t AVCLAN_handleframe(const AVCLAN_frame_t *in, AVCLAN_frame_t *out) { uint8_t from; // BROADCAST - if (in->broadcast == BROADCAST) { + if (!in->is_unicast) { // skip confirming peripheral_addr, because it will be 0xFFF or 0x1FF based // on all currently known examples switch (b0 /* "from" device */) { @@ -931,7 +932,7 @@ response_t AVCLAN_handleframe(const AVCLAN_frame_t *in, AVCLAN_frame_t *out) { default: break; LAN_RESPONSE: - out->broadcast = UNICAST; + out->is_unicast = true; out->peripheral_addr = HU_ADDR; memcpy(out->data, lancheck_resp, sizeof(lancheck_resp)); respond = r_Handled; @@ -954,7 +955,7 @@ response_t AVCLAN_handleframe(const AVCLAN_frame_t *in, AVCLAN_frame_t *out) { } break; case Ping_Req: - out->broadcast = UNICAST; + out->is_unicast = true; out->peripheral_addr = HU_ADDR; out->length = sizeof(ping_resp); ping_resp[4] = b3; @@ -962,7 +963,7 @@ response_t AVCLAN_handleframe(const AVCLAN_frame_t *in, AVCLAN_frame_t *out) { respond = r_Handled; break; case List_Functions_Req: - out->broadcast = UNICAST; + out->is_unicast = true; out->peripheral_addr = HU_ADDR; out->length = sizeof(list_functions_resp); memcpy(out->data, list_functions_resp, @@ -1007,7 +1008,7 @@ response_t AVCLAN_handleframe(const AVCLAN_frame_t *in, AVCLAN_frame_t *out) { default: break; FUNCTION_CHANGE_RESPONSE: - out->broadcast = UNICAST; + out->is_unicast = true; out->peripheral_addr = HU_ADDR; out->length = sizeof(function_change_resp); memcpy(out->data, function_change_resp, @@ -1062,7 +1063,7 @@ response_t AVCLAN_handleframe(const AVCLAN_frame_t *in, AVCLAN_frame_t *out) { default: break; CMD_SW_RESPONSE: - out->broadcast = UNICAST; + out->is_unicast = true; out->peripheral_addr = HU_ADDR; } break; @@ -1094,7 +1095,7 @@ response_t AVCLAN_handleframe(const AVCLAN_frame_t *in, AVCLAN_frame_t *out) { default: break; STATUS_RESPONSE: - out->broadcast = UNICAST; + out->is_unicast = true; out->peripheral_addr = HU_ADDR; } break; @@ -1124,7 +1125,7 @@ void AVCLAN_printframe(const AVCLAN_frame_t *frame, uint8_t binary) { if (binary) { uint8_t buffer[8]; buffer[0] = 0x10; // Data Link Escape, signaling binary data forthcoming - buffer[1] = frame->broadcast; + buffer[1] = frame->is_unicast; // Send addresses in big-endian order buffer[2] = (uint8_t)(frame->controller_addr >> 8); @@ -1142,7 +1143,7 @@ void AVCLAN_printframe(const AVCLAN_frame_t *frame, uint8_t binary) { buffer[2] = 0x0A; // \n RS232_sendbytes((uint8_t *)&buffer, 3); } else { - RS232_PrintHex4(frame->broadcast); + RS232_PrintHex4(frame->is_unicast); RS232_Print(" 0x"); RS232_PrintHex12(frame->controller_addr); @@ -1180,7 +1181,7 @@ uint8_t AVCLAN_parseframe(const uint8_t *bytes, uint8_t len, } const uint8_t *last = bytes + len; - frame->broadcast = *bytes++; + frame->is_unicast = *bytes++; frame->controller_addr = bytes[0] | ((uint16_t)bytes[1] << 8); bytes += 2; frame->peripheral_addr = bytes[0] | ((uint16_t)bytes[1] << 8); @@ -1226,7 +1227,7 @@ uint8_t AVCLAN_parseframe(const uint8_t *bytes, uint8_t len, // Only used for regularly scheduled periodic updates AVCLAN_frame_t *AVCLAN_getStatusFrame() { static uint8_t status_data[] = STATUS_REPORT_DATA; - static AVCLAN_frame_t status = {.broadcast = BROADCAST, + static AVCLAN_frame_t status = {.is_unicast = false, .controller_addr = DEVICE_ADDR, .peripheral_addr = 0x1FF, .control = 0xF, @@ -1239,7 +1240,7 @@ AVCLAN_frame_t *AVCLAN_getStatusFrame() { // Used for changed status messages void AVCLAN_generateStatus(AVCLAN_frame_t *status) { *status = (AVCLAN_frame_t){ - .broadcast = BROADCAST, + .is_unicast = false, .controller_addr = DEVICE_ADDR, .peripheral_addr = 0x1FF, .control = 0xF, diff --git a/src/avclandrv.h b/src/avclandrv.h index 46363c0..984aea1 100644 --- a/src/avclandrv.h +++ b/src/avclandrv.h @@ -174,8 +174,6 @@ typedef enum : uint8_t { r_TrackChange, // Time needs reset } response_t; -typedef enum MSG_TYPE : uint8_t { BROADCAST = 0, UNICAST = 1 } MSG_TYPE_t; - typedef struct print_struct { _Bool print : 1; // print at all _Bool binary : 1; // when also printing, format as binary instead of text @@ -183,7 +181,7 @@ typedef struct print_struct { } log_t; typedef struct AVCLAN_frame_struct { - MSG_TYPE_t broadcast; // 0 for broadcast messages + bool is_unicast; uint16_t controller_addr; // formerly "master" uint16_t peripheral_addr; // formerly "slave" uint8_t control; diff --git a/src/sniffer.c b/src/sniffer.c index a0e0acb..29d7355 100644 --- a/src/sniffer.c +++ b/src/sniffer.c @@ -94,7 +94,7 @@ int main() { uint8_t hexChars[2]; uint8_t hexDigit = 0; // current digit being written to hexChars - MSG_TYPE_t seqBroadcast = BROADCAST; + bool seqIsUnicast = false; uint8_t lastPrintAllFrames = 1; uint8_t verbose = 1; @@ -231,7 +231,7 @@ int main() { case 'E': // Beep if (AVCLAN_frame_t *out = (AVCLAN_frame_t *)popQueue(&cache)) { if (RFrame_t *resp = popQueue(&rcache)) { - out->broadcast = UNICAST; + out->is_unicast = true; out->controller_addr = DEVICE_ADDR; out->peripheral_addr = HU_ADDR; { @@ -249,7 +249,7 @@ int main() { case 'P': if (AVCLAN_frame_t *out = (AVCLAN_frame_t *)popQueue(&cache)) { if (RFrame_t *resp = popQueue(&rcache)) { - out->broadcast = UNICAST; + out->is_unicast = true; out->controller_addr = DEVICE_ADDR; out->peripheral_addr = HU_ADDR; { @@ -284,7 +284,7 @@ int main() { readSeq = 1; seqLen = hexDigit = 0; hexChars[0] = hexChars[1] = 0; - seqBroadcast = UNICAST; + seqIsUnicast = true; break; case 'B': // Send broadcast RS232_Print("READ SEQUENCE (B)> \n"); @@ -293,7 +293,7 @@ int main() { readSeq = 1; seqLen = hexDigit = 0; hexChars[0] = hexChars[1] = 0; - seqBroadcast = BROADCAST; + seqIsUnicast = false; break; case '\n': if (readSeq) { @@ -316,12 +316,9 @@ int main() { } else { if (AVCLAN_frame_t *out = (AVCLAN_frame_t *)popQueue(&cache)) { if (RFrame_t *resp = popQueue(&rcache)) { - out->broadcast = seqBroadcast; + out->is_unicast = seqIsUnicast; out->controller_addr = DEVICE_ADDR; - switch (seqBroadcast) { - case UNICAST: out->peripheral_addr = HU_ADDR; break; - case BROADCAST: out->peripheral_addr = 0x1FF; break; - } + out->peripheral_addr = seqIsUnicast ? HU_ADDR : 0x1FF; out->length = seqLen; memcpy(out->data, data_tmp, seqLen); *resp = (RFrame_t){.r = r_Handled, .frame = out};