Code for autonomous rover for Sparkfun AVC. DataBus won 3rd in 2012 and the same code was used on Troubled Child, a 1986 Jeep Grand Wagoneer to win 1st in 2014.

Dependencies:   mbed Watchdog SDFileSystem DigoleSerialDisp

Committer:
shimniok
Date:
Fri Nov 30 16:11:53 2018 +0000
Revision:
25:bb5356402687
Parent:
0:a6a169de725f
Initial publish of revised version.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shimniok 0:a6a169de725f 1 #include "mbed.h"
shimniok 0:a6a169de725f 2 #include "Menu.h"
shimniok 0:a6a169de725f 3 #include <string.h>
shimniok 0:a6a169de725f 4
shimniok 0:a6a169de725f 5 Menu::Menu():
shimniok 0:a6a169de725f 6 _item(0), _itemCount(0)
shimniok 0:a6a169de725f 7 {
shimniok 0:a6a169de725f 8 }
shimniok 0:a6a169de725f 9
shimniok 0:a6a169de725f 10 void Menu::add(char *name, FunctionPtr f)
shimniok 0:a6a169de725f 11 {
shimniok 0:a6a169de725f 12 if (_itemCount < _ITEM_MAX) {
shimniok 0:a6a169de725f 13 _exec[_itemCount] = f;
shimniok 0:a6a169de725f 14 strncpy(_name[_itemCount], name, NAMESIZ-1);
shimniok 0:a6a169de725f 15 _itemCount++;
shimniok 0:a6a169de725f 16 }
shimniok 0:a6a169de725f 17
shimniok 0:a6a169de725f 18 return;
shimniok 0:a6a169de725f 19 }
shimniok 0:a6a169de725f 20
shimniok 0:a6a169de725f 21 void Menu::next()
shimniok 0:a6a169de725f 22 {
shimniok 0:a6a169de725f 23 _item++;
shimniok 0:a6a169de725f 24 if (_item >= _itemCount) _item = 0;
shimniok 0:a6a169de725f 25
shimniok 0:a6a169de725f 26 return;
shimniok 0:a6a169de725f 27 }
shimniok 0:a6a169de725f 28
shimniok 0:a6a169de725f 29 void Menu::prev()
shimniok 0:a6a169de725f 30 {
shimniok 0:a6a169de725f 31 if (_item == 0) _item = _itemCount;
shimniok 0:a6a169de725f 32 _item--;
shimniok 0:a6a169de725f 33
shimniok 0:a6a169de725f 34 return;
shimniok 0:a6a169de725f 35 }
shimniok 0:a6a169de725f 36
shimniok 0:a6a169de725f 37 void Menu::select()
shimniok 0:a6a169de725f 38 {
shimniok 0:a6a169de725f 39 (_exec[_item])();
shimniok 0:a6a169de725f 40 }
shimniok 0:a6a169de725f 41
shimniok 0:a6a169de725f 42 char *Menu::getItemName(int i)
shimniok 0:a6a169de725f 43 {
shimniok 0:a6a169de725f 44 return _name[i];
shimniok 0:a6a169de725f 45 }
shimniok 0:a6a169de725f 46
shimniok 0:a6a169de725f 47
shimniok 0:a6a169de725f 48 char *Menu::getItemName()
shimniok 0:a6a169de725f 49 {
shimniok 0:a6a169de725f 50 return _name[_item];
shimniok 0:a6a169de725f 51 }
shimniok 0:a6a169de725f 52
shimniok 0:a6a169de725f 53 void Menu::printAll()
shimniok 0:a6a169de725f 54 {
shimniok 0:a6a169de725f 55 fprintf(stdout, "Menus:\n");
shimniok 0:a6a169de725f 56 for (int i=0; i < _itemCount; i++) {
shimniok 0:a6a169de725f 57 fprintf(stdout, "%s\n", _name[i]);
shimniok 0:a6a169de725f 58 }
shimniok 0:a6a169de725f 59 fprintf(stdout, "\n");
shimniok 0:a6a169de725f 60
shimniok 0:a6a169de725f 61 return;
shimniok 0:a6a169de725f 62 }