int main(void) { communicationStatus = OpenCommunicationChannel(DEFAULT_CHANNEL, INPUT_BUFFER_SIZE); InitOutputPins(); InitLcd(); FireTextEvent("System", SYSTEM_NAME, DEFAULT_CHANNEL); FireTextEvent("Memory", PersistentMemoryType(), DEFAULT_CHANNEL); PutLcdLine(0, SYSTEM_NAME); UpdateLcd(); InitPersistentDataManager(); RegisterTableTypes(); RegisterEngineType(); memoryStatus = CheckPersistentMemory(&checkPersistentMemoryNotifyCallback); ShowStatus("Check memory", memoryStatus); if (memoryStatus == OK) { Status status = InitEngine(); ShowStatus("Initialize engine", status); if (status == OK) { InitAnalogInput(); ignitionStatus = InitIgnition(); ShowStatus("Initialize ignition", ignitionStatus); injectionStatus = InitInjection(); ShowStatus("Initialize injection", injectionStatus); } } if (FindMeasurement(RPM, &rpmMeasurement) != OK) { rpmMeasurement = NULL; } if (FindMeasurement(LOAD, &loadMeasurement) != OK) { loadMeasurement = NULL; } for (;;) { ShowIfError(communicationStatus); communicationStatus = ReadString(input); if ((communicationStatus == OK) && (strlen(input) > 0)) { communicationStatus = HandleMessage(input, &motorManagementApi, DEFAULT_CHANNEL); } if (memoryStatus == OK) { Status status = UpdateIgnition(); ShowIfError(status); if (status != ignitionStatus) { FireTextEvent(IGNITION, status, DEFAULT_CHANNEL); ignitionStatus = status; } status = UpdateInjection(); ShowIfError(status); if (status != injectionStatus) { FireTextEvent(INJECTION, status, DEFAULT_CHANNEL); injectionStatus = status; } if ((ignitionStatus == OK) && (injectionStatus == OK)) { UpdateDisplay(); } } } }
/** * Construct an analog input. * * @param channel The channel number to represent. */ AnalogInput::AnalogInput(uint32_t channel) { InitAnalogInput(channel); }