mirror of
https://github.com/daveallie/crosspoint-reader.git
synced 2026-02-07 08:07:40 +03:00
feature: adding a default wifi option
This commit is contained in:
parent
cd1a441d2b
commit
145c7338a9
@ -260,7 +260,6 @@ bool WifiCredentialStore::connectToDefaultWifi(int timeoutMs) const {
|
|||||||
void WifiCredentialStore::ensureWifiConnected(ActivityWithSubactivity& activity, GfxRenderer& renderer,
|
void WifiCredentialStore::ensureWifiConnected(ActivityWithSubactivity& activity, GfxRenderer& renderer,
|
||||||
MappedInputManager& mappedInput, const std::function<void()>& onSuccess,
|
MappedInputManager& mappedInput, const std::function<void()>& onSuccess,
|
||||||
const std::function<void()>& onCancel, int timeoutMs) {
|
const std::function<void()>& onCancel, int timeoutMs) {
|
||||||
|
|
||||||
if (WiFi.status() == WL_CONNECTED) {
|
if (WiFi.status() == WL_CONNECTED) {
|
||||||
onSuccess();
|
onSuccess();
|
||||||
return;
|
return;
|
||||||
@ -276,7 +275,8 @@ void WifiCredentialStore::ensureWifiConnected(ActivityWithSubactivity& activity,
|
|||||||
|
|
||||||
// Auto-connect failed - show WiFi selection list
|
// Auto-connect failed - show WiFi selection list
|
||||||
Serial.printf("[%lu] [WCS] Auto-connect failed, showing WiFi selection\n", millis());
|
Serial.printf("[%lu] [WCS] Auto-connect failed, showing WiFi selection\n", millis());
|
||||||
activity.enterNewActivity(new WifiSelectionActivity(renderer, mappedInput, [&activity, onSuccess, onCancel](bool connected) {
|
activity.enterNewActivity(
|
||||||
|
new WifiSelectionActivity(renderer, mappedInput, [&activity, onSuccess, onCancel](bool connected) {
|
||||||
activity.exitActivity();
|
activity.exitActivity();
|
||||||
if (connected) {
|
if (connected) {
|
||||||
onSuccess();
|
onSuccess();
|
||||||
|
|||||||
@ -382,7 +382,5 @@ void OpdsBookBrowserActivity::checkAndConnectWifi() {
|
|||||||
updateRequired = true;
|
updateRequired = true;
|
||||||
fetchFeed(currentPath);
|
fetchFeed(currentPath);
|
||||||
},
|
},
|
||||||
[this]() {
|
[this]() { onGoHome(); });
|
||||||
onGoHome();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -348,7 +348,7 @@ void WifiSelectionActivity::loop() {
|
|||||||
displaySetDefaultPrompt();
|
displaySetDefaultPrompt();
|
||||||
}
|
}
|
||||||
onComplete(true);
|
onComplete(true);
|
||||||
}else if (mappedInput.wasPressed(MappedInputManager::Button::Back)) {
|
} else if (mappedInput.wasPressed(MappedInputManager::Button::Back)) {
|
||||||
// Skip saving, complete anyway
|
// Skip saving, complete anyway
|
||||||
onComplete(true);
|
onComplete(true);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -104,9 +104,9 @@ class WifiSelectionActivity final : public ActivityWithSubactivity {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
explicit WifiSelectionActivity(GfxRenderer& renderer, MappedInputManager& mappedInput,
|
explicit WifiSelectionActivity(GfxRenderer& renderer, MappedInputManager& mappedInput,
|
||||||
const std::function<void(bool connected)>& onComplete,
|
const std::function<void(bool connected)>& onComplete, bool fromSettingsScreen = false)
|
||||||
bool fromSettingsScreen = false)
|
: ActivityWithSubactivity("WifiSelection", renderer, mappedInput),
|
||||||
: ActivityWithSubactivity("WifiSelection", renderer, mappedInput), onComplete(onComplete),
|
onComplete(onComplete),
|
||||||
fromSettingsScreen(fromSettingsScreen) {}
|
fromSettingsScreen(fromSettingsScreen) {}
|
||||||
void onEnter() override;
|
void onEnter() override;
|
||||||
void onExit() override;
|
void onExit() override;
|
||||||
|
|||||||
@ -12,7 +12,7 @@ namespace {
|
|||||||
constexpr int PAGE_ITEMS = 23;
|
constexpr int PAGE_ITEMS = 23;
|
||||||
constexpr int SKIP_PAGE_MS = 700;
|
constexpr int SKIP_PAGE_MS = 700;
|
||||||
constexpr unsigned long IGNORE_INPUT_MS = 300;
|
constexpr unsigned long IGNORE_INPUT_MS = 300;
|
||||||
}
|
} // namespace
|
||||||
|
|
||||||
void WifiConnectionsActivity::taskTrampoline(void* param) {
|
void WifiConnectionsActivity::taskTrampoline(void* param) {
|
||||||
auto* self = static_cast<WifiConnectionsActivity*>(param);
|
auto* self = static_cast<WifiConnectionsActivity*>(param);
|
||||||
@ -32,12 +32,7 @@ void WifiConnectionsActivity::onEnter() {
|
|||||||
|
|
||||||
WIFI_STORE.loadFromFile();
|
WIFI_STORE.loadFromFile();
|
||||||
|
|
||||||
xTaskCreate(&WifiConnectionsActivity::taskTrampoline, "WifiConnectionsTask",
|
xTaskCreate(&WifiConnectionsActivity::taskTrampoline, "WifiConnectionsTask", 4096, this, 1, &displayTaskHandle);
|
||||||
4096,
|
|
||||||
this,
|
|
||||||
1,
|
|
||||||
&displayTaskHandle
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void WifiConnectionsActivity::onExit() {
|
void WifiConnectionsActivity::onExit() {
|
||||||
@ -113,13 +108,16 @@ void WifiConnectionsActivity::loop() {
|
|||||||
// "Add new connection" selected - launch WiFi selection
|
// "Add new connection" selected - launch WiFi selection
|
||||||
xSemaphoreTake(renderingMutex, portMAX_DELAY);
|
xSemaphoreTake(renderingMutex, portMAX_DELAY);
|
||||||
exitActivity();
|
exitActivity();
|
||||||
enterNewActivity(new WifiSelectionActivity(renderer, mappedInput, [this](bool connected) {
|
enterNewActivity(new WifiSelectionActivity(
|
||||||
|
renderer, mappedInput,
|
||||||
|
[this](bool connected) {
|
||||||
// Reload credentials after WiFi selection
|
// Reload credentials after WiFi selection
|
||||||
WIFI_STORE.loadFromFile();
|
WIFI_STORE.loadFromFile();
|
||||||
exitActivity();
|
exitActivity();
|
||||||
enterTime = millis(); // Reset enter time to ignore input after subactivity exits
|
enterTime = millis(); // Reset enter time to ignore input after subactivity exits
|
||||||
updateRequired = true;
|
updateRequired = true;
|
||||||
}, true)); // true = fromSettingsScreen (always save password and disconnect after)
|
},
|
||||||
|
true)); // true = fromSettingsScreen (always save password and disconnect after)
|
||||||
xSemaphoreGive(renderingMutex);
|
xSemaphoreGive(renderingMutex);
|
||||||
} else {
|
} else {
|
||||||
// Regular credential selected
|
// Regular credential selected
|
||||||
@ -231,8 +229,7 @@ void WifiConnectionsActivity::render() {
|
|||||||
const std::string currentDefault = WIFI_STORE.getDefaultSSID();
|
const std::string currentDefault = WIFI_STORE.getDefaultSSID();
|
||||||
const bool isDefault = (selectedNetwork == currentDefault);
|
const bool isDefault = (selectedNetwork == currentDefault);
|
||||||
|
|
||||||
const char* defaultText = settingsSelection == 0
|
const char* defaultText = settingsSelection == 0 ? (isDefault ? "> Remove Default" : "> Set Default")
|
||||||
? (isDefault ? "> Remove Default" : "> Set Default")
|
|
||||||
: (isDefault ? " Remove Default" : " Set Default");
|
: (isDefault ? " Remove Default" : " Set Default");
|
||||||
const char* deleteText = settingsSelection == 1 ? "> Delete" : " Delete";
|
const char* deleteText = settingsSelection == 1 ? "> Delete" : " Delete";
|
||||||
renderer.drawCenteredText(UI_10_FONT_ID, centerY + 20, defaultText);
|
renderer.drawCenteredText(UI_10_FONT_ID, centerY + 20, defaultText);
|
||||||
@ -268,4 +265,3 @@ void WifiConnectionsActivity::render() {
|
|||||||
|
|
||||||
renderer.displayBuffer();
|
renderer.displayBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -23,10 +23,7 @@ class WifiConnectionsActivity final : public ActivityWithSubactivity {
|
|||||||
void loop() override;
|
void loop() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum class State {
|
enum class State { LIST, SETTINGS_MENU };
|
||||||
LIST,
|
|
||||||
SETTINGS_MENU
|
|
||||||
};
|
|
||||||
|
|
||||||
TaskHandle_t displayTaskHandle = nullptr;
|
TaskHandle_t displayTaskHandle = nullptr;
|
||||||
SemaphoreHandle_t renderingMutex = nullptr;
|
SemaphoreHandle_t renderingMutex = nullptr;
|
||||||
@ -47,4 +44,3 @@ class WifiConnectionsActivity final : public ActivityWithSubactivity {
|
|||||||
void deleteNetwork();
|
void deleteNetwork();
|
||||||
void cancelSettings();
|
void cancelSettings();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user