Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 1:e7266223f1fa, committed 2016-11-05
- Comitter:
- uLipe
- Date:
- Sat Nov 05 23:27:09 2016 +0000
- Parent:
- 0:ead5ee0a33fa
- Commit message:
- added backspace support
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Sat Nov 05 02:46:29 2016 +0000
+++ b/main.cpp Sat Nov 05 23:27:09 2016 +0000
@@ -43,6 +43,12 @@
void app1_task(void) {
const char thread_message[] = {"app1_task now running! \0"};
for(;;) {
+ /* each thread has the same behavior
+ * waits for a signal and when it asserted
+ * executes and keep sending a signal_set
+ * in order to suspend only when requested via
+ * terminal
+ */
app1_thread.signal_wait(1);
app1_thread.signal_set(1);
glcd.locate((LCD_WIDTH - (FONT_WIDTH * sizeof(thread_message)))/2,
@@ -247,22 +253,36 @@
if(pc_serial.readable()) {
bool new_cmd = false;
-
/* get the incoming character */
char c = pc_serial.getc();
- pc_serial.putc(c);
-
-
- /* is a enter ? */
+
if( (c == '\n') || (c == '\r')) {
+ /* handle enter key */
new_cmd = true;
- pc_serial.getc();
+ pc_serial.printf("\n\r");
+
+ }else if( (c == 0x7F) || (c == 0x08)){
+ /* handle backspace and del keys */
+ pc_serial.printf("\033[1D");
+ pc_serial.putc(' ');
+ pc_serial.printf("\033[1D");
+
+ read_ptr--;
+ if(read_ptr < -1) read_ptr = 1023;
+ serial_buffer[read_ptr] = ' ';
+
} else {
+ /* loopback the pressed key */
+ pc_serial.putc(c);
+
+ /* store the incoming character on command circular buffer */
serial_buffer[read_ptr] = c;
read_ptr = (read_ptr + 1) % 1024;
}
+
+
if(new_cmd != false) {
/* command arrived, has other characters? */
if(read_ptr != 0) {
@@ -281,7 +301,7 @@
}
static void idle_hook(void) {
- const char thread_message[] = {"No thread running! \0"};
+ const char thread_message[] = {"No thread running!"};
glcd.locate((LCD_WIDTH - (FONT_WIDTH * sizeof(thread_message)))/2,
(LCD_HEIGHT - FONT_HEIGHT) / 2);
glcd.printf(thread_message);