Fix more warnings seen with "--warnings more"

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
This commit is contained in:
Álvaro Fernández Rojas 2023-05-31 18:37:13 +02:00
parent 5b0e19438a
commit a1d4a36379
11 changed files with 59 additions and 45 deletions

View file

@ -372,7 +372,6 @@ bool ShadeConfigFile::getAppVersion(appver_t &ver) {
char app[15];
if(!LittleFS.exists("/appversion")) return false;
File f = LittleFS.open("/appversion", "r");
size_t fsize = f.size();
memset(app, 0x00, sizeof(app));
f.read((uint8_t *)app, sizeof(app) - 1);
f.close();

View file

@ -19,7 +19,7 @@ bool BaseSettings::loadFile(const char *filename) {
data += c;
}
DynamicJsonDocument doc(filesize);
DeserializationError err = deserializeJson(doc, data);
deserializeJson(doc, data);
JsonObject obj = doc.as<JsonObject>();
this->fromJSON(obj);
file.close();
@ -81,7 +81,7 @@ bool ConfigSettings::load() {
pref.end();
if(this->connType == conn_types::unset) {
// We are doing this to convert the data from previous versions.
this->connType == conn_types::wifi;
this->connType = conn_types::wifi;
pref.begin("WIFI");
pref.getString("hostname", this->hostname, sizeof(this->hostname));
this->ssdpBroadcast = pref.getBool("ssdpBroadcast", true);
@ -113,7 +113,7 @@ bool ConfigSettings::fromJSON(JsonObject &obj) {
return true;
}
void ConfigSettings::print() {
Serial.printf("Connection Type: %d\n", this->connType);
Serial.printf("Connection Type: %u\n", (unsigned int) this->connType);
this->NTP.print();
if(this->connType == conn_types::wifi || this->connType == conn_types::unset) this->WIFI.print();
if(this->connType == conn_types::ethernet || this->connType == conn_types::ethernetpref) this->Ethernet.print();
@ -290,11 +290,6 @@ void WifiSettings::printNetworks() {
Serial.print(n);
Serial.println(" Networks...");
String network;
uint8_t encType;
int32_t RSSI;
uint8_t* BSSID;
int32_t channel;
bool isHidden;
for(int i = 0; i < n; i++) {
if(WiFi.SSID(i).compareTo(this->ssid) == 0) Serial.print("*");
else Serial.print(" ");
@ -307,7 +302,6 @@ void WifiSettings::printNetworks() {
Serial.print(WiFi.channel(i));
Serial.print(" MAC:");
Serial.print(WiFi.BSSIDstr(i));
if(isHidden) Serial.print(" [hidden]");
Serial.println();
}
}

View file

@ -102,7 +102,7 @@ bool MQTTClass::connect() {
if(settings.MQTT.enabled) {
if(this->lastConnect + 10000 > millis()) return false;
uint64_t mac = ESP.getEfuseMac();
snprintf(this->clientId, sizeof(this->clientId), "client-%08lx%08lx", (uint32_t)((mac >> 32) & 0xFFFFFFFF), (uint32_t)(mac & 0xFFFFFFFF));
snprintf(this->clientId, sizeof(this->clientId), "client-%08x%08x", (uint32_t)((mac >> 32) & 0xFFFFFFFF), (uint32_t)(mac & 0xFFFFFFFF));
if(strlen(settings.MQTT.protocol) > 0 && strlen(settings.MQTT.hostname) > 0) {
mqttClient.setServer(settings.MQTT.hostname, settings.MQTT.port);
if(mqttClient.connect(this->clientId, settings.MQTT.username, settings.MQTT.password)) {
@ -138,7 +138,7 @@ bool MQTTClass::disconnect() {
}
bool MQTTClass::unsubscribe(const char *topic) {
if(mqttClient.connected()) {
char top[64];
char top[128];
if(strlen(settings.MQTT.rootTopic) > 0)
snprintf(top, sizeof(top), "%s/%s", settings.MQTT.rootTopic, topic);
else
@ -149,7 +149,7 @@ bool MQTTClass::unsubscribe(const char *topic) {
}
bool MQTTClass::subscribe(const char *topic) {
if(mqttClient.connected()) {
char top[64];
char top[128];
if(strlen(settings.MQTT.rootTopic) > 0)
snprintf(top, sizeof(top), "%s/%s", settings.MQTT.rootTopic, topic);
else
@ -162,7 +162,7 @@ bool MQTTClass::subscribe(const char *topic) {
}
bool MQTTClass::publish(const char *topic, const char *payload) {
if(mqttClient.connected()) {
char top[64];
char top[128];
if(strlen(settings.MQTT.rootTopic) > 0)
snprintf(top, sizeof(top), "%s/%s", settings.MQTT.rootTopic, topic);
else

View file

@ -291,6 +291,8 @@ bool Network::connectWiFi() {
Serial.print(settings.WIFI.ssid);
Serial.print(" could not be found");
return false;
default:
break;
}
delay(500);
if(connectAttempts == 1) Serial.print("*");
@ -342,11 +344,6 @@ int Network::getStrengthBySSID(const char *ssid) {
Serial.print(n);
Serial.println(" Networks...");
String network;
uint8_t encType;
int32_t RSSI;
uint8_t* BSSID;
int32_t channel;
bool isHidden;
for(int i = 0; i < n; i++) {
//WiFi.getNetworkInfo(i, network, encType, RSSI, BSSID, channel, isHidden);
if(network.compareTo(this->ssid) == 0) Serial.print("*");
@ -360,7 +357,6 @@ int Network::getStrengthBySSID(const char *ssid) {
Serial.print(WiFi.channel(i));
Serial.print(" MAC:");
Serial.print(WiFi.BSSIDstr(i).c_str());
if(isHidden) Serial.print(" [hidden]");
Serial.println();
}
}

View file

@ -305,6 +305,8 @@ void SSDPClass::_parsePacket(ssdp_packet_t *pkt, AsyncUDPPacket &p) {
case AGENT:
strcpy(pkt->agent, buffer);
break;
default:
break;
}
keys = KEY;
pos = 0;
@ -683,7 +685,7 @@ void SSDPClass::_sendQueuedResponses() {
}
}
void SSDPClass::_printPacket(ssdp_packet_t *pkt) {
Serial.printf("Rec: %d\n", pkt->recvd);
Serial.printf("Rec: %lu\n", pkt->recvd);
switch(pkt->method) {
case NONE:
Serial.println("Method: NONE");
@ -734,7 +736,7 @@ void SSDPClass::_processRequest(AsyncUDPPacket &p) {
this->_sendResponse(p.remoteIP(), p.remotePort(), dev, pkt.st, false);
}
else {
UPNPDeviceType *dev;
UPNPDeviceType *dev = nullptr;
bool useUUID = false;
if(this->_startsWith("uuid:", pkt.st)) {
dev = this->findDeviceByUUID(pkt.st);

View file

@ -176,6 +176,7 @@ void SocketEmitter::wsEvent(uint8_t num, WStype_t type, uint8_t *payload, size_t
case WStype_PING:
//Serial.printf("Ping from %u\n", num);
break;
default:
break;
}
}

View file

@ -291,6 +291,8 @@ void somfy_frame_t::encodeFrame(byte *frame) {
case somfy_commands::Flag:
frame[0] = 142;
break;
default:
break;
}
}
else {
@ -310,6 +312,8 @@ void somfy_frame_t::encodeFrame(byte *frame) {
frame[8] = 0;
frame[9] = 25;
break;
default:
break;
}
}
byte checksum = 0;
@ -1039,6 +1043,8 @@ void SomfyShade::processWaitingFrame() {
Serial.println(" repeats");
}
break;
default:
break;
}
}
}
@ -1060,7 +1066,6 @@ void SomfyShade::processFrame(somfy_frame_t &frame, bool internal) {
if(!hasRemote) return;
this->lastFrame.copy(frame);
int8_t dir = 0;
int8_t tiltDir = 0;
this->moveStart = this->tiltStart = millis();
this->startPos = this->currentPos;
this->startTiltPos = this->currentTiltPos;
@ -1336,7 +1341,6 @@ void SomfyShade::sendTiltCommand(somfy_commands cmd) {
}
}
void SomfyShade::moveToTiltTarget(float target) {
int8_t newDir = 0;
somfy_commands cmd = somfy_commands::My;
if(target < this->currentTiltPos)
cmd = somfy_commands::Up;
@ -1361,7 +1365,6 @@ void SomfyShade::moveToTiltTarget(float target) {
this->settingTiltPos = true;
}
void SomfyShade::moveToTarget(float pos, float tilt) {
int8_t newDir = 0;
somfy_commands cmd = somfy_commands::My;
if(pos < this->currentPos)
cmd = somfy_commands::Up;
@ -1552,7 +1555,6 @@ void SomfyShadeController::publish() {
mqtt.publish("shades", arr);
}
uint8_t SomfyShadeController::getNextShadeId() {
uint8_t nextId = 0;
// There is no shortcut for this since the deletion of
// a shade in the middle makes all of this very difficult.
for(uint8_t i = 1; i < SOMFY_MAX_SHADES - 1; i++) {
@ -1792,7 +1794,7 @@ bool SomfyShadeController::toJSON(JsonArray &arr) {
}
void SomfyShadeController::loop() {
this->transceiver.loop();
for(uint8_t i; i < SOMFY_MAX_SHADES; i++) {
for(uint8_t i = 0; i < SOMFY_MAX_SHADES; i++) {
if(this->shades[i].getShadeId() != 255) this->shades[i].checkMovement();
}
// Only commit the file once per second.
@ -1824,7 +1826,6 @@ static const uint32_t tempo_if_gap = 30415; // Gap between frames
static int16_t bitMin = SYMBOL * TOLERANCE_MIN;
static uint16_t timing_index = 0;
static somfy_rx_t somfy_rx;
static somfy_rx_queue_t rx_queue;
@ -1834,7 +1835,7 @@ bool somfy_tx_queue_t::pop(somfy_tx_t *tx) {
if(this->index[i] < MAX_TX_BUFFER) {
uint8_t ndx = this->index[i];
memcpy(tx, &this->items[ndx], sizeof(somfy_tx_t));
memset(&this->items[ndx], 0x00, sizeof(somfy_tx_t));
this->items[ndx].clear();
this->length--;
this->index[i] = 255;
return true;
@ -1847,7 +1848,8 @@ bool somfy_tx_queue_t::push(uint32_t await, somfy_commands cmd, uint8_t repeats)
uint8_t ndx = this->index[MAX_TX_BUFFER - 1];
this->index[MAX_TX_BUFFER - 1] = 255;
this->length = MAX_TX_BUFFER - 1;
if(ndx < MAX_TX_BUFFER) memset(&this->items[ndx], 0x00, sizeof(somfy_tx_t));
if(ndx < MAX_TX_BUFFER)
this->items[ndx].clear();
}
// Place the command in the first empty slot. Empty slots are those
// with a millis of 0. We will shift the indexes right so that this
@ -1870,7 +1872,8 @@ bool somfy_tx_queue_t::push(uint32_t await, somfy_commands cmd, uint8_t repeats)
}
void somfy_rx_queue_t::init() {
Serial.println("Initializing RX Queue");
memset(&this->items[0], 0x00, sizeof(somfy_rx_t) * MAX_RX_BUFFER);
for (uint8_t i = 0; i < MAX_RX_BUFFER; i++)
this->items[i].clear();
memset(&this->index[0], 0xFF, MAX_RX_BUFFER);
this->length = 0;
}
@ -1882,7 +1885,7 @@ bool somfy_rx_queue_t::pop(somfy_rx_t *rx) {
if(this->index[i] < MAX_RX_BUFFER) {
uint8_t ndx = this->index[i];
memcpy(rx, &this->items[this->index[i]], sizeof(somfy_rx_t));
memset(&this->items[ndx], 0x00, sizeof(somfy_rx_t));
this->items[ndx].clear();
this->length--;
this->index[i] = 255;
return true;
@ -2124,7 +2127,7 @@ void Transceiver::emitFrame(somfy_frame_t *frame, somfy_rx_t *rx) {
evt.appendMessage(buf);
snprintf(buf, sizeof(buf), "\"rcode\":%d,", frame->rollingCode);
evt.appendMessage(buf);
snprintf(buf, sizeof(buf), "\"command\":\"%s\",", translateSomfyCommand(frame->cmd));
snprintf(buf, sizeof(buf), "\"command\":\"%s\",", translateSomfyCommand(frame->cmd).c_str());
evt.appendMessage(buf);
snprintf(buf, sizeof(buf), "\"rssi\":%d,", frame->rssi);
evt.appendMessage(buf);

27
Somfy.h
View file

@ -59,6 +59,17 @@ typedef enum {
} t_status;
struct somfy_rx_t {
void clear() {
this->status = t_status::waiting_synchro;
this->bit_length = 56;
this->cpt_synchro_hw = 0;
this->cpt_bits = 0;
this->previous_bit = 0;
this->waiting_half_symbol = false;
memset(this->payload, 0, sizeof(this->payload));
memset(this->pulses, 0, sizeof(this->pulses));
this->pulseCount = 0;
}
t_status status;
uint8_t bit_length = 56;
uint8_t cpt_synchro_hw = 0;
@ -81,13 +92,25 @@ struct somfy_rx_queue_t {
bool pop(somfy_rx_t *rx);
};
struct somfy_tx_t {
void clear() {
this->await = 0;
this->cmd = somfy_commands::Unknown0;
this->repeats = 0;
}
uint32_t await = 0;
somfy_commands cmd;
uint8_t repeats;
};
struct somfy_tx_queue_t {
somfy_tx_queue_t() { memset(this->index, 255, MAX_TX_BUFFER); memset(&this->items[0], 0x00, sizeof(somfy_tx_queue_t) * MAX_TX_BUFFER); }
void clear() { memset(&this->index[0], 255, MAX_TX_BUFFER); memset(&this->items[0], 0x00, sizeof(somfy_tx_queue_t) * MAX_TX_BUFFER); }
somfy_tx_queue_t() {
this->clear();
}
void clear() {
for (uint8_t i = 0; i < MAX_TX_BUFFER; i++) {
this->index[i] = 255;
this->items[i].clear();
}
}
uint8_t length = 0;
uint8_t index[MAX_TX_BUFFER];
somfy_tx_t items[MAX_TX_BUFFER];

View file

@ -25,7 +25,6 @@ char * Timestamp::formatISO(struct tm *dt, int tz) {
int tzHrs = floor(tz/100);
int tzMin = tz - (tzHrs * 100);
int ms = millis() % 1000;
char isoTime[32];
snprintf(this->_timeBuffer, sizeof(this->_timeBuffer), "%04d-%02d-%02dT%02d:%02d:%02d.%03d%s%02d%02d",
dt->tm_year + 1900, dt->tm_mon + 1, dt->tm_mday, dt->tm_hour, dt->tm_min, dt->tm_sec, ms, tzHrs < 0 ? "-" : "+", abs(tzHrs), abs(tzMin));
return this->_timeBuffer;

View file

@ -4,7 +4,7 @@
#define DEBUG_SOMFY Serial
static void SETCHARPROP(char *prop, const char *value, size_t size) {strncpy(prop, value, size); prop[size - 1] = '\0';}
[[maybe_unused]] static void SETCHARPROP(char *prop, const char *value, size_t size) {strncpy(prop, value, size); prop[size - 1] = '\0';}
namespace util {
// Createa a custom to_string function. C++ can be annoying
// with all the trailing 0s on number formats.
@ -36,13 +36,13 @@ static void _rtrim(char *str) {
int e = strlen(str) - 1;
while(e >= 0 && (str[e] == ' ' || str[e] == '\n' || str[e] == '\r' || str[e] == '\t' || str[e] == '"')) {str[e] = '\0'; e--;}
}
static void _trim(char *str) { _ltrim(str); _rtrim(str); }
[[maybe_unused]] static void _trim(char *str) { _ltrim(str); _rtrim(str); }
struct rebootDelay_t {
bool reboot = false;
int rebootTime = 0;
bool closed = false;
};
static bool toBoolean(const char *str, bool def) {
[[maybe_unused]] static bool toBoolean(const char *str, bool def) {
if(!str) return def;
if(strlen(str) == 0) return def;
else if(str[0] == 't' || str[0] == 'T' || str[0] == '1') return true;
@ -51,7 +51,7 @@ static bool toBoolean(const char *str, bool def) {
}
class Timestamp {
char _timeBuffer[44];
char _timeBuffer[128];
public:
time_t getUTC();
time_t getUTC(time_t epoch);

View file

@ -250,7 +250,6 @@ void Web::begin() {
server.on("/", []() {
webServer.sendCacheHeaders(604800);
webServer.sendCORSHeaders();
int statusCode = 200;
// Load the index html page from the data directory.
Serial.println("Loading file index.html");
File file = LittleFS.open("/index.html", "r");
@ -481,7 +480,7 @@ void Web::begin() {
});
server.on("/addShade", []() {
HTTPMethod method = server.method();
SomfyShade* shade;
SomfyShade* shade = nullptr;
if (method == HTTP_POST || method == HTTP_PUT) {
Serial.println("Adding a shade");
DynamicJsonDocument doc(512);
@ -1320,7 +1319,6 @@ void Web::begin() {
});
server.on("/setgeneral", []() {
webServer.sendCORSHeaders();
int statusCode = 200;
DynamicJsonDocument doc(256);
DeserializationError err = deserializeJson(doc, server.arg("plain"));
if (err) {
@ -1399,7 +1397,6 @@ void Web::begin() {
});
server.on("/connectwifi", []() {
webServer.sendCORSHeaders();
int statusCode = 200;
Serial.println("Settings WIFI connection...");
DynamicJsonDocument doc(512);
DeserializationError err = deserializeJson(doc, server.arg("plain"));