Hello,
I am a software engineer coming from a more higher layer background (OOP, GUI-development), but now I will probably face an embedded software project.
I would like to know if there exist software architectures, standards, guidelines etc. for the menue software in a sensor device. That is, the device consists of 3 or more keys to walk through a menu tree. The sensor device has a display that is connected to the processor (via a controller). I guess that devices like this one abound, so there could be something like a standard for this.
Note that I don't mean the menu / menu tree itsself. It is more or less fixed. What the guys here want me to do is to develop the software handling the menue, but in a very clean and modular way. The software should be adopted to other sensors (same processor / os, but different menu) with minimized effort. Also, documentation, life-cycle models (V-Model) and so on are very important in this company. They want another guy to join a similar project with a different menue structure. I should also lead this guy and concentrate on architecture and design.
From what I have seen, the menue tree doesn't seem too complex.
I have first thought on something like the GoF State-Pattern or the Command Pattern, but the programming language is c. I am not sure if it is worth to do object oriented c, and if other programmers are used to it. On the other hand, I don't like (non object oriented) finite state machines. You end up with a huge while loop that nobody will ever understand.
Sure, there should probably be a menue part, a process part, and a display part (something like model-view-controller).
It would be nice if there are already (defacto) standards or if somebody of you experts could give me some advice.
The protocol between the Display controller and the Processor isn't specified either, well, it's SPI, but this is just the hardware. I am looking for the higher layers. Maybe there is some kind of standard API for this as well.
The Processor is PowerPC and the OS is (embedded) Linux if that matters. I don't seem to have run-time or space constraints.
Best regards
Johannes