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;