Add basic termios to the rpi platform to allow echoing/newline translation to be controlled.
--HG-- branch : dtrg-videocore rename : plat/rpi/include/unistd.h => plat/rpi/include/termios.h rename : plat/rpi/libsys/write.c => plat/rpi/libsys/tcgetattr.c rename : plat/rpi/libsys/write.c => plat/rpi/libsys/tcsetattr.c
This commit is contained in:
@@ -13,6 +13,6 @@ extern unsigned char _sys_rawread(void);
|
||||
|
||||
extern void _sys_write_tty(char c);
|
||||
|
||||
/* extern int _sys_ttyflags; */
|
||||
extern int _sys_ttyflags;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <termios.h>
|
||||
#include "libsys.h"
|
||||
|
||||
int read(int fd, void* buffer, size_t count)
|
||||
@@ -30,16 +31,11 @@ int read(int fd, void* buffer, size_t count)
|
||||
/* Read one byte. */
|
||||
|
||||
i = _sys_rawread();
|
||||
#if 0
|
||||
if ((i == '\r') && !(_sys_ttyflags & RAW))
|
||||
if ((i == '\r') && !(_sys_ttyflags & INLCR))
|
||||
i = '\n';
|
||||
if (_sys_ttyflags & ECHO)
|
||||
_sys_write_tty(i);
|
||||
#endif
|
||||
if (i == '\r')
|
||||
i = '\n';
|
||||
_sys_write_tty(i);
|
||||
|
||||
|
||||
*(char*)buffer = i;
|
||||
return 1;
|
||||
}
|
||||
|
||||
21
plat/rpi/libsys/tcgetattr.c
Normal file
21
plat/rpi/libsys/tcgetattr.c
Normal file
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Raspberry Pi support library for the ACK
|
||||
* © 2013 David Given
|
||||
* This file is redistributable under the terms of the 3-clause BSD license.
|
||||
* See the file 'Copying' in the root of the distribution for the full text.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <termios.h>
|
||||
#include "libsys.h"
|
||||
|
||||
int tcgetattr(int fd, struct termios* t)
|
||||
{
|
||||
t->c_iflag = _sys_ttyflags & INLCR;
|
||||
t->c_oflag = _sys_ttyflags & ONLCR;
|
||||
t->c_lflag = _sys_ttyflags & ECHO;
|
||||
return 0;
|
||||
}
|
||||
|
||||
19
plat/rpi/libsys/tcsetattr.c
Normal file
19
plat/rpi/libsys/tcsetattr.c
Normal file
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Raspberry Pi support library for the ACK
|
||||
* © 2013 David Given
|
||||
* This file is redistributable under the terms of the 3-clause BSD license.
|
||||
* See the file 'Copying' in the root of the distribution for the full text.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <termios.h>
|
||||
#include "libsys.h"
|
||||
|
||||
int tcsetattr(int fd, int actions, struct termios* t)
|
||||
{
|
||||
_sys_ttyflags = t->c_iflag | t->c_oflag | t->c_lflag;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -8,16 +8,15 @@
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <termios.h>
|
||||
#include "libsys.h"
|
||||
|
||||
int _sys_ttyflags = ONLCR | INLCR | ECHO;
|
||||
|
||||
void _sys_write_tty(char c)
|
||||
{
|
||||
_sys_rawwrite(c);
|
||||
#if 0
|
||||
if ((c == '\n') && !(_sys_ttyflags & RAW))
|
||||
_sys_rawwrite('\r');
|
||||
#endif
|
||||
if (c == '\n')
|
||||
if ((c == '\n') && (_sys_ttyflags & ONLCR))
|
||||
_sys_rawwrite('\r');
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user