Merge remote-tracking branch 'origin/master' into master

This commit is contained in:
rusefillc 2021-02-28 19:41:06 -05:00
commit b54c1f13de
103 changed files with 642 additions and 407 deletions

@ -1 +1 @@
Subproject commit fbd6f482af0c3764f55749e29722372b2b2e3b36
Subproject commit e7cdad3d1a041caea83729fd2c709fd963fb40b0

View File

@ -1,4 +1,4 @@
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Thu Feb 25 02:57:29 UTC 2021
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Sun Feb 28 23:58:13 UTC 2021
// by class com.rusefi.output.CHeaderConsumer
// begin
#pragma once
@ -3864,4 +3864,4 @@ struct persistent_config_s {
typedef struct persistent_config_s persistent_config_s;
// end
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Thu Feb 25 02:57:29 UTC 2021
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Sun Feb 28 23:58:13 UTC 2021

View File

@ -1242,7 +1242,7 @@
#define showHumanReadableWarning_offset 976
#define showSdCardWarning_offset 76
#define SIGNATURE_BOARD hellen_cypress
#define SIGNATURE_DATE 2021.02.25
#define SIGNATURE_DATE 2021.02.28
#define SIGNATURE_HASH 1039053165
#define silentTriggerError_offset 1464
#define slowAdcAlpha_offset 2088
@ -1577,7 +1577,7 @@
#define ts_show_spi true
#define ts_show_trigger_comparator false
#define ts_show_tunerstudio_port true
#define TS_SIGNATURE "rusEFI 2021.02.25.hellen_cypress.1039053165"
#define TS_SIGNATURE "rusEFI 2021.02.28.hellen_cypress.1039053165"
#define TS_SINGLE_WRITE_COMMAND 'W'
#define TS_SINGLE_WRITE_COMMAND_char W
#define TS_TEST_COMMAND 't' // 0x74

View File

@ -163,6 +163,7 @@
#endif
#define EFI_INTERNAL_ADC TRUE
#define EFI_USE_FAST_ADC TRUE
#define EFI_NARROW_EGO_AVERAGING FALSE

View File

@ -169,9 +169,6 @@ void setBoardConfigurationOverrides(void) {
engineConfiguration->injectionMode = IM_SIMULTANEOUS;//IM_BATCH;// IM_SEQUENTIAL;
}
void setAdcChannelOverrides(void) {
}
/**
* @brief Board-specific SD card configuration code overrides. Needed by bootloader code.
* @todo Add your board-specific code, if any.

View File

@ -1,4 +1,4 @@
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Thu Feb 25 02:57:25 UTC 2021
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Sun Feb 28 23:58:11 UTC 2021
// by class com.rusefi.output.CHeaderConsumer
// begin
#pragma once
@ -3859,4 +3859,4 @@ struct persistent_config_s {
typedef struct persistent_config_s persistent_config_s;
// end
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Thu Feb 25 02:57:25 UTC 2021
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Sun Feb 28 23:58:11 UTC 2021

View File

@ -1226,7 +1226,7 @@
#define showHumanReadableWarning_offset 976
#define showSdCardWarning_offset 76
#define SIGNATURE_BOARD kin
#define SIGNATURE_DATE 2021.02.25
#define SIGNATURE_DATE 2021.02.28
#define SIGNATURE_HASH 3259727249
#define silentTriggerError_offset 1464
#define slowAdcAlpha_offset 2088
@ -1561,7 +1561,7 @@
#define ts_show_spi true
#define ts_show_trigger_comparator true
#define ts_show_tunerstudio_port true
#define TS_SIGNATURE "rusEFI 2021.02.25.kin.3259727249"
#define TS_SIGNATURE "rusEFI 2021.02.28.kin.3259727249"
#define TS_SINGLE_WRITE_COMMAND 'W'
#define TS_SINGLE_WRITE_COMMAND_char W
#define TS_TEST_COMMAND 't' // 0x74

View File

@ -144,6 +144,8 @@
#define EFI_INTERNAL_ADC TRUE
#endif
#define EFI_USE_FAST_ADC TRUE
#define EFI_NARROW_EGO_AVERAGING FALSE
#ifndef EFI_CAN_SUPPORT

View File

@ -77,7 +77,3 @@ void setBoardConfigurationOverrides(void) {
void setSdCardConfigurationOverrides(void) {
}
void setAdcChannelOverrides(void) {
}

View File

@ -248,9 +248,6 @@ void setBoardConfigurationOverrides(void) {
engineConfiguration->injectionMode = IM_SIMULTANEOUS;//IM_BATCH;// IM_SEQUENTIAL;
}
void setAdcChannelOverrides(void) {
}
/**
* @brief Board-specific SD card configuration code overrides. Needed by bootloader code.
* @todo Add your board-specific code, if any.

View File

@ -78,6 +78,3 @@ void setBoardConfigurationOverrides(void) {
engineConfiguration->is_enabled_spi_2 = false;
engineConfiguration->is_enabled_spi_3 = false;
}
void setAdcChannelOverrides(void) {
}

View File

@ -27,19 +27,3 @@ void setSerialConfigurationOverrides(void) {
*/
void setSdCardConfigurationOverrides(void) {
}
/**
* @brief Board-specific ADC channel configuration code overrides.
* @todo Add your board-specific code, if any.
*/
void setAdcChannelOverrides(void) {
}
// TODO: fix analog inputs so we don't need these stubs
float getVoltage(const char*, adc_channel_e) {
return 0;
}
float getVoltageDivided(const char*, adc_channel_e) {
return 0;
}

View File

@ -1,14 +1,6 @@
#include "hal.h"
#include "stm32_gpio.h"
/**
* @brief Board-specific ADC channel configuration code overrides.
* @todo Add your board-specific code, if any.
*/
void setAdcChannelOverrides(void) {
}
#define PROMETHEUS_LED 13
// BLIIINK!!!!!!!!!!

View File

@ -32,9 +32,6 @@
#undef EFI_USB_SERIAL
#define EFI_USB_SERIAL FALSE
#undef MMC_CARD_SPI
#define MMC_CARD_SPI SPID1
#define ADC_CHANNEL_VREF ADC_CHANNEL_IN14
#undef PRIMARY_UART_DMA_MODE

View File

@ -14,6 +14,8 @@
#include "efilib.h"
#if USE_ADC3_VBATT_HACK
static ADCConversionGroup adcConvGroup = { FALSE, 1, nullptr, nullptr,
0,
ADC_CR2_SWSTART,
@ -51,3 +53,5 @@ void proteusAdcHack()
vbattSampleProteus = sum / efi::size(samples);
}
#endif /* USE_ADC3_VBATT_HACK */

View File

@ -1,11 +1,11 @@
# List of all the board related files.
BOARDCPPSRC = $(PROJECT_DIR)/config/boards/proteus/board_configuration.cpp \
$(PROJECT_DIR)/config/boards/proteus/adc_hack.cpp
BOARDINC = $(PROJECT_DIR)/config/boards/proteus
# Target processor details
ifeq ($(PROJECT_CPU),ARCH_STM32F4)
else
ifeq ($(PROJECT_CPU),ARCH_STM32F7)
PROTEUS_LEGACY = TRUE
endif
@ -17,8 +17,13 @@ DDEFS += -DEFI_ICU_INPUTS=FALSE -DHAL_TRIGGER_USE_PAL=TRUE
DDEFS += -DEFI_LOGIC_ANALYZER=FALSE
# todo: refactor HAL_VSS_USE_PAL
DDEFS += -DHAL_VSS_USE_PAL=TRUE
DDEFS += -DSTM32_ADC_USE_ADC3=TRUE
DDEFS += -DEFI_SOFTWARE_KNOCK=TRUE
# This stuff doesn't work on H7 yet
ifneq ($(PROJECT_CPU),ARCH_STM32H7)
DDEFS += -DSTM32_ADC_USE_ADC3=TRUE
DDEFS += -DEFI_SOFTWARE_KNOCK=TRUE
endif
DDEFS += -DEFI_CONSOLE_TX_BRAIN_PIN=GPIO_UNASSIGNED -DEFI_CONSOLE_RX_BRAIN_PIN=GPIO_UNASSIGNED
# We are running on Proteus hardware!

View File

@ -226,9 +226,6 @@ void setBoardConfigurationOverrides(void) {
engineConfiguration->injectionMode = IM_SIMULTANEOUS;
}
void setAdcChannelOverrides(void) {
}
/*
* Local variables:
* c-basic-indent: 4

View File

@ -31,10 +31,3 @@ void setSerialConfigurationOverrides(void) {
*/
void setSdCardConfigurationOverrides(void) {
}
/**
* @brief Board-specific ADC channel configuration code overrides.
* @todo Add your board-specific code, if any.
*/
void setAdcChannelOverrides(void) {
}

View File

@ -180,13 +180,6 @@ bool mmc_lld_is_write_protected(MMCDriver *mmcp)
}
#endif
/**
* @brief Board-specific ADC channel configuration code overrides.
* @todo Add your board-specific code, if any.
*/
void setAdcChannelOverrides(void) {
}
#define STATUS_LED_PIN 8
#define STATUS_LED_PORT GPIOG

View File

@ -1,4 +1,4 @@
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:30 UTC 2021
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:58:15 UTC 2021
// by class com.rusefi.output.CHeaderConsumer
// begin
#pragma once
@ -3864,4 +3864,4 @@ struct persistent_config_s {
typedef struct persistent_config_s persistent_config_s;
// end
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:30 UTC 2021
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:58:15 UTC 2021

View File

@ -1242,7 +1242,7 @@
#define showHumanReadableWarning_offset 976
#define showSdCardWarning_offset 76
#define SIGNATURE_BOARD subaru_eg33_f7
#define SIGNATURE_DATE 2021.02.25
#define SIGNATURE_DATE 2021.02.28
#define SIGNATURE_HASH 3175160971
#define silentTriggerError_offset 1464
#define slowAdcAlpha_offset 2088
@ -1577,7 +1577,7 @@
#define ts_show_spi true
#define ts_show_trigger_comparator false
#define ts_show_tunerstudio_port false
#define TS_SIGNATURE "rusEFI 2021.02.25.subaru_eg33_f7.3175160971"
#define TS_SIGNATURE "rusEFI 2021.02.28.subaru_eg33_f7.3175160971"
#define TS_SINGLE_WRITE_COMMAND 'W'
#define TS_SINGLE_WRITE_COMMAND_char W
#define TS_TEST_COMMAND 't' // 0x74

View File

@ -33,6 +33,10 @@
/* do not use serial device for console */
#undef TS_SERIAL_DEVICE
/* Knock detection */
#undef EFI_HIP_9011
#define EFI_HIP_9011 TRUE
#undef BOARD_TLE6240_COUNT
#define BOARD_TLE6240_COUNT 1
@ -84,8 +88,7 @@
#undef EFI_FUEL_PUMP
#define EFI_FUEL_PUMP TRUE
#undef MMC_CARD_SPI
#define MMC_CARD_SPI SPID1
#define EFI_SDC_DEVICE SDCD2
#define ADC_CHANNEL_VREF ADC_CHANNEL_IN14

View File

@ -193,6 +193,8 @@
#define EFI_INTERNAL_ADC TRUE
#endif
#define EFI_USE_FAST_ADC TRUE
#define EFI_NARROW_EGO_AVERAGING TRUE
#ifndef EFI_CAN_SUPPORT

View File

@ -2,8 +2,8 @@
#pragma once
#undef EFI_INTERNAL_FLASH
#define EFI_INTERNAL_FLASH FALSE
#undef EFI_USE_FAST_ADC
#define EFI_USE_FAST_ADC FALSE
#undef EFI_MC33816
#define EFI_MC33816 FALSE

View File

@ -18,6 +18,7 @@
#include "tunerstudio_io.h"
#include "bluetooth.h"
#include "engine_configuration.h"
#include "thread_priority.h"
#if EFI_BLUETOOTH_SETUP
@ -289,7 +290,7 @@ void bluetoothStart(ts_channel_s *btChan, bluetooth_module_e moduleType, const c
commands[numCommands++] = cmdPin;
// create a thread to execute these commands later
btThread = chThdCreateStatic(btThreadStack, sizeof(btThreadStack), NORMALPRIO, (tfunc_t)btThreadEntryPoint, NULL);
btThread = chThdCreateStatic(btThreadStack, sizeof(btThreadStack), PRIO_CONSOLE, (tfunc_t)btThreadEntryPoint, NULL);
btProcessIsStarted = true;
}

View File

@ -87,6 +87,7 @@
#include "status_loop.h"
#include "mmc_card.h"
#include "perf_trace.h"
#include "thread_priority.h"
#include "signature.h"
@ -907,7 +908,7 @@ void startTunerStudioConnectivity(void) {
addConsoleAction("bluetooth_cancel", bluetoothCancel);
#endif /* EFI_BLUETOOTH_SETUP */
chThdCreateStatic(tunerstudioThreadStack, sizeof(tunerstudioThreadStack), NORMALPRIO, (tfunc_t)tsThreadEntryPoint, NULL);
chThdCreateStatic(tunerstudioThreadStack, sizeof(tunerstudioThreadStack), PRIO_CONSOLE, (tfunc_t)tsThreadEntryPoint, NULL);
}
#endif

View File

@ -39,6 +39,7 @@
#include "os_util.h"
#include "tunerstudio.h"
#include "connector_uart_dma.h"
#include "thread_priority.h"
#if EFI_SIMULATOR
#include "rusEfiFunctionalTest.h"
@ -265,6 +266,6 @@ void startConsole(Logging *sharedLogger, CommandHandler console_line_callback_p)
#endif /* EFI_CONSOLE_SERIAL_DEVICE || EFI_CONSOLE_UART_DEVICE */
#if !defined(EFI_CONSOLE_NO_THREAD)
chThdCreateStatic(consoleThreadStack, sizeof(consoleThreadStack), NORMALPRIO, (tfunc_t)consoleThreadEntryPoint, NULL);
chThdCreateStatic(consoleThreadStack, sizeof(consoleThreadStack), PRIO_CONSOLE, (tfunc_t)consoleThreadEntryPoint, NULL);
#endif /* EFI_CONSOLE_NO_THREAD */
}

