Skip to content

Commit 8586edc

Browse files
authored
Merge pull request #218 from sparkfun/release_candidate
Merge v0.9 changes to main
2 parents 1373a79 + 15af4f1 commit 8586edc

File tree

6 files changed

+175
-102
lines changed

6 files changed

+175
-102
lines changed

Firmware/RTK_Everywhere/RTK_Everywhere.ino

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,10 @@ unsigned long um980BaseStartTimer; // Tracks how long the base averaging mode ha
737737

738738
RtkMode_t rtkMode; // Mode of operation
739739

740-
unsigned long beepStopMs; // Time at which to turn off beeper
740+
unsigned long beepLengthMs; // Number of ms to make noise
741+
unsigned long beepQuietLengthMs; // Number of ms to make reset between multiple beeps
742+
unsigned long beepNextEventMs; // Time at which to move the beeper to the next state
743+
unsigned long beepCount; // Number of beeps to do
741744

742745
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
743746

Firmware/RTK_Everywhere/System.ino

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,15 @@ void finishDisplay()
3939
// Start the beeper and limit its beep length using the tickerBeepUpdate task
4040
void beepDurationMs(uint16_t lengthMs)
4141
{
42-
beepStopMs = millis() + lengthMs;
43-
beepOn();
42+
beepMultiple(1, lengthMs, 0); // Number of beeps, length of beep, length of quiet
43+
}
44+
45+
// Number of beeps, length of beep ms, length of quiet ms
46+
void beepMultiple(int numberOfBeeps, int lengthOfBeepMs, int lengthOfQuietMs)
47+
{
48+
beepCount = numberOfBeeps;
49+
beepLengthMs = lengthOfBeepMs;
50+
beepQuietLengthMs = lengthOfQuietMs;
4451
}
4552

4653
void beepOn()

Firmware/RTK_Everywhere/Tasks.ino

Lines changed: 75 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,7 +1042,7 @@ void handleGnssDataTask(void *e)
10421042
slowConsumer = "SD card";
10431043
}
10441044
} // bytesToSend
1045-
} // End connected
1045+
} // End connected
10461046

10471047
//----------------------------------------------------------------------
10481048
// Update the available space in the ring buffer
@@ -1230,18 +1230,74 @@ void tickerBatteryLedUpdate()
12301230
}
12311231
}
12321232

1233+
enum BeepState
1234+
{
1235+
BEEP_OFF = 0,
1236+
BEEP_ON,
1237+
BEEP_QUIET,
1238+
};
1239+
BeepState beepState = BEEP_OFF;
1240+
12331241
// Control the length of time the beeper makes noise
1242+
// We move through a simple state machine in order to handle multiple types of beeps (see beepMultiple())
12341243
void tickerBeepUpdate()
12351244
{
12361245
if (present.beeper == true)
12371246
{
1238-
if (beepStopMs > 0)
1247+
switch (beepState)
12391248
{
1240-
if (millis() >= beepStopMs)
1249+
default:
1250+
if (beepState != BEEP_OFF)
1251+
beepState = BEEP_OFF;
1252+
break;
1253+
1254+
case BEEP_OFF:
1255+
if (beepLengthMs > 0)
1256+
{
1257+
beepNextEventMs = millis() + beepLengthMs;
1258+
beepOn();
1259+
beepState = BEEP_ON;
1260+
}
1261+
break;
1262+
1263+
case BEEP_ON:
1264+
if (millis() >= beepNextEventMs)
1265+
{
1266+
if (beepCount == 1)
1267+
{
1268+
beepLengthMs = 0; // Stop state machine
1269+
beepState = BEEP_OFF;
1270+
beepOff();
1271+
}
1272+
else
1273+
{
1274+
beepNextEventMs = millis() + beepQuietLengthMs;
1275+
beepState = BEEP_QUIET;
1276+
beepOff();
1277+
}
1278+
}
1279+
break;
1280+
1281+
case BEEP_QUIET:
1282+
if (millis() >= beepNextEventMs)
12411283
{
1242-
beepStopMs = 0; // Signal the beeper is off
1243-
beepOff();
1284+
beepCount--;
1285+
1286+
if (beepCount == 0)
1287+
{
1288+
// We should not be here, but just in case
1289+
beepLengthMs = 0; // Stop state machine
1290+
beepState = BEEP_OFF;
1291+
beepOff();
1292+
}
1293+
else
1294+
{
1295+
beepNextEventMs = millis() + beepLengthMs;
1296+
beepState = BEEP_ON;
1297+
beepOn();
1298+
}
12441299
}
1300+
break;
12451301
}
12461302
}
12471303
}
@@ -1359,18 +1415,23 @@ void buttonCheckTask(void *e)
13591415

