Skip to content

Commit a0d1e88

Browse files
authored
Merge pull request #67 from sparkfun/release_candidate
v1.8
2 parents 694c6e8 + d7c70f1 commit a0d1e88

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+2268
-2161
lines changed

Firmware/RTK_Surveyor/AP-Config/index.html

Lines changed: 989 additions & 1017 deletions
Large diffs are not rendered by default.

Firmware/RTK_Surveyor/Display.ino

Lines changed: 116 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -325,42 +325,97 @@ void paintBaseState()
325325
systemState == STATE_ROVER_RTK_FLOAT ||
326326
systemState == STATE_ROVER_RTK_FIX)
327327
{
328-
//Normal rover for ZED-F9P, fusion rover for ZED-F9R
329-
if (zedModuleType == PLATFORM_F9P)
328+
//Display icon associated with current Dynamic Model
329+
switch (settings.dynamicModel)
330330
{
331-
oled.drawIcon(27, 3, Rover_Width, Rover_Height, Rover, sizeof(Rover), true);
332-
}
333-
else if (zedModuleType == PLATFORM_F9R)
334-
{
335-
//Blink fusion rover until we have calibration
336-
if (i2cGNSS.packetUBXESFSTATUS->data.fusionMode == 0) //Initializing
337-
{
338-
//Blink Fusion Rover icon until sensor calibration is complete
339-
if (millis() - lastBaseIconUpdate > 500)
331+
case (DYN_MODEL_PORTABLE):
332+
{
333+
oled.drawIcon(27, 0, DynamicModel_Width, DynamicModel_Height, DynamicModel_1_Portable, sizeof(DynamicModel_1_Portable), true);
334+
}
335+
break;
336+
case (DYN_MODEL_STATIONARY):
340337
{
341-
lastBaseIconUpdate = millis();
342-
if (baseIconDisplayed == false)
338+
oled.drawIcon(27, 0, DynamicModel_Width, DynamicModel_Height, DynamicModel_2_Stationary, sizeof(DynamicModel_2_Stationary), true);
339+
}
340+
break;
341+
case (DYN_MODEL_PEDESTRIAN):
342+
{
343+
oled.drawIcon(27, 0, DynamicModel_Width, DynamicModel_Height, DynamicModel_3_Pedestrian, sizeof(DynamicModel_3_Pedestrian), true);
344+
}
345+
break;
346+
case (DYN_MODEL_AUTOMOTIVE):
347+
{
348+
//Normal rover for ZED-F9P, fusion rover for ZED-F9R
349+
if (zedModuleType == PLATFORM_F9P)
343350
{
344-
baseIconDisplayed = true;
345-
346-
//Draw the icon
347-
oled.drawIcon(27, 2, Rover_Fusion_Width, Rover_Fusion_Height, Rover_Fusion, sizeof(Rover_Fusion), true);
351+
oled.drawIcon(27, 0, DynamicModel_Width, DynamicModel_Height, DynamicModel_4_Automotive, sizeof(DynamicModel_4_Automotive), true);
352+
}
353+
else if (zedModuleType == PLATFORM_F9R)
354+
{
355+
//Blink fusion rover until we have calibration
356+
if (i2cGNSS.packetUBXESFSTATUS->data.fusionMode == 0) //Initializing
357+
{
358+
//Blink Fusion Rover icon until sensor calibration is complete
359+
if (millis() - lastBaseIconUpdate > 500)
360+
{
361+
lastBaseIconUpdate = millis();
362+
if (baseIconDisplayed == false)
363+
{
364+
baseIconDisplayed = true;
365+
366+
//Draw the icon
367+
oled.drawIcon(27, 2, Rover_Fusion_Width, Rover_Fusion_Height, Rover_Fusion, sizeof(Rover_Fusion), true);
368+
}
369+
else
370+
baseIconDisplayed = false;
371+
}
372+
}
373+
else if (i2cGNSS.packetUBXESFSTATUS->data.fusionMode == 1) //Calibrated
374+
{
375+
//Solid fusion rover
376+
oled.drawIcon(27, 2, Rover_Fusion_Width, Rover_Fusion_Height, Rover_Fusion, sizeof(Rover_Fusion), true);
377+
}
378+
else if (i2cGNSS.packetUBXESFSTATUS->data.fusionMode == 2 || i2cGNSS.packetUBXESFSTATUS->data.fusionMode == 3) //Suspended or disabled
379+
{
380+
//Empty rover
381+
oled.drawIcon(27, 2, Rover_Fusion_Empty_Width, Rover_Fusion_Empty_Height, Rover_Fusion_Empty, sizeof(Rover_Fusion_Empty), true);
382+
}
348383
}
349-
else
350-
baseIconDisplayed = false;
384+
351385
}
352-
}
353-
else if (i2cGNSS.packetUBXESFSTATUS->data.fusionMode == 1) //Calibrated
354-
{
355-
//Solid fusion rover
356-
oled.drawIcon(27, 2, Rover_Fusion_Width, Rover_Fusion_Height, Rover_Fusion, sizeof(Rover_Fusion), true);
357-
}
358-
else if (i2cGNSS.packetUBXESFSTATUS->data.fusionMode == 2 || i2cGNSS.packetUBXESFSTATUS->data.fusionMode == 3) //Suspended or disabled
359-
{
360-
//Empty rover
361-
oled.drawIcon(27, 2, Rover_Fusion_Empty_Width, Rover_Fusion_Empty_Height, Rover_Fusion_Empty, sizeof(Rover_Fusion_Empty), true);
362-
}
386+
break;
387+
case (DYN_MODEL_SEA):
388+
{
389+
oled.drawIcon(27, 0, DynamicModel_Width, DynamicModel_Height, DynamicModel_5_Sea, sizeof(DynamicModel_5_Sea), true);
390+
}
391+
break;
392+
case (DYN_MODEL_AIRBORNE1g):
393+
{
394+
oled.drawIcon(27, 0, DynamicModel_Width, DynamicModel_Height, DynamicModel_6_Airborne1g, sizeof(DynamicModel_6_Airborne1g), true);
395+
}
396+
break;
397+
case (DYN_MODEL_AIRBORNE2g):
398+
{
399+
oled.drawIcon(27, 0, DynamicModel_Width, DynamicModel_Height, DynamicModel_7_Airborne2g, sizeof(DynamicModel_7_Airborne2g), true);
400+
}
401+
break;
402+
case (DYN_MODEL_AIRBORNE4g):
403+
{
404+
oled.drawIcon(27, 0, DynamicModel_Width, DynamicModel_Height, DynamicModel_8_Airborne4g, sizeof(DynamicModel_8_Airborne4g), true);
405+
}
406+
break;
407+
case (DYN_MODEL_WRIST):
408+
{
409+
oled.drawIcon(27, 0, DynamicModel_Width, DynamicModel_Height, DynamicModel_9_Wrist, sizeof(DynamicModel_9_Wrist), true);
410+
}
411+
break;
412+
case (DYN_MODEL_BIKE):
413+
{
414+
oled.drawIcon(27, 0, DynamicModel_Width, DynamicModel_Height, DynamicModel_10_Bike, sizeof(DynamicModel_10_Bike), true);
415+
}
416+
break;
363417
}
418+
364419
}
365420
else if (systemState == STATE_BASE_TEMP_SETTLE ||
366421
systemState == STATE_BASE_TEMP_SURVEY_STARTED //Turn on base icon solid (blink crosshair in paintHorzAcc)
@@ -412,7 +467,7 @@ void paintSIV()
412467
if (i2cGNSS.getFixType() == 3 || i2cGNSS.getFixType() == 4 || i2cGNSS.getFixType() == 5) //3D, 3D+DR, or Time
413468
{
414469
//Fix, turn on icon
415-
oled.drawIcon(2, 35, Antenna_Width, Antenna_Height, Antenna, sizeof(Antenna), true);
470+
oled.drawIcon(2, 35, SIV_Antenna_Width, SIV_Antenna_Height, SIV_Antenna, sizeof(SIV_Antenna), true);
416471
}
417472
else
418473
{
@@ -425,7 +480,7 @@ void paintSIV()
425480
satelliteDishIconDisplayed = true;
426481

427482
//Draw the icon
428-
oled.drawIcon(2, 35, Antenna_Width, Antenna_Height, Antenna, sizeof(Antenna), true);
483+
oled.drawIcon(2, 35, SIV_Antenna_Width, SIV_Antenna_Height, SIV_Antenna, sizeof(SIV_Antenna), true);
429484
}
430485
else
431486
satelliteDishIconDisplayed = false;
@@ -1316,12 +1371,15 @@ void paintSystemTest()
13161371
else
13171372
oled.print(F("FAIL"));
13181373

1319-
oled.setCursor(xOffset, yOffset + (1 * charHeight) ); //x, y
1320-
oled.print(F("Accel:"));
1321-
if (online.accelerometer == true)
1322-
oled.print(F("OK"));
1323-
else
1324-
oled.print(F("FAIL"));
1374+
if (productVariant == RTK_EXPRESS || productVariant == RTK_EXPRESS_PLUS || productVariant == RTK_FACET)
1375+
{
1376+
oled.setCursor(xOffset, yOffset + (1 * charHeight) ); //x, y
1377+
oled.print(F("Accel:"));
1378+
if (online.accelerometer == true)
1379+
oled.print(F("OK"));
1380+
else
1381+
oled.print(F("FAIL"));
1382+
}
13251383

13261384
oled.setCursor(xOffset, yOffset + (2 * charHeight) ); //x, y
13271385
oled.print(F("Batt:"));
@@ -1334,7 +1392,7 @@ void paintSystemTest()
13341392
oled.setCursor(xOffset, yOffset + (3 * charHeight) ); //x, y
13351393
oled.print(F("GNSS:"));
13361394
int satsInView = i2cGNSS.getSIV();
1337-
if (online.gnss == true && satsInView > 8)
1395+
if (online.gnss == true && satsInView > 5)
13381396
{
13391397
oled.print(F("OK"));
13401398
oled.print(F("/"));
@@ -1343,38 +1401,38 @@ void paintSystemTest()
13431401
else
13441402
oled.print(F("FAIL"));
13451403

1346-
oled.setCursor(xOffset, yOffset + (4 * charHeight) ); //x, y
1347-
oled.print(F("Mux:"));
1404+
if (productVariant == RTK_EXPRESS || productVariant == RTK_EXPRESS_PLUS || productVariant == RTK_FACET)
1405+
{
1406+
oled.setCursor(xOffset, yOffset + (4 * charHeight) ); //x, y
1407+
oled.print(F("Mux:"));
13481408

1349-
//Set mux to channel 3 and toggle pin and verify with loop back jumper wire inserted by test technician
1409+
//Set mux to channel 3 and toggle pin and verify with loop back jumper wire inserted by test technician
13501410

1351-
setMuxport(MUX_ADC_DAC); //Set mux to DAC so we can toggle back/forth
1352-
pinMode(pin_dac26, OUTPUT);
1353-
pinMode(pin_adc39, INPUT_PULLUP);
1411+
setMuxport(MUX_ADC_DAC); //Set mux to DAC so we can toggle back/forth
1412+
pinMode(pin_dac26, OUTPUT);
1413+
pinMode(pin_adc39, INPUT_PULLUP);
13541414

1355-
digitalWrite(pin_dac26, HIGH);
1356-
if (digitalRead(pin_adc39) == HIGH)
1357-
{
1358-
digitalWrite(pin_dac26, LOW);
1359-
if (digitalRead(pin_adc39) == LOW)
1360-
oled.print(F("OK"));
1415+
digitalWrite(pin_dac26, HIGH);
1416+
if (digitalRead(pin_adc39) == HIGH)
1417+
{
1418+
digitalWrite(pin_dac26, LOW);
1419+
if (digitalRead(pin_adc39) == LOW)
1420+
oled.print(F("OK"));
1421+
else
1422+
oled.print(F("FAIL"));
1423+
}
13611424
else
13621425
oled.print(F("FAIL"));
13631426
}
1364-
else
1365-
oled.print(F("FAIL"));
13661427

13671428
//Display MAC address
13681429
oled.setCursor(xOffset, yOffset + (5 * charHeight) ); //x, y
13691430
oled.print(macAddress);
13701431
oled.print(":");
1371-
if (incomingBTTest == 0)
1432+
if (zedUartPassed == false)
13721433
oled.print(F("FAIL"));
13731434
else
1374-
{
1375-
oled.write(incomingBTTest);
1376-
oled.print(F("-OK"));
1377-
}
1435+
oled.print(F("OK"));
13781436
}
13791437
}
13801438

Firmware/RTK_Surveyor/Form.ino

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -78,21 +78,21 @@ void startConfigAP()
7878
ws.onEvent(onWsEvent);
7979
server.addHandler(&ws);
8080

81-
// * index.html (not gz'd)
82-
// * favicon.ico
83-
84-
// * /src/bootstrap.bundle.min.js - Needed for popper
85-
// * /src/bootstrap.min.css
86-
// * /src/bootstrap.min.js
87-
// * /src/jquery-3.6.0.min.js
88-
// * /src/main.js (not gz'd)
89-
// * /src/rtk-setup.png
90-
// * /src/style.css
91-
92-
// * /src/fonts/icomoon.eot
93-
// * /src/fonts/icomoon.svg
94-
// * /src/fonts/icomoon.ttf
95-
// * /src/fonts/icomoon.woof
81+
// * index.html (not gz'd)
82+
// * favicon.ico
83+
84+
// * /src/bootstrap.bundle.min.js - Needed for popper
85+
// * /src/bootstrap.min.css
86+
// * /src/bootstrap.min.js
87+
// * /src/jquery-3.6.0.min.js
88+
// * /src/main.js (not gz'd)
89+
// * /src/rtk-setup.png
90+
// * /src/style.css
91+
92+
// * /src/fonts/icomoon.eot
93+
// * /src/fonts/icomoon.svg
94+
// * /src/fonts/icomoon.ttf
95+
// * /src/fonts/icomoon.woof
9696

9797
server.on("/", HTTP_GET, [](AsyncWebServerRequest * request) {
9898
request->send_P(200, "text/html", index_html);
@@ -168,30 +168,27 @@ void startConfigAP()
168168
request->send(response);
169169
});
170170

171-
172171
//Handler for the /update form POST
173-
server.on("/upload", HTTP_POST, [](AsyncWebServerRequest *request){
174-
request->send(200);
175-
}, handleFirmwareFileUpload);
172+
server.on("/upload", HTTP_POST, [](AsyncWebServerRequest * request) {
173+
request->send(200);
174+
}, handleFirmwareFileUpload);
176175

177176
server.begin();
178177
#endif
179178

180179
radioState = WIFI_ON_NOCONNECTION;
181-
btLEDTask.detach(); //Increase BT LED blinker task rate
182-
btLEDTask.attach(btLEDTaskPace33Hz, updateBTled); //Rate in seconds, callback
183180
}
184181

185182
//Handler for firmware file upload
186183
#ifdef COMPILE_WIFI
187184
static void handleFirmwareFileUpload(AsyncWebServerRequest *request, String fileName, size_t index, uint8_t *data, size_t len, bool final)
188185
{
189-
if(online.microSD == false)
186+
if (online.microSD == false)
190187
{
191188
Serial.println(F("No SD card available"));
192189
return;
193190
}
194-
191+
195192
//Attempt to write to file system. This avoids collisions with file writing in F9PSerialReadTask()
196193
if (xSemaphoreTake(xFATSemaphore, fatSemaphore_longWait_ms) != pdPASS) {
197194
Serial.println(F("Failed to get file system lock on firmware file"));
@@ -240,8 +237,6 @@ static void handleFirmwareFileUpload(AsyncWebServerRequest *request, String file
240237
}
241238

242239
xSemaphoreGive(xFATSemaphore);
243-
244-
245240
}
246241
#endif
247242

@@ -433,7 +428,10 @@ void updateSettingWithValue(const char *settingName, const char* settingValueStr
433428

434429
//Special actions
435430
else if (strcmp(settingName, "firmwareFileName") == 0)
431+
{
436432
updateFromSD(settingValueStr);
433+
requestChangeState(STATE_ROVER_NOT_STARTED); //If update failed, return to Rover mode.
434+
}
437435
else if (strcmp(settingName, "factoryDefaultReset") == 0)
438436
factoryReset();
439437
else if (strcmp(settingName, "exitToRoverMode") == 0)

0 commit comments

Comments
 (0)