@@ -1381,6 +1381,23 @@ void EMEnergyAnalysis::history_wallbox_5min_response(IChunkedResponse *response,
13811381 uint16_t utc_end_slots = (utc_end_hour * 60 + utc_end_minute) / 5 ; // since midnight
13821382
13831383 uint32_t seqnum = history_request_seqnum++;
1384+ StreamMetadata *metadata = &metadata_array[0 ];
1385+
1386+ metadata->response = response;
1387+ metadata->response_ownership = response_ownership;
1388+ metadata->response_owner_id = response_owner_id;
1389+ metadata->call_begin = true ;
1390+ metadata->write_comma = false ;
1391+ metadata->next_offset = 0 ;
1392+ metadata->seqnum = seqnum;
1393+ metadata->uid = uid;
1394+ metadata->utc_end_year = utc_end_year;
1395+ metadata->utc_end_month = utc_end_month;
1396+ metadata->utc_end_day = utc_end_day;
1397+ metadata->utc_end_slots = utc_start_slots > 0 ? utc_end_slots : 0 ;
1398+
1399+ em_common.wem_register_sd_wallbox_data_points_low_level_callback (wallbox_5min_data_points_handler, metadata);
1400+
13841401 uint8_t status;
13851402 int rc;
13861403
@@ -1402,13 +1419,14 @@ void EMEnergyAnalysis::history_wallbox_5min_response(IChunkedResponse *response,
14021419 utc_end_minute,
14031420 utc_end_slots,
14041421 &status);
1405- utc_end_slots = 0 ;
14061422 }
14071423
14081424 // logger.printfln("history_wallbox_5min_response: u%u %d-%02d-%02d",
14091425 // uid, 2000 + year, month, day);
14101426
14111427 if (rc != TF_E_OK || status != 0 ) {
1428+ em_common.wem_register_sd_wallbox_data_points_low_level_callback (nullptr , nullptr );
1429+
14121430 OwnershipGuard ownership_guard (response_ownership, response_owner_id);
14131431
14141432 if (ownership_guard.have_ownership ()) {
@@ -1429,24 +1447,6 @@ void EMEnergyAnalysis::history_wallbox_5min_response(IChunkedResponse *response,
14291447 response->end (write_result);
14301448 }
14311449 }
1432- else {
1433- StreamMetadata *metadata = &metadata_array[0 ];
1434-
1435- metadata->response = response;
1436- metadata->response_ownership = response_ownership;
1437- metadata->response_owner_id = response_owner_id;
1438- metadata->call_begin = true ;
1439- metadata->write_comma = false ;
1440- metadata->next_offset = 0 ;
1441- metadata->seqnum = seqnum;
1442- metadata->uid = uid;
1443- metadata->utc_end_year = utc_end_year;
1444- metadata->utc_end_month = utc_end_month;
1445- metadata->utc_end_day = utc_end_day;
1446- metadata->utc_end_slots = utc_end_slots;
1447-
1448- em_common.wem_register_sd_wallbox_data_points_low_level_callback (wallbox_5min_data_points_handler, metadata);
1449- }
14501450}
14511451
14521452static void wallbox_daily_data_points_handler (void *do_not_use,
@@ -1564,13 +1564,27 @@ void EMEnergyAnalysis::history_wallbox_daily_response(IChunkedResponse *response
15641564 uint8_t month = history_wallbox_daily.get (" month" )->asUint ();
15651565
15661566 uint32_t seqnum = history_request_seqnum++;
1567+ StreamMetadata *metadata = &metadata_array[1 ];
1568+
1569+ metadata->response = response;
1570+ metadata->response_ownership = response_ownership;
1571+ metadata->response_owner_id = response_owner_id;
1572+ metadata->call_begin = true ;
1573+ metadata->write_comma = false ;
1574+ metadata->next_offset = 0 ;
1575+ metadata->seqnum = seqnum;
1576+
1577+ em_common.wem_register_sd_wallbox_daily_data_points_low_level_callback (wallbox_daily_data_points_handler, metadata);
1578+
15671579 uint8_t status;
15681580 int rc = em_common.wem_get_sd_wallbox_daily_data_points (uid, year, month, 1 , days_per_month (2000 + year, month), &status);
15691581
15701582 // logger.printfln("history_wallbox_daily_response: u%u %d-%02d",
15711583 // uid, 2000 + year, month);
15721584
15731585 if (rc != TF_E_OK || status != 0 ) {
1586+ em_common.wem_register_sd_wallbox_daily_data_points_low_level_callback (nullptr , nullptr );
1587+
15741588 OwnershipGuard ownership_guard (response_ownership, response_owner_id);
15751589
15761590 if (ownership_guard.have_ownership ()) {
@@ -1591,19 +1605,6 @@ void EMEnergyAnalysis::history_wallbox_daily_response(IChunkedResponse *response
15911605 response->end (write_result);
15921606 }
15931607 }
1594- else {
1595- StreamMetadata *metadata = &metadata_array[1 ];
1596-
1597- metadata->response = response;
1598- metadata->response_ownership = response_ownership;
1599- metadata->response_owner_id = response_owner_id;
1600- metadata->call_begin = true ;
1601- metadata->write_comma = false ;
1602- metadata->next_offset = 0 ;
1603- metadata->seqnum = seqnum;
1604-
1605- em_common.wem_register_sd_wallbox_daily_data_points_low_level_callback (wallbox_daily_data_points_handler, metadata);
1606- }
16071608}
16081609
16091610struct [[gnu::packed]] EnergyManager5MinData {
@@ -1818,6 +1819,22 @@ void EMEnergyAnalysis::history_energy_manager_5min_response(IChunkedResponse *re
18181819 uint16_t utc_end_slots = (utc_end_hour * 60 + utc_end_minute) / 5 ; // since midnight
18191820
18201821 uint32_t seqnum = history_request_seqnum++;
1822+ StreamMetadata *metadata = &metadata_array[2 ];
1823+
1824+ metadata->response = response;
1825+ metadata->response_ownership = response_ownership;
1826+ metadata->response_owner_id = response_owner_id;
1827+ metadata->call_begin = true ;
1828+ metadata->write_comma = false ;
1829+ metadata->next_offset = 0 ;
1830+ metadata->seqnum = seqnum;
1831+ metadata->utc_end_year = utc_end_year;
1832+ metadata->utc_end_month = utc_end_month;
1833+ metadata->utc_end_day = utc_end_day;
1834+ metadata->utc_end_slots = utc_start_slots > 0 ? utc_end_slots : 0 ;
1835+
1836+ em_common.wem_register_sd_energy_manager_data_points_low_level_callback (energy_manager_5min_data_points_handler, metadata);
1837+
18211838 uint8_t status;
18221839 int rc;
18231840
@@ -1838,14 +1855,14 @@ void EMEnergyAnalysis::history_energy_manager_5min_response(IChunkedResponse *re
18381855 utc_end_minute,
18391856 utc_end_slots,
18401857 &status);
1841-
1842- utc_end_slots = 0 ;
18431858 }
18441859
18451860 // logger.printfln("history_energy_manager_5min_response: %d-%02d-%02d",
18461861 // 2000 + year, month, day);
18471862
18481863 if (rc != TF_E_OK || status != 0 ) {
1864+ em_common.wem_register_sd_energy_manager_data_points_low_level_callback (nullptr , nullptr );
1865+
18491866 OwnershipGuard ownership_guard (response_ownership, response_owner_id);
18501867
18511868 if (ownership_guard.have_ownership ()) {
@@ -1866,23 +1883,6 @@ void EMEnergyAnalysis::history_energy_manager_5min_response(IChunkedResponse *re
18661883 response->end (write_result);
18671884 }
18681885 }
1869- else {
1870- StreamMetadata *metadata = &metadata_array[2 ];
1871-
1872- metadata->response = response;
1873- metadata->response_ownership = response_ownership;
1874- metadata->response_owner_id = response_owner_id;
1875- metadata->call_begin = true ;
1876- metadata->write_comma = false ;
1877- metadata->next_offset = 0 ;
1878- metadata->seqnum = seqnum;
1879- metadata->utc_end_year = utc_end_year;
1880- metadata->utc_end_month = utc_end_month;
1881- metadata->utc_end_day = utc_end_day;
1882- metadata->utc_end_slots = utc_end_slots;
1883-
1884- em_common.wem_register_sd_energy_manager_data_points_low_level_callback (energy_manager_5min_data_points_handler, metadata);
1885- }
18861886}
18871887
18881888static void energy_manager_daily_data_points_handler (void *do_not_use,
@@ -2025,13 +2025,27 @@ void EMEnergyAnalysis::history_energy_manager_daily_response(IChunkedResponse *r
20252025 uint8_t month = history_energy_manager_daily.get (" month" )->asUint ();
20262026
20272027 uint32_t seqnum = history_request_seqnum++;
2028+ StreamMetadata *metadata = &metadata_array[3 ];
2029+
2030+ metadata->response = response;
2031+ metadata->response_ownership = response_ownership;
2032+ metadata->response_owner_id = response_owner_id;
2033+ metadata->call_begin = true ;
2034+ metadata->write_comma = false ;
2035+ metadata->next_offset = 0 ;
2036+ metadata->seqnum = seqnum;
2037+
2038+ em_common.wem_register_sd_energy_manager_daily_data_points_low_level_callback (energy_manager_daily_data_points_handler, metadata);
2039+
20282040 uint8_t status;
20292041 int rc = em_common.wem_get_sd_energy_manager_daily_data_points (year, month, 1 , days_per_month (2000 + year, month), &status);
20302042
20312043 // logger.printfln("history_energy_manager_daily_response: %d-%02d",
20322044 // 2000 + year, month);
20332045
20342046 if (rc != TF_E_OK || status != 0 ) {
2047+ em_common.wem_register_sd_energy_manager_daily_data_points_low_level_callback (nullptr , nullptr );
2048+
20352049 OwnershipGuard ownership_guard (response_ownership, response_owner_id);
20362050
20372051 if (ownership_guard.have_ownership ()) {
@@ -2052,17 +2066,4 @@ void EMEnergyAnalysis::history_energy_manager_daily_response(IChunkedResponse *r
20522066 response->end (write_result);
20532067 }
20542068 }
2055- else {
2056- StreamMetadata *metadata = &metadata_array[3 ];
2057-
2058- metadata->response = response;
2059- metadata->response_ownership = response_ownership;
2060- metadata->response_owner_id = response_owner_id;
2061- metadata->call_begin = true ;
2062- metadata->write_comma = false ;
2063- metadata->next_offset = 0 ;
2064- metadata->seqnum = seqnum;
2065-
2066- em_common.wem_register_sd_energy_manager_daily_data_points_low_level_callback (energy_manager_daily_data_points_handler, metadata);
2067- }
20682069}
0 commit comments