Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 19 additions & 19 deletions Firmware/LoRaSerial/Arch_SAMD.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,12 @@ void samdBeginBoard()
pin_rst = 6;
pin_cts = 30;
pin_rts = 38;
pin_txLED = 31;
pin_rxLED = A5;
pin_rssi1LED = A3;
pin_rssi2LED = A4;
pin_rssi3LED = 8;
pin_rssi4LED = 9;
pin_blue_LED = 31;
pin_yellow_LED = A5;
pin_green_1_LED = A3;
pin_green_2_LED = A4;
pin_green_3_LED = 8;
pin_green_4_LED = 9;

pin_trainButton = 4;

Expand All @@ -96,19 +96,19 @@ void samdBeginBoard()
pinMode(pin_cts, INPUT_PULLUP);

//LEDs
pinMode(pin_rssi1LED, OUTPUT);
digitalWrite(pin_rssi1LED, LOW);
pinMode(pin_rssi2LED, OUTPUT);
digitalWrite(pin_rssi2LED, LOW);
pinMode(pin_rssi3LED, OUTPUT);
digitalWrite(pin_rssi3LED, LOW);
pinMode(pin_rssi4LED, OUTPUT);
digitalWrite(pin_rssi4LED, LOW);

pinMode(pin_txLED, OUTPUT);
digitalWrite(pin_txLED, LOW);
pinMode(pin_rxLED, OUTPUT);
digitalWrite(pin_rxLED, LOW);
pinMode(pin_green_1_LED, OUTPUT);
digitalWrite(pin_green_1_LED, LOW);
pinMode(pin_green_2_LED, OUTPUT);
digitalWrite(pin_green_2_LED, LOW);
pinMode(pin_green_3_LED, OUTPUT);
digitalWrite(pin_green_3_LED, LOW);
pinMode(pin_green_4_LED, OUTPUT);
digitalWrite(pin_green_4_LED, LOW);

pinMode(pin_blue_LED, OUTPUT);
digitalWrite(pin_blue_LED, LOW);
pinMode(pin_yellow_LED, OUTPUT);
digitalWrite(pin_yellow_LED, LOW);

//Train button input
pinMode(pin_trainButton, INPUT_PULLUP);
Expand Down
53 changes: 28 additions & 25 deletions Firmware/LoRaSerial/LoRaSerial.ino
Original file line number Diff line number Diff line change
Expand Up @@ -97,39 +97,42 @@ uint8_t pin_dio0 = PIN_UNDEFINED;
uint8_t pin_dio1 = PIN_UNDEFINED;
uint8_t pin_rts = PIN_UNDEFINED;
uint8_t pin_cts = PIN_UNDEFINED;
uint8_t pin_txLED = PIN_UNDEFINED;
uint8_t pin_rxLED = PIN_UNDEFINED;
uint8_t pin_blue_LED = PIN_UNDEFINED;
uint8_t pin_yellow_LED = PIN_UNDEFINED;
uint8_t pin_trainButton = PIN_UNDEFINED;
uint8_t pin_rssi1LED = PIN_UNDEFINED;
uint8_t pin_rssi2LED = PIN_UNDEFINED;
uint8_t pin_rssi3LED = PIN_UNDEFINED;
uint8_t pin_rssi4LED = PIN_UNDEFINED;
uint8_t pin_green_1_LED = PIN_UNDEFINED;
uint8_t pin_green_2_LED = PIN_UNDEFINED;
uint8_t pin_green_3_LED = PIN_UNDEFINED;
uint8_t pin_green_4_LED = PIN_UNDEFINED;
uint8_t pin_boardID = PIN_UNDEFINED;

uint8_t pin_trigger = PIN_UNDEFINED;
uint8_t pin_hop_timer = PIN_UNDEFINED;

#define GREEN_LED_1 pin_rssi1LED
#define GREEN_LED_2 pin_rssi2LED
#define GREEN_LED_3 pin_rssi3LED
#define GREEN_LED_4 pin_rssi4LED
#define BLUE_LED pin_txLED
#define YELLOW_LED pin_rxLED

#define RADIO_USE_BLINK_MILLIS 15