View File

@ -83,6 +83,7 @@
#include "dc_motor.h"
#include "dc_motors.h"
#include "pid_auto_tune.h"
#include "thread_priority.h"
#if defined(HAS_OS_ACCESS)
#error "Unexpected OS ACCESS HERE"
@ -651,7 +652,7 @@ struct EtbImpl final : public EtbController {
static EtbImpl etbControllers[ETB_COUNT];
struct EtbThread final : public PeriodicController<512> {
EtbThread() : PeriodicController("ETB", NORMALPRIO + 3, ETB_LOOP_FREQUENCY) {}
EtbThread() : PeriodicController("ETB", PRIO_ETB, ETB_LOOP_FREQUENCY) {}
void PeriodicTask(efitick_t) override {
// Simply update all controllers

View File

@ -16,13 +16,14 @@
#include "can_dash.h"
#include "obd2.h"
#include "can_sensor.h"
#include "thread_priority.h"
EXTERN_ENGINE;
extern CanSensorBase* cansensors_head;
CanWrite::CanWrite()
: PeriodicController("CAN TX", NORMALPRIO, 50)
: PeriodicController("CAN TX", PRIO_CAN_TX, 50)
{
}

@ -1 +1 @@
Subproject commit cf106b65555d3dce3ca16424fdc18606f01355d9
Subproject commit ab8c24564f40162b08599831b03eec3568a9c953

View File

@ -1,2 +1,2 @@
#pragma once
#define VCS_DATE 20210225
#define VCS_DATE 20210228

View File

@ -94,9 +94,6 @@ RpmCalculator::RpmCalculator() :
#endif /* EFI_PROD_CODE */
// todo: reuse assignRpmValue() method which needs PASS_ENGINE_PARAMETER_SUFFIX
// which we cannot provide inside this parameter-less constructor. need a solution for this minor mess
// we need this initial to have not_running at first invocation
lastRpmEventTimeNt = (efitick_t) DEEP_IN_THE_PAST_SECONDS * NT_PER_SECOND;
}
/**
@ -118,11 +115,15 @@ bool RpmCalculator::checkIfSpinning(efitick_t nowNt) const {
* note that the result of this subtraction could be negative, that would happen if
* we have a trigger event between the time we've invoked 'getTimeNow' and here
*/
bool noRpmEventsForTooLong = nowNt - lastRpmEventTimeNt >= NT_PER_SECOND * NO_RPM_EVENTS_TIMEOUT_SECS; // Anything below 60 rpm is not running
// Anything below 60 rpm is not running
bool noRpmEventsForTooLong = lastTdcTimer.getElapsedSeconds(nowNt) > NO_RPM_EVENTS_TIMEOUT_SECS;
/**
* Also check if there were no trigger events
*/
bool noTriggerEventsForTooLong = nowNt - engine->triggerCentral.triggerState.previousShaftEventTimeNt >= NT_PER_SECOND;
bool noTriggerEventsForTooLong = engine->triggerCentral.getTimeSinceTriggerEvent(nowNt) >= 1;
if (noRpmEventsForTooLong || noTriggerEventsForTooLong) {
return false;
}
@ -252,8 +253,9 @@ void rpmShaftPositionCallback(trigger_event_e ckpSignalType,
if (index == 0) {
bool hadRpmRecently = rpmState->checkIfSpinning(nowNt);
float periodSeconds = engine->rpmCalculator.lastTdcTimer.getElapsedSecondsAndReset(nowNt);
if (hadRpmRecently) {
int32_t diffNt = (int32_t)(nowNt - rpmState->lastRpmEventTimeNt);
/**
* Four stroke cycle is two crankshaft revolutions
*
@ -261,22 +263,21 @@ void rpmShaftPositionCallback(trigger_event_e ckpSignalType,
* and each revolution of crankshaft consists of two engine cycles revolutions
*
*/
if (diffNt == 0) {
if (periodSeconds == 0) {
rpmState->setRpmValue(NOISY_RPM);
rpmState->rpmRate = 0;
} else {
int mult = (int)getEngineCycle(engine->getOperationMode(PASS_ENGINE_PARAMETER_SIGNATURE)) / 360;
float rpm = 60.0 * NT_PER_SECOND * mult / diffNt;
float rpm = 60 * mult / periodSeconds;
auto rpmDelta = rpm - rpmState->previousRpmValue;
rpmState->rpmRate = rpmDelta / (mult * 1e-6 * NT2US(diffNt));
rpmState->rpmRate = rpmDelta / (mult * periodSeconds);
rpmState->setRpmValue(rpm > UNREALISTIC_RPM ? NOISY_RPM : rpm);
}
}
rpmState->onNewEngineCycle();
rpmState->lastRpmEventTimeNt = nowNt;
}
@ -363,16 +364,13 @@ void tdcMarkCallback(
* @return Current crankshaft angle, 0 to 720 for four-stroke
*/
float getCrankshaftAngleNt(efitick_t timeNt DECLARE_ENGINE_PARAMETER_SUFFIX) {
efitick_t timeSinceZeroAngleNt = timeNt
- engine->rpmCalculator.lastRpmEventTimeNt;
float timeSinceZeroAngle = engine->rpmCalculator.lastTdcTimer.getElapsedSeconds(timeNt);
/**
* even if we use 'getOneDegreeTimeUs' macros here, it looks like the
* compiler is not smart enough to figure out that "A / ( B / C)" could be optimized into
* "A * C / B" in order to replace a slower division with a faster multiplication.
*/
int rpm = GET_RPM();
return rpm == 0 ? NAN : timeSinceZeroAngleNt / getOneDegreeTimeNt(rpm);
float oneDegreeSeconds = (60.0f / 360) / rpm;
return rpm == 0 ? NAN : timeSinceZeroAngle / oneDegreeSeconds;
}
void initRpmCalculator(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) {

View File

@ -11,6 +11,7 @@
#include "globalaccess.h"
#include "scheduler.h"
#include "stored_value_sensor.h"
#include "timer.h"
// we use this value in case of noise on trigger input lines
#define NOISY_RPM -1
@ -113,7 +114,8 @@ public:
* NaN while engine is not spinning
*/
volatile floatus_t oneDegreeUs = NAN;
volatile efitick_t lastRpmEventTimeNt = 0;
Timer lastTdcTimer;
// RPM rate of change, in RPM per second
float rpmRate = 0;

View File

@ -1,4 +1,4 @@
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:02 UTC 2021
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:45 UTC 2021
// by class com.rusefi.output.CHeaderConsumer
// begin
#pragma once
@ -3864,4 +3864,4 @@ struct persistent_config_s {
typedef struct persistent_config_s persistent_config_s;
// end
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:02 UTC 2021
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:45 UTC 2021

View File

@ -1,4 +1,4 @@
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:02 UTC 2021
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:45 UTC 2021
// by class com.rusefi.output.FileFsioSettingsConsumer
FSIO_SETTING_FANONTEMPERATURE = 1000,

View File

@ -1,4 +1,4 @@
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:02 UTC 2021
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:45 UTC 2021
// by class com.rusefi.output.FileFsioSettingsConsumer
case FSIO_SETTING_FANONTEMPERATURE:

View File

@ -1,4 +1,4 @@
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:02 UTC 2021
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:45 UTC 2021
// by class com.rusefi.output.FileFsioSettingsConsumer
static LENameOrdinalPair lefanOnTemperature(FSIO_SETTING_FANONTEMPERATURE, "cfg_fanOnTemperature");

View File

@ -1,4 +1,4 @@
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:02 UTC 2021
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:45 UTC 2021
// by class com.rusefi.output.FileFsioSettingsConsumer
case FSIO_SETTING_FANONTEMPERATURE:

View File

@ -1239,7 +1239,7 @@
#define showHumanReadableWarning_offset 976
#define showSdCardWarning_offset 76
#define SIGNATURE_BOARD all
#define SIGNATURE_DATE 2021.02.25
#define SIGNATURE_DATE 2021.02.28
#define SIGNATURE_HASH 2140302013
#define silentTriggerError_offset 1464
#define slowAdcAlpha_offset 2088
@ -1574,7 +1574,7 @@
#define ts_show_spi true
#define ts_show_trigger_comparator false
#define ts_show_tunerstudio_port true
#define TS_SIGNATURE "rusEFI 2021.02.25.all.2140302013"
#define TS_SIGNATURE "rusEFI 2021.02.28.all.2140302013"
#define TS_SINGLE_WRITE_COMMAND 'W'
#define TS_SINGLE_WRITE_COMMAND_char W
#define TS_TEST_COMMAND 't' // 0x74

View File

@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD all
#define SIGNATURE_DATE 2021.02.25
#define SIGNATURE_DATE 2021.02.28
#define SIGNATURE_HASH 2140302013
#define TS_SIGNATURE "rusEFI 2021.02.25.all.2140302013"
#define TS_SIGNATURE "rusEFI 2021.02.28.all.2140302013"

View File

@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD frankenso_na6
#define SIGNATURE_DATE 2021.02.25
#define SIGNATURE_DATE 2021.02.28
#define SIGNATURE_HASH 4226303790
#define TS_SIGNATURE "rusEFI 2021.02.25.frankenso_na6.4226303790"
#define TS_SIGNATURE "rusEFI 2021.02.28.frankenso_na6.4226303790"

View File

@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD hellen72
#define SIGNATURE_DATE 2021.02.25
#define SIGNATURE_DATE 2021.02.28
#define SIGNATURE_HASH 96926268
#define TS_SIGNATURE "rusEFI 2021.02.25.hellen72.96926268"
#define TS_SIGNATURE "rusEFI 2021.02.28.hellen72.96926268"

View File

@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD hellen_cypress
#define SIGNATURE_DATE 2021.02.25
#define SIGNATURE_DATE 2021.02.28
#define SIGNATURE_HASH 1039053165
#define TS_SIGNATURE "rusEFI 2021.02.25.hellen_cypress.1039053165"
#define TS_SIGNATURE "rusEFI 2021.02.28.hellen_cypress.1039053165"

View File

@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD kin
#define SIGNATURE_DATE 2021.02.25
#define SIGNATURE_DATE 2021.02.28
#define SIGNATURE_HASH 3259727249
#define TS_SIGNATURE "rusEFI 2021.02.25.kin.3259727249"
#define TS_SIGNATURE "rusEFI 2021.02.28.kin.3259727249"

View File

@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD mre_f4
#define SIGNATURE_DATE 2021.02.25
#define SIGNATURE_DATE 2021.02.28
#define SIGNATURE_HASH 1364465751
#define TS_SIGNATURE "rusEFI 2021.02.25.mre_f4.1364465751"
#define TS_SIGNATURE "rusEFI 2021.02.28.mre_f4.1364465751"

View File

@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD mre_f7
#define SIGNATURE_DATE 2021.02.25
#define SIGNATURE_DATE 2021.02.28
#define SIGNATURE_HASH 1364465751
#define TS_SIGNATURE "rusEFI 2021.02.25.mre_f7.1364465751"
#define TS_SIGNATURE "rusEFI 2021.02.28.mre_f7.1364465751"

View File

@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD prometheus_405
#define SIGNATURE_DATE 2021.02.25
#define SIGNATURE_DATE 2021.02.28
#define SIGNATURE_HASH 1829005451
#define TS_SIGNATURE "rusEFI 2021.02.25.prometheus_405.1829005451"
#define TS_SIGNATURE "rusEFI 2021.02.28.prometheus_405.1829005451"

View File

@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD prometheus_469
#define SIGNATURE_DATE 2021.02.25
#define SIGNATURE_DATE 2021.02.28
#define SIGNATURE_HASH 1829005451
#define TS_SIGNATURE "rusEFI 2021.02.25.prometheus_469.1829005451"
#define TS_SIGNATURE "rusEFI 2021.02.28.prometheus_469.1829005451"

View File

@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD proteus_f4
#define SIGNATURE_DATE 2021.02.25
#define SIGNATURE_DATE 2021.02.28
#define SIGNATURE_HASH 413377170
#define TS_SIGNATURE "rusEFI 2021.02.25.proteus_f4.413377170"
#define TS_SIGNATURE "rusEFI 2021.02.28.proteus_f4.413377170"

View File

@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD proteus_f7
#define SIGNATURE_DATE 2021.02.25
#define SIGNATURE_DATE 2021.02.28
#define SIGNATURE_HASH 413377170
#define TS_SIGNATURE "rusEFI 2021.02.25.proteus_f7.413377170"
#define TS_SIGNATURE "rusEFI 2021.02.28.proteus_f7.413377170"

View File

@ -3,6 +3,6 @@
//
#define SIGNATURE_BOARD subaru_eg33_f7
#define SIGNATURE_DATE 2021.02.25
#define SIGNATURE_DATE 2021.02.28
#define SIGNATURE_HASH 3175160971
#define TS_SIGNATURE "rusEFI 2021.02.25.subaru_eg33_f7.3175160971"
#define TS_SIGNATURE "rusEFI 2021.02.28.subaru_eg33_f7.3175160971"

View File

@ -34,11 +34,6 @@ void setFlatInjectorLag(float value DECLARE_CONFIG_PARAMETER_SUFFIX);
*/
#define getOneDegreeTimeUs(rpm) (1000000.0f * 60 / 360 / (rpm))
/**
* @return float, time needed to rotate crankshaft by one degree, in native clicks.
*/
#define getOneDegreeTimeNt(rpm) (US2NT(1000000) * 60.0f / 360 / (rpm))
floatms_t getCrankshaftRevolutionTimeMs(int rpm);
floatms_t getEngineCycleDuration(int rpm DECLARE_ENGINE_PARAMETER_SUFFIX);

View File

@ -5,6 +5,7 @@
#include "perf_trace.h"
#include "thread_controller.h"
#include "software_knock.h"
#include "thread_priority.h"
#if EFI_SOFTWARE_KNOCK
@ -162,7 +163,7 @@ void startKnockSampling(uint8_t cylinderIndex) {
class KnockThread : public ThreadController<256> {
public:
KnockThread() : ThreadController("knock", NORMALPRIO - 10) {}
KnockThread() : ThreadController("knock", PRIO_KNOCK_PROCESS) {}
void ThreadTask() override;
};

View File

@ -17,6 +17,7 @@
#include "allsensors.h"
#include "vehicle_speed.h"
#include "thread_priority.h"
EXTERN_ENGINE;
@ -29,7 +30,7 @@ uint8_t sb = 0;
bool clear_ser_buffer = false;
SerialRead::SerialRead()
: ThreadController("AUX Serial RX", NORMALPRIO) {
: ThreadController("AUX Serial RX", PRIO_AUX_SERIAL) {
}
void SerialRead::ThreadTask() {

View File

@ -0,0 +1,36 @@
/**
* @file thread_priority.h
* @brief This file sets the thread priority for the threads running on rusEFI
*
* @date February 27, 2021
* @author Matthew Kennedy, (c) 2021
*/
#pragma once
// ADC and ETB get highest priority - not much else actually runs the engine
#define PRIO_ADC (NORMALPRIO + 10)
#define PRIO_ETB (NORMALPRIO + 9)
// GPIO chips should be fast and go right back to sleep, plus can be timing sensitive
#define PRIO_GPIOCHIP (NORMALPRIO + 8)
// TX higher priority than RX because the ECU is generally the one transmitting the highest priority messages
#define PRIO_CAN_TX (NORMALPRIO + 7)
#define PRIO_CAN_RX (NORMALPRIO + 6)
// Less critical harware
#define PRIO_SERVO (NORMALPRIO + 5)
#define PRIO_STEPPER (NORMALPRIO + 5)
#define PRIO_CJ125 (NORMALPRIO + 5)
// Console thread
#define PRIO_CONSOLE (NORMALPRIO + 1)
// Less important things
#define PRIO_MMC (NORMALPRIO - 1)
// These can get starved without too much adverse effect
#define PRIO_AUX_SERIAL NORMALPRIO
#define PRIO_KNOCK_PROCESS (NORMALPRIO - 10)
#define PRIO_HIP9011 (NORMALPRIO - 10)

View File

@ -36,6 +36,7 @@
#include "engine_controller.h"
#include "maf.h"
#include "perf_trace.h"
#include "thread_priority.h"
static NO_CACHE adcsample_t slowAdcSampleBuf[ADC_BUF_DEPTH_SLOW * ADC_MAX_CHANNELS_COUNT];
static NO_CACHE adcsample_t fastAdcSampleBuf[ADC_BUF_DEPTH_FAST * ADC_MAX_CHANNELS_COUNT];
@ -166,6 +167,7 @@ static ADCConversionGroup adcgrpcfgSlow = {
AdcDevice slowAdc(&adcgrpcfgSlow, slowAdcSampleBuf, ARRAY_SIZE(slowAdcSampleBuf));
#if EFI_USE_FAST_ADC
void adc_callback_fast(ADCDriver *adcp);
static ADCConversionGroup adcgrpcfgFast = {
@ -214,7 +216,6 @@ static ADCConversionGroup adcgrpcfgFast = {
AdcDevice fastAdc(&adcgrpcfgFast, fastAdcSampleBuf, ARRAY_SIZE(fastAdcSampleBuf));
#if HAL_USE_GPT
static void fast_adc_callback(GPTDriver*) {
#if EFI_INTERNAL_ADC
/*
@ -240,7 +241,7 @@ static void fast_adc_callback(GPTDriver*) {
fastAdc.conversionCount++;
#endif /* EFI_INTERNAL_ADC */
}
#endif /* HAL_USE_GPT */
#endif // EFI_USE_FAST_ADC
static float mcuTemperature;
@ -259,7 +260,7 @@ int getInternalAdcValue(const char *msg, adc_channel_e hwChannel) {
#endif /* EFI_ENABLE_MOCK_ADC */
#if EFI_USE_FAST_ADC
if (adcHwChannelEnabled[hwChannel] == ADC_FAST) {
int internalIndex = fastAdc.internalAdcIndexByHardwareIndex[hwChannel];
// todo if ADC_BUF_DEPTH_FAST EQ 1
@ -267,6 +268,8 @@ int getInternalAdcValue(const char *msg, adc_channel_e hwChannel) {
int value = getAvgAdcValue(internalIndex, fastAdc.samples, ADC_BUF_DEPTH_FAST, fastAdc.size());
return value;
}
#endif // EFI_USE_FAST_ADC
if (adcHwChannelEnabled[hwChannel] != ADC_SLOW) {
// todo: make this not happen during hardware continuous integration
warning(CUSTOM_OBD_WRONG_ADC_MODE, "ADC is off [%s] index=%d", msg, hwChannel);
@ -275,21 +278,25 @@ int getInternalAdcValue(const char *msg, adc_channel_e hwChannel) {
return slowAdc.getAdcValueByHwChannel(hwChannel);
}
#if HAL_USE_GPT
#if EFI_USE_FAST_ADC
static GPTConfig fast_adc_config = {
GPT_FREQ_FAST,
fast_adc_callback,
0, 0
};
#endif /* HAL_USE_GPT */
#endif /* EFI_USE_FAST_ADC */
adc_channel_mode_e getAdcMode(adc_channel_e hwChannel) {
if (slowAdc.isHwUsed(hwChannel)) {
return ADC_SLOW;
}
#if EFI_USE_FAST_ADC
if (fastAdc.isHwUsed(hwChannel)) {
return ADC_FAST;
}
#endif // EFI_USE_FAST_ADC
return ADC_OFF;
}
@ -368,6 +375,7 @@ adc_channel_e AdcDevice::getAdcHardwareIndexByInternalIndex(int index) const {
}
static void printFullAdcReport(Logging *logger) {
#if EFI_USE_FAST_ADC
scheduleMsg(logger, "fast %d slow %d", fastAdc.conversionCount, slowAdc.conversionCount);
for (int index = 0; index < fastAdc.size(); index++) {
@ -389,6 +397,7 @@ static void printFullAdcReport(Logging *logger) {
scheduleLogging(logger);
}
}
#endif // EFI_USE_FAST_ADC
for (int index = 0; index < slowAdc.size(); index++) {
appendMsgPrefix(logger);
@ -436,7 +445,7 @@ int getSlowAdcCounter() {
class SlowAdcController : public PeriodicController<256> {
public:
SlowAdcController()
: PeriodicController("ADC", NORMALPRIO + 5, SLOW_ADC_RATE)
: PeriodicController("ADC", PRIO_ADC, SLOW_ADC_RATE)
{
}
@ -492,8 +501,15 @@ void addChannel(const char *name, adc_channel_e setting, adc_channel_mode_e mode
adcHwChannelEnabled[setting] = mode;
AdcDevice& dev = (mode == ADC_SLOW) ? slowAdc : fastAdc;
dev.enableChannelAndPin(name, setting);
AdcDevice* dev = &slowAdc;
#if EFI_USE_FAST_ADC
if (mode == ADC_FAST) {
dev = &fastAdc;
}
#endif
dev->enableChannelAndPin(name, setting);
}
void removeChannel(const char *name, adc_channel_e setting) {
@ -504,6 +520,9 @@ void removeChannel(const char *name, adc_channel_e setting) {
adcHwChannelEnabled[setting] = ADC_OFF;
}
// Weak link a stub so that every board doesn't have to implement this function
__attribute__((weak)) void setAdcChannelOverrides() { }
static void configureInputs(void) {
memset(adcHwChannelEnabled, 0, sizeof(adcHwChannelEnabled));
@ -581,14 +600,12 @@ void initAdcInputs() {
// Start the slow ADC thread
slowAdcController.Start();
#if EFI_USE_FAST_ADC
fastAdc.init();
/*
* Initializes the PWM driver.
*/
#if HAL_USE_GPT
gptStart(EFI_INTERNAL_FAST_ADC_GPT, &fast_adc_config);
gptStartContinuous(EFI_INTERNAL_FAST_ADC_GPT, GPT_PERIOD_FAST);
#endif /* HAL_USE_GPT */
#endif // EFI_USE_FAST_ADC
addConsoleActionI("adc", (VoidInt) printAdcValue);
#else
@ -602,4 +619,15 @@ void printFullAdcReportIfNeeded(Logging *logger) {
printFullAdcReport(logger);
}
#endif /* HAL_USE_ADC */
#else /* not HAL_USE_ADC */
__attribute__((weak)) float getVoltageDivided(const char*, adc_channel_e DECLARE_ENGINE_PARAMETER_SUFFIX) {
return 0;
}
// voltage in MCU universe, from zero to VDD
__attribute__((weak)) float getVoltage(const char*, adc_channel_e DECLARE_ENGINE_PARAMETER_SUFFIX) {
return 0;
}
#endif

View File

@ -24,6 +24,7 @@
#include "string.h"
#include "mpu_util.h"
#include "engine.h"
#include "thread_priority.h"
EXTERN_ENGINE;
@ -83,7 +84,7 @@ static const CANConfig *canConfig = &canConfig500;
class CanRead final : public ThreadController<UTILITY_THREAD_STACK_SIZE> {
public:
CanRead()
: ThreadController("CAN RX", NORMALPRIO)
: ThreadController("CAN RX", PRIO_CAN_RX)
{
}

View File

@ -17,6 +17,7 @@
#include "gpio/drv8860.h"
#include "pin_repository.h"
#include "os_util.h"
#include "thread_priority.h"
#if (BOARD_DRV8860_COUNT > 0)
@ -225,7 +226,7 @@ int drv8860_init(void * data) {
if (!drv_task_ready) {
chThdCreateStatic(drv8860_thread_1_wa, sizeof(drv8860_thread_1_wa),
NORMALPRIO + 1, drv8860_driver_thread, NULL);
PRIO_GPIOCHIP, drv8860_driver_thread, NULL);
drv_task_ready = true;
}

View File

@ -15,6 +15,7 @@
#include "gpio/mc33810.h"
#include "pin_repository.h"
#include "os_util.h"
#include "thread_priority.h"
#if (BOARD_MC33810_COUNT > 0)
@ -498,7 +499,7 @@ int mc33810_init(void * data)
if (!drv_task_ready) {
chThdCreateStatic(mc33810_thread_1_wa, sizeof(mc33810_thread_1_wa),
NORMALPRIO + 1, mc33810_driver_thread, NULL);
PRIO_GPIOCHIP, mc33810_driver_thread, NULL);
drv_task_ready = true;
}

View File

@ -18,6 +18,7 @@
#include "gpio/gpio_ext.h"
#include "gpio/mc33972.h"
#include "pin_repository.h"
#include "thread_priority.h"
#if (BOARD_MC33972_COUNT > 0)
@ -304,7 +305,7 @@ static int mc33972_init(void * data)
if (!drv_task_ready) {
chThdCreateStatic(mc33972_thread_1_wa, sizeof(mc33972_thread_1_wa),
NORMALPRIO + 1, mc33972_driver_thread, NULL);
PRIO_GPIOCHIP, mc33972_driver_thread, NULL);
drv_task_ready = true;
}

View File

@ -25,6 +25,7 @@
#include "gpio/tle6240.h"
#include "pin_repository.h"
#include "os_util.h"
#include "thread_priority.h"
#if (BOARD_TLE6240_COUNT > 0)
@ -450,7 +451,7 @@ static int tle6240_init(void * data)
if (!drv_task_ready) {
chThdCreateStatic(tle6240_thread_1_wa, sizeof(tle6240_thread_1_wa),
NORMALPRIO + 1, tle6240_driver_thread, NULL);
PRIO_GPIOCHIP, tle6240_driver_thread, NULL);
drv_task_ready = true;
}

View File

@ -41,6 +41,7 @@
#include "pin_repository.h"
#include "os_util.h"
#include "voltage.h"
#include "thread_priority.h"
EXTERN_ENGINE_CONFIGURATION;
@ -1199,7 +1200,7 @@ static int tle8888_init(void * data)
/* start thread */
chip->thread = chThdCreateStatic(chip->thread_wa, sizeof(chip->thread_wa),
NORMALPRIO + 1, tle8888_driver_thread, chip);
PRIO_GPIOCHIP, tle8888_driver_thread, chip);
return 0;
}

View File

@ -35,7 +35,7 @@ extern "C" {
* 11 to program 64 bits per step
*/
// Warning, flashdata_t must be unsigned!!!
#if defined(STM32F4XX) || defined(STM32F7XX)
#if defined(STM32F4XX) || defined(STM32F7XX) || defined(STM32H7XX)
#define FLASH_CR_PSIZE_MASK FLASH_CR_PSIZE_0 | FLASH_CR_PSIZE_1
#if ((STM32_VDD >= 270) && (STM32_VDD <= 360))
#define FLASH_CR_PSIZE_VALUE FLASH_CR_PSIZE_1

View File

@ -26,6 +26,7 @@
#include "status_loop.h"
#include "buffered_writer.h"
#include "null_device.h"
#include "thread_priority.h"
#include "rtc_helper.h"
@ -55,7 +56,6 @@ static int totalSyncCounter = 0;
* on't re-read SD card spi device after boot - it could change mid transaction (TS thread could preempt),
* which will cause disaster (usually multiple-unlock of the same mutex in UNLOCK_SD_SPI)
*/
spi_device_e mmcSpiDevice = SPI_NONE;
#define LOG_INDEX_FILENAME "index.txt"
@ -78,6 +78,7 @@ spi_device_e mmcSpiDevice = SPI_NONE;
static THD_WORKING_AREA(mmcThreadStack, 3 * UTILITY_THREAD_STACK_SIZE); // MMC monitor thread
#if HAL_USE_MMC_SPI
/**
* MMC driver instance.
*/
@ -86,10 +87,15 @@ MMCDriver MMCD1;
/* MMC/SD over SPI driver configuration.*/
static MMCConfig mmccfg = { NULL, &mmc_ls_spicfg, &mmc_hs_spicfg };
#define LOCK_SD_SPI lockSpi(mmcSpiDevice)
#define UNLOCK_SD_SPI unlockSpi(mmcSpiDevice)
#endif /* HAL_USE_MMC_SPI */
/**
* fatfs MMC/SPI
*/
static FATFS MMC_FS;
static NO_CACHE FATFS MMC_FS;
static LoggingWithStorage logger("mmcCard");
@ -138,7 +144,6 @@ static void sdStatistics(void) {
}
static void incLogFileName(void) {
LOCK_SD_SPI;
memset(&FDCurrFile, 0, sizeof(FIL)); // clear the memory
FRESULT err = f_open(&FDCurrFile, LOG_INDEX_FILENAME, FA_READ); // This file has the index for next log file name
@ -170,7 +175,6 @@ static void incLogFileName(void) {
f_write(&FDCurrFile, (void*)data, strlen(data), &result);
f_close(&FDCurrFile);
scheduleMsg(&logger, "Done %d", logFileIndex);
UNLOCK_SD_SPI;
}
static void prepareLogFileName(void) {
@ -200,13 +204,11 @@ static void prepareLogFileName(void) {
* so that we can later append to that file
*/
static void createLogFile(void) {
LOCK_SD_SPI;
memset(&FDLogFile, 0, sizeof(FIL)); // clear the memory
prepareLogFileName();
FRESULT err = f_open(&FDLogFile, logName, FA_OPEN_ALWAYS | FA_WRITE); // Create new file
if (err != FR_OK && err != FR_EXIST) {
UNLOCK_SD_SPI;
sdStatus = SD_STATE_OPEN_FAILED;
warning(CUSTOM_ERR_SD_MOUNT_FAILED, "SD: mount failed");
printError("FS mount failed", err); // else - show error
@ -215,7 +217,6 @@ static void createLogFile(void) {
err = f_lseek(&FDLogFile, f_size(&FDLogFile)); // Move to end of the file to append data
if (err) {
UNLOCK_SD_SPI;
sdStatus = SD_STATE_SEEK_FAILED;
warning(CUSTOM_ERR_SD_SEEK_FAILED, "SD: seek failed");
printError("Seek error", err);
@ -223,7 +224,6 @@ static void createLogFile(void) {
}
f_sync(&FDLogFile);
setSdCardReady(true); // everything Ok
UNLOCK_SD_SPI;
}
static void removeFile(const char *pathx) {
@ -231,10 +231,8 @@ static void removeFile(const char *pathx) {
scheduleMsg(&logger, "Error: No File system is mounted");
return;
}
LOCK_SD_SPI;
f_unlink(pathx);
UNLOCK_SD_SPI;
f_unlink(pathx);
}
int
@ -262,14 +260,12 @@ static void listDirectory(const char *path) {
scheduleMsg(&logger, "Error: No File system is mounted");
return;
}
LOCK_SD_SPI;
DIR dir;
FRESULT res = f_opendir(&dir, path);
if (res != FR_OK) {
scheduleMsg(&logger, "Error opening directory %s", path);
UNLOCK_SD_SPI;
return;
}
@ -297,7 +293,6 @@ static void listDirectory(const char *path) {
// (fno.fdate >> 5) & 15, fno.fdate & 31, (fno.ftime >> 11), (fno.ftime >> 5) & 63, fno.fsize,
// fno.fname);
}
UNLOCK_SD_SPI;
}
/*
@ -310,8 +305,16 @@ static void mmcUnMount(void) {
}
f_close(&FDLogFile); // close file
f_sync(&FDLogFile); // sync ALL
#if HAL_USE_MMC_SPI
mmcDisconnect(&MMCD1); // Brings the driver in a state safe for card removal.
mmcStop(&MMCD1); // Disables the MMC peripheral.
UNLOCK_SD_SPI;
#endif
#ifdef EFI_SDC_DEVICE
sdcDisconnect(&EFI_SDC_DEVICE);
sdcStop(&EFI_SDC_DEVICE);
#endif
f_mount(NULL, 0, 0); // FATFS: Unregister work area prior to discard it
memset(&FDLogFile, 0, sizeof(FIL)); // clear FDLogFile
setSdCardReady(false); // status = false
@ -343,6 +346,7 @@ void onUsbConnectedNotifyMmcI() {
#endif /* HAL_USE_USB_MSD */
#if HAL_USE_MMC_SPI
/*
* Attempts to initialize the MMC card.
* Returns a BaseBlockDevice* corresponding to the SD card if successful, otherwise nullptr.
@ -376,9 +380,32 @@ static BaseBlockDevice* initializeMmcBlockDevice() {
return nullptr;
}
UNLOCK_SD_SPI;
return (BaseBlockDevice*)&MMCD1;
return reinterpret_cast<BaseBlockDevice*>(&MMCD1);
}
#endif /* HAL_USE_MMC_SPI */
// Some ECUs are wired for SDIO/SDMMC instead of SPI
#ifdef EFI_SDC_DEVICE
static const SDCConfig sdcConfig = {
SDC_MODE_4BIT
};
static BaseBlockDevice* initializeMmcBlockDevice() {
if (!CONFIG(isSdCardEnabled)) {
return nullptr;
}
sdcStart(&EFI_SDC_DEVICE, &sdcConfig);
sdStatus = SD_STATE_CONNECTING;
if (sdcConnect(&EFI_SDC_DEVICE) != HAL_SUCCESS) {
sdStatus = SD_STATE_NOT_CONNECTED;
warning(CUSTOM_OBD_MMC_ERROR, "Can't connect or mount MMC/SD");
return nullptr;
}
return reinterpret_cast<BaseBlockDevice*>(&EFI_SDC_DEVICE);
}
#endif /* EFI_SDC_DEVICE */
// Initialize and mount the SD card.
// Returns true if the filesystem was successfully mounted for writing.
@ -435,7 +462,6 @@ struct SdLogBufferWriter final : public BufferedWriter<512> {
totalLoggedBytes += count;
LOCK_SD_SPI;
FRESULT err = f_write(&FDLogFile, buffer, count, &bytesWritten);
if (bytesWritten != count) {
@ -443,7 +469,6 @@ struct SdLogBufferWriter final : public BufferedWriter<512> {
// Close file and unmount volume
mmcUnMount();
UNLOCK_SD_SPI;
failed = true;
return 0;
} else {
@ -460,7 +485,6 @@ struct SdLogBufferWriter final : public BufferedWriter<512> {
}
}
UNLOCK_SD_SPI;
return bytesWritten;
}
};
@ -514,7 +538,7 @@ void initMmcCard(void) {
chBSemObjectInit(&usbConnectedSemaphore, true);
#endif
chThdCreateStatic(mmcThreadStack, sizeof(mmcThreadStack), LOWPRIO, (tfunc_t)(void*) MMCmonThread, NULL);
chThdCreateStatic(mmcThreadStack, sizeof(mmcThreadStack), PRIO_MMC, (tfunc_t)(void*) MMCmonThread, NULL);
addConsoleAction("sdinfo", sdStatistics);
addConsoleActionS("ls", listDirectory);

View File

@ -23,10 +23,6 @@ void readLogFileContent(char *buffer, short fileId, short offset, short length);
void handleTsR(TsChannelBase* tsChannel, char *input);
void handleTsW(TsChannelBase* tsChannel, char *input);
extern spi_device_e mmcSpiDevice;
#define LOCK_SD_SPI lockSpi(mmcSpiDevice)
#define UNLOCK_SD_SPI unlockSpi(mmcSpiDevice)
extern "C"
#endif
void onUsbConnectedNotifyMmcI(void);

View File

@ -164,12 +164,10 @@ void handleTsR(TsChannelBase* tsChannel, char *input) {
#endif // EFI_SIMULATOR
#if EFI_FILE_LOGGING
LOCK_SD_SPI;
DIR dir;
FRESULT res = f_opendir(&dir, ROOT_DIR);
if (res != FR_OK) {
scheduleMsg(&sharedLogger, "Error opening directory");
UNLOCK_SD_SPI;
} else {
int index = 0;
while (true) {
@ -203,7 +201,6 @@ void handleTsR(TsChannelBase* tsChannel, char *input) {
}
}
UNLOCK_SD_SPI;
}
#endif // EFI_FILE_LOGGING
@ -227,10 +224,8 @@ void handleTsR(TsChannelBase* tsChannel, char *input) {
#endif // EFI_SIMULATOR
#if EFI_FILE_LOGGING
LOCK_SD_SPI;
got = 0;
f_read(&uploading, (void*) &buffer[2], TRANSFER_SIZE, (UINT*) &got);
UNLOCK_SD_SPI;
#endif // EFI_FILE_LOGGING
tsChannel->sendResponse(TS_CRC, buffer, 2 + got);
@ -281,7 +276,6 @@ void handleTsW(TsChannelBase* tsChannel, char *input) {
#endif // EFI_SIMULATOR
#if EFI_FILE_LOGGING
LOCK_SD_SPI;
DIR dir;
FRESULT res = f_opendir(&dir, ROOT_DIR);
if (res != FR_OK) {
@ -304,7 +298,6 @@ void handleTsW(TsChannelBase* tsChannel, char *input) {
}
}
}
UNLOCK_SD_SPI;
#endif // EFI_FILE_LOGGING
sendOkResponse(tsChannel, TS_CRC);
@ -340,14 +333,11 @@ void handleTsW(TsChannelBase* tsChannel, char *input) {
#endif // EFI_SIMULATOR
#if EFI_FILE_LOGGING
LOCK_SD_SPI;
DIR dir;
FRESULT res = f_opendir(&dir, ROOT_DIR);
if (res != FR_OK) {
scheduleMsg(&sharedLogger, "Error opening directory");
UNLOCK_SD_SPI;
} else {
memset(&uploading, 0, sizeof(FIL)); // clear the memory
while (true) {
@ -366,7 +356,6 @@ void handleTsW(TsChannelBase* tsChannel, char *input) {
}
}
}
UNLOCK_SD_SPI;
}
#endif // EFI_FILE_LOGGING

View File

@ -13,8 +13,20 @@
#define HAL_USE_USB EFI_USB_SERIAL
#define HAL_USE_SERIAL_USB EFI_USB_SERIAL
// If EFI_FILE_LOGGING, enable MMC SPI driver
#define HAL_USE_MMC_SPI EFI_FILE_LOGGING
// If EFI_FILE_LOGGING and SDC, enable SDIO/SDMMC driver
#if defined(EFI_SDC_DEVICE) && EFI_FILE_LOGGING
#define HAL_USE_SDC TRUE
#define FATFS_HAL_DEVICE EFI_SDC_DEVICE
#else
#define HAL_USE_SDC FALSE
#endif
// If EFI_FILE_LOGGING but not SDC, use SPI instead
#if !defined(EFI_SDC_DEVICE) && EFI_FILE_LOGGING
#define HAL_USE_MMC_SPI TRUE
#else
#define HAL_USE_MMC_SPI FALSE
#endif
// If USB and File logging, enable USB Mass Storage & community
#define HAL_USE_USB_MSD (EFI_FILE_LOGGING && EFI_USB_SERIAL)

View File

@ -15,6 +15,30 @@
#include "flash_int.h"
#include <string.h>
#ifdef STM32H7XX
// Use bank 2 on H7
#define FLASH_CR FLASH->CR2
#define FLASH_SR FLASH->SR2
#define FLASH_KEYR FLASH->KEYR2
// I have no idea why ST changed the register name from STRT -> START
#define FLASH_CR_STRT FLASH_CR_START
#undef FLASH_BASE
// This is the start of the second bank, since H7 sector numbers are bank relative
#define FLASH_BASE 0x08100000
// QW bit supercedes the older BSY bit
#define intFlashWaitWhileBusy() { while (FLASH_SR & FLASH_SR_QW) {} }
#else
#define FLASH_CR FLASH->CR
#define FLASH_SR FLASH->SR
#define FLASH_KEYR FLASH->KEYR
// Wait for the flash operation to finish
#define intFlashWaitWhileBusy() { while (FLASH->SR & FLASH_SR_BSY) {} }
#endif
flashaddr_t intFlashSectorBegin(flashsector_t sector) {
flashaddr_t address = FLASH_BASE;
while (sector > 0) {
@ -35,11 +59,6 @@ flashsector_t intFlashSectorAt(flashaddr_t address) {
return sector;
}
/**
* @brief Wait for the flash operation to finish.
*/
#define intFlashWaitWhileBusy() { while (FLASH->SR & FLASH_SR_BSY) {} }
/**
* @brief Unlock the flash memory for write access.
* @return HAL_SUCCESS Unlock was successful.
@ -47,15 +66,15 @@ flashsector_t intFlashSectorAt(flashaddr_t address) {
*/
static bool intFlashUnlock(void) {
/* Check if unlock is really needed */
if (!(FLASH->CR & FLASH_CR_LOCK))
if (!(FLASH_CR & FLASH_CR_LOCK))
return HAL_SUCCESS;
/* Write magic unlock sequence */
FLASH->KEYR = 0x45670123;
FLASH->KEYR = 0xCDEF89AB;
FLASH_KEYR = 0x45670123;
FLASH_KEYR = 0xCDEF89AB;
/* Check if unlock was successful */
if (FLASH->CR & FLASH_CR_LOCK)
if (FLASH_CR & FLASH_CR_LOCK)
return HAL_FAILED;
return HAL_SUCCESS;
}
@ -63,7 +82,7 @@ static bool intFlashUnlock(void) {
/**
* @brief Lock the flash memory for write access.
*/
#define intFlashLock() { FLASH->CR |= FLASH_CR_LOCK; }
#define intFlashLock() { FLASH_CR |= FLASH_CR_LOCK; }
int intFlashSectorErase(flashsector_t sector) {
/* Unlock flash for write access */
@ -74,8 +93,8 @@ int intFlashSectorErase(flashsector_t sector) {
intFlashWaitWhileBusy();
/* Setup parallelism before any program/erase */
FLASH->CR &= ~FLASH_CR_PSIZE_MASK;
FLASH->CR |= FLASH_CR_PSIZE_VALUE;
FLASH_CR &= ~FLASH_CR_PSIZE_MASK;
FLASH_CR |= FLASH_CR_PSIZE_VALUE;
/* Start deletion of sector.
* SNB(4:1) is defined as:
@ -87,31 +106,35 @@ int intFlashSectorErase(flashsector_t sector) {
* ...
* 10111 sector 23 (the end of 2nd bank, 2Mb border)
* others not allowed */
#ifndef FLASH_CR_SNB_4
FLASH->CR &= ~(FLASH_CR_SNB_0 | FLASH_CR_SNB_1 | FLASH_CR_SNB_2 | FLASH_CR_SNB_3);
#ifndef FLASH_CR_SNB_3
FLASH_CR &= ~(FLASH_CR_SNB_0 | FLASH_CR_SNB_1 | FLASH_CR_SNB_2);
#elif !defined(FLASH_CR_SNB_4)
FLASH_CR &= ~(FLASH_CR_SNB_0 | FLASH_CR_SNB_1 | FLASH_CR_SNB_2 | FLASH_CR_SNB_3);
#else
FLASH->CR &= ~(FLASH_CR_SNB_0 | FLASH_CR_SNB_1 | FLASH_CR_SNB_2 | FLASH_CR_SNB_3 | FLASH_CR_SNB_4);
FLASH_CR &= ~(FLASH_CR_SNB_0 | FLASH_CR_SNB_1 | FLASH_CR_SNB_2 | FLASH_CR_SNB_3 | FLASH_CR_SNB_4);
#endif
if (sector & 0x1)
FLASH->CR |= FLASH_CR_SNB_0;
FLASH_CR |= FLASH_CR_SNB_0;
if (sector & 0x2)
FLASH->CR |= FLASH_CR_SNB_1;
FLASH_CR |= FLASH_CR_SNB_1;
if (sector & 0x4)
FLASH->CR |= FLASH_CR_SNB_2;
FLASH_CR |= FLASH_CR_SNB_2;
#ifdef FLASH_CR_SNB_4
if (sector & 0x8)
FLASH->CR |= FLASH_CR_SNB_3;
FLASH_CR |= FLASH_CR_SNB_3;
#endif
#ifdef FLASH_CR_SNB_4
if (sector & 0x10)
FLASH->CR |= FLASH_CR_SNB_4;
FLASH_CR |= FLASH_CR_SNB_4;
#endif
FLASH->CR |= FLASH_CR_SER;
FLASH->CR |= FLASH_CR_STRT;
FLASH_CR |= FLASH_CR_SER;
FLASH_CR |= FLASH_CR_STRT;
/* Wait until it's finished. */
intFlashWaitWhileBusy();
/* Sector erase flag does not clear automatically. */
FLASH->CR &= ~FLASH_CR_SER;
FLASH_CR &= ~FLASH_CR_SER;
/* Lock flash again */
intFlashLock()
@ -187,6 +210,61 @@ int intFlashRead(flashaddr_t address, char* buffer, size_t size) {
return FLASH_RETURN_SUCCESS;
}
#ifdef STM32H7XX
int intFlashWrite(flashaddr_t address, const char* buffer, size_t size) {
/* Unlock flash for write access */
if (intFlashUnlock() == HAL_FAILED)
return FLASH_RETURN_NO_PERMISSION;
/* Wait for any busy flags */
intFlashWaitWhileBusy();
/* Setup parallelism before program */
FLASH_CR &= ~FLASH_CR_PSIZE_MASK;
FLASH_CR |= FLASH_CR_PSIZE_VALUE;
// Round up to the next number of full 32 byte words
size_t flashWordCount = (size - 1) / 32 + 1;
// Read units of flashdata_t from the buffer, writing to flash
const flashdata_t* pRead = (const flashdata_t*)buffer;
flashdata_t* pWrite = (flashdata_t*)address;
for (size_t word = 0; word < flashWordCount; word++) {
/* Enter flash programming mode */
FLASH_CR |= FLASH_CR_PG;
// Flush pipelines
__ISB();
__DSB();
// Write 32 bytes
for (size_t i = 0; i < 8; i++) {
*pWrite++ = *pRead++;
}
// Flush pipelines
__ISB();
__DSB();
/* Wait for completion */
intFlashWaitWhileBusy();
/* Exit flash programming mode */
FLASH_CR &= ~FLASH_CR_PG;
// Flush pipelines
__ISB();
__DSB();
}
/* Lock flash again */
intFlashLock();
return FLASH_RETURN_SUCCESS;
}
#else // not STM32H7XX
static void intFlashWriteData(flashaddr_t address, const flashdata_t data) {
/* Enter flash programming mode */
FLASH->CR |= FLASH_CR_PG;
@ -276,5 +354,6 @@ int intFlashWrite(flashaddr_t address, const char* buffer, size_t size) {
return FLASH_RETURN_SUCCESS;
}
#endif
#endif /* EFI_INTERNAL_FLASH */

View File

@ -314,7 +314,6 @@
#define STM32_USB_OTG2_IRQ_PRIORITY 14
#define STM32_USB_OTG1_RX_FIFO_SIZE 512
#define STM32_USB_OTG2_RX_FIFO_SIZE 1024
#define STM32_USB_OTG_THREAD_PRIO LOWPRIO
#define STM32_USB_OTG_THREAD_STACK_SIZE 1024
#define STM32_USB_OTGFIFO_FILL_BASEPRI 0

View File

@ -17,8 +17,10 @@ void portInitAdc() {
// Init slow ADC
adcStart(&ADCD1, NULL);
#if EFI_USE_FAST_ADC
// Init fast ADC (MAP sensor)
adcStart(&ADCD2, NULL);
#endif
// Enable internal temperature reference
adcSTM32EnableTSVREFE(); // Internal temperature sensor

View File

@ -750,8 +750,6 @@
/* Port-specific settings (override port settings defaulted in chcore.h). */
/*===========================================================================*/
#define CORTEX_VTOR_INIT 0x00200000U
/**
* @brief Sleep at idle.
* @details This option enables call to __WFI() from idle thread to save power.

View File

@ -145,13 +145,17 @@
* SDC driver system settings.
*/
#define STM32_SDC_USE_SDMMC1 FALSE
#define STM32_SDC_USE_SDMMC2 TRUE
#define STM32_SDC_SDMMC_UNALIGNED_SUPPORT TRUE
#define STM32_SDC_SDMMC_WRITE_TIMEOUT 1000
#define STM32_SDC_SDMMC_READ_TIMEOUT 1000
#define STM32_SDC_SDMMC_CLOCK_DELAY 10
#define STM32_SDC_SDMMC1_DMA_STREAM STM32_DMA_STREAM_ID(2, 3)
#define STM32_SDC_SDMMC2_DMA_STREAM STM32_DMA_STREAM_ID(2, 0)
#define STM32_SDC_SDMMC1_DMA_PRIORITY 3
#define STM32_SDC_SDMMC2_DMA_PRIORITY 3
#define STM32_SDC_SDMMC1_IRQ_PRIORITY 9
#define STM32_SDC_SDMMC2_IRQ_PRIORITY 9
#include "mcuconf_common_f4_f7.h"

View File

@ -76,6 +76,12 @@
#define STM32_HSE_BYPASS
#endif /* EFI_USE_OSC */
/*
* Board voltages.
* Required for performance limits calculation.
*/
#define STM32_VDD 330U
/*
* MCU type as defined in the ST header.
*/

View File

@ -31,6 +31,8 @@
#define _CHIBIOS_RT_CONF_
#define _CHIBIOS_RT_CONF_VER_6_1_
#include "chconf_common.h"
/*===========================================================================*/
/**
* @name System timers settings
@ -38,8 +40,6 @@
*/
/*===========================================================================*/
#include "chconf_common.h"
/**
* @brief System time counter resolution.
* @note Allowed values are 16, 32 or 64 bits.
@ -54,7 +54,7 @@
* setting also defines the system tick time unit.
*/
#if !defined(CH_CFG_ST_FREQUENCY)
#define CH_CFG_ST_FREQUENCY 10000
#define CH_CFG_ST_FREQUENCY 1000
#endif
/**
@ -308,7 +308,7 @@
* @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
*/
#if !defined(CH_CFG_USE_DYNAMIC)
#define CH_CFG_USE_DYNAMIC TRUE
#define CH_CFG_USE_DYNAMIC FALSE
#endif
/** @} */
@ -329,7 +329,7 @@
* @note Requires @p CH_CFG_USE_SEMAPHORES.
*/
#if !defined(CH_CFG_USE_MAILBOXES)
#define CH_CFG_USE_MAILBOXES TRUE
#define CH_CFG_USE_MAILBOXES FALSE
#endif
/**
@ -340,7 +340,7 @@
* @note The default is @p TRUE.
*/
#if !defined(CH_CFG_USE_MEMCORE)
#define CH_CFG_USE_MEMCORE TRUE
#define CH_CFG_USE_MEMCORE FALSE
#endif
/**
@ -369,7 +369,7 @@
* @note Mutexes are recommended.
*/
#if !defined(CH_CFG_USE_HEAP)
#define CH_CFG_USE_HEAP TRUE
#define CH_CFG_USE_HEAP FALSE
#endif
/**
@ -380,7 +380,7 @@
* @note The default is @p TRUE.
*/
#if !defined(CH_CFG_USE_MEMPOOLS)
#define CH_CFG_USE_MEMPOOLS TRUE
#define CH_CFG_USE_MEMPOOLS FALSE
#endif
/**
@ -391,7 +391,7 @@
* @note The default is @p TRUE.
*/
#if !defined(CH_CFG_USE_OBJ_FIFOS)
#define CH_CFG_USE_OBJ_FIFOS TRUE
#define CH_CFG_USE_OBJ_FIFOS FALSE
#endif
/**
@ -402,7 +402,7 @@
* @note The default is @p TRUE.
*/
#if !defined(CH_CFG_USE_PIPES)
#define CH_CFG_USE_PIPES TRUE
#define CH_CFG_USE_PIPES FALSE
#endif
/**
@ -413,7 +413,7 @@
* @note The default is @p TRUE.
*/
#if !defined(CH_CFG_USE_OBJ_CACHES)
#define CH_CFG_USE_OBJ_CACHES TRUE
#define CH_CFG_USE_OBJ_CACHES FALSE
#endif
/**
@ -424,7 +424,7 @@
* @note The default is @p TRUE.
*/
#if !defined(CH_CFG_USE_DELEGATES)
#define CH_CFG_USE_DELEGATES TRUE
#define CH_CFG_USE_DELEGATES FALSE
#endif
/**
@ -435,7 +435,7 @@
* @note The default is @p TRUE.
*/
#if !defined(CH_CFG_USE_JOBS)
#define CH_CFG_USE_JOBS TRUE
#define CH_CFG_USE_JOBS FALSE
#endif
/** @} */
@ -455,7 +455,7 @@
* @note The default is @p FALSE.
*/
#if !defined(CH_CFG_USE_FACTORY)
#define CH_CFG_USE_FACTORY TRUE
#define CH_CFG_USE_FACTORY FALSE
#endif
/**
@ -471,42 +471,42 @@
* @brief Enables the registry of generic objects.
*/
#if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY)
#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE
#define CH_CFG_FACTORY_OBJECTS_REGISTRY FALSE
#endif
/**
* @brief Enables factory for generic buffers.
*/
#if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS)
#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE
#define CH_CFG_FACTORY_GENERIC_BUFFERS FALSE
#endif
/**
* @brief Enables factory for semaphores.
*/
#if !defined(CH_CFG_FACTORY_SEMAPHORES)
#define CH_CFG_FACTORY_SEMAPHORES TRUE
#define CH_CFG_FACTORY_SEMAPHORES FALSE
#endif
/**
* @brief Enables factory for mailboxes.
*/
#if !defined(CH_CFG_FACTORY_MAILBOXES)
#define CH_CFG_FACTORY_MAILBOXES TRUE
#define CH_CFG_FACTORY_MAILBOXES FALSE
#endif
/**
* @brief Enables factory for objects FIFOs.
*/
#if !defined(CH_CFG_FACTORY_OBJ_FIFOS)
#define CH_CFG_FACTORY_OBJ_FIFOS TRUE
#define CH_CFG_FACTORY_OBJ_FIFOS FALSE
#endif
/**
* @brief Enables factory for Pipes.
*/
#if !defined(CH_CFG_FACTORY_PIPES) || defined(__DOXYGEN__)
#define CH_CFG_FACTORY_PIPES TRUE
#define CH_CFG_FACTORY_PIPES FALSE
#endif
/** @} */
@ -568,7 +568,7 @@
* @note The default is @p CH_DBG_TRACE_MASK_DISABLED.
*/
#if !defined(CH_DBG_TRACE_MASK)
#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_NONE
#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED
#endif
/**
@ -591,7 +591,7 @@
* @p panic_msg variable set to @p NULL.
*/
#if !defined(CH_DBG_ENABLE_STACK_CHECK)
#define CH_DBG_ENABLE_STACK_CHECK FALSE
#define CH_DBG_ENABLE_STACK_CHECK TRUE
#endif
/**
@ -602,8 +602,9 @@
*
* @note The default is @p FALSE.
*/
// see also CH_DBG_STACK_FILL_VALUE
#if !defined(CH_DBG_FILL_THREADS)
#define CH_DBG_FILL_THREADS FALSE
#define CH_DBG_FILL_THREADS TRUE
#endif
/**
@ -616,7 +617,7 @@
* tickless mode.
*/
#if !defined(CH_DBG_THREADS_PROFILING)
#define CH_DBG_THREADS_PROFILING FALSE
#define CH_DBG_THREADS_PROFILING TRUE
#endif
/** @} */
@ -696,6 +697,7 @@
*/
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
/* System halt code here.*/ \
chDbgPanic3(reason, __FILE__, __LINE__); \
}
/**

View File

@ -1 +1,22 @@
/**
* @file mpu_util.cpp
*
* @date Feb 26, 2021
* @author Matthew Kennedy, (c) 2021
*/
#include "flash_int.h"
size_t flashSectorSize(flashsector_t sector) {
// All sectors on H7 are 128k
return 128 * 1024;
}
uintptr_t getFlashAddrFirstCopy() {
return 0x08100000;
}
uintptr_t getFlashAddrSecondCopy() {
// Second copy is one sector past the first
return getFlashAddrFirstCopy() + 128 * 1024;
}

View File

@ -18,6 +18,7 @@
#include "cj125.h"
#include "pwm_generator_logic.h"
#include "rpm_calculator.h"
#include "thread_priority.h"
EXTERN_ENGINE;
@ -647,7 +648,7 @@ void initCJ125(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) {
addConsoleAction("cj125_restart", cjRestart);
addConsoleAction("cj125_calibrate", cjStartCalibration);
chThdCreateStatic(cj125ThreadStack, sizeof(cj125ThreadStack), LOWPRIO, (tfunc_t)(void*) cjThread, NULL);
chThdCreateStatic(cj125ThreadStack, sizeof(cj125ThreadStack), PRIO_CJ125, (tfunc_t)(void*) cjThread, NULL);
#endif /* ! EFI_UNIT_TEST */
}

View File

@ -43,6 +43,7 @@
#include "hip9011.h"
#include "adc_inputs.h"
#include "perf_trace.h"
#include "thread_priority.h"
#include "engine_controller.h"
@ -55,11 +56,6 @@
static NamedOutputPin intHold(PROTOCOL_HIP_NAME);
extern uint32_t lastExecutionCount;
uint32_t hipLastExecutionCount;
class Hip9011Hardware : public Hip9011HardwareInterface {
void sendSyncCommand(unsigned char command) override;
void sendCommand(unsigned char command) override;
@ -190,7 +186,7 @@ void setHip9011FrankensoPinout(void) {
// CONFIG(hip9011CsPin) = GPIOD_0; // rev 0.1
CONFIG(isHip9011Enabled) = true;
engineConfiguration->hip9011PrescalerAndSDO = _8MHZ_PRESCALER; // 8MHz chip
engineConfiguration->hip9011PrescalerAndSDO = HIP_8MHZ_PRESCALER; // 8MHz chip
CONFIG(is_enabled_spi_2) = true;
// todo: convert this to rusEfi, hardware-independent enum
#if EFI_PROD_CODE
@ -260,9 +256,6 @@ void intHoldCallback(trigger_event_e ckpEventType, uint32_t index, efitick_t edg
// todo: schedule this based on closest trigger event, same as ignition works
scheduleByAngle(&startTimer[structIndex], edgeTimestamp, engineConfiguration->knockDetectionWindowStart,
&startIntegration);
#if EFI_PROD_CODE
hipLastExecutionCount = lastExecutionCount;
#endif /* EFI_PROD_CODE */
scheduleByAngle(&endTimer[structIndex], edgeTimestamp, engineConfiguration->knockDetectionWindowEnd,
&endIntegration);
}
@ -315,29 +308,14 @@ void hipAdcCallback(adcsample_t adcValue) {
}
static void hipStartupCode(void) {
// D[4:1] = 0000 : 4 MHz
// D[4:1] = 0001 : 5 MHz
// D[4:1] = 0010 : 6 MHz
// D[4:1] = 0011 ; 8 MHz
// D[4:1] = 0100 ; 10 MHz
// D[4:1] = 0101 ; 12 MHz
// D[4:1] = 0110 : 16 MHz
// D[4:1] = 0111 : 20 MHz
// D[4:1] = 1000 : 24 MHz
// 0 for 4MHz
// 6 for 8 MHz
instance.currentPrescaler = engineConfiguration->hip9011PrescalerAndSDO;
instance.hardware->sendSyncCommand(SET_PRESCALER_CMD + instance.currentPrescaler);
instance.hardware->sendSyncCommand(SET_PRESCALER_CMD(instance.currentPrescaler));
// '0' for channel #1
instance.hardware->sendSyncCommand(SET_CHANNEL_CMD + 0);
instance.hardware->sendSyncCommand(SET_CHANNEL_CMD(0));
// band index depends on cylinder bore
instance.hardware->sendSyncCommand(SET_BAND_PASS_CMD + instance.currentBandIndex);
instance.hardware->sendSyncCommand(SET_BAND_PASS_CMD(instance.currentBandIndex));
if (instance.correctResponsesCount == 0) {
warning(CUSTOM_OBD_KNOCK_PROCESSOR, "TPIC/HIP does not respond");
@ -345,7 +323,7 @@ static void hipStartupCode(void) {
if (CONFIG(useTpicAdvancedMode)) {
// enable advanced mode for digital integrator output
instance.hardware->sendSyncCommand(SET_ADVANCED_MODE);
instance.hardware->sendSyncCommand(SET_ADVANCED_MODE_CMD);
}
/**
@ -431,7 +409,7 @@ void initHip9011(Logging *sharedLogger) {
addConsoleActionI("set_hip_prescalerandsdo", setPrescalerAndSDO);
addConsoleActionF("set_knock_threshold", setKnockThresh);
addConsoleActionI("set_max_knock_sub_deg", setMaxKnockSubDeg);
chThdCreateStatic(hipThreadStack, sizeof(hipThreadStack), NORMALPRIO, (tfunc_t)(void*) hipThread, NULL);
chThdCreateStatic(hipThreadStack, sizeof(hipThreadStack), PRIO_HIP9011, (tfunc_t)(void*) hipThread, NULL);
}
#endif /* EFI_HIP_9011 */

View File

@ -8,9 +8,6 @@
#pragma once
// 0b01110001
#define SET_ADVANCED_MODE 0x71
#define HIP_THREAD_PERIOD 100
void initHip9011(Logging *sharedLogger);

View File

@ -85,20 +85,19 @@ void HIP9011::handleValue(int rpm DEFINE_PARAM_SUFFIX(DEFINE_HIP_PARAMS)) {
int gainIndex = getHip9011GainIndex(FORWARD_HIP_PARAMS);
int bandIndex = getBandIndex(FORWARD_HIP_PARAMS);
if (currentGainIndex != gainIndex) {
currentGainIndex = gainIndex;
setStateAndCommand(SET_GAIN_CMD + gainIndex);
setStateAndCommand(SET_GAIN_CMD(gainIndex));
} else if (currentIntergratorIndex != integratorIndex) {
currentIntergratorIndex = integratorIndex;
setStateAndCommand(SET_INTEGRATOR_CMD + integratorIndex);
setStateAndCommand(SET_INTEGRATOR_CMD(integratorIndex));
} else if (currentBandIndex != bandIndex) {
currentBandIndex = bandIndex;
setStateAndCommand(SET_BAND_PASS_CMD + bandIndex);
setStateAndCommand(SET_BAND_PASS_CMD(bandIndex));
} else if (currentPrescaler != prescalerIndex) {
currentPrescaler = prescalerIndex;
setStateAndCommand(SET_PRESCALER_CMD + prescalerIndex);
setStateAndCommand(SET_PRESCALER_CMD(prescalerIndex));
} else {
state = READY_TO_INTEGRATE;

View File

@ -99,20 +99,35 @@ float getHIP9011Band(DEFINE_HIP_PARAMS);
int getBandIndex(DEFINE_HIP_PARAMS);
int getHip9011GainIndex(DEFINE_HIP_PARAMS);
// 0b01000000
#define SET_PRESCALER_CMD 0x40
// 0b010x.xxxx
#define SET_PRESCALER_CMD(v) (0x40 | ((v) & 0x1f))
// 0b1110.000x
#define SET_CHANNEL_CMD(v) (0xE0 | ((v) & 0x01))
// 0b00xx.xxxx
#define SET_BAND_PASS_CMD(v) (0x00 | ((v) & 0x3f))
// 0b10xx.xxxx
#define SET_GAIN_CMD(v) (0x80 | ((v) & 0x3f))
// 0b110x.xxxx
#define SET_INTEGRATOR_CMD(v) (0xC0 | ((v) & 0x1f))
// 0b0111.0001
#define SET_ADVANCED_MODE_CMD (0x71)
// 0b11100000
#define SET_CHANNEL_CMD 0xE0
// 0b11000000
#define SET_INTEGRATOR_CMD 0xC0
// 0b00000000
#define SET_BAND_PASS_CMD 0x0
// 0b10000000
#define SET_GAIN_CMD 0x80
#define _8MHZ_PRESCALER 6
// D[4:1] = 0000 : 4 MHz
#define HIP_4MHZ_PRESCALER (0x0 << 1)
// D[4:1] = 0001 : 5 MHz
#define HIP_5MHZ_PRESCALER (0x1 << 1)
// D[4:1] = 0010 : 6 MHz
#define HIP_6MHZ_PRESCALER (0x2 << 1)
// D[4:1] = 0011 ; 8 MHz
#define HIP_8MHZ_PRESCALER (0x3 << 1)
// D[4:1] = 0100 ; 10 MHz
#define HIP_10MHZ_PRESCALER (0x4 << 1)
// D[4:1] = 0101 ; 12 MHz
#define HIP_12MHZ_PRESCALER (0x5 << 1)
// D[4:1] = 0110 : 16 MHz
#define HIP_16MHZ_PRESCALER (0x6 << 1)
// D[4:1] = 0111 : 20 MHz
#define HIP_20MHZ_PRESCALER (0x7 << 1)
// D[4:1] = 1000 : 24 MHz
#define HIP_24MHZ_PRESCALER (0x8 << 1)

View File

@ -17,6 +17,7 @@
#if EFI_SERVO || EFI_SIMULATOR
#include "servo.h"
#include "pin_repository.h"
#include "thread_priority.h"
EXTERN_ENGINE;
@ -63,7 +64,7 @@ void initServo(void) {
pins[i].initPin("servo", p);
}
chThdCreateStatic(servoThreadStack, sizeof(servoThreadStack), NORMALPRIO, (tfunc_t)(void*) seThread, NULL);
chThdCreateStatic(servoThreadStack, sizeof(servoThreadStack), PRIO_SERVO, (tfunc_t)(void*) seThread, NULL);
}
#endif /* EFI_SERVO */

View File

@ -16,6 +16,7 @@
#include "engine_controller.h"
#include "adc_inputs.h"
#include "sensor.h"
#include "thread_priority.h"
EXTERN_ENGINE;
@ -149,7 +150,7 @@ void StepperMotor::ThreadTask() {
}
}
StepperMotor::StepperMotor() : ThreadController("stepper", NORMALPRIO) {}
StepperMotor::StepperMotor() : ThreadController("stepper", PRIO_STEPPER) {}
int StepperMotor::getTargetPosition() const {
return m_targetPosition;

View File

@ -33,12 +33,12 @@ enable2ndByteCanID = false
[MegaTune]
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
signature = "rusEFI 2021.02.25.all.2140302013"
signature = "rusEFI 2021.02.28.all.2140302013"
[TunerStudio]
queryCommand = "S"
versionInfo = "V" ; firmwave version for title bar.
signature = "rusEFI 2021.02.25.all.2140302013" ; signature is expected to be 7 or more characters.
signature = "rusEFI 2021.02.28.all.2140302013" ; signature is expected to be 7 or more characters.
[Constants]
; new packet serial format with CRC
@ -77,7 +77,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:02 UTC 2021
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:45 UTC 2021
pageSize = 20000
page = 1

View File

@ -33,12 +33,12 @@ enable2ndByteCanID = false
[MegaTune]
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
signature = "rusEFI 2021.02.25.frankenso_na6.4226303790"
signature = "rusEFI 2021.02.28.frankenso_na6.4226303790"
[TunerStudio]
queryCommand = "S"
versionInfo = "V" ; firmwave version for title bar.
signature = "rusEFI 2021.02.25.frankenso_na6.4226303790" ; signature is expected to be 7 or more characters.
signature = "rusEFI 2021.02.28.frankenso_na6.4226303790" ; signature is expected to be 7 or more characters.
[Constants]
; new packet serial format with CRC
@ -77,7 +77,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:11 UTC 2021
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:54 UTC 2021
pageSize = 20000
page = 1

View File

@ -33,12 +33,12 @@ enable2ndByteCanID = false
[MegaTune]
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
signature = "rusEFI 2021.02.25.hellen72.96926268"
signature = "rusEFI 2021.02.28.hellen72.96926268"
[TunerStudio]
queryCommand = "S"
versionInfo = "V" ; firmwave version for title bar.
signature = "rusEFI 2021.02.25.hellen72.96926268" ; signature is expected to be 7 or more characters.
signature = "rusEFI 2021.02.28.hellen72.96926268" ; signature is expected to be 7 or more characters.
[Constants]
; new packet serial format with CRC
@ -77,7 +77,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:04 UTC 2021
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:47 UTC 2021
pageSize = 20000
page = 1

View File

@ -33,12 +33,12 @@ enable2ndByteCanID = false
[MegaTune]
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
signature = "rusEFI 2021.02.25.hellen_cypress.1039053165"
signature = "rusEFI 2021.02.28.hellen_cypress.1039053165"
[TunerStudio]
queryCommand = "S"
versionInfo = "V" ; firmwave version for title bar.
signature = "rusEFI 2021.02.25.hellen_cypress.1039053165" ; signature is expected to be 7 or more characters.
signature = "rusEFI 2021.02.28.hellen_cypress.1039053165" ; signature is expected to be 7 or more characters.
[Constants]
; new packet serial format with CRC
@ -77,7 +77,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Thu Feb 25 02:57:29 UTC 2021
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Sun Feb 28 23:58:13 UTC 2021
pageSize = 20000
page = 1

View File

@ -33,12 +33,12 @@ enable2ndByteCanID = false
[MegaTune]
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
signature = "rusEFI 2021.02.25.kin.3259727249"
signature = "rusEFI 2021.02.28.kin.3259727249"
[TunerStudio]
queryCommand = "S"
versionInfo = "V" ; firmwave version for title bar.
signature = "rusEFI 2021.02.25.kin.3259727249" ; signature is expected to be 7 or more characters.
signature = "rusEFI 2021.02.28.kin.3259727249" ; signature is expected to be 7 or more characters.
[Constants]
; new packet serial format with CRC
@ -77,7 +77,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Thu Feb 25 02:57:25 UTC 2021
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Sun Feb 28 23:58:11 UTC 2021
pageSize = 19972
page = 1

View File

@ -33,12 +33,12 @@ enable2ndByteCanID = false
[MegaTune]
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
signature = "rusEFI 2021.02.25.mre_f4.1364465751"
signature = "rusEFI 2021.02.28.mre_f4.1364465751"
[TunerStudio]
queryCommand = "S"
versionInfo = "V" ; firmwave version for title bar.
signature = "rusEFI 2021.02.25.mre_f4.1364465751" ; signature is expected to be 7 or more characters.
signature = "rusEFI 2021.02.28.mre_f4.1364465751" ; signature is expected to be 7 or more characters.
[Constants]
; new packet serial format with CRC
@ -77,7 +77,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:09 UTC 2021
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:52 UTC 2021
pageSize = 20000
page = 1

View File

@ -33,12 +33,12 @@ enable2ndByteCanID = false
[MegaTune]
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
signature = "rusEFI 2021.02.25.mre_f7.1364465751"
signature = "rusEFI 2021.02.28.mre_f7.1364465751"
[TunerStudio]
queryCommand = "S"
versionInfo = "V" ; firmwave version for title bar.
signature = "rusEFI 2021.02.25.mre_f7.1364465751" ; signature is expected to be 7 or more characters.
signature = "rusEFI 2021.02.28.mre_f7.1364465751" ; signature is expected to be 7 or more characters.
[Constants]
; new packet serial format with CRC
@ -77,7 +77,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:07 UTC 2021
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:49 UTC 2021
pageSize = 20000
page = 1

View File

@ -33,12 +33,12 @@ enable2ndByteCanID = false
[MegaTune]
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
signature = "rusEFI 2021.02.25.prometheus_405.1829005451"
signature = "rusEFI 2021.02.28.prometheus_405.1829005451"
[TunerStudio]
queryCommand = "S"
versionInfo = "V" ; firmwave version for title bar.
signature = "rusEFI 2021.02.25.prometheus_405.1829005451" ; signature is expected to be 7 or more characters.
signature = "rusEFI 2021.02.28.prometheus_405.1829005451" ; signature is expected to be 7 or more characters.
[Constants]
; new packet serial format with CRC
@ -77,7 +77,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:15 UTC 2021
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:59 UTC 2021
pageSize = 20000
page = 1

View File

@ -33,12 +33,12 @@ enable2ndByteCanID = false
[MegaTune]
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
signature = "rusEFI 2021.02.25.prometheus_469.1829005451"
signature = "rusEFI 2021.02.28.prometheus_469.1829005451"
[TunerStudio]
queryCommand = "S"
versionInfo = "V" ; firmwave version for title bar.
signature = "rusEFI 2021.02.25.prometheus_469.1829005451" ; signature is expected to be 7 or more characters.
signature = "rusEFI 2021.02.28.prometheus_469.1829005451" ; signature is expected to be 7 or more characters.
[Constants]
; new packet serial format with CRC
@ -77,7 +77,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:13 UTC 2021
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:56 UTC 2021
pageSize = 20000
page = 1

View File

@ -33,12 +33,12 @@ enable2ndByteCanID = false
[MegaTune]
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
signature = "rusEFI 2021.02.25.proteus_f4.413377170"
signature = "rusEFI 2021.02.28.proteus_f4.413377170"
[TunerStudio]
queryCommand = "S"
versionInfo = "V" ; firmwave version for title bar.
signature = "rusEFI 2021.02.25.proteus_f4.413377170" ; signature is expected to be 7 or more characters.
signature = "rusEFI 2021.02.28.proteus_f4.413377170" ; signature is expected to be 7 or more characters.
[Constants]
; new packet serial format with CRC
@ -77,7 +77,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:19 UTC 2021
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:58:07 UTC 2021
pageSize = 20000
page = 1

View File

@ -33,12 +33,12 @@ enable2ndByteCanID = false
[MegaTune]
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
signature = "rusEFI 2021.02.25.proteus_f7.413377170"
signature = "rusEFI 2021.02.28.proteus_f7.413377170"
[TunerStudio]
queryCommand = "S"
versionInfo = "V" ; firmwave version for title bar.
signature = "rusEFI 2021.02.25.proteus_f7.413377170" ; signature is expected to be 7 or more characters.
signature = "rusEFI 2021.02.28.proteus_f7.413377170" ; signature is expected to be 7 or more characters.
[Constants]
; new packet serial format with CRC
@ -77,7 +77,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:17 UTC 2021
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:58:03 UTC 2021
pageSize = 20000
page = 1

View File

@ -33,12 +33,12 @@ enable2ndByteCanID = false
[MegaTune]
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
signature = "rusEFI 2021.02.25.subaru_eg33_f7.3175160971"
signature = "rusEFI 2021.02.28.subaru_eg33_f7.3175160971"
[TunerStudio]
queryCommand = "S"
versionInfo = "V" ; firmwave version for title bar.
signature = "rusEFI 2021.02.25.subaru_eg33_f7.3175160971" ; signature is expected to be 7 or more characters.
signature = "rusEFI 2021.02.28.subaru_eg33_f7.3175160971" ; signature is expected to be 7 or more characters.
[Constants]
; new packet serial format with CRC
@ -77,7 +77,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:30 UTC 2021
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:58:15 UTC 2021
pageSize = 20000
page = 1

View File

@ -58,4 +58,16 @@ public class ProteusAnalogTest extends RusefiTestBase {
// 100% duty -> failed TPS (voltage too high)
setIdlePositionAndAssertTps(98, 0);
}
void assertSensorValue(Sensor sensor, double expected) {
double actual = SensorCentral.getInstance().getValue(sensor);
assertEquals(expected, actual, 0.5);
}
@Test
public void testUnconnectedInputs() {
// CLT/IAT inputs should float at ~5 volts
assertSensorValue(Sensor.rawClt, 5.0);
assertSensorValue(Sensor.rawIat, 5.0);
}
}

View File

@ -1,6 +1,6 @@
package com.rusefi.config.generated;
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Thu Feb 25 02:57:02 UTC 2021
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Feb 28 23:57:45 UTC 2021
// by class com.rusefi.output.FileJavaFieldsConsumer
import com.rusefi.config.*;
@ -1478,7 +1478,7 @@ public class Fields {
public static final char TS_SD_R_COMMAND = 'r';
public static final char TS_SD_W_COMMAND = 'w';
public static final char TS_SET_LOGGER_SWITCH = 'l';
public static final String TS_SIGNATURE = "rusEFI 2021.02.25.all.2140302013";
public static final String TS_SIGNATURE = "rusEFI 2021.02.28.all.2140302013";
public static final char TS_SINGLE_WRITE_COMMAND = 'W';
public static final int TT_TT_1_16 = 50;
public static final int TT_TT_2JZ_1_12 = 29;

View File

@ -118,6 +118,10 @@ public enum Sensor {
tuneCrc16("tune crc16", SensorCategory.STATUS, FieldType.UINT16, 244, 0, 5),
// Raw sensors
rawClt("raw CLT", SensorCategory.SENSOR_INPUTS, FieldType.INT16, 238, 1.0 / PACK_MULT_VOLTAGE, 0, 5, "volts"),
rawIat("raw IAT", SensorCategory.SENSOR_INPUTS, FieldType.INT16, 240, 1.0 / PACK_MULT_VOLTAGE, 0, 5, "volts"),
// Synthetic (console only) channels
ETB_CONTROL_QUALITY("ETB metric", SensorCategory.SNIFFING, "", 100),
;

View File

@ -1,6 +1,6 @@
<roms>
<!-- was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh Thu Feb 25 02:57:03 UTC 2021 -->
<!-- was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh Sun Feb 28 23:57:46 UTC 2021 -->
<rom>
<romid>

View File

@ -37,40 +37,32 @@
<table class="info-table">
<thead>
<tr>
<th>Pin Number</th>
<th>Firmware ID</th>
<th>Type</th>
<th>Typical Function</th>
<th>Pigtail Color</th>
<th class="pin-header">Pin Number</th>
<th class="id-header">Firmware ID</th>
<th class="type-header">Type</th>
<th class="function-header">Typical Function</th>
<th class="color-header">Pigtail Color</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<br/>
<br/>
<br/>
<br/>
<h2>Full Pinout Table</h2>
<table class="pinout-table">
<thead>
<tr>
<th>Pin Number</th>
<th>Firmware ID</th>
<th>Type</th>
<th>Typical Function</th>
<th>Pigtail Color</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<br/>
<br/>
<br/>
<br/>
<div class="table-wrapper">
<table class="pinout-table">
<thead>
<tr>
<th class="pin-header">Pin Number</th>
<th class="id-header">Firmware ID</th>
<th class="type-header">Type</th>
<th class="function-header">Typical Function</th>
<th class="color-header">Pigtail Color</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</template>

Some files were not shown because too many files have changed in this diff Show More