int getInternalAdcValue(const char *msg, adc_channel_e hwChannel) { if (hwChannel == EFI_ADC_NONE) { warning(CUSTOM_OBD_ANALOG_INPUT_NOT_CONFIGURED, "ADC: %s input is not configured", msg); return -1; } #if EFI_ENABLE_MOCK_ADC if (engine->engineState.mockAdcState.hasMockAdc[hwChannel]) return engine->engineState.mockAdcState.getMockAdcValue(hwChannel); #endif /* EFI_ENABLE_MOCK_ADC */ if (adcHwChannelEnabled[hwChannel] == ADC_FAST) { int internalIndex = fastAdc.internalAdcIndexByHardwareIndex[hwChannel]; // todo if ADC_BUF_DEPTH_FAST EQ 1 // return fastAdc.samples[internalIndex]; int value = getAvgAdcValue(internalIndex, fastAdc.samples, ADC_BUF_DEPTH_FAST, fastAdc.size()); return value; } if (adcHwChannelEnabled[hwChannel] != ADC_SLOW) { warning(CUSTOM_OBD_39, "ADC is off [%s] index=%d", msg, hwChannel); } return slowAdc.getAdcValueByHwChannel(hwChannel); }
float getMCUInternalTemperature(void) { float TemperatureValue = adcToVolts(slowAdc.getAdcValueByHwChannel(ADC_CHANNEL_SENSOR)); TemperatureValue -= 0.760; // Subtract the reference voltage at 25°C TemperatureValue /= .0025; // Divide by slope 2.5mV TemperatureValue += 25.0; // Add the 25°C return TemperatureValue; }
int getInternalAdcValue(const char *msg, adc_channel_e hwChannel) { if (hwChannel == EFI_ADC_NONE) { warning(OBD_PCM_Processor_Fault, "ADC: should not be asking for NONE %s", msg); return -1; } if (adcHwChannelEnabled[hwChannel] == ADC_FAST) { int internalIndex = fastAdc.internalAdcIndexByHardwareIndex[hwChannel]; return fastAdc.samples[internalIndex]; } if (adcHwChannelEnabled[hwChannel] != ADC_SLOW) { warning(OBD_PCM_Processor_Fault, "ADC is off [%s] index=%d", msg, hwChannel); } return slowAdc.getAdcValueByHwChannel(hwChannel); }