#define RADIO_USE_RX_DATA_LED GREEN_LED_1 //Green
#define RADIO_USE_LINK_LED GREEN_LED_2 //Green
#define RADIO_USE_RSSI_LED GREEN_LED_3 //Green
#define RADIO_USE_TX_DATA_LED GREEN_LED_4 //Green
#define RADIO_USE_BAD_FRAMES_LED BLUE_LED //Blue
#define RADIO_USE_BAD_CRC_LED YELLOW_LED //Yellow
/*
Antenna Qwiic
+---------------------------+
| |
| G4 G3 G2 G1 |
| |
| |
| Red |
| |
| |
| Blue Yellow |
| |
+---------------------------+
USB Serial
*/

#define LED_MP_HEARTBEAT BLUE_LED
#define LED_MP_HOP_CHANNEL YELLOW_LED
#define GREEN_LED_1 pin_green_1_LED //Top right
#define GREEN_LED_2 pin_green_2_LED
#define GREEN_LED_3 pin_green_3_LED
#define GREEN_LED_4 pin_green_4_LED //Top left
#define BLUE_LED pin_blue_LED
#define YELLOW_LED pin_yellow_LED //Bottom right

#define CYLON_TX_DATA_LED BLUE_LED
#define CYLON_RX_DATA_LED YELLOW_LED
#define RADIO_USE_BLINK_MILLIS 15

#define LED_ON HIGH
#define LED_OFF LOW
Expand Down
86 changes: 43 additions & 43 deletions Firmware/LoRaSerial/System.ino
Original file line number Diff line number Diff line change
Expand Up @@ -578,24 +578,24 @@ void dumpCircularBuffer(uint8_t * buffer, uint16_t tail, uint16_t bufferLength,
void setRSSI(uint8_t ledBits)
{
if (ledBits & 0b0001)
digitalWrite(pin_rssi1LED, HIGH);
digitalWrite(pin_green_1_LED, HIGH);
else
digitalWrite(pin_rssi1LED, LOW);
digitalWrite(pin_green_1_LED, LOW);

if (ledBits & 0b0010)
digitalWrite(pin_rssi2LED, HIGH);
digitalWrite(pin_green_2_LED, HIGH);
else
digitalWrite(pin_rssi2LED, LOW);
digitalWrite(pin_green_2_LED, LOW);

if (ledBits & 0b0100)
digitalWrite(pin_rssi3LED, HIGH);
digitalWrite(pin_green_3_LED, HIGH);
else
digitalWrite(pin_rssi3LED, LOW);
digitalWrite(pin_green_3_LED, LOW);

if (ledBits & 0b1000)
digitalWrite(pin_rssi4LED, HIGH);
digitalWrite(pin_green_4_LED, HIGH);
else
digitalWrite(pin_rssi4LED, LOW);
digitalWrite(pin_green_4_LED, LOW);
}

//Start the cylon LEDs
Expand Down Expand Up @@ -664,12 +664,12 @@ void blinkRadioRssiLed()
//The RSSI value ranges from -164 to 30 dB
ledRssiPulseWidth = (150 + rssi) / 10;
if (ledRssiPulseWidth > 0)
digitalWrite(RADIO_USE_RSSI_LED, LED_ON);
digitalWrite(GREEN_LED_3, LED_ON);
}

//Check for time to turn off the LED
else if ((currentMillis - ledPreviousRssiMillis) >= ledRssiPulseWidth)
digitalWrite(RADIO_USE_RSSI_LED, LED_OFF);
digitalWrite(GREEN_LED_3, LED_OFF);
break;

