Hello,
first of all I would like you to know a little bit about the project I'm doing (can't tell much:).
I am building a system in which I'd like to have a menu implemented as some kind of a finite state machine.
The menu should be able to be nested.
I would like the code for it to be very simple, something like this:
MENU menu; MENU m1(&menu); MENU m2(&menu); MENU m11(&m1); MENU m21(&m2); MENU m22(&m2); MENU m23(&m2);
This code should give me the menu that is nested and looks like this:
MENU--- | | M1 M2--- | | | M11 M21 M22
I made a C++ code that works in Visual Studio 2010, but when I tried to migrate it to Keil uVision and put it on a microcontroller, it compiles well, but it blocks before entering the main().
I read that it is generally not a good idea to use dynamic memory allocation in embedded systems, and I don't really need dynamic allocation of memory for the menu, since it will be static, and defined at compiling.
But I would really like to use class approach to it.
To give you another example: i implemented button matrix as a class, so it can easily be defined this way:
ButtonNetwork BN; BN.AddOutLine(LPC_GPIO0, 26); BN.AddOutLine(LPC_GPIO0, 25); BN.AddOutLine(LPC_GPIO0, 24); BN.AddInputLine(LPC_GPIO3, 26); BN.AddInputLine(LPC_GPIO3, 25); BN.AddInputLine(LPC_GPIO1, 18); BN.AddInputLine(LPC_GPIO1, 19);
This way I can define a button matrix very easy with 3 output lines, and 4 input lines.
Also the same problem - the number of lines will be static. I just prefer this approach, because it is easier for later changes to a software.
The microcontroller I use is LPC1768 Cortex M3. Please tell me what is the easiest way to make it work.
As a temporary solution, I tried increasing the heap size but it doesn't help.
Ill wait for your answers before continuing with this, Thanks for even reading.
Three things: 1) When posting "examples" - make sure that the examples are valid for the discussion at had. Having simplified code that can't behave as you claim the code behaves means no one can help you based on the posted code.
2) Are you sure that your heap is initialized before the global C++ objects gets initialized? If not, then your vector code will fail. Note that global C++ objects gets constructed before you reach main().
3) Reduced or not - your code mixes up the owner of the lists and what elements to insert into the list.