13601416
// The RTK Torch uses a shutdown IC configured to turn off ~3s
13611417
// Beep shortly before the shutdown IC takes over
1362-
else if (userBtn->pressedFor(2500))
1418+
else if (userBtn->pressedFor(2100))
13631419
{
1364-
// Beep if we are not locally compiled or a release candidate
1365-
if (ENABLE_DEVELOPER == false)
1366-
beepDurationMs(500); // Announce powering down
1367-
13681420
tickerStop(); // Stop controlling LEDs via ticker task
13691421

13701422
gnssStatusLedOn();
13711423
bluetoothLedOn();
1424+
1425+
// Beep if we are not locally compiled or a release candidate
1426+
if (ENABLE_DEVELOPER == false)
1427+
{
1428+
// Announce powering down
1429+
beepMultiple(3, 100, 50); // Number of beeps, length of beep ms, length of quiet ms
1430+
1431+
delay(500); //We will be shutting off during this delay but this prevents another beepMultiple() from firing
1432+
}
13721433
}
1373-
} // End productVariant == Torch
1434+
} // End productVariant == Torch
13741435
else // RTK EVK, RTK Facet v2, RTK Facet mosaic
13751436
{
13761437
if (systemState == STATE_SHUTDOWN)
@@ -1477,7 +1538,7 @@ void buttonCheckTask(void *e)
14771538
// requestChangeState(STATE_BASE_NOT_STARTED);
14781539
break;
14791540
} // End singleTap switch (systemState)
1480-
} // End singleTap
1541+
} // End singleTap
14811542
else if (doubleTap && (firstRoverStart == false) && (settings.disableSetupButton == false))
14821543
{
14831544
switch (systemState)
@@ -1516,8 +1577,8 @@ void buttonCheckTask(void *e)
15161577
// requestChangeState(STATE_BASE_NOT_STARTED);
15171578
break;
15181579
} // End doubleTap switch (systemState)
1519-
} // End doubleTap
1520-
} // End productVariant != Torch
1580+
} // End doubleTap
1581+
} // End productVariant != Torch
15211582

15221583
feedWdt();
15231584
taskYIELD();

Firmware/RTK_Everywhere/Tilt.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ void tiltUpdate()
141141
// Check to see if tilt compensation is active
142142
if (tiltSensor->isCorrecting())
143143
{
144-
beepDurationMs(2000); // Audibly indicate the start of tilt
144+
beepMultiple(2, 500, 500); //Number of beeps, length of beep ms, length of quiet ms
145145

146146
lastTiltBeepMs = millis();
147147

Firmware/RTK_Everywhere/menuGNSS.ino

Lines changed: 40 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -85,49 +85,41 @@ void menuGNSS()
8585

8686
systemPrintln("4) Set Constellations");
8787

88-
systemPrint("5) Toggle NTRIP Client: ");
88+
systemPrintf("5) Minimum elevation for a GNSS satellite to be used in fix (degrees): %d\r\n", settings.minElev);
89+
90+
systemPrintf("6) Minimum satellite signal level for navigation (dBHz): %d\r\n", gnssGetMinCno());
91+
92+
systemPrint("7) Toggle NTRIP Client: ");
8993
if (settings.enableNtripClient == true)
9094
systemPrintln("Enabled");
9195
else
9296
systemPrintln("Disabled");
9397

9498
if (settings.enableNtripClient == true)
9599
{
96-
systemPrint("6) Set Caster Address: ");
100+
systemPrint("8) Set Caster Address: ");
97101
systemPrintln(settings.ntripClient_CasterHost);
98102

99-
systemPrint("7) Set Caster Port: ");
103+
systemPrint("9) Set Caster Port: ");
100104
systemPrintln(settings.ntripClient_CasterPort);
101105

102-
systemPrint("8) Set Caster User Name: ");
106+
systemPrint("10) Set Caster User Name: ");
103107
systemPrintln(settings.ntripClient_CasterUser);
104108

105-
systemPrint("9) Set Caster User Password: ");
109+
systemPrint("11) Set Caster User Password: ");
106110
systemPrintln(settings.ntripClient_CasterUserPW);
107111

108-
systemPrint("10) Set Mountpoint: ");
112+
systemPrint("12) Set Mountpoint: ");
109113
systemPrintln(settings.ntripClient_MountPoint);
110114

111-
systemPrint("11) Set Mountpoint PW: ");
115+
systemPrint("13) Set Mountpoint PW: ");
112116
systemPrintln(settings.ntripClient_MountPointPW);
113117

114-
systemPrint("12) Toggle sending GGA Location to Caster: ");
118+
systemPrint("14) Toggle sending GGA Location to Caster: ");
115119
if (settings.ntripClient_TransmitGGA == true)
116120
systemPrintln("Enabled");
117121
else
118122
systemPrintln("Disabled");
119-
120-
systemPrintf("13) Minimum elevation for a GNSS satellite to be used in fix (degrees): %d\r\n",
121-
settings.minElev);
122-
123-
systemPrintf("14) Minimum satellite signal level for navigation (dBHz): %d\r\n", gnssGetMinCno());
124-
}
125-
else
126-
{
127-
systemPrintf("6) Minimum elevation for a GNSS satellite to be used in fix (degrees): %d\r\n",
128-
settings.minElev);
129-
130-
systemPrintf("7) Minimum satellite signal level for navigation (dBHz): %d\r\n", gnssGetMinCno());
131123
}
132124

133125
systemPrintln("x) Exit");
@@ -227,18 +219,39 @@ void menuGNSS()
227219
{
228220
gnssMenuConstellations();
229221
}
222+
230223
else if (incoming == 5)
224+
{
225+
// Arbitrary 90 degree max
226+
if (getNewSetting("Enter minimum elevation in degrees", 0, 90, &settings.minElev) == INPUT_RESPONSE_VALID)
227+
{
228+
gnssSetElevation(settings.minElev);
229+
}
230+
}
231+
else if (incoming == 6)
232+
{
233+
int minCNO = 0;
234+
// Arbitrary 90 dBHz max
235+
if (getNewSetting("Enter minimum satellite signal level for navigation in dBHz", 0, 90, &minCNO) ==
236+
INPUT_RESPONSE_VALID)
237+
{
238+
// We don't know which platform we are using so we cannot explicitly use the settings.minCNO_F9P, eg
239+
gnssSetMinCno(minCNO);
240+
}
241+
}
242+
243+
else if (incoming == 7)
231244
{
232245
settings.enableNtripClient ^= 1;
233246
restartRover = true;
234247
}
235-
else if ((incoming == 6) && settings.enableNtripClient == true)
248+
else if ((incoming == 8) && settings.enableNtripClient == true)
236249
{
237250
systemPrint("Enter new Caster Address: ");
238251
getUserInputString(settings.ntripClient_CasterHost, sizeof(settings.ntripClient_CasterHost));
239252
restartRover = true;
240253
}
241-
else if ((incoming == 7) && settings.enableNtripClient == true)
254+
else if ((incoming == 9) && settings.enableNtripClient == true)
242255
{
243256
// Arbitrary 99k max port #
244257
if (getNewSetting("Enter new Caster Port", 1, 99999, &settings.ntripClient_CasterPort) ==
@@ -247,56 +260,35 @@ void menuGNSS()
247260
restartRover = true;
248261
}
249262
}
250-
else if ((incoming == 8) && settings.enableNtripClient == true)
263+
else if ((incoming == 10) && settings.enableNtripClient == true)
251264
{
252265
systemPrintf("Enter user name for %s: ", settings.ntripClient_CasterHost);
253266
getUserInputString(settings.ntripClient_CasterUser, sizeof(settings.ntripClient_CasterUser));
254267
restartRover = true;
255268
}
256-
else if ((incoming == 9) && settings.enableNtripClient == true)
269+
else if ((incoming == 11) && settings.enableNtripClient == true)
257270
{
258271
systemPrintf("Enter user password for %s: ", settings.ntripClient_CasterHost);
259272
getUserInputString(settings.ntripClient_CasterUserPW, sizeof(settings.ntripClient_CasterUserPW));
260273
restartRover = true;
261274
}
262-
else if ((incoming == 10) && settings.enableNtripClient == true)
275+
else if ((incoming == 12) && settings.enableNtripClient == true)
263276
{
264277
systemPrint("Enter new Mount Point: ");
265278
getUserInputString(settings.ntripClient_MountPoint, sizeof(settings.ntripClient_MountPoint));
266279
restartRover = true;
267280
}
268-
else if ((incoming == 11) && settings.enableNtripClient == true)
281+
else if ((incoming == 13) && settings.enableNtripClient == true)
269282
{
270283
systemPrintf("Enter password for Mount Point %s: ", settings.ntripClient_MountPoint);
271284
getUserInputString(settings.ntripClient_MountPointPW, sizeof(settings.ntripClient_MountPointPW));
272285
restartRover = true;
273286
}
274-
else if ((incoming == 12) && settings.enableNtripClient == true)
287+
else if ((incoming == 14) && settings.enableNtripClient == true)
275288
{
276289
settings.ntripClient_TransmitGGA ^= 1;
277290
restartRover = true;
278291
}
279-
else if (((incoming == 13) && settings.enableNtripClient == true) ||
280-
(incoming == 6 && settings.enableNtripClient == false))
281-
{
282-
// Arbitrary 90 degree max
283-
if (getNewSetting("Enter minimum elevation in degrees", 0, 90, &settings.minElev) == INPUT_RESPONSE_VALID)
284-
{
285-
gnssSetElevation(settings.minElev);
286-
}
287-
}
288-
else if (((incoming == 14) && settings.enableNtripClient == true) ||
289-
(incoming == 7 && settings.enableNtripClient == false))
290-
{
291-
int minCNO = 0;
292-
// Arbitrary 90 dBHz max
293-
if (getNewSetting("Enter minimum satellite signal level for navigation in dBHz", 0, 90, &minCNO) ==
294-
INPUT_RESPONSE_VALID)
295-
{
296-
// We don't know which platform we are using so we cannot explicitly use the settings.minCNO_F9P, eg
297-
gnssSetMinCno(minCNO);
298-
}
299-
}
300292

301293
else if (incoming == INPUT_RESPONSE_GETNUMBER_EXIT)
302294
break;

0 commit comments

Comments
 (0)