diff options
Diffstat (limited to 'main.cpp')
-rw-r--r-- | main.cpp | 53 |
1 files changed, 29 insertions, 24 deletions
@@ -5,6 +5,7 @@ * Created on May 1, 2018, 6:18 PM */ +// Note: there is some debug code in uart.tpp that controls the RGB led // #define DEBUG // basic devices @@ -54,7 +55,7 @@ std::vector<std::string> split(const std::string& str, const char sep) return v; } -int main(int argc, char** argv) +int main(int argc, char *argv[]) { osc::initialize(); interrupts::initialize(); @@ -69,14 +70,14 @@ int main(int argc, char** argv) io_pin<7> led3_pin(&LATEbits, &TRISEbits, &PORTEbits); // build leds - led led1(static_cast<gpio *>(&led1_pin), led::color::RED); - led led2(static_cast<gpio *>(&led2_pin), led::color::GREEN); - led led3(static_cast<gpio *>(&led3_pin), led::color::YELLOW); + led led_red(static_cast<gpio_pin *>(&led1_pin), led::color::RED); + led led_green(static_cast<gpio_pin *>(&led2_pin), led::color::GREEN); + led led_yellow(static_cast<gpio_pin *>(&led3_pin), led::color::YELLOW); #ifdef DEBUG - led1.set(1); - led2.set(1); - led3.set(1); + led_red.set(1); + led_green.set(1); + led_yellow.set(1); uart::write<1>("started\n\r"); #endif @@ -90,11 +91,15 @@ int main(int argc, char** argv) do { input += uart::read_wait<1>(); + // Note: does not work with teraterm on windows // DEL character if (input.back() == '\x7f') { input.pop_back(); - input.pop_back(); - uart::write<1>("\b \b"); + + if (input.size() > 1) { + input.pop_back(); + uart::write<1>("\b \b"); + } } } while (input.back() != '\r' && input.back() != '\n'); @@ -140,9 +145,9 @@ int main(int argc, char** argv) if (command[0] == "show") { if (command[1] == "led") { if (command[2] == "all") { - uart::print<1>(led1.to_string()); - uart::print<1>(led2.to_string()); - uart::print<1>(led3.to_string()); + uart::print<1>(led_red.to_string()); + uart::print<1>(led_green.to_string()); + uart::print<1>(led_yellow.to_string()); } } } @@ -162,31 +167,31 @@ int main(int argc, char** argv) if (command[1] == "led") { if (command[2] == "red") { if (command[3] == "on") { - led1.set(1); + led_red.set(1); } else if (command[3] == "off") { - led1.set(0); + led_red.set(0); } } else if (command[2] == "green") { if (command[3] == "on") { - led2.set(1); + led_green.set(1); } else if (command[3] == "off") { - led2.set(0); + led_green.set(0); } } else if (command[2] == "yellow") { if (command[3] == "on") { - led3.set(1); + led_yellow.set(1); } else if (command[3] == "off") { - led3.set(0); + led_yellow.set(0); } } else if (command[2] == "all") { if (command[3] == "on") { - led1.set(1); - led2.set(1); - led3.set(1); + led_red.set(1); + led_green.set(1); + led_yellow.set(1); } else if (command[3] == "off") { - led1.set(0); - led2.set(0); - led3.set(0); + led_red.set(0); + led_green.set(0); + led_yellow.set(0); } } } |