auto-sync

This commit is contained in:
rusEfi 2015-01-14 07:05:23 -06:00
parent 5eaa81daf9
commit e6fe729edb
5 changed files with 19 additions and 27 deletions

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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

View File

@ -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);

View File

@ -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;
}