7272// Right bottom
7373#define ICON_LOGGING_NTP (1 <<10 )
7474
75+ // Left bottom
76+ #define ICON_ANTENNA_SHORT (1 <<11 )
77+ #define ICON_ANTENNA_OPEN (1 <<12 )
78+
7579// ----------------------------------------
7680// Locals
7781// ----------------------------------------
@@ -140,6 +144,31 @@ void displayBatteryVsEthernet()
140144 icons |= (blinking_icons & ICON_ETHERNET); // Top Right
141145 }
142146}
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+
143172
144173// Given the system state, display the appropriate information
145174void updateDisplay ()
@@ -218,41 +247,41 @@ void updateDisplay()
218247 case (STATE_ROVER_NOT_STARTED):
219248 icons = ICON_CROSS_HAIR // Center left
220249 | ICON_HORIZONTAL_ACCURACY // Center right
221- | paintSIV () // Bottom left
222250 | ICON_LOGGING; // Bottom right
251+ displaySivVsOpenShort (); // Bottom left
223252 displayBatteryVsEthernet (); // Top right
224253 iconsRadio = setRadioIcons (); // Top left
225254 break ;
226255 case (STATE_ROVER_NO_FIX):
227256 icons = ICON_CROSS_HAIR // Center left
228257 | ICON_HORIZONTAL_ACCURACY // Center right
229- | paintSIV () // Bottom left
230258 | ICON_LOGGING; // Bottom right
259+ displaySivVsOpenShort (); // Bottom left
231260 displayBatteryVsEthernet (); // Top right
232261 iconsRadio = setRadioIcons (); // Top left
233262 break ;
234263 case (STATE_ROVER_FIX):
235264 icons = ICON_CROSS_HAIR // Center left
236265 | ICON_HORIZONTAL_ACCURACY // Center right
237- | paintSIV () // Bottom left
238266 | ICON_LOGGING; // Bottom right
267+ displaySivVsOpenShort (); // Bottom left
239268 displayBatteryVsEthernet (); // Top right
240269 iconsRadio = setRadioIcons (); // Top left
241270 break ;
242271 case (STATE_ROVER_RTK_FLOAT):
243272 blinking_icons ^= ICON_CROSS_HAIR_DUAL;
244273 icons = (blinking_icons & ICON_CROSS_HAIR_DUAL) // Center left
245274 | ICON_HORIZONTAL_ACCURACY // Center right
246- | paintSIV () // Bottom left
247275 | ICON_LOGGING; // Bottom right
276+ displaySivVsOpenShort (); // Bottom left
248277 displayBatteryVsEthernet (); // Top right
249278 iconsRadio = setRadioIcons (); // Top left
250279 break ;
251280 case (STATE_ROVER_RTK_FIX):
252281 icons = ICON_CROSS_HAIR_DUAL// Center left
253282 | ICON_HORIZONTAL_ACCURACY // Center right
254- | paintSIV () // Bottom left
255283 | ICON_LOGGING; // Bottom right
284+ displaySivVsOpenShort (); // Bottom left
256285 displayBatteryVsEthernet (); // Top right
257286 iconsRadio = setRadioIcons (); // Top left
258287 break ;
@@ -268,8 +297,8 @@ void updateDisplay()
268297 blinking_icons ^= ICON_CROSS_HAIR;
269298 icons = (blinking_icons & ICON_CROSS_HAIR) // Center left
270299 | ICON_HORIZONTAL_ACCURACY // Center right
271- | paintSIV () // Bottom left
272300 | ICON_LOGGING; // Bottom right
301+ displaySivVsOpenShort (); // Bottom left
273302 displayBatteryVsEthernet (); // Top right
274303 iconsRadio = setRadioIcons (); // Top left
275304 break ;
@@ -301,8 +330,8 @@ void updateDisplay()
301330 case (STATE_NTPSERVER_NO_SYNC):
302331 blinking_icons ^= ICON_CLOCK;
303332 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
306335 if (online.ethernetStatus == ETH_CONNECTED)
307336 blinking_icons |= ICON_ETHERNET; // Don't blink if link is up
308337 else
@@ -314,8 +343,8 @@ void updateDisplay()
314343 case (STATE_NTPSERVER_SYNC):
315344 icons = ICON_CLOCK // Center left
316345 | ICON_CLOCK_ACCURACY // Center right
317- | paintSIV () // Bottom left
318346 | ICON_LOGGING_NTP; // Bottom right
347+ displaySivVsOpenShort (); // Bottom left
319348 if (online.ethernetStatus == ETH_CONNECTED)
320349 blinking_icons |= ICON_ETHERNET; // Don't blink if link is up
321350 else
@@ -539,6 +568,10 @@ void updateDisplay()
539568 displayBitmap (2 , 35 , SIV_Antenna_Width, SIV_Antenna_Height, SIV_Antenna);
540569 else if (icons & ICON_SIV_ANTENNA_LBAND)
541570 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);
542575
543576 // Bottom right corner
544577 if (icons & ICON_LOGGING)
@@ -1647,9 +1680,37 @@ void paintBaseTempSurveyStarted()
16471680 else
16481681 oled.print (" >10" );
16491682
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+
16531714
16541715 oled.setCursor (30 , 36 ); // x, y
16551716 oled.setFont (QW_FONT_8X16);
@@ -1680,9 +1741,37 @@ void paintRTCM()
16801741 else
16811742 printTextCenter (" Xmitting" , yPos, QW_FONT_8X16, 1 , false ); // text, y, font type, kerning, inverted
16821743
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+ }
16861775
16871776 if (rtcmPacketsSent < 100 )
16881777 oled.setCursor (30 , 36 ); // x, y - Give space for two digits
0 commit comments