mirror of
https://github.com/halleysfifthinc/AVCLAN-Mockingboard.git
synced 2026-08-06 17:03:17 +00:00
Rename field broadcast => is_unicast
Improves readability and logical flow clarity
This commit is contained in:
+19
-18
@@ -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,
|
||||
|
||||
+1
-3
@@ -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;
|
||||
|
||||
+7
-10
@@ -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};
|
||||
|
||||
Reference in New Issue
Block a user