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:
David Given
2013-05-30 23:19:55 +01:00
parent 074b42aa97
commit 2054618e75
7 changed files with 83 additions and 14 deletions

View File

@@ -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

View File

@@ -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;
}

View 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;
}

View 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;
}

View File

@@ -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');
}