diff --git a/src/cmnds/cmd_if.c b/src/cmnds/cmd_if.c
index 0df172429..1452a7e8d 100644
--- a/src/cmnds/cmd_if.c
+++ b/src/cmnds/cmd_if.c
@@ -83,7 +83,9 @@ bool strCompareBound(const char *s, const char *templ, const char *stopper, int
if(bAllowWildCard && *templ == '*') {
} else {
- if(tolower(*s) != tolower(*templ)) {
+ char c1 = tolower((unsigned char)*s);
+ char c2 = tolower((unsigned char)*templ);
+ if(c1 != c2) {
return false;
}
}
diff --git a/src/driver/drv_bl_shared.c b/src/driver/drv_bl_shared.c
index caa978a85..066b42fbe 100644
--- a/src/driver/drv_bl_shared.c
+++ b/src/driver/drv_bl_shared.c
@@ -14,7 +14,7 @@
#include "drv_ntp.h"
#include "../hal/hal_flashVars.h"
-#define DAILY_STATS_LENGTH 8
+#define DAILY_STATS_LENGTH 5
int stat_updatesSkipped = 0;
int stat_updatesSent = 0;
@@ -147,6 +147,9 @@ void BL09XX_SaveEmeteringStatistics()
data.TodayConsumpion = dailyStats[0];
data.YesterdayConsumption = dailyStats[1];
data.actual_mday = actual_mday;
+ data.ConsumptionHistory[0] = dailyStats[2];
+ data.ConsumptionHistory[1] = dailyStats[2];
+ data.ConsumptionHistory[2] = dailyStats[2];
ConsumptionSaveCounter++;
data.save_counter = ConsumptionSaveCounter;
@@ -323,6 +326,10 @@ void BL_ProcessUpdate(float voltage, float current, float power)
energy = (float)xPassedTicks;
energy *= power;
energy /= (3600000.0f / (float)portTICK_PERIOD_MS);
+ if (energy < 0)
+ {
+ energy = 0.0;
+ }
energyCounter += energy;
energyCounterStamp = xTaskGetTickCount();
@@ -401,7 +408,12 @@ void BL_ProcessUpdate(float voltage, float current, float power)
{
for (i=energyCounterSampleCount-1;i>0;i--)
{
- energyCounterMinutes[i] = energyCounterMinutes[i-1];
+ if (energyCounterMinutes[i-1]>0.0)
+ {
+ energyCounterMinutes[i] = energyCounterMinutes[i-1];
+ } else {
+ energyCounterMinutes[i] = 0.0;
+ }
}
energyCounterMinutes[0] = 0.0;
}
@@ -513,8 +525,11 @@ void BL_Shared_Init()
energyCounter = data.TotalConsumption;
dailyStats[0] = data.TodayConsumpion;
dailyStats[1] = data.YesterdayConsumption;
- actual_mday = data.actual_mday;
+ actual_mday = data.actual_mday;
lastSavedEnergyCounterValue = energyCounter;
+ dailyStats[2] = data.ConsumptionHistory[0];
+ dailyStats[3] = data.ConsumptionHistory[1];
+ dailyStats[4] = data.ConsumptionHistory[2];
ConsumptionSaveCounter = data.save_counter;
//int HAL_SetEnergyMeterStatus(ENERGY_METERING_DATA *data);
diff --git a/src/driver/drv_ir.cpp b/src/driver/drv_ir.cpp
index 9248016d9..90c6238ea 100644
--- a/src/driver/drv_ir.cpp
+++ b/src/driver/drv_ir.cpp
@@ -223,6 +223,7 @@ class myIRsend : public IRsend {
our_ms = 0;
resetsendqueue();
}
+ ~myIRsend() { }
void enableIROut(uint_fast8_t aFrequencyKHz){
// just setup variables for use in ISR
@@ -599,7 +600,7 @@ extern "C" void DRV_IR_RunFrame(){
if (publishrepeats || !repeat){
if (ourReceiver->decodedIRData.protocol == UNKNOWN){
- snprintf(out, sizeof(out), "IR_%s 0x%X %d", name, ourReceiver->decodedIRData.decodedRawData, repeat);
+ snprintf(out, sizeof(out), "IR_%s 0x%lX %d", name, (unsigned long)ourReceiver->decodedIRData.decodedRawData, repeat);
} else {
snprintf(out, sizeof(out), "IR_%s 0x%X 0x%X %d", name, ourReceiver->decodedIRData.address, ourReceiver->decodedIRData.command, repeat);
}
@@ -635,6 +636,8 @@ extern "C" void DRV_IR_RunFrame(){
case SONY:
tgType = CMD_EVENT_IR_SONY;
break;
+ default:
+ break;
}
// we should include repeat here?
diff --git a/src/driver/drv_main.c b/src/driver/drv_main.c
index 8b63d85d0..11475960f 100644
--- a/src/driver/drv_main.c
+++ b/src/driver/drv_main.c
@@ -243,7 +243,6 @@ void DRV_Generic_Init() {
void DRV_AppendInformationToHTTPIndexPage(http_request_t* request) {
int i, j;
int c_active = 0;
- char list[256];
if (DRV_Mutex_Take(100) == false) {
return;
diff --git a/src/driver/drv_ntp.c b/src/driver/drv_ntp.c
index 1560e3024..de3b3f3e7 100644
--- a/src/driver/drv_ntp.c
+++ b/src/driver/drv_ntp.c
@@ -212,7 +212,7 @@ void NTP_CheckForReceive() {
g_time = secsSince1900 - NTP_OFFSET;
g_time += g_timeOffsetHours;
addLogAdv(LOG_INFO, LOG_FEATURE_NTP,"Unix time : %u\n",g_time);
- ltm = localtime(&g_time);
+ ltm = localtime((time_t*)&g_time);
addLogAdv(LOG_INFO, LOG_FEATURE_NTP,"Local Time : %04d/%02d/%02d %02d:%02d:%02d\n",
ltm->tm_year+1900, ltm->tm_mon+1, ltm->tm_mday, ltm->tm_hour, ltm->tm_min, ltm->tm_sec);
g_synced = true;
@@ -270,7 +270,7 @@ void NTP_AppendInformationToHTTPIndexPage(http_request_t* request)
{
struct tm *ltm;
- ltm = localtime(&g_time);
+ ltm = localtime((time_t*)&g_time);
if (g_synced == true)
hprintf255(request, "
NTP: Local Time: %04d/%02d/%02d %02d:%02d:%02d
",
diff --git a/src/driver/drv_tasmotaDeviceGroups.c b/src/driver/drv_tasmotaDeviceGroups.c
index cad686e47..a141dba0a 100644
--- a/src/driver/drv_tasmotaDeviceGroups.c
+++ b/src/driver/drv_tasmotaDeviceGroups.c
@@ -352,7 +352,7 @@ void DRV_DGR_RunQuickTick() {
def.cbs.processRGBCW = DRV_DGR_processRGBCW;
def.cbs.checkSequence = DGR_CheckSequence;
- DGR_Parse(msgbuf, nbytes, &def, &addr);
+ DGR_Parse((byte*)msgbuf, nbytes, &def, (struct sockaddr *)&addr);
//DGR_Parse(msgbuf, nbytes);
// puts(msgbuf);
}
diff --git a/src/driver/drv_tuyaMCU.c b/src/driver/drv_tuyaMCU.c
index f93ee2cd7..8fecac6d4 100644
--- a/src/driver/drv_tuyaMCU.c
+++ b/src/driver/drv_tuyaMCU.c
@@ -436,7 +436,7 @@ struct tm * TuyaMCU_Get_NTP_Time() {
g_time = NTP_GetCurrentTime();
addLogAdv(LOG_INFO, LOG_FEATURE_TUYAMCU,"MCU time to set: %i\n", g_time);
- ptm = gmtime(&g_time);
+ ptm = gmtime((time_t*)&g_time);
addLogAdv(LOG_INFO, LOG_FEATURE_TUYAMCU,"ptime ->gmtime => tm_hour: %i\n",ptm->tm_hour );
addLogAdv(LOG_INFO, LOG_FEATURE_TUYAMCU,"ptime ->gmtime => tm_min: %i\n", ptm->tm_min );
diff --git a/src/hal/bk7231/hal_adc_bk7231.c b/src/hal/bk7231/hal_adc_bk7231.c
index 82f1bea80..069aa72ee 100644
--- a/src/hal/bk7231/hal_adc_bk7231.c
+++ b/src/hal/bk7231/hal_adc_bk7231.c
@@ -13,6 +13,7 @@
#include
#include
+void turnon_PA_in_temp_dect(void);
static int adcToGpio[] = {
-1, // ADC0 - VBAT
diff --git a/src/hal/hal_flashVars.h b/src/hal/hal_flashVars.h
index 6273b2488..05a520dcf 100644
--- a/src/hal/hal_flashVars.h
+++ b/src/hal/hal_flashVars.h
@@ -13,7 +13,8 @@ typedef struct ENERGY_METERING_DATA {
float TodayConsumpion;
float YesterdayConsumption;
long save_counter;
- unsigned char reseved[15];
+ float ConsumptionHistory[3];
+ unsigned char reseved[3];
char actual_mday;
} ENERGY_METERING_DATA;
diff --git a/src/httpserver/http_fns.c b/src/httpserver/http_fns.c
index e57770f49..82c836f84 100644
--- a/src/httpserver/http_fns.c
+++ b/src/httpserver/http_fns.c
@@ -35,6 +35,9 @@
#include "BkDriverFlash.h"
#endif
+int tuya_os_adapt_wifi_all_ap_scan(AP_IF_S **ap_ary, unsigned int *num);
+int tuya_os_adapt_wifi_release_ap(AP_IF_S *ap);
+
static char* UNIQUE_ID_FORMAT = " - unique_id: \"%s\"\n";
static char* HASS_INDEXED_NAME_CONFIG = " name: \"%s %i\"\n";
static char* HASS_STATE_TOPIC_CONFIG = " state_topic: \"%s/%i/get\"\n";
@@ -822,7 +825,7 @@ int http_fn_cfg_wifi(http_request_t* request) {
uint32_t num;
bk_printf("Scan begin...\r\n");
- tuya_os_adapt_wifi_all_ap_scan(&ar, &num);
+ tuya_os_adapt_wifi_all_ap_scan(&ar, (unsigned int*)&num);
bk_printf("Scan returned %i networks\r\n", num);
for (i = 0; i < num; i++) {
hprintf255(request, "[%i/%i] SSID: %s, Channel: %i, Signal %i
", i + 1, (int)num, ar[i].ssid, ar[i].channel, ar[i].rssi);
diff --git a/src/i2c/drv_i2c_lcd_pcf8574t.c b/src/i2c/drv_i2c_lcd_pcf8574t.c
index 22ce3f750..b724b1402 100644
--- a/src/i2c/drv_i2c_lcd_pcf8574t.c
+++ b/src/i2c/drv_i2c_lcd_pcf8574t.c
@@ -14,7 +14,6 @@
#define LCD_PIC_LINE_3_ADDRESS 0x14
#define LCD_PIC_LINE_4_ADDRESS 0x54
-
static byte PCF8574_LCD_Build_Byte(i2cDevice_PCF8574_t *lcd)
{
byte ret = 0x00;
diff --git a/src/libraries/Arduino-IRremote-mod/src/IRremoteInt.h b/src/libraries/Arduino-IRremote-mod/src/IRremoteInt.h
index 3aaa8efad..5590c6bf4 100644
--- a/src/libraries/Arduino-IRremote-mod/src/IRremoteInt.h
+++ b/src/libraries/Arduino-IRremote-mod/src/IRremoteInt.h
@@ -439,6 +439,7 @@ extern IRrecv IrReceiver;
class IRsend {
public:
IRsend();
+ virtual ~IRsend() = default;
/*
* IR_SEND_PIN is defined
diff --git a/src/libraries/Arduino-IRremote-mod/src/ir_BangOlufsen.hpp b/src/libraries/Arduino-IRremote-mod/src/ir_BangOlufsen.hpp
index f8f188abf..9bfa7e444 100644
--- a/src/libraries/Arduino-IRremote-mod/src/ir_BangOlufsen.hpp
+++ b/src/libraries/Arduino-IRremote-mod/src/ir_BangOlufsen.hpp
@@ -143,13 +143,13 @@
* TODO aNumberOfRepeats are handled not correctly if ENABLE_BEO_WITHOUT_FRAME_GAP is defined
*/
void IRsend::sendBangOlufsen(uint16_t aHeader, uint8_t aData, int_fast8_t aNumberOfRepeats, int8_t aNumberOfHeaderBits) {
- for (uint_fast8_t i = 0; i < aNumberOfRepeats + 1; ++i) {
+ for (uint_fast8_t i = 0; i < (uint_fast8_t)aNumberOfRepeats + 1; ++i) {
sendBangOlufsenRaw((uint32_t(aHeader) << 8) | aData, aNumberOfHeaderBits + 8, i != 0);
}
}
void IRsend::sendBangOlufsenDataLink(uint32_t aHeader, uint8_t aData, int_fast8_t aNumberOfRepeats, int8_t aNumberOfHeaderBits) {
- for (uint_fast8_t i = 0; i < aNumberOfRepeats + 1; ++i) {
+ for (uint_fast8_t i = 0; i < (uint_fast8_t)aNumberOfRepeats + 1; ++i) {
sendBangOlufsenRawDataLink((uint64_t(aHeader) << 8) | aData, aNumberOfHeaderBits + 8, i != 0, true);
}
}
diff --git a/src/new_common.h b/src/new_common.h
index 07e3ee143..8dfdfcebd 100644
--- a/src/new_common.h
+++ b/src/new_common.h
@@ -161,8 +161,6 @@ OSStatus rtos_create_thread( beken_thread_t* thread,
beken_thread_function_t function,
uint32_t stack_size, beken_thread_arg_t arg );
-
-
#include "common/framework/platform_init.h"
#include "kernel/os/os.h"
@@ -223,6 +221,7 @@ OSStatus rtos_create_thread( beken_thread_t* thread,
#define printf addLog
+void delay_ms(UINT32 ms_count);
#endif
diff --git a/src/user_main.c b/src/user_main.c
index 936eca09e..ba57d85b9 100644
--- a/src/user_main.c
+++ b/src/user_main.c
@@ -34,6 +34,8 @@
#include "driver/drv_ntp.h"
+void bg_register_irda_check_func(FUNCPTR func);
+
static int g_secondsElapsed = 0;
// open access point after this number of seconds
static int g_openAP = 0;