hand_control/src/display.cpp

104 lines
3 KiB
C++
Raw Normal View History

2015-05-01 19:23:00 +00:00
#include <ncurses.h>
2015-05-02 13:37:58 +00:00
#include <string>
2015-05-01 21:22:13 +00:00
#include "display.h"
2015-05-01 19:23:00 +00:00
2015-05-02 13:37:58 +00:00
const int Curses::cmd_kbd_lines = 12;
const int Curses::cmd_kbd_columns = 50;
2015-05-02 17:24:54 +00:00
2015-05-02 13:37:58 +00:00
const int Curses::cmd_speed_lines = 4;
const int Curses::cmd_speed_columns = 50;
2015-05-01 19:23:00 +00:00
2015-05-02 17:24:54 +00:00
const int Curses::get_lines = 1;
const int Curses::get_columns = 1;
const int Curses::nav_data_lines = 5;
const int Curses::nav_data_columns = 40;
const int Curses::log_sent_w_lines = 12;
const int Curses::log_sent_w_columns = 40;
2015-05-01 19:23:00 +00:00
Curses::Curses() {
initscr();
cbreak();
2015-05-02 17:58:04 +00:00
start_color();
2015-05-01 22:00:28 +00:00
//noecho();
2015-05-02 17:24:54 +00:00
2015-05-02 13:37:58 +00:00
cmd_kbd = newwin(cmd_kbd_lines, cmd_kbd_columns, 0, 0);
2015-05-02 17:24:54 +00:00
get = newwin(get_lines, get_columns,
cmd_kbd_lines, cmd_kbd_columns/2);
cmd_speed = newwin(cmd_speed_lines, cmd_speed_columns,
cmd_kbd_lines + get_lines, 0);
2015-05-02 17:58:04 +00:00
log_sent_title = newwin(1, log_sent_w_columns,
0, cmd_kbd_columns + 1);
waddstr(log_sent_title, "SENT COMMANDS");
wrefresh(log_sent_title);
log_sent_w = newwin(log_sent_w_lines - 1, log_sent_w_columns,
1, cmd_kbd_columns + 1);
log_line_number = log_sent_w_lines - 2;
2015-05-02 17:46:02 +00:00
wattron(log_sent_w, A_BOLD);
init_pair(1, COLOR_RED, COLOR_BLACK);
wattron(log_sent_w, COLOR_PAIR(1));
2015-05-02 17:24:54 +00:00
scrollok(log_sent_w, TRUE);
nav_data = newwin(nav_data_lines, nav_data_columns,
log_sent_w_lines + 1, cmd_kbd_columns + 1);
2015-05-02 13:37:58 +00:00
print_cmd_kbd();
print_cmd_speed();
2015-05-02 17:24:54 +00:00
2015-05-01 22:00:28 +00:00
wmove(get, 0, 0);
wrefresh(get);
2015-05-01 19:23:00 +00:00
}
Curses::~Curses() {
2015-05-02 13:37:58 +00:00
delwin(cmd_kbd);
delwin(cmd_speed);
delwin(log_sent_w);
2015-05-02 17:58:04 +00:00
delwin(log_sent_title);
2015-05-02 13:37:58 +00:00
delwin(nav_data);
2015-05-01 22:00:28 +00:00
delwin(get);
2015-05-01 19:23:00 +00:00
endwin();
}
2015-05-02 13:37:58 +00:00
char Curses::getchar() {
2015-05-01 22:00:28 +00:00
return wgetch(get);
}
2015-05-02 13:37:58 +00:00
void Curses::print_cmd_kbd() {
wmove(cmd_kbd, 0, 0); waddstr(cmd_kbd, " ---------------------");
wmove(cmd_kbd, 1, 0); waddstr(cmd_kbd, "takeoff>| t|⇑ y|↖ u|↑ i|↗ o|");
wmove(cmd_kbd, 2, 0); waddstr(cmd_kbd, " |---|---|---|---|---|----");
wmove(cmd_kbd, 3, 0); waddstr(cmd_kbd, " reset>| g|⇐ h|← j| k|→ l|⇒ m|");
wmove(cmd_kbd, 4, 0); waddstr(cmd_kbd, " |---|---|---|---|---|----");
wmove(cmd_kbd, 5, 0); waddstr(cmd_kbd, " land>| b|⇓ n|↙ ,|↓ ;|↘ :|");
wmove(cmd_kbd, 6, 0); waddstr(cmd_kbd, " ---------------------");
wmove(cmd_kbd, 8, 0); waddstr(cmd_kbd, "a/w : increase/decrease linear `x` speeds by 10%");
wmove(cmd_kbd, 9, 0); waddstr(cmd_kbd, "z/x : increase/decrease linear `y` speed by 10%");
wmove(cmd_kbd, 10, 0); waddstr(cmd_kbd, "e/c : increase/decrease linear `z` speed by 10%");
wmove(cmd_kbd, 11, 0); waddstr(cmd_kbd, "r/v : increase/decrease rotation speed by 10%");
wrefresh(cmd_kbd);
}
void Curses::print_cmd_speed() {
}
void Curses::update_cmd_speed(const char& coord, const float& v) {
}
void Curses::log_sent(const std::string& str) {
2015-05-02 17:24:54 +00:00
wmove(log_sent_w, log_line_number++, 0);
waddstr(log_sent_w, (str + "\n").c_str() );
wrefresh(log_sent_w);
2015-05-02 13:37:58 +00:00
}
void Curses::update_navdata(const float& batteryPercent,
const int& state,
const float& time) {
2015-05-01 19:23:00 +00:00
}