diff --git a/firmware/hw_layer/AdcConfiguration.h b/firmware/hw_layer/AdcConfiguration.h index d425951757..36d8460d51 100644 --- a/firmware/hw_layer/AdcConfiguration.h +++ b/firmware/hw_layer/AdcConfiguration.h @@ -9,9 +9,9 @@ #if HAL_USE_ADC || defined(__DOXYGEN__) -class AdcConfiguration { +class AdcDevice { public: - AdcConfiguration(ADCConversionGroup* hwConfig); + AdcDevice(ADCConversionGroup* hwConfig); void addChannel(adc_channel_e hwChannelIndex); adc_channel_e getAdcHardwareIndexByInternalIndex(int index); int internalAdcIndexByHardwareIndex[20]; @@ -22,6 +22,8 @@ public: int errorsCount; int getAdcValueByIndex(int internalIndex); + adcsample_t samples[ADC_MAX_CHANNELS_COUNT * ADC_GRP1_BUF_DEPTH_SLOW]; + adc_state values; private: ADCConversionGroup* hwConfig; diff --git a/firmware/hw_layer/adc_inputs.cpp b/firmware/hw_layer/adc_inputs.cpp index ec89015f6d..fd8f45cff8 100644 --- a/firmware/hw_layer/adc_inputs.cpp +++ b/firmware/hw_layer/adc_inputs.cpp @@ -23,7 +23,7 @@ #include "map_averaging.h" #endif /* EFI_SPEED_DENSITY */ -AdcConfiguration::AdcConfiguration(ADCConversionGroup* hwConfig) { +AdcDevice::AdcDevice(ADCConversionGroup* hwConfig) { this->hwConfig = hwConfig; channelCount = 0; conversionCount = 0; @@ -69,8 +69,6 @@ static int fastAdcValue; extern engine_configuration_s *engineConfiguration; extern board_configuration_s *boardConfiguration; -static adc_hw_helper_s slowAdcState; - /* * ADC samples buffer. */ @@ -133,7 +131,7 @@ ADC_TwoSamplingDelay_20Cycles, // cr1 // Conversion group sequence 1...6 }; -AdcConfiguration slowAdc(&adcgrpcfgSlow); +AdcDevice slowAdc(&adcgrpcfgSlow); static ADCConversionGroup adcgrpcfg_fast = { FALSE, 0 /* num_channels */, adc_callback_fast, NULL, /* HW dependent part.*/ @@ -151,7 +149,7 @@ ADC_TwoSamplingDelay_5Cycles, // cr1 // Conversion group sequence 1...6 }; -AdcConfiguration fastAdc(&adcgrpcfg_fast); +AdcDevice fastAdc(&adcgrpcfg_fast); static void pwmpcb_slow(PWMDriver *pwmp) { #if EFI_INTERNAL_ADC @@ -172,7 +170,7 @@ static void pwmpcb_slow(PWMDriver *pwmp) { ; return; } - adcStartConversionI(&ADC_SLOW_DEVICE, &adcgrpcfgSlow, slowAdcState.samples, ADC_GRP1_BUF_DEPTH_SLOW); + adcStartConversionI(&ADC_SLOW_DEVICE, &adcgrpcfgSlow, slowAdc.samples, ADC_GRP1_BUF_DEPTH_SLOW); chSysUnlockFromIsr() ; #endif @@ -371,20 +369,20 @@ static void initAdcHwChannel(adc_channel_e hwChannel) { initAdcPin(port, pin, "hw"); } -int AdcConfiguration::size() { +int AdcDevice::size() { return channelCount; } -int AdcConfiguration::getAdcValueByIndex(int internalIndex) { +int AdcDevice::getAdcValueByIndex(int internalIndex) { return values.adc_data[internalIndex]; } -void AdcConfiguration::init(void) { +void AdcDevice::init(void) { hwConfig->num_channels = size(); hwConfig->sqr1 += ADC_SQR1_NUM_CH(size()); } -bool AdcConfiguration::isHwUsed(adc_channel_e hwChannelIndex) { +bool AdcDevice::isHwUsed(adc_channel_e hwChannelIndex) { for (int i = 0; i < channelCount; i++) { if (hardwareIndexByIndernalAdcIndex[i] == hwChannelIndex) { return true; @@ -393,7 +391,7 @@ bool AdcConfiguration::isHwUsed(adc_channel_e hwChannelIndex) { return false; } -void AdcConfiguration::addChannel(adc_channel_e hwChannel) { +void AdcDevice::addChannel(adc_channel_e hwChannel) { int logicChannel = channelCount++; internalAdcIndexByHardwareIndex[hwChannel] = logicChannel; @@ -414,7 +412,7 @@ static void printAdcValue(adc_channel_e channel) { scheduleMsg(&logger, "adc voltage : %f", volts); } -adc_channel_e AdcConfiguration::getAdcHardwareIndexByInternalIndex(int index) { +adc_channel_e AdcDevice::getAdcHardwareIndexByInternalIndex(int index) { return hardwareIndexByIndernalAdcIndex[index]; } @@ -461,7 +459,7 @@ static void adc_callback_slow(ADCDriver *adcp, adcsample_t *buffer, size_t n) { // newState.time = chimeNow(); for (int i = 0; i < slowAdc.size(); i++) { - int value = getAvgAdcValue(i, slowAdcState.samples, ADC_GRP1_BUF_DEPTH_SLOW, slowAdc.size()); + int value = getAvgAdcValue(i, slowAdc.samples, ADC_GRP1_BUF_DEPTH_SLOW, slowAdc.size()); slowAdc.values.adc_data[i] = value; } } diff --git a/firmware/hw_layer/adc_inputs.h b/firmware/hw_layer/adc_inputs.h index cffe8adb36..e4fbf60f91 100644 --- a/firmware/hw_layer/adc_inputs.h +++ b/firmware/hw_layer/adc_inputs.h @@ -46,13 +46,6 @@ typedef struct { // time_t time; } adc_state; -typedef struct { - adcsample_t samples[ADC_MAX_CHANNELS_COUNT * ADC_GRP1_BUF_DEPTH_SLOW]; - - -} adc_hw_helper_s; - - #define getAdcValue(hwChannel) getInternalAdcValue(hwChannel) // todo: migrate to adcToVoltageInputDividerCoefficient diff --git a/firmware/hw_layer/board_test.cpp b/firmware/hw_layer/board_test.cpp index 74886ecb95..09b583aea6 100644 --- a/firmware/hw_layer/board_test.cpp +++ b/firmware/hw_layer/board_test.cpp @@ -36,12 +36,11 @@ static bool isTimeForNextStep(int copy) { return copy != stepCoutner; } - #if HAL_USE_ADC || defined(__DOXYGEN__) -extern AdcConfiguration slowAdc; -extern AdcConfiguration fastAdc; +extern AdcDevice slowAdc; +extern AdcDevice fastAdc; -static void processAdcPin(AdcConfiguration *adc, int index, const char *prefix) { +static void processAdcPin(AdcDevice *adc, int index, const char *prefix) { adc_channel_e hwIndex = adc->getAdcHardwareIndexByInternalIndex(index); GPIO_TypeDef* port = getAdcChannelPort(hwIndex); int pin = getAdcChannelPin(hwIndex); diff --git a/firmware/rusefi.cpp b/firmware/rusefi.cpp index 0e82ec4d83..0a0330637f 100644 --- a/firmware/rusefi.cpp +++ b/firmware/rusefi.cpp @@ -265,5 +265,5 @@ int getRusEfiVersion(void) { return 1; // this is here to make the compiler happy about the unused array if (UNUSED_CCM_SIZE == 0) return 1; // this is here to make the compiler happy about the unused array - return 20150113; + return 20150114; }