forked from Imagelibrary/rtems
2011-12-14 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libcsupport/include/rtems/termiostypes.h, libcsupport/src/termios_baud2num.c, libcsupport/src/termios_baudtable.c, libcsupport/src/termios_num2baud.c, libcsupport/src/termios_setinitialbaud.c: Added const qualifier to baud associations. Fixed integer types.
This commit is contained in:
@@ -1,3 +1,12 @@
|
|||||||
|
2011-12-14 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
|
* libcsupport/include/rtems/termiostypes.h,
|
||||||
|
libcsupport/src/termios_baud2num.c,
|
||||||
|
libcsupport/src/termios_baudtable.c,
|
||||||
|
libcsupport/src/termios_num2baud.c,
|
||||||
|
libcsupport/src/termios_setinitialbaud.c: Added const qualifier to
|
||||||
|
baud associations. Fixed integer types.
|
||||||
|
|
||||||
2011-12-13 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
2011-12-13 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
* sapi/include/confdefs.h: Fixed workspace size estimate of tasks.
|
* sapi/include/confdefs.h: Fixed workspace size estimate of tasks.
|
||||||
|
|||||||
@@ -20,7 +20,9 @@
|
|||||||
|
|
||||||
#include <rtems.h>
|
#include <rtems.h>
|
||||||
#include <rtems/libio.h>
|
#include <rtems/libio.h>
|
||||||
|
#include <rtems/assoc.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <termios.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@@ -181,26 +183,42 @@ extern int rtems_termios_nlinesw;
|
|||||||
#define MAXLDISC 8
|
#define MAXLDISC 8
|
||||||
|
|
||||||
/* baudrate xxx integer type */
|
/* baudrate xxx integer type */
|
||||||
typedef int32_t rtems_termios_baud_t;
|
typedef uint32_t rtems_termios_baud_t;
|
||||||
|
|
||||||
/* convert xxx integer to equivalent Bxxx constant */
|
extern const rtems_assoc_t rtems_termios_baud_table [];
|
||||||
int rtems_termios_number_to_baud(rtems_termios_baud_t baud);
|
|
||||||
|
|
||||||
/* convert Bxxx constant to xxx integer */
|
/**
|
||||||
rtems_termios_baud_t rtems_termios_baud_to_number(int termios_baud);
|
* @brief Converts the integral baud value @a baud to the Termios control flag
|
||||||
|
* representation.
|
||||||
|
*
|
||||||
|
* @retval B0 Invalid baud value or a baud value of 0.
|
||||||
|
* @retval other Baud constant according to @a baud.
|
||||||
|
*/
|
||||||
|
tcflag_t rtems_termios_number_to_baud(rtems_termios_baud_t baud);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Converts the baud part of the Termios control flags @a c_cflag to an
|
||||||
|
* integral baud value.
|
||||||
|
*
|
||||||
|
* There is no need to mask the @a c_cflag with @c CBAUD.
|
||||||
|
*
|
||||||
|
* @retval 0 Invalid baud value or a baud value of @c B0.
|
||||||
|
* @retval other Integral baud value.
|
||||||
|
*/
|
||||||
|
rtems_termios_baud_t rtems_termios_baud_to_number(tcflag_t c_cflag);
|
||||||
|
|
||||||
/* convert Bxxx constant to index */
|
/* convert Bxxx constant to index */
|
||||||
int rtems_termios_baud_to_index(rtems_termios_baud_t termios_baud);
|
int rtems_termios_baud_to_index(rtems_termios_baud_t termios_baud);
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* This method is used by a driver to tell termios its
|
* @brief Sets the initial @a baud in the Termios context @a tty.
|
||||||
* initial baud rate. This is especially important when
|
*
|
||||||
* the device driver does not set the baud to the default
|
* @retval 0 Successful operation.
|
||||||
* of B9600.
|
* @retval -1 Invalid baud value.
|
||||||
*/
|
*/
|
||||||
int rtems_termios_set_initial_baud(
|
int rtems_termios_set_initial_baud(
|
||||||
struct rtems_termios_tty *ttyp,
|
struct rtems_termios_tty *tty,
|
||||||
rtems_termios_baud_t baud
|
rtems_termios_baud_t baud
|
||||||
);
|
);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -10,24 +10,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <sys/termios.h>
|
|
||||||
#include <rtems/termiostypes.h>
|
#include <rtems/termiostypes.h>
|
||||||
#include <rtems/assoc.h>
|
|
||||||
|
|
||||||
extern rtems_assoc_t termios_assoc_table[];
|
rtems_termios_baud_t rtems_termios_baud_to_number(tcflag_t c_cflag)
|
||||||
|
|
||||||
int32_t rtems_termios_baud_to_number(
|
|
||||||
int termios_baud
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
int baud;
|
uint32_t remote_value = (uint32_t) (c_cflag & CBAUD);
|
||||||
|
|
||||||
baud = rtems_assoc_local_by_remote( termios_assoc_table, termios_baud );
|
return rtems_assoc_local_by_remote(rtems_termios_baud_table, remote_value);
|
||||||
if ( baud == 0 && termios_baud != 0 )
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
return baud;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,14 +10,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <sys/termios.h>
|
|
||||||
#include <rtems/termiostypes.h>
|
#include <rtems/termiostypes.h>
|
||||||
#include <rtems/assoc.h>
|
|
||||||
|
|
||||||
rtems_assoc_t termios_assoc_table[] = {
|
const rtems_assoc_t rtems_termios_baud_table [] = {
|
||||||
{ "B0", 0, B0 },
|
{ "B0", 0, B0 },
|
||||||
{ "B50", 50, B50 },
|
{ "B50", 50, B50 },
|
||||||
{ "B75", 75, B75 },
|
{ "B75", 75, B75 },
|
||||||
|
|||||||
@@ -10,23 +10,21 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <sys/termios.h>
|
|
||||||
#include <rtems/termiostypes.h>
|
#include <rtems/termiostypes.h>
|
||||||
#include <rtems/assoc.h>
|
|
||||||
|
|
||||||
extern rtems_assoc_t termios_assoc_table[];
|
tcflag_t rtems_termios_number_to_baud(rtems_termios_baud_t baud)
|
||||||
|
|
||||||
int rtems_termios_number_to_baud(
|
|
||||||
int32_t baud
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
int termios_baud;
|
uint32_t remote_value = rtems_assoc_remote_by_local(
|
||||||
|
rtems_termios_baud_table,
|
||||||
|
baud
|
||||||
|
);
|
||||||
|
|
||||||
termios_baud = rtems_assoc_remote_by_local( termios_assoc_table, baud );
|
if (remote_value == 0) {
|
||||||
if ( termios_baud == 0 && baud != 0 )
|
remote_value = B0;
|
||||||
return -1;
|
}
|
||||||
return termios_baud;
|
|
||||||
|
return (tcflag_t) remote_value;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,24 +10,26 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <sys/termios.h>
|
|
||||||
#include <rtems/termiostypes.h>
|
#include <rtems/termiostypes.h>
|
||||||
|
|
||||||
int rtems_termios_set_initial_baud(
|
int rtems_termios_set_initial_baud(
|
||||||
struct rtems_termios_tty *ttyp,
|
struct rtems_termios_tty *tty,
|
||||||
int32_t baud
|
rtems_termios_baud_t baud
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
int cflags_baud;
|
int rv = 0;
|
||||||
|
tcflag_t c_cflag_baud = rtems_termios_number_to_baud(baud);
|
||||||
|
|
||||||
cflags_baud = rtems_termios_number_to_baud(baud);
|
if ( c_cflag_baud == 0 ) {
|
||||||
if ( cflags_baud == -1 )
|
tcflag_t cbaud = CBAUD;
|
||||||
return -1;
|
|
||||||
|
|
||||||
ttyp->termios.c_cflag = (ttyp->termios.c_cflag & ~CBAUD) | cflags_baud;
|
tty->termios.c_cflag = (tty->termios.c_cflag & ~cbaud) | c_cflag_baud;
|
||||||
|
} else {
|
||||||
|
rv = -1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user