[Ovmsdev] <enter> not working with vfs edit?

Mark Webb-Johnson mark at webb-johnson.net
Fri Jan 12 13:51:32 HKT 2018


Maybe the recent change for IDF v3 where Espressif messed around with CRLF.

2f0c9f0 Translate CR or CRLF to LF on async console for microrl

$ git diff fc69e3e 2f0c9f0
diff --git a/vehicle/OVMS.V3/main/console_async.cpp b/vehicle/OVMS.V3/main/console_async.cpp
index e7110fa..dd3df4a 100644
--- a/vehicle/OVMS.V3/main/console_async.cpp
+++ b/vehicle/OVMS.V3/main/console_async.cpp
@@ -155,6 +155,24 @@ void ConsoleAsync::HandleDeviceEvent(void* pEvent)
       if (buffered_size > 0)
         {
         int len = uart_read_bytes(EX_UART_NUM, data, BUF_SIZE, 100 / portTICK_RATE_MS);
+       // Translate CR (Enter) from montitor into \n for microrl
+       bool found = false;
+       for (int i = 0; i < len; ++i)
+         {
+          if (found && data[i] == '\n')
+            {
+            for (int j = i+1; j < len; ++j)
+              data[j-1] = data[j];
+            --len;
+            continue;
+            }
+          found = false;
+         if (data[i] == '\r')
+            {
+           data[i] = '\n';
+            found = true;
+            }
+         }
         ProcessChars((char*)data, len);
         }
       break;
@@ -171,7 +189,7 @@ void ConsoleAsync::HandleDeviceEvent(void* pEvent)
       uart_flush(EX_UART_NUM);
       break;
     default:
-      ESP_LOGI(TAG, "uart event type: %d\n", event.type);
+      ESP_LOGE(TAG, "uart event type: %d", event.type);
       break;
     }
   }

That should only affect the ASYNC console, I think. It converts CR/LF/CRLF -> LF. Maybe the enum KEY_ACTION in openemacs (vfsedit component) needs to change?

Fix is probably to add a NL=10 to KEY_ACTION and then to treat NL or ENTER as the same in the editor_process_keypress. My build environment is all switched to v3 at the moment, so hard for me to test (as IDF v3 does things differently). I’ve made the fix in the for-master branch, and it seems to work for me.

$ git diff --staged
--- a/vehicle/OVMS.V3/components/vfsedit/src/openemacs.c
+++ b/vehicle/OVMS.V3/components/vfsedit/src/openemacs.c
@@ -71,7 +71,7 @@ struct append_buffer
 enum KEY_ACTION
   {
   CTRL_A = 1, CTRL_B = 2, CTRL_C = 3, CTRL_D = 4, CTRL_E = 5, CTRL_F = 6, BACKSPACE = 8, TAB = 9,
-  CTRL_K = 11, CTRL_L = 12, ENTER = 13, CTRL_N = 14, CTRL_P = 16, CTRL_Q = 17, CTRL_R = 18,
+  NL = 10, CTRL_K = 11, CTRL_L = 12, ENTER = 13, CTRL_N = 14, CTRL_P = 16, CTRL_Q = 17, CTRL_R = 18,
   CTRL_S = 19, CTRL_U = 21, CTRL_V = 22, CTRL_X = 24, CTRL_Y = 25, CTRL_Z = 26, ESC = 27,
   FORWARD_DELETE =  127,
   // The following are just soft codes, not really reported by the
@@ -1297,7 +1297,7 @@ bool editor_process_keypress(struct editor_state* E, int k)
     // Quoted insert - insert character as-is
     editor_insert_char(E,key);
     }
-  else if (key == ENTER)
+  else if (key == ENTER || key == NL)
     {
     editor_insert_newline(E);
     }

I just made the fix also in the master branch, but haven’t tested.

Regards, Mark.

> On 12 Jan 2018, at 1:36 PM, Greg D. <gregd2350 at gmail.com> wrote:
> 
> Is anyone else having trouble with the vfs editor?  I can't seem to
> enter a newline anymore.  The status line at the bottom complains of an
> unknown command 10 (presumably control-J).  If I try an explicit
> control-M, it says the same.
> 
> Did I fat-finger something in my config (I removed SSH, Telnet, and
> several other items to save RAM recently), or did something else
> change?  This is with two different terminals - make monitor on the
> development laptop, and putty on my in-car Raspberry Pi.
> 
> Greg
> 
> _______________________________________________
> OvmsDev mailing list
> OvmsDev at lists.teslaclub.hk
> http://lists.teslaclub.hk/mailman/listinfo/ovmsdev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20180112/23c4943d/attachment.htm>


More information about the OvmsDev mailing list