2025-06-26 (3 VO): Project Standup, Exam

Didactic Masterplan

  • What are we doing here?

    Poll in millisecond intervals, reading input-switch levels and sensor values. From that, we determine input-switch level transitions (edges), and then deduce state transitions.

    This is stupid - input-switch edges are in fact events into our state machine. This is what interrupts are there for, at the hardware level.

  • Can that be done better?

    Yes. Events in Linux are throughout representable as file descriptors (timers, signals, incoming and outgoing network traffic, GPIOs and their edges). On top of one can do event driven programming using for example the aptly named poll system call to watch multiple file descriptor for events.

  • What else is in the masterplan?

    • More OS knowledge is in order. We know how to program C++, and know roughly what we are doing. But who knows

      • what an ioctl is?

      • how to create a process and to communicate with it over a pipe from which further events can be read into the parent process?

      • how to treat a timer file descriptor?

    • Likewise, more C++ knowledge is in order.

      • Should we really be able to copy an object that maintains a file descriptor (like the I2C sensors that we use)? Whose destructor would then be responsible to close the file descriptor?

      • Are there safer ways to pass objects than by-pointer?

Standup

Exam