Skip to content

Commit ba72661

Browse files
committed
Change the order of SystemState - keep Base contiguous
Add network updateMethod
1 parent 2552225 commit ba72661

File tree

5 files changed

+69
-60
lines changed

5 files changed

+69
-60
lines changed

Firmware/RTK_Everywhere/Display.ino

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,9 +346,9 @@ void displayUpdate()
346346
break;
347347

348348
case (STATE_BASE_CASTER_NOT_STARTED):
349+
case (STATE_BASE_ASSIST_NOT_STARTED):
349350
case (STATE_BASE_NOT_STARTED):
350351
case (STATE_BASE_CONFIG_WAIT):
351-
case (STATE_BASE_ASSIST_NOT_STARTED):
352352
displayBaseStart(0); // Show 'Base' while the system configures the Base
353353
break;
354354

@@ -1282,9 +1282,9 @@ void setModeIcon(std::vector<iconPropertyBlinking> *iconList)
12821282
break;
12831283

12841284
case (STATE_BASE_CASTER_NOT_STARTED):
1285+
case (STATE_BASE_ASSIST_NOT_STARTED):
12851286
case (STATE_BASE_NOT_STARTED):
12861287
case (STATE_BASE_CONFIG_WAIT):
1287-
case (STATE_BASE_ASSIST_NOT_STARTED):
12881288
// Do nothing. Static display shown during state change.
12891289
break;
12901290
case (STATE_BASE_TEMP_SETTLE): {

Firmware/RTK_Everywhere/Network.ino

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2455,11 +2455,14 @@ void networkUpdate()
24552455
}
24562456
}
24572457

2458-
// Update the WiFi state
2459-
wifiStationUpdate();
2460-
2461-
// Update Ethernet
2462-
ethernetUpdate();
2458+
// Walk the list of network priorities in descending order
2459+
for (priority = 0; priority < NETWORK_OFFLINE; priority++)
2460+
{
2461+
// Update the networks in order of priority
2462+
index = networkIndexTable[priority];
2463+
if (networkInterfaceTable[index].updateMethod)
2464+
networkInterfaceTable[index].updateMethod();
2465+
}
24632466

24642467
// Update the network services
24652468
// Start or stop mDNS

Firmware/RTK_Everywhere/States.ino

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,9 @@ void stateUpdate()
226226
// Note: this works when switching from Rover (e.g. with RTK Fix)
227227
// or when switching from Temporary Base (after Survey-In)
228228
case (STATE_BASE_ASSIST_NOT_STARTED): {
229+
RTK_MODE(RTK_MODE_BASE_FIXED);
230+
firstRoverStart = false; // If base is starting, no test menu, normal button use.
231+
229232
if (online.gnss == false)
230233
return;
231234

@@ -711,6 +714,8 @@ const char *getState(SystemState state, char *buffer)
711714
return "STATE_ROVER_RTK_FIX";
712715
case (STATE_BASE_CASTER_NOT_STARTED):
713716
return "STATE_BASE_CASTER_NOT_STARTED";
717+
case (STATE_BASE_ASSIST_NOT_STARTED):
718+
return "STATE_BASE_ASSIST_NOT_STARTED";
714719
case (STATE_BASE_NOT_STARTED):
715720
return "STATE_BASE_NOT_STARTED";
716721
case (STATE_BASE_CONFIG_WAIT):
@@ -725,8 +730,6 @@ const char *getState(SystemState state, char *buffer)
725730
return "STATE_BASE_FIXED_NOT_STARTED";
726731
case (STATE_BASE_FIXED_TRANSMITTING):
727732
return "STATE_BASE_FIXED_TRANSMITTING";
728-
case (STATE_BASE_ASSIST_NOT_STARTED):
729-
return "STATE_BASE_ASSIST_NOT_STARTED";
730733

731734
case (STATE_DISPLAY_SETUP):
732735
return "STATE_DISPLAY_SETUP";
@@ -858,7 +861,7 @@ bool inRoverMode()
858861

859862
bool inBaseMode()
860863
{
861-
if (systemState >= STATE_BASE_NOT_STARTED && systemState <= STATE_BASE_FIXED_TRANSMITTING)
864+
if (systemState >= STATE_BASE_CASTER_NOT_STARTED && systemState <= STATE_BASE_FIXED_TRANSMITTING)
862865
return (true);
863866
return (false);
864867
}

Firmware/RTK_Everywhere/Tasks.ino

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2253,14 +2253,15 @@ void buttonCheckTask(void *e)
22532253
case STATE_ROVER_FIX:
22542254
case STATE_ROVER_RTK_FLOAT:
22552255
case STATE_ROVER_RTK_FIX:
2256+
case STATE_BASE_CASTER_NOT_STARTED:
2257+
case STATE_BASE_ASSIST_NOT_STARTED:
22562258
case STATE_BASE_NOT_STARTED:
22572259
case STATE_BASE_CONFIG_WAIT:
22582260
case STATE_BASE_TEMP_SETTLE:
22592261
case STATE_BASE_TEMP_SURVEY_STARTED:
22602262
case STATE_BASE_TEMP_TRANSMITTING:
22612263
case STATE_BASE_FIXED_NOT_STARTED:
22622264
case STATE_BASE_FIXED_TRANSMITTING:
2263-
case STATE_BASE_ASSIST_NOT_STARTED:
22642265
case STATE_WEB_CONFIG_NOT_STARTED:
22652266
case STATE_WEB_CONFIG:
22662267
case STATE_ESPNOW_PAIRING_NOT_STARTED:

Firmware/RTK_Everywhere/settings.h

Lines changed: 51 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -95,38 +95,35 @@ typedef enum
9595
STATE_ROVER_RTK_FIX, // 5
9696

9797
STATE_BASE_CASTER_NOT_STARTED, // 6, Set override flag
98-
STATE_BASE_NOT_STARTED, // 7
99-
STATE_BASE_CONFIG_WAIT, // 8
100-
STATE_BASE_TEMP_SETTLE, // 9, User has indicated base, but current pos accuracy is too low
101-
STATE_BASE_TEMP_SURVEY_STARTED, // 10
102-
STATE_BASE_TEMP_TRANSMITTING, // 11
103-
STATE_BASE_FIXED_NOT_STARTED, // 12
104-
STATE_BASE_FIXED_TRANSMITTING, // 13
105-
106-
STATE_DISPLAY_SETUP, // 14
107-
STATE_WEB_CONFIG_NOT_STARTED, // 15
108-
STATE_WEB_CONFIG_WAIT_FOR_NETWORK, // 16
109-
STATE_WEB_CONFIG, // 17
110-
STATE_TEST, // 18
111-
STATE_TESTING, // 19
112-
STATE_PROFILE, // 20
113-
114-
STATE_KEYS_REQUESTED, // 21
115-
116-
STATE_ESPNOW_PAIRING_NOT_STARTED, // 22
117-
STATE_ESPNOW_PAIRING, // 23
118-
119-
STATE_NTPSERVER_NOT_STARTED, // 24
120-
STATE_NTPSERVER_NO_SYNC, // 25
121-
STATE_NTPSERVER_SYNC, // 26
122-
123-
STATE_SHUTDOWN, // 27
124-
125-
STATE_BASE_ASSIST_NOT_STARTED, // 28
126-
127-
// Add new states above this line to preserve the enum for settings.lastState
128-
129-
STATE_NOT_SET, // 28, Must be last on list
98+
STATE_BASE_ASSIST_NOT_STARTED, // 7
99+
STATE_BASE_NOT_STARTED, // 8
100+
STATE_BASE_CONFIG_WAIT, // 9
101+
STATE_BASE_TEMP_SETTLE, // 10, User has indicated base, but current pos accuracy is too low
102+
STATE_BASE_TEMP_SURVEY_STARTED, // 11
103+
STATE_BASE_TEMP_TRANSMITTING, // 12
104+
STATE_BASE_FIXED_NOT_STARTED, // 13
105+
STATE_BASE_FIXED_TRANSMITTING, // 14
106+
107+
STATE_DISPLAY_SETUP, // 15
108+
STATE_WEB_CONFIG_NOT_STARTED, // 16
109+
STATE_WEB_CONFIG_WAIT_FOR_NETWORK, // 17
110+
STATE_WEB_CONFIG, // 18
111+
STATE_TEST, // 19
112+
STATE_TESTING, // 20
113+
STATE_PROFILE, // 21
114+
115+
STATE_KEYS_REQUESTED, // 22
116+
117+
STATE_ESPNOW_PAIRING_NOT_STARTED, // 23
118+
STATE_ESPNOW_PAIRING, // 24
119+
120+
STATE_NTPSERVER_NOT_STARTED, // 25
121+
STATE_NTPSERVER_NO_SYNC, // 26
122+
STATE_NTPSERVER_SYNC, // 27
123+
124+
STATE_SHUTDOWN, // 28
125+
126+
STATE_NOT_SET, // 29, Must be last on list
130127
} SystemState;
131128
volatile SystemState systemState = STATE_NOT_SET;
132129
SystemState lastSystemState = STATE_NOT_SET;
@@ -2050,18 +2047,23 @@ extern NETWORK_POLL_SEQUENCE laraBootSequence[];
20502047
extern NETWORK_POLL_SEQUENCE laraOffSequence[];
20512048
extern NETWORK_POLL_SEQUENCE laraOnSequence[];
20522049

2050+
typedef void (* NETWORK_UPDATE_METHOD)();
2051+
extern void ethernetUpdate();
2052+
extern void wifiStationUpdate();
2053+
20532054
// networkInterfaceTable entry
20542055
typedef struct _NETWORK_TABLE_ENTRY
20552056
{
2056-
NetworkInterface * netif; // Network interface object address
2057-
bool mDNS; // Set true to use mDNS service
2058-
NetIndex_t index; // Table index, also default priority
2059-
uint8_t pdState; // Periodic display state value
2060-
NETWORK_POLL_SEQUENCE * boot; // Boot sequence, may be nullptr
2061-
NETWORK_POLL_SEQUENCE * start; // Start sequence (Off --> On), may be nullptr
2062-
NETWORK_POLL_SEQUENCE * stop; // Stop routine (On --> Off), may be nullptr
2063-
const char * name; // Name of the network interface
2064-
bool * present; // Address of present bool or nullptr if always available
2057+
NetworkInterface * netif; // Network interface object address
2058+
bool mDNS; // Set true to use mDNS service
2059+
NetIndex_t index; // Table index, also default priority
2060+
uint8_t pdState; // Periodic display state value
2061+
NETWORK_POLL_SEQUENCE * boot; // Boot sequence, may be nullptr
2062+
NETWORK_POLL_SEQUENCE * start; // Start sequence (Off --> On), may be nullptr
2063+
NETWORK_POLL_SEQUENCE * stop; // Stop routine (On --> Off), may be nullptr
2064+
const char * name; // Name of the network interface
2065+
bool * present; // Address of present bool or nullptr if always available
2066+
NETWORK_UPDATE_METHOD updateMethod; // Update method
20652067
} NETWORK_TABLE_ENTRY;
20662068

20672069
// List of networks in default priority order! These entries must match
@@ -2071,24 +2073,24 @@ typedef struct _NETWORK_TABLE_ENTRY
20712073
// as the priority drops to that level. The stop routine is called as the
20722074
// priority rises above that level. The priority will continue to fall or
20732075
// rise until a network is found that is online.
2074-
const NETWORK_TABLE_ENTRY networkInterfaceTable[] =
2075-
{ // Interface mDNS Index Periodic State Boot Sequence Start Sequence Stop Sequence Name Present
2076+
NETWORK_TABLE_ENTRY networkInterfaceTable[] =
2077+
{ // Interface mDNS Index Periodic State Boot Sequence Start Sequence Stop Sequence Name Present Update method
20762078
#ifdef COMPILE_ETHERNET
2077-
{&ETH, true, NETWORK_ETHERNET, PD_ETHERNET_STATE, nullptr, nullptr, nullptr, "Ethernet", &present.ethernet_ws5500},
2079+
{&ETH, true, NETWORK_ETHERNET, PD_ETHERNET_STATE, nullptr, nullptr, nullptr, "Ethernet", &present.ethernet_ws5500, ethernetUpdate},
20782080
#else
2079-
{nullptr, false, NETWORK_ETHERNET, PD_ETHERNET_STATE, nullptr, nullptr, nullptr, "Ethernet-NotCompiled", nullptr},
2081+
{nullptr, false, NETWORK_ETHERNET, PD_ETHERNET_STATE, nullptr, nullptr, nullptr, "Ethernet-NotCompiled", nullptr, nullptr},
20802082
#endif // COMPILE_ETHERNET
20812083

20822084
#ifdef COMPILE_WIFI
2083-
{&WiFi.STA, true, NETWORK_WIFI_STATION, PD_WIFI_STATE, nullptr, nullptr, nullptr, "WiFi Station", nullptr},
2085+
{&WiFi.STA, true, NETWORK_WIFI_STATION, PD_WIFI_STATE, nullptr, nullptr, nullptr, "WiFi Station", nullptr, wifiStationUpdate},
20842086
#else
2085-
{nullptr, false, NETWORK_WIFI_STATION, PD_WIFI_STATE, nullptr, nullptr, nullptr, "WiFi-NotCompiled", nullptr},
2087+
{nullptr, false, NETWORK_WIFI_STATION, PD_WIFI_STATE, nullptr, nullptr, nullptr, "WiFi-NotCompiled", nullptr, nullptr},
20862088
#endif // COMPILE_WIFI
20872089

20882090
#ifdef COMPILE_CELLULAR
2089-
{&PPP, false, NETWORK_CELLULAR, PD_CELLULAR_STATE, laraBootSequence, laraOnSequence, laraOffSequence, "Cellular", &present.cellular_lara},
2091+
{&PPP, false, NETWORK_CELLULAR, PD_CELLULAR_STATE, laraBootSequence, laraOnSequence, laraOffSequence, "Cellular", &present.cellular_lara, nullptr},
20902092
#else
2091-
{nullptr, false, NETWORK_CELLULAR, PD_CELLULAR_STATE, nullptr, nullptr, nullptr, "Cellular-NotCompiled", nullptr, },
2093+
{nullptr, false, NETWORK_CELLULAR, PD_CELLULAR_STATE, nullptr, nullptr, nullptr, "Cellular-NotCompiled", nullptr, nullptr},
20922094
#endif // COMPILE_CELLULAR
20932095
};
20942096
const int networkInterfaceTableEntries = sizeof(networkInterfaceTable) / sizeof(networkInterfaceTable[0]);

0 commit comments

Comments
 (0)