//Update the 4 green LEDs based upon the RSSI value
Expand All @@ -694,12 +694,12 @@ void blinkSerialTxLed(bool illuminate)
switch (settings.selectLedUse)
{
case LEDS_RSSI:
if (pin_txLED != PIN_UNDEFINED)
if (pin_blue_LED != PIN_UNDEFINED)
{
if (illuminate == true)
digitalWrite(pin_txLED, HIGH);
digitalWrite(pin_blue_LED, HIGH);
else
digitalWrite(pin_txLED, LOW);
digitalWrite(pin_blue_LED, LOW);
}
break;
}
Expand All @@ -712,16 +712,16 @@ void blinkSerialRxLed(bool illuminate)
{
case LEDS_RSSI:
if (illuminate == true)
digitalWrite(pin_rxLED, HIGH);
digitalWrite(pin_yellow_LED, HIGH);
else
digitalWrite(pin_rxLED, LOW);
digitalWrite(pin_yellow_LED, LOW);
break;

case LEDS_VC:
if (illuminate == true)
digitalWrite(RADIO_USE_LINK_LED, HIGH);
digitalWrite(GREEN_LED_2, HIGH);
else
digitalWrite(RADIO_USE_LINK_LED, LOW);
digitalWrite(GREEN_LED_2, LOW);
break;
}
}
Expand All @@ -733,19 +733,19 @@ void blinkRadioRxLed(bool on)
{
case LEDS_CYLON:
if (on)
digitalWrite(CYLON_RX_DATA_LED, LED_ON);
digitalWrite(YELLOW_LED, LED_ON);
else if ((millis() - linkDownTimer) >= RADIO_USE_BLINK_MILLIS)
digitalWrite(CYLON_RX_DATA_LED, LED_OFF);
digitalWrite(YELLOW_LED, LED_OFF);
break;

case LEDS_MULTIPOINT:
case LEDS_P2P:
case LEDS_RADIO_USE:
case LEDS_VC:
if (on)
digitalWrite(RADIO_USE_RX_DATA_LED, LED_ON);
digitalWrite(GREEN_LED_1, LED_ON);
else if ((millis() - linkDownTimer) >= RADIO_USE_BLINK_MILLIS)
digitalWrite(RADIO_USE_RX_DATA_LED, LED_OFF);
digitalWrite(GREEN_LED_1, LED_OFF);
break;
}
}
Expand All @@ -757,19 +757,19 @@ void blinkRadioTxLed(bool on)
{
case LEDS_CYLON:
if (on)
digitalWrite(CYLON_TX_DATA_LED, LED_ON);
digitalWrite(BLUE_LED, LED_ON);
else if ((millis() - datagramTimer) >= RADIO_USE_BLINK_MILLIS)
digitalWrite(CYLON_TX_DATA_LED, LED_OFF);
digitalWrite(BLUE_LED, LED_OFF);
break;

case LEDS_MULTIPOINT:
case LEDS_P2P:
case LEDS_RADIO_USE:
case LEDS_VC:
if (on)
digitalWrite(RADIO_USE_TX_DATA_LED, LED_ON);
digitalWrite(GREEN_LED_4, LED_ON);
else if ((millis() - datagramTimer) >= RADIO_USE_BLINK_MILLIS)
digitalWrite(RADIO_USE_TX_DATA_LED, LED_OFF);
digitalWrite(GREEN_LED_4, LED_OFF);
break;
}
}
Expand All @@ -796,7 +796,7 @@ void radioLeds()
blinkRadioTxLed(false);

//Update the link LED
digitalWrite(RADIO_USE_LINK_LED, isLinked() ? LED_ON : LED_OFF);
digitalWrite(GREEN_LED_2, isLinked() ? LED_ON : LED_OFF);

//Update the RSSI LED
blinkRadioRssiLed();
Expand All @@ -807,31 +807,31 @@ void radioLeds()
{
previousBadFrames = badFrames;
badFramesMillis = currentMillis;
digitalWrite(RADIO_USE_BAD_FRAMES_LED, LED_ON);
digitalWrite(BLUE_LED, LED_ON);
}
else if (badFramesMillis && ((currentMillis - badFramesMillis) >= RADIO_USE_BLINK_MILLIS))
{
badFramesMillis = 0;
digitalWrite(RADIO_USE_BAD_FRAMES_LED, LED_OFF);
digitalWrite(BLUE_LED, LED_OFF);
}

//Blink the bad CRC or duplicate frames LED
if (settings.enableCRC16 && (badCrc != previousBadCrc))
{
previousBadCrc = badCrc;
badCrcMillis = currentMillis;
digitalWrite(RADIO_USE_BAD_CRC_LED, LED_ON);
digitalWrite(YELLOW_LED, LED_ON);
}
if ((!settings.enableCRC16) && (duplicateFrames != previousBadCrc))
{
previousBadCrc = duplicateFrames;
badCrcMillis = currentMillis;
digitalWrite(RADIO_USE_BAD_CRC_LED, LED_ON);
digitalWrite(YELLOW_LED, LED_ON);
}
else if (badCrcMillis && ((currentMillis - badCrcMillis) >= RADIO_USE_BLINK_MILLIS))
{
badCrcMillis = 0;
digitalWrite(RADIO_USE_BAD_CRC_LED, LED_OFF);
digitalWrite(YELLOW_LED, LED_OFF);
}
}

Expand All @@ -847,11 +847,11 @@ void blinkHeartbeatLed(bool on)
case LEDS_VC:
if (on)
{
digitalWrite(LED_MP_HEARTBEAT, LED_ON);
digitalWrite(BLUE_LED, LED_ON);
ledHeartbeatMillis = millis();
}
else if ((millis() - ledHeartbeatMillis) > RADIO_USE_BLINK_MILLIS)
digitalWrite(LED_MP_HEARTBEAT, LED_OFF);
digitalWrite(BLUE_LED, LED_OFF);
break;
}
}
Expand All @@ -865,9 +865,9 @@ void blinkChannelHopLed(bool on)
case LEDS_P2P:
case LEDS_VC:
if (on)
digitalWrite(LED_MP_HOP_CHANNEL, LED_ON);
digitalWrite(YELLOW_LED, LED_ON);
else if ((millis() - radioCallHistory[RADIO_CALL_hopChannel]) >= RADIO_USE_BLINK_MILLIS)
digitalWrite(LED_MP_HOP_CHANNEL, LED_OFF);
digitalWrite(YELLOW_LED, LED_OFF);
break;
}
}
Expand Down Expand Up @@ -914,14 +914,14 @@ void multiPointLeds()
blinkRadioTxLed(false);

//Update the sync LED
digitalWrite(RADIO_USE_LINK_LED, isMultiPointSync() ? LED_ON : LED_OFF);
digitalWrite(GREEN_LED_2, isMultiPointSync() ? LED_ON : LED_OFF);

//Update the RSSI LED
blinkRadioRssiLed();

//Update the hop LED
if ((millis() - radioCallHistory[RADIO_CALL_hopChannel]) >= RADIO_USE_BLINK_MILLIS)
digitalWrite(LED_MP_HOP_CHANNEL, LED_OFF);
digitalWrite(YELLOW_LED, LED_OFF);

//Update the HEARTBEAT LED
blinkHeartbeatLed(false);
Expand All @@ -942,7 +942,7 @@ void p2pLeds()

//Update the hop LED
if ((millis() - radioCallHistory[RADIO_CALL_hopChannel]) >= RADIO_USE_BLINK_MILLIS)
digitalWrite(LED_MP_HOP_CHANNEL, LED_OFF);
digitalWrite(YELLOW_LED, LED_OFF);

//Update the HEARTBEAT LED
blinkHeartbeatLed(false);
Expand All @@ -969,23 +969,23 @@ void vcLeds()

//Turn on the RSSI LED
else if (((currentMillis - blinkSyncMillis) >= (VC_SYNC_BLINK_RATE >> 1))
&& (digitalRead(RADIO_USE_RSSI_LED) == LED_OFF))
digitalWrite(RADIO_USE_RSSI_LED, LED_ON);
&& (digitalRead(GREEN_LED_3) == LED_OFF))
digitalWrite(GREEN_LED_3, LED_ON);

//Turn off the RSSI LED
else if ((!virtualCircuitList[VC_SERVER].vcState)
&& (((currentMillis - blinkSyncMillis) >= VC_SYNC_BLINK_RATE))
&& (digitalRead(RADIO_USE_RSSI_LED) == LED_ON))
&& (digitalRead(GREEN_LED_3) == LED_ON))
{
digitalWrite(RADIO_USE_RSSI_LED, LED_OFF);
digitalWrite(GREEN_LED_3, LED_OFF);
blinkSyncMillis = currentMillis;
}

//Serial RX displayed on the LINK LED (GREEN_LED_2) by blinkSerialRxLed

//Update the hop LED
if ((millis() - radioCallHistory[RADIO_CALL_hopChannel]) >= RADIO_USE_BLINK_MILLIS)
digitalWrite(LED_MP_HOP_CHANNEL, LED_OFF);
digitalWrite(YELLOW_LED, LED_OFF);

//Update the HEARTBEAT LED
blinkHeartbeatLed(false);
Expand Down