If typical h/w response is very quick (e.g. < 1ms) and worst case is still pretty quick (e.g. < 5ms), then I think this is ok with the t/o there to prevent getting stuck in loop forever. Also, battery monitor is called from background task so we can be a little more relaxed about this.
So these & operators are going to yield a zero or a non-zero number that will be different for each switch (not a boolean). I think your intent is for these switch data to be an enum. So, for example, this one should be "... = ( ( fpgaRegister & CONCENTRATE_CAP_SWITCH_BIT_MASK ) != 0 ? OPEN : CLOSED );
I think this will be the time we initiate a treatment. Is that what we want? Or should we move this to transition function to capture time of treatment start?
In this filename, "prs" means "Product Requirement Specification" and not "Pressure". These values are defined in the PRS and are being used by UI Simulator.