static void initWave(const char *name, int index) { brain_pin_e brainPin = boardConfiguration->logicAnalyzerPins[index]; ioportid_t port = getHwPort(brainPin); ioportmask_t pin = getHwPin(brainPin); ICUDriver *driver = getInputCaptureDriver(brainPin); bool mode = boardConfiguration->logicAnalyzerMode[index]; waveReaderCount++; efiAssertVoid(index < MAX_ICU_COUNT, "too many ICUs"); WaveReader *reader = &readers[index]; WaveReaderHw *hw = &reader->hw; reader->name = name; registerCallback(&hw->widthListeners, (IntListener) waAnaWidthCallback, (void*) reader); registerCallback(&hw->periodListeners, (IntListener) waIcuPeriodCallback, (void*) reader); initWaveAnalyzerDriver(hw, driver, port, pin); print("wave%d input on %s%d\r\n", index, portname(reader->hw.port), reader->hw.pin); setWaveReaderMode(hw, mode); }
void initVehicleSpeed(Logging *l) { logger = l; if (boardConfiguration->vehicleSpeedSensorInputPin == GPIO_UNASSIGNED) return; digital_input_s* vehicleSpeedInput = initWaveAnalyzerDriver("VSS", boardConfiguration->vehicleSpeedSensorInputPin); startInputDriver(vehicleSpeedInput, true); vehicleSpeedInput->widthListeners.registerCallback((VoidInt) vsAnaWidthCallback, NULL); addConsoleAction("speedinfo", speedInfo); }