Hi Neil,

digging through old unread emails

Answering inline.


On 7/6/18 4:58 PM, Neil Jones wrote:
Hi all,

I'm working on improving IRQ support on PIC32 and I'm testing UART Rx using
the shell.

The shell uses putchar, but putchar is buffered and needs a flush, thus
when typing at the console I get no feedback until I press enter (the line
feed gets echo'd and then we get the flush).

I'm surprised other newlib implementations don't see this ?


I think most developers have their local program doing the 'echo' for them and only sending lines by lines anyway. So I personally do not really pay attention to this. I did not even knew we were doing 'echo' by default…



A flush is probably needed here:

#if !defined(SHELL_NO_ECHO) || !defined(SHELL_NO_PROMPT)
#ifdef MODULE_NEWLIB
/* use local copy of putchar, as it seems to be inlined,
  * enlarging code by 50% */
static void _putchar(int c) {
     putchar(c);
     fflush(STDOUT)   <------- HERE

}
#else
#define _putchar putchar
#endif
#endif



I agree it could make sense to add it when in `echo` mode only.

    putchar(c)
#ifndef SHELL_NO_ECHO
    fflush(stdout);
#endif


As for the shell prompt it is already handled here https://github.com/RIOT-OS/RIOT/blob/master/sys/shell/shell.c#L273-L280


I'm happy to do a PR for this, but this is very core functionality, I don't
want to break anything ??

But maybe other developers have more knowledge about this.

Cheers,
Gaëtan



Cheers,

Neil


_______________________________________________
devel mailing list
devel@riot-os.org
https://lists.riot-os.org/mailman/listinfo/devel

_______________________________________________
devel mailing list
devel@riot-os.org
https://lists.riot-os.org/mailman/listinfo/devel

Reply via email to