Library which creates a serial test console, it supports pages and menu items. The items are added and the pages are added as necessary when the user sets it up. This is a great too for creating an easy to maintain menu system, whether for a test sytem, or anything else.

Dependencies:   Terminal

Committer:
glansberry
Date:
Fri May 01 03:56:34 2015 +0000
Revision:
0:907d2d5e77f7
Child:
3:f308cd7a34ed
Planned Menu is constructed,  needs callbacks

Who changed what in which revision?

UserRevisionLine numberNew contents of line
glansberry 0:907d2d5e77f7 1 #ifndef __MENUITEM_H
glansberry 0:907d2d5e77f7 2 #define __MENUITEM_H
glansberry 0:907d2d5e77f7 3
glansberry 0:907d2d5e77f7 4 #include "Terminal.h"
glansberry 0:907d2d5e77f7 5
glansberry 0:907d2d5e77f7 6 extern Terminal term;
glansberry 0:907d2d5e77f7 7
glansberry 0:907d2d5e77f7 8 typedef enum {menu, heading, display, control} MenuType;
glansberry 0:907d2d5e77f7 9 typedef char * (*callback_function)(bool); // type for conciseness
glansberry 0:907d2d5e77f7 10
glansberry 0:907d2d5e77f7 11 #define MAX_NAME_LEN (80-10-10)
glansberry 0:907d2d5e77f7 12
glansberry 0:907d2d5e77f7 13 class MenuItem{
glansberry 0:907d2d5e77f7 14 public:
glansberry 0:907d2d5e77f7 15 MenuItem();
glansberry 0:907d2d5e77f7 16 MenuItem(const char * Name_p, callback_function callback_p, int level, MenuType type_p, int target_page = -1);
glansberry 0:907d2d5e77f7 17 MenuItem(const char * Name_p, int target_page); //construct a menu selection item this way
glansberry 0:907d2d5e77f7 18 const char *Name; //reference to the name
glansberry 0:907d2d5e77f7 19 int level; //0 if primary 1 or greater if this is a sub-menu
glansberry 0:907d2d5e77f7 20 MenuType type; //are we displaying something or controlling something
glansberry 0:907d2d5e77f7 21
glansberry 0:907d2d5e77f7 22 callback_function callback; //callback for getting the data
glansberry 0:907d2d5e77f7 23
glansberry 0:907d2d5e77f7 24 int name_len;
glansberry 0:907d2d5e77f7 25
glansberry 0:907d2d5e77f7 26 int data_col; //column where the data is shown
glansberry 0:907d2d5e77f7 27 int target_page; //the page to go to if called
glansberry 0:907d2d5e77f7 28
glansberry 0:907d2d5e77f7 29 };
glansberry 0:907d2d5e77f7 30
glansberry 0:907d2d5e77f7 31
glansberry 0:907d2d5e77f7 32 #endif