From 28f876171c5908a531a992c1f0e13a4ae6c827c9 Mon Sep 17 00:00:00 2001 From: GitHub build-firmware Action Date: Mon, 29 Nov 2021 03:26:23 +0000 Subject: [PATCH] Auto-generated configs and docs --- .../console/binary/generated/data_logs.ini | 15 ++++ .../binary/generated/output_channels.ini | 75 ++++-------------- .../console/binary/ts_outputs_generated.h | 43 +++++++++- firmware/tunerstudio/generated/cache.zip | Bin 2190347 -> 2190431 bytes 4 files changed, 70 insertions(+), 63 deletions(-) diff --git a/firmware/console/binary/generated/data_logs.ini b/firmware/console/binary/generated/data_logs.ini index c686ca40f9..7be3619ea4 100644 --- a/firmware/console/binary/generated/data_logs.ini +++ b/firmware/console/binary/generated/data_logs.ini @@ -178,3 +178,18 @@ entry = vvtTargets2, "vvtTargets2", int, "%d" entry = vvtTargets3, "vvtTargets3", int, "%d" entry = vvtTargets4, "vvtTargets4", int, "%d" entry = turboSpeed, "Turbocharger Speed", int, "%d" +entry = alternatorStatus_iTerm, "iTerm", float, "%.3f" +entry = alternatorStatus_dTerm, "dTerm", float, "%.3f" +entry = alternatorStatus_output, "output", float, "%.3f" +entry = alternatorStatus_error, "error", float, "%.3f" +entry = alternatorStatus_resetCounter, "resetCounter", int, "%d" +entry = idleStatus_iTerm, "iTerm", float, "%.3f" +entry = idleStatus_dTerm, "dTerm", float, "%.3f" +entry = idleStatus_output, "output", float, "%.3f" +entry = idleStatus_error, "error", float, "%.3f" +entry = idleStatus_resetCounter, "resetCounter", int, "%d" +entry = etbStatus_iTerm, "iTerm", float, "%.3f" +entry = etbStatus_dTerm, "dTerm", float, "%.3f" +entry = etbStatus_output, "output", float, "%.3f" +entry = etbStatus_error, "error", float, "%.3f" +entry = etbStatus_resetCounter, "resetCounter", int, "%d" diff --git a/firmware/console/binary/generated/output_channels.ini b/firmware/console/binary/generated/output_channels.ini index 0f258aa7b1..d2b377d056 100644 --- a/firmware/console/binary/generated/output_channels.ini +++ b/firmware/console/binary/generated/output_channels.ini @@ -444,63 +444,18 @@ unusedAtTheEnd257 = scalar, U08, 576, "", 1, 0 unusedAtTheEnd258 = scalar, U08, 577, "", 1, 0 unusedAtTheEnd259 = scalar, U08, 578, "", 1, 0 unusedAtTheEnd260 = scalar, U08, 579, "", 1, 0 -unusedAtTheEnd261 = scalar, U08, 580, "", 1, 0 -unusedAtTheEnd262 = scalar, U08, 581, "", 1, 0 -unusedAtTheEnd263 = scalar, U08, 582, "", 1, 0 -unusedAtTheEnd264 = scalar, U08, 583, "", 1, 0 -unusedAtTheEnd265 = scalar, U08, 584, "", 1, 0 -unusedAtTheEnd266 = scalar, U08, 585, "", 1, 0 -unusedAtTheEnd267 = scalar, U08, 586, "", 1, 0 -unusedAtTheEnd268 = scalar, U08, 587, "", 1, 0 -unusedAtTheEnd269 = scalar, U08, 588, "", 1, 0 -unusedAtTheEnd270 = scalar, U08, 589, "", 1, 0 -unusedAtTheEnd271 = scalar, U08, 590, "", 1, 0 -unusedAtTheEnd272 = scalar, U08, 591, "", 1, 0 -unusedAtTheEnd273 = scalar, U08, 592, "", 1, 0 -unusedAtTheEnd274 = scalar, U08, 593, "", 1, 0 -unusedAtTheEnd275 = scalar, U08, 594, "", 1, 0 -unusedAtTheEnd276 = scalar, U08, 595, "", 1, 0 -unusedAtTheEnd277 = scalar, U08, 596, "", 1, 0 -unusedAtTheEnd278 = scalar, U08, 597, "", 1, 0 -unusedAtTheEnd279 = scalar, U08, 598, "", 1, 0 -unusedAtTheEnd280 = scalar, U08, 599, "", 1, 0 -unusedAtTheEnd281 = scalar, U08, 600, "", 1, 0 -unusedAtTheEnd282 = scalar, U08, 601, "", 1, 0 -unusedAtTheEnd283 = scalar, U08, 602, "", 1, 0 -unusedAtTheEnd284 = scalar, U08, 603, "", 1, 0 -unusedAtTheEnd285 = scalar, U08, 604, "", 1, 0 -unusedAtTheEnd286 = scalar, U08, 605, "", 1, 0 -unusedAtTheEnd287 = scalar, U08, 606, "", 1, 0 -unusedAtTheEnd288 = scalar, U08, 607, "", 1, 0 -unusedAtTheEnd289 = scalar, U08, 608, "", 1, 0 -unusedAtTheEnd290 = scalar, U08, 609, "", 1, 0 -unusedAtTheEnd291 = scalar, U08, 610, "", 1, 0 -unusedAtTheEnd292 = scalar, U08, 611, "", 1, 0 -unusedAtTheEnd293 = scalar, U08, 612, "", 1, 0 -unusedAtTheEnd294 = scalar, U08, 613, "", 1, 0 -unusedAtTheEnd295 = scalar, U08, 614, "", 1, 0 -unusedAtTheEnd296 = scalar, U08, 615, "", 1, 0 -unusedAtTheEnd297 = scalar, U08, 616, "", 1, 0 -unusedAtTheEnd298 = scalar, U08, 617, "", 1, 0 -unusedAtTheEnd299 = scalar, U08, 618, "", 1, 0 -unusedAtTheEnd300 = scalar, U08, 619, "", 1, 0 -unusedAtTheEnd301 = scalar, U08, 620, "", 1, 0 -unusedAtTheEnd302 = scalar, U08, 621, "", 1, 0 -unusedAtTheEnd303 = scalar, U08, 622, "", 1, 0 -unusedAtTheEnd304 = scalar, U08, 623, "", 1, 0 -unusedAtTheEnd305 = scalar, U08, 624, "", 1, 0 -unusedAtTheEnd306 = scalar, U08, 625, "", 1, 0 -unusedAtTheEnd307 = scalar, U08, 626, "", 1, 0 -unusedAtTheEnd308 = scalar, U08, 627, "", 1, 0 -unusedAtTheEnd309 = scalar, U08, 628, "", 1, 0 -unusedAtTheEnd310 = scalar, U08, 629, "", 1, 0 -unusedAtTheEnd311 = scalar, U08, 630, "", 1, 0 -unusedAtTheEnd312 = scalar, U08, 631, "", 1, 0 -unusedAtTheEnd313 = scalar, U08, 632, "", 1, 0 -unusedAtTheEnd314 = scalar, U08, 633, "", 1, 0 -unusedAtTheEnd315 = scalar, U08, 634, "", 1, 0 -unusedAtTheEnd316 = scalar, U08, 635, "", 1, 0 -unusedAtTheEnd317 = scalar, U08, 636, "", 1, 0 -unusedAtTheEnd318 = scalar, U08, 637, "", 1, 0 -unusedAtTheEnd319 = scalar, U08, 638, "", 1, 0 -unusedAtTheEnd320 = scalar, U08, 639, "", 1, 0 +alternatorStatus_iTerm = scalar, F32, 580, "", 1, 0 +alternatorStatus_dTerm = scalar, F32, 584, "", 1, 0 +alternatorStatus_output = scalar, F32, 588, "", 1, 0 +alternatorStatus_error = scalar, F32, 592, "", 1, 0 +alternatorStatus_resetCounter = scalar, S32, 596, "", 1, 0 +idleStatus_iTerm = scalar, F32, 600, "", 1, 0 +idleStatus_dTerm = scalar, F32, 604, "", 1, 0 +idleStatus_output = scalar, F32, 608, "", 1, 0 +idleStatus_error = scalar, F32, 612, "", 1, 0 +idleStatus_resetCounter = scalar, S32, 616, "", 1, 0 +etbStatus_iTerm = scalar, F32, 620, "", 1, 0 +etbStatus_dTerm = scalar, F32, 624, "", 1, 0 +etbStatus_output = scalar, F32, 628, "", 1, 0 +etbStatus_error = scalar, F32, 632, "", 1, 0 +etbStatus_resetCounter = scalar, S32, 636, "", 1, 0 diff --git a/firmware/console/binary/ts_outputs_generated.h b/firmware/console/binary/ts_outputs_generated.h index 76d8d01c44..56ddd94ce7 100644 --- a/firmware/console/binary/ts_outputs_generated.h +++ b/firmware/console/binary/ts_outputs_generated.h @@ -1,8 +1,33 @@ -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on (unknown script) console/binary/output_channels.txt Mon Nov 29 02:00:36 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on (unknown script) console/binary/output_channels.txt Mon Nov 29 03:26:15 UTC 2021 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once #include "rusefi_types.h" +// start of pid_status_s +struct pid_status_s { + /** + * offset 0 + */ + float iTerm = (float)0; + /** + * offset 4 + */ + float dTerm = (float)0; + /** + * offset 8 + */ + float output = (float)0; + /** + * offset 12 + */ + float error = (float)0; + /** + * offset 16 + */ + int resetCounter = (int)0; + /** total size 20*/ +}; + // start of ts_outputs_s struct ts_outputs_s { /** @@ -799,9 +824,21 @@ struct ts_outputs_s { /** * offset 320 */ - uint8_t unusedAtTheEnd[320]; + uint8_t unusedAtTheEnd[260]; + /** + * offset 580 + */ + pid_status_s alternatorStatus; + /** + * offset 600 + */ + pid_status_s idleStatus; + /** + * offset 620 + */ + pid_status_s etbStatus; /** total size 640*/ }; // end -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on (unknown script) console/binary/output_channels.txt Mon Nov 29 02:00:36 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on (unknown script) console/binary/output_channels.txt Mon Nov 29 03:26:15 UTC 2021 diff --git a/firmware/tunerstudio/generated/cache.zip b/firmware/tunerstudio/generated/cache.zip index 03c8b72dd8a0e23753b168d4642c026870bee4c2..9957b94e09d5bc62433f19268024ab2daa5976a1 100644 GIT binary patch delta 3666 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 PDFOq-008o+AOHXWKYFuD