72
72
// Right bottom
73
73
#define ICON_LOGGING_NTP (1 <<10 )
74
74
75
+ // Left bottom
76
+ #define ICON_ANTENNA_SHORT (1 <<11 )
77
+ #define ICON_ANTENNA_OPEN (1 <<12 )
78
+
75
79
// ----------------------------------------
76
80
// Locals
77
81
// ----------------------------------------
@@ -140,6 +144,31 @@ void displayBatteryVsEthernet()
140
144
icons |= (blinking_icons & ICON_ETHERNET); // Top Right
141
145
}
142
146
}
147
+ void displaySivVsOpenShort ()
148
+ {
149
+ if (!HAS_ANTENNA_SHORT_OPEN)
150
+ icons |= paintSIV ();
151
+ else
152
+ {
153
+ if (aStatus == SFE_UBLOX_ANTENNA_STATUS_SHORT)
154
+ {
155
+ blinking_icons ^= ICON_ANTENNA_SHORT;
156
+ icons |= (blinking_icons & ICON_ANTENNA_SHORT);
157
+ }
158
+ else if (aStatus == SFE_UBLOX_ANTENNA_STATUS_OPEN)
159
+ {
160
+ blinking_icons ^= ICON_ANTENNA_OPEN;
161
+ icons |= (blinking_icons & ICON_ANTENNA_OPEN);
162
+ }
163
+ else
164
+ {
165
+ blinking_icons &= ~ICON_ANTENNA_SHORT;
166
+ blinking_icons &= ~ICON_ANTENNA_OPEN;
167
+ icons |= paintSIV ();
168
+ }
169
+ }
170
+ }
171
+
143
172
144
173
// Given the system state, display the appropriate information
145
174
void updateDisplay ()
@@ -218,41 +247,41 @@ void updateDisplay()
218
247
case (STATE_ROVER_NOT_STARTED):
219
248
icons = ICON_CROSS_HAIR // Center left
220
249
| ICON_HORIZONTAL_ACCURACY // Center right
221
- | paintSIV () // Bottom left
222
250
| ICON_LOGGING; // Bottom right
251
+ displaySivVsOpenShort (); // Bottom left
223
252
displayBatteryVsEthernet (); // Top right
224
253
iconsRadio = setRadioIcons (); // Top left
225
254
break ;
226
255
case (STATE_ROVER_NO_FIX):
227
256
icons = ICON_CROSS_HAIR // Center left
228
257
| ICON_HORIZONTAL_ACCURACY // Center right
229
- | paintSIV () // Bottom left
230
258
| ICON_LOGGING; // Bottom right
259
+ displaySivVsOpenShort (); // Bottom left
231
260
displayBatteryVsEthernet (); // Top right
232
261
iconsRadio = setRadioIcons (); // Top left
233
262
break ;
234
263
case (STATE_ROVER_FIX):
235
264
icons = ICON_CROSS_HAIR // Center left
236
265
| ICON_HORIZONTAL_ACCURACY // Center right
237
- | paintSIV () // Bottom left
238
266
| ICON_LOGGING; // Bottom right
267
+ displaySivVsOpenShort (); // Bottom left
239
268
displayBatteryVsEthernet (); // Top right
240
269
iconsRadio = setRadioIcons (); // Top left
241
270
break ;
242
271
case (STATE_ROVER_RTK_FLOAT):
243
272
blinking_icons ^= ICON_CROSS_HAIR_DUAL;
244
273
icons = (blinking_icons & ICON_CROSS_HAIR_DUAL) // Center left
245
274
| ICON_HORIZONTAL_ACCURACY // Center right
246
- | paintSIV () // Bottom left
247
275
| ICON_LOGGING; // Bottom right
276
+ displaySivVsOpenShort (); // Bottom left
248
277
displayBatteryVsEthernet (); // Top right
249
278
iconsRadio = setRadioIcons (); // Top left
250
279
break ;
251
280
case (STATE_ROVER_RTK_FIX):
252
281
icons = ICON_CROSS_HAIR_DUAL// Center left
253
282
| ICON_HORIZONTAL_ACCURACY // Center right
254
- | paintSIV () // Bottom left
255
283
| ICON_LOGGING; // Bottom right
284
+ displaySivVsOpenShort (); // Bottom left
256
285
displayBatteryVsEthernet (); // Top right
257
286
iconsRadio = setRadioIcons (); // Top left
258
287
break ;
@@ -268,8 +297,8 @@ void updateDisplay()
268
297
blinking_icons ^= ICON_CROSS_HAIR;
269
298
icons = (blinking_icons & ICON_CROSS_HAIR) // Center left
270
299
| ICON_HORIZONTAL_ACCURACY // Center right
271
- | paintSIV () // Bottom left
272
300
| ICON_LOGGING; // Bottom right
301
+ displaySivVsOpenShort (); // Bottom left
273
302
displayBatteryVsEthernet (); // Top right
274
303
iconsRadio = setRadioIcons (); // Top left
275
304
break ;
@@ -301,8 +330,8 @@ void updateDisplay()
301
330
case (STATE_NTPSERVER_NO_SYNC):
302
331
blinking_icons ^= ICON_CLOCK;
303
332
icons = (blinking_icons & ICON_CLOCK) // Center left
304
- | ICON_CLOCK_ACCURACY // Center right
305
- | paintSIV (); // Bottom left
333
+ | ICON_CLOCK_ACCURACY; // Center right
334
+ displaySivVsOpenShort (); // Bottom left
306
335
if (online.ethernetStatus == ETH_CONNECTED)
307
336
blinking_icons |= ICON_ETHERNET; // Don't blink if link is up
308
337
else
@@ -314,8 +343,8 @@ void updateDisplay()
314
343
case (STATE_NTPSERVER_SYNC):
315
344
icons = ICON_CLOCK // Center left
316
345
| ICON_CLOCK_ACCURACY // Center right
317
- | paintSIV () // Bottom left
318
346
| ICON_LOGGING_NTP; // Bottom right
347
+ displaySivVsOpenShort (); // Bottom left
319
348
if (online.ethernetStatus == ETH_CONNECTED)
320
349
blinking_icons |= ICON_ETHERNET; // Don't blink if link is up
321
350
else
@@ -539,6 +568,10 @@ void updateDisplay()
539
568
displayBitmap (2 , 35 , SIV_Antenna_Width, SIV_Antenna_Height, SIV_Antenna);
540
569
else if (icons & ICON_SIV_ANTENNA_LBAND)
541
570
displayBitmap (2 , 35 , SIV_Antenna_LBand_Width, SIV_Antenna_LBand_Height, SIV_Antenna_LBand);
571
+ else if (icons & ICON_ANTENNA_SHORT)
572
+ displayBitmap (2 , 35 , Antenna_Short_Width, Antenna_Short_Height, Antenna_Short);
573
+ else if (icons & ICON_ANTENNA_OPEN)
574
+ displayBitmap (2 , 35 , Antenna_Open_Width, Antenna_Open_Height, Antenna_Open);
542
575
543
576
// Bottom right corner
544
577
if (icons & ICON_LOGGING)
@@ -1647,9 +1680,37 @@ void paintBaseTempSurveyStarted()
1647
1680
else
1648
1681
oled.print (" >10" );
1649
1682
1650
- oled.setCursor (0 , 39 ); // x, y
1651
- oled.setFont (QW_FONT_5X7);
1652
- oled.print (" Time:" );
1683
+ if (!HAS_ANTENNA_SHORT_OPEN)
1684
+ {
1685
+ oled.setCursor (0 , 39 ); // x, y
1686
+ oled.setFont (QW_FONT_5X7);
1687
+ oled.print (" Time:" );
1688
+ }
1689
+ else
1690
+ {
1691
+ static uint32_t blinkers = 0 ;
1692
+ if (aStatus == SFE_UBLOX_ANTENNA_STATUS_SHORT)
1693
+ {
1694
+ blinkers ^= ICON_ANTENNA_SHORT;
1695
+ if (blinkers & ICON_ANTENNA_SHORT)
1696
+ displayBitmap (2 , 35 , Antenna_Short_Width, Antenna_Short_Height, Antenna_Short);
1697
+ }
1698
+ else if (aStatus == SFE_UBLOX_ANTENNA_STATUS_OPEN)
1699
+ {
1700
+ blinkers ^= ICON_ANTENNA_OPEN;
1701
+ if (blinkers & ICON_ANTENNA_OPEN)
1702
+ displayBitmap (2 , 35 , Antenna_Open_Width, Antenna_Open_Height, Antenna_Open);
1703
+ }
1704
+ else
1705
+ {
1706
+ blinkers &= ~ICON_ANTENNA_SHORT;
1707
+ blinkers &= ~ICON_ANTENNA_OPEN;
1708
+ oled.setCursor (0 , 39 ); // x, y
1709
+ oled.setFont (QW_FONT_5X7);
1710
+ oled.print (" Time:" );
1711
+ }
1712
+ }
1713
+
1653
1714
1654
1715
oled.setCursor (30 , 36 ); // x, y
1655
1716
oled.setFont (QW_FONT_8X16);
@@ -1680,9 +1741,37 @@ void paintRTCM()
1680
1741
else
1681
1742
printTextCenter (" Xmitting" , yPos, QW_FONT_8X16, 1 , false ); // text, y, font type, kerning, inverted
1682
1743
1683
- oled.setCursor (0 , 39 ); // x, y
1684
- oled.setFont (QW_FONT_5X7);
1685
- oled.print (" RTCM:" );
1744
+
1745
+ if (!HAS_ANTENNA_SHORT_OPEN)
1746
+ {
1747
+ oled.setCursor (0 , 39 ); // x, y
1748
+ oled.setFont (QW_FONT_5X7);
1749
+ oled.print (" RTCM:" );
1750
+ }
1751
+ else
1752
+ {
1753
+ static uint32_t blinkers = 0 ;
1754
+ if (aStatus == SFE_UBLOX_ANTENNA_STATUS_SHORT)
1755
+ {
1756
+ blinkers ^= ICON_ANTENNA_SHORT;
1757
+ if (blinkers & ICON_ANTENNA_SHORT)
1758
+ displayBitmap (2 , 35 , Antenna_Short_Width, Antenna_Short_Height, Antenna_Short);
1759
+ }
1760
+ else if (aStatus == SFE_UBLOX_ANTENNA_STATUS_OPEN)
1761
+ {
1762
+ blinkers ^= ICON_ANTENNA_OPEN;
1763
+ if (blinkers & ICON_ANTENNA_OPEN)
1764
+ displayBitmap (2 , 35 , Antenna_Open_Width, Antenna_Open_Height, Antenna_Open);
1765
+ }
1766
+ else
1767
+ {
1768
+ blinkers &= ~ICON_ANTENNA_SHORT;
1769
+ blinkers &= ~ICON_ANTENNA_OPEN;
1770
+ oled.setCursor (0 , 39 ); // x, y
1771
+ oled.setFont (QW_FONT_5X7);
1772
+ oled.print (" RTCM:" );
1773
+ }
1774
+ }
1686
1775
1687
1776
if (rtcmPacketsSent < 100 )
1688
1777
oled.setCursor (30 , 36 ); // x, y - Give space for two digits
0 commit comments