@@ -399,6 +399,25 @@ void networkDisplayIpAddress(uint8_t networkType)
399
399
}
400
400
}
401
401
402
+ // ----------------------------------------
403
+ // Display the network users
404
+ // ----------------------------------------
405
+ void networkDisplayUsers (NETWORK_USER users)
406
+ {
407
+ uint8_t userNumber = 0 ;
408
+ uint32_t mask;
409
+
410
+ while (users)
411
+ {
412
+ mask = 1 << userNumber;
413
+ if (users & mask)
414
+ {
415
+ users &= ~mask;
416
+ systemPrintf (" 0x%08x: %s\r\n " , mask, networkUserToString (userNumber));
417
+ }
418
+ }
419
+ }
420
+
402
421
// ----------------------------------------
403
422
// Get the network type
404
423
// ----------------------------------------
@@ -713,7 +732,7 @@ void networkSetState(NETWORK_DATA *network, byte newState)
713
732
// Display the network state
714
733
systemPrint (" Network State: " );
715
734
if (newState != network->state )
716
- systemPrintf (" %s --> " , networkState[ network->state ] );
735
+ systemPrintf (" %s --> " , networkStateToString ( network->state ) );
717
736
else
718
737
systemPrint (" *" );
719
738
@@ -724,7 +743,7 @@ void networkSetState(NETWORK_DATA *network, byte newState)
724
743
reportFatalError (" Unknown network layer state" );
725
744
}
726
745
else
727
- systemPrintf (" %s\r\n " , networkState[ newState] );
746
+ systemPrintf (" %s\r\n " , networkStateToString ( newState) );
728
747
}
729
748
730
749
// Validate the network state
@@ -788,6 +807,42 @@ void networkStart(uint8_t networkType)
788
807
}
789
808
}
790
809
810
+ // ----------------------------------------
811
+ // Translate the network state into a string
812
+ // ----------------------------------------
813
+ const char * networkStateToString (uint8_t state)
814
+ {
815
+ if (state >= networkStateEntries)
816
+ return " Unknown" ;
817
+ return networkState[state];
818
+ }
819
+
820
+ // ----------------------------------------
821
+ // Display the network status
822
+ // ----------------------------------------
823
+ void networkStatus (uint8_t networkType)
824
+ {
825
+ NETWORK_DATA *network;
826
+
827
+ // Get the network
828
+ network = &networkData;
829
+
830
+ // Display the network status
831
+ systemPrintf (" requestedNetwork: %d (%s)\r\n " , network->requestedNetwork ,
832
+ networkTypeToString (network->requestedNetwork ));
833
+ systemPrintf (" type: %d (%s)\r\n " , network->type , networkTypeToString (network->type ));
834
+ systemPrintf (" activeUsers: 0x%08x\r\n " , network->activeUsers );
835
+ networkDisplayUsers (network->activeUsers );
836
+ systemPrintf (" userOpens: 0x%08x\r\n " , network->userOpens );
837
+ networkDisplayUsers (network->userOpens );
838
+ systemPrintf (" connectionAttempt: %d\r\n " , network->connectionAttempt );
839
+ systemPrintf (" restart: %s\r\n " , network->restart ? " true" : " false" );
840
+ systemPrintf (" shutdown: %s\r\n " , network->shutdown ? " true" : " false" );
841
+ systemPrintf (" state: %d (%s)\r\n " , network->state , networkStateToString (network->state ));
842
+ systemPrintf (" timeout: %d\r\n " , network->timeout );
843
+ systemPrintf (" timerStart: %d\r\n " , network->timerStart );
844
+ }
845
+
791
846
// ----------------------------------------
792
847
// Stop the network
793
848
// ----------------------------------------
@@ -967,6 +1022,16 @@ uint8_t networkTranslateNetworkType(uint8_t networkType, bool translateActive)
967
1022
return newNetworkType;
968
1023
}
969
1024
1025
+ // ----------------------------------------
1026
+ // Translate type into a string
1027
+ // ----------------------------------------
1028
+ const char * networkTypeToString (uint8_t type)
1029
+ {
1030
+ if (type >= networkNameEntries)
1031
+ return " Unknown" ;
1032
+ return networkName[type];
1033
+ }
1034
+
970
1035
// ----------------------------------------
971
1036
// Update the network device state
972
1037
// ----------------------------------------
@@ -1016,17 +1081,39 @@ void networkTypeUpdate(uint8_t networkType)
1016
1081
// Delay before starting the network
1017
1082
else if ((millis () - network->timerStart ) >= network->timeout )
1018
1083
{
1019
- // Start the network
1020
- network->type = networkTranslateNetworkType (network->requestedNetwork , true );
1084
+ // Determine the network type
1085
+ uint8_t type = networkTranslateNetworkType (network->requestedNetwork , true );
1086
+
1087
+ // Verify that WiFi is configured properly
1088
+ if (network->type == NETWORK_TYPE_WIFI)
1089
+ {
1090
+ // Verify that at least one SSID is available
1091
+ if (!wifiNetworkCount ())
1092
+ {
1093
+ // Display the SSID error message
1094
+ systemPrintln (" ERROR: Please enter at least one SSID before using WiFi" );
1095
+ displayNoSSIDs (2000 );
1096
+
1097
+ // Restart the delay and try again
1098
+ network->timerStart = millis ();
1099
+ network->timeout = NETWORK_CONNECTION_TIMEOUT;
1100
+ break ;
1101
+ }
1102
+ }
1103
+
1104
+ // Display the network type change
1105
+ network->type = type;
1021
1106
if (settings.debugNetworkLayer && (network->type != network->requestedNetwork ))
1022
- systemPrintf (" networkTypeUpdate, network->type: %s --> %s\r\n " , networkName[ network->requestedNetwork ] ,
1107
+ systemPrintf (" networkTypeUpdate, network->type: %s --> %s\r\n " , networkTypeToString ( network->requestedNetwork ) ,
1023
1108
networkName[network->type ]);
1024
1109
if (settings.debugNetworkLayer )
1025
1110
systemPrintf (" networkTypeUpdate, network->requestedNetwork: %s --> %s\r\n " ,
1026
- networkName[network->requestedNetwork ], networkName[ network->type ] );
1111
+ networkName[network->requestedNetwork ], networkTypeToString ( network->type ) );
1027
1112
network->requestedNetwork = NETWORK_TYPE_ACTIVE;
1028
1113
if (settings.debugNetworkLayer )
1029
- systemPrintf (" Network starting %s\r\n " , networkName[network->type ]);
1114
+ systemPrintf (" Network starting %s\r\n " , networkTypeToString (network->type ));
1115
+
1116
+ // Start the network
1030
1117
if (network->type == NETWORK_TYPE_WIFI)
1031
1118
wifiStart ();
1032
1119
network->timerStart = millis ();
@@ -1267,7 +1354,19 @@ bool networkUserOpen(uint8_t user, uint8_t networkType)
1267
1354
return false ;
1268
1355
}
1269
1356
1357
+ // ----------------------------------------
1358
+ // Translate user into a string
1359
+ // ----------------------------------------
1360
+ const char * networkUserToString (uint8_t userNumber)
1361
+ {
1362
+ if (userNumber >= networkUserEntries)
1363
+ return " Unknown" ;
1364
+ return networkUser[userNumber];
1365
+ }
1366
+
1367
+ // ----------------------------------------
1270
1368
// Verify the network layer tables
1369
+ // ----------------------------------------
1271
1370
void networkVerifyTables ()
1272
1371
{
1273
1372
// Verify the table lengths
0 commit comments