Added basis for firmware uploading
This commit is contained in:
parent
f87a8b6eb7
commit
d9ae78ba07
55
src/server/firmware.cpp
Normal file
55
src/server/firmware.cpp
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
* Stairs
|
||||||
|
* Copyright 2017 (c) Mark van Renswoude
|
||||||
|
*
|
||||||
|
* https://git.x2software.net/pub/Stairs
|
||||||
|
*/
|
||||||
|
#include "firmware.h"
|
||||||
|
#include "../debug.h"
|
||||||
|
#include "../global.h"
|
||||||
|
|
||||||
|
|
||||||
|
void handleFileUpload(AsyncWebServerRequest *request, const String& filename, size_t index, uint8_t *data, size_t len, bool final)
|
||||||
|
{
|
||||||
|
_d("Firmware :: handleFileUpload: index = "); _d(index);
|
||||||
|
_d(", len = "); _d(len);
|
||||||
|
_d(", final = "); _dln(final);
|
||||||
|
|
||||||
|
uint32_t maxSketchSpace = (ESP.getFreeSketchSpace() - 0x1000) & 0xFFFFF000;
|
||||||
|
if (index == 0)
|
||||||
|
{
|
||||||
|
if (Update.begin(maxSketchSpace))
|
||||||
|
Update.runAsync(true);
|
||||||
|
else
|
||||||
|
_dln("Firmware :: failed to start");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Update.write(data, len) == len)
|
||||||
|
{
|
||||||
|
if(final)
|
||||||
|
{
|
||||||
|
#ifdef SerialDebug
|
||||||
|
|
||||||
|
if (Update.end(true))
|
||||||
|
Serial.println("Update succesful!");
|
||||||
|
else
|
||||||
|
Update.printError(Serial);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
Update.end(true);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#ifdef SerialDebug
|
||||||
|
else
|
||||||
|
Update.printError(Serial);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void registerFirmwareRoutes(AsyncWebServer* server)
|
||||||
|
{
|
||||||
|
server.onFileUpload(handleFileUpload);
|
||||||
|
}
|
13
src/server/firmware.h
Normal file
13
src/server/firmware.h
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
/*
|
||||||
|
* Stairs
|
||||||
|
* Copyright 2017 (c) Mark van Renswoude
|
||||||
|
*
|
||||||
|
* https://git.x2software.net/pub/Stairs
|
||||||
|
*/
|
||||||
|
#ifndef __server_firmware
|
||||||
|
#define __server_firmware
|
||||||
|
#include <ESPAsyncWebServer.h>
|
||||||
|
|
||||||
|
void registerFirmwareRoutes(AsyncWebServer* server);
|
||||||
|
|
||||||
|
#endif
|
@ -242,6 +242,11 @@ function startApp()
|
|||||||
{
|
{
|
||||||
console.log(error);
|
console.log(error);
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
uploadFirmware: function()
|
||||||
|
{
|
||||||
|
//
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
2
web/dist/bundle.js
vendored
2
web/dist/bundle.js
vendored
File diff suppressed because one or more lines are too long
@ -36,6 +36,7 @@
|
|||||||
<button class="button" :class="{ 'button-outline': activeTab != 'status' }" @click="activeTab = 'status'">{{ $t('status.tabTitle') }}</button>
|
<button class="button" :class="{ 'button-outline': activeTab != 'status' }" @click="activeTab = 'status'">{{ $t('status.tabTitle') }}</button>
|
||||||
<button class="button" :class="{ 'button-outline': activeTab != 'triggers' }" @click="activeTab = 'triggers'">{{ $t('triggers.tabTitle') }}</button>
|
<button class="button" :class="{ 'button-outline': activeTab != 'triggers' }" @click="activeTab = 'triggers'">{{ $t('triggers.tabTitle') }}</button>
|
||||||
<button class="button" :class="{ 'button-outline': activeTab != 'connection' }" @click="activeTab = 'connection'">{{ $t('connection.tabTitle') }}</button>
|
<button class="button" :class="{ 'button-outline': activeTab != 'connection' }" @click="activeTab = 'connection'">{{ $t('connection.tabTitle') }}</button>
|
||||||
|
<button class="button" :class="{ 'button-outline': activeTab != 'firmware' }" @click="activeTab = 'firmware'">{{ $t('firmware.tabTitle') }}</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="activeTab == 'status'">
|
<div v-if="activeTab == 'status'">
|
||||||
@ -105,6 +106,20 @@
|
|||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div v-if="activeTab == 'firmware'">
|
||||||
|
<form @submit.prevent="uploadFirmware">
|
||||||
|
<fieldset>
|
||||||
|
<h3>{{ $t('firmware.title') }}</h3>
|
||||||
|
|
||||||
|
<input type="file">
|
||||||
|
|
||||||
|
<div class="buttons">
|
||||||
|
<input class="button-primary" type="submit" :disabled="saving" :value="saving ? $t('applyButtonSaving') : $t('applyButton')">
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
|
14
web/lang.js
14
web/lang.js
@ -59,6 +59,11 @@ var messages = {
|
|||||||
gateway: 'Gateway',
|
gateway: 'Gateway',
|
||||||
hostname: 'Hostname',
|
hostname: 'Hostname',
|
||||||
hostnamePlaceholder: 'Default: mac address'
|
hostnamePlaceholder: 'Default: mac address'
|
||||||
|
},
|
||||||
|
|
||||||
|
firmware: {
|
||||||
|
tabTitle: 'Firmware',
|
||||||
|
title: 'Firmware update'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -69,8 +74,8 @@ var messages = {
|
|||||||
copyright: 'Copyright © 2017 Mark van Renswoude',
|
copyright: 'Copyright © 2017 Mark van Renswoude',
|
||||||
loading: 'Een ogenblik geduld, bezig met laden van configuratie...',
|
loading: 'Een ogenblik geduld, bezig met laden van configuratie...',
|
||||||
|
|
||||||
applyButton: 'Apply',
|
applyButton: 'Toepassen',
|
||||||
applyButtonSaving: 'Saving...',
|
applyButtonSaving: 'Bezig met opslaan...',
|
||||||
|
|
||||||
wifiStatus: {
|
wifiStatus: {
|
||||||
accesspoint: {
|
accesspoint: {
|
||||||
@ -122,6 +127,11 @@ var messages = {
|
|||||||
gateway: 'Gateway',
|
gateway: 'Gateway',
|
||||||
hostname: 'Hostnaam',
|
hostname: 'Hostnaam',
|
||||||
hostnamePlaceholder: 'Standaard: mac adres'
|
hostnamePlaceholder: 'Standaard: mac adres'
|
||||||
|
},
|
||||||
|
|
||||||
|
firmware: {
|
||||||
|
tabTitle: 'Firmware',
|
||||||
|
title: 'Firmware bijwerken'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user