summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CommandTerminal/CommandTerminal.cpp25
-rw-r--r--CommandTerminal/CommandTerminal.h8
-rw-r--r--Mode/ModeConfig.cpp26
-rw-r--r--Mode/ModeConfig.h21
4 files changed, 75 insertions, 5 deletions
diff --git a/CommandTerminal/CommandTerminal.cpp b/CommandTerminal/CommandTerminal.cpp
index 28c047f..9ca6b30 100644
--- a/CommandTerminal/CommandTerminal.cpp
+++ b/CommandTerminal/CommandTerminal.cpp
@@ -2,6 +2,7 @@
#include "CommandTerminal.h"
#include "Command.h"
#include "MTSLog.h"
+#include "ButtonHandler.h"
#include <cstdarg>
#include <deque>
@@ -28,13 +29,14 @@ void CommandTerminal::addCommand(Command* cmd) {
_commands.push_back(cmd);
}
-CommandTerminal::CommandTerminal(mts::MTSSerial& serial, mDot* dot)
+CommandTerminal::CommandTerminal(mts::MTSSerial& serial, mDot* dot, ButtonHandler* buttons)
:
_serial(serial),
_dot(dot),
_mode(mDot::COMMAND_MODE),
_idle_thread(idle, NULL, osPriorityLow),
- _serial_up(false) {
+ _serial_up(false),
+ _buttons(buttons) {
_serialp = &serial;
@@ -141,7 +143,7 @@ void CommandTerminal::writef(const char* format, ...) {
va_end(ap);
}
-void CommandTerminal::start() {
+bool CommandTerminal::start() {
char ch;
bool running = true;
bool echo = _dot->getEcho();
@@ -185,6 +187,22 @@ void CommandTerminal::start() {
//Run terminal session
while (running) {
+
+ osEvent e = Thread::signal_wait(buttonSignal);
+ if (e.status == osEventSignal) {
+ ButtonHandler::ButtonEvent _be = _buttons->getButtonEvent();
+ switch (_be) {
+ case ButtonHandler::sw1_press:
+ break;
+ case ButtonHandler::sw2_press:
+ break;
+ case ButtonHandler::sw1_hold:
+ return true;
+ default:
+ break;
+ }
+ }
+
ch = '\0';
// read characters
@@ -354,4 +372,5 @@ void CommandTerminal::start() {
history.pop_back();
}
+ return false;
}
diff --git a/CommandTerminal/CommandTerminal.h b/CommandTerminal/CommandTerminal.h
index 0fcb9c4..b6c58c8 100644
--- a/CommandTerminal/CommandTerminal.h
+++ b/CommandTerminal/CommandTerminal.h
@@ -36,6 +36,8 @@
#include "MTSSerial.h"
#include "Commands.h"
#include "mDot.h"
+#include "ButtonHandler.h"
+
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __command_terminal_H__
@@ -53,7 +55,7 @@ public:
WAIT_NA
};
- CommandTerminal(mts::MTSSerial& serial, mDot* dot);
+ CommandTerminal(mts::MTSSerial& serial, mDot* dot, ButtonHandler* buttons);
// Command prompt text...
static const char banner[];
@@ -73,7 +75,7 @@ public:
// Escape sequence
static const char escape_sequence[];
- void start();
+ bool start();
private:
@@ -91,6 +93,8 @@ private:
Thread _idle_thread;
bool _serial_up;
+ ButtonHandler* _buttons;
+
void addCommand(Command* cmd);
void printHelp();
diff --git a/Mode/ModeConfig.cpp b/Mode/ModeConfig.cpp
new file mode 100644
index 0000000..afabab5
--- /dev/null
+++ b/Mode/ModeConfig.cpp
@@ -0,0 +1,26 @@
+#include "ModeConfig.h"
+#include "MTSLog.h"
+#include "MTSText.h"
+#include "CommandTerminal.h"
+
+ModeConfig::ModeConfig(DOGS102* lcd, ButtonHandler* buttons, mDot* dot)
+ : Mode(lcd, buttons),
+ _lc(lcd),
+ _dot(dot)
+{}
+
+ModeConfig::~ModeConfig() {}
+
+bool ModeConfig::start() {
+ // clear any stale signals
+ osSignalClear(_main_id, buttonSignal);
+
+ _lc.display();
+
+ logInfo("config mode");
+
+ mts::MTSSerial serial(USBTX, USBRX, 512, 512);
+
+ CommandTerminal term(serial, _dot, _buttons);
+ return term.start();
+}
diff --git a/Mode/ModeConfig.h b/Mode/ModeConfig.h
new file mode 100644
index 0000000..be478dd
--- /dev/null
+++ b/Mode/ModeConfig.h
@@ -0,0 +1,21 @@
+#ifndef __MODECONFIG_H__
+#define __MODECONFIG_H__
+
+#include "Mode.h"
+#include "LayoutConfig.h"
+#include "mDot.h"
+
+class ModeConfig : public Mode {
+ public:
+ ModeConfig(DOGS102* lcd, ButtonHandler* buttons, mDot* dot);
+ ~ModeConfig();
+
+ bool start();
+
+ private:
+ LayoutConfig _lc;
+ mDot* _dot;
+ ButtonHandler::ButtonEvent _be;
+};
+
+#endif