.. include:: Firmware: Dedicated Thread For "Sensor Burning" Event ===================================================== .. image:: fsm-sensor-burning-thread.svg :scale: 80% Plan ---- * Move "sensor burning" IRQ handling to ``main()`` - much like we :doc:`moved timer <../os-timer-tick-thread/index>` * ``FSM`` relieved from "sensor burning" IRQ artifacts completely * Constructor parameter * Member ``_sensor_burning_irq`` * ISR registration * *Public* method ``FSM::sensor_burning()`` * Dedicated semaphore and thread in ``main()`` (again, like :doc:`timer <../os-timer-tick-thread/index>`) ``main()``: "Sensor Burning" Thread ----------------------------------- .. literalinclude:: code/main.cpp :caption: :download:`code/main.cpp` :language: c++ FSM: Even Smaller ----------------- .. literalinclude:: code/fsm.h :caption: :download:`code/fsm.h` :language: c++ .. literalinclude:: code/fsm.cpp :caption: :download:`code/fsm.cpp` :language: c++