projects
/
bertos.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Exclude file with Qt-style documentation.
[bertos.git]
/
drv
/
ser.c
diff --git
a/drv/ser.c
b/drv/ser.c
index 02e3e2d1519006252875ed28fb9891f7a64e77a3..d73a29348e8b8093979d0d82d017179f3aac2111 100755
(executable)
--- a/
drv/ser.c
+++ b/
drv/ser.c
@@
-1,7
+1,7
@@
-/*
!
+/*
*
* \file
* <!--
* \file
* <!--
- * Copyright 2003, 2004 Develer S.r.l. (http://www.develer.com/)
+ * Copyright 2003, 2004
, 2006
Develer S.r.l. (http://www.develer.com/)
* Copyright 2000 Bernardo Innocenti <bernie@codewiz.org>
* This file is part of DevLib - See README.devlib for information.
* -->
* Copyright 2000 Bernardo Innocenti <bernie@codewiz.org>
* This file is part of DevLib - See README.devlib for information.
* -->
@@
-28,6
+28,12
@@
/*#*
*#* $Log$
/*#*
*#* $Log$
+ *#* Revision 1.31 2006/07/21 10:58:00 batt
+ *#* Use timer_clock() instead of obsolete timer_ticks().
+ *#*
+ *#* Revision 1.30 2006/07/19 12:56:26 bernie
+ *#* Convert to new Doxygen style.
+ *#*
*#* Revision 1.29 2006/05/18 00:39:30 bernie
*#* ser_open(): Document a bit more.
*#*
*#* Revision 1.29 2006/05/18 00:39:30 bernie
*#* ser_open(): Document a bit more.
*#*
@@
-118,7
+124,6
@@
#include "ser_p.h"
#include <mware/formatwr.h>
#include <cfg/debug.h>
#include "ser_p.h"
#include <mware/formatwr.h>
#include <cfg/debug.h>
-//#include <hw.h>
#include <appconfig.h>
/*
#include <appconfig.h>
/*
@@
-153,15
+158,15
@@
/* Serial configuration parameters */
/* Serial configuration parameters */
-#define SER_CTSDELAY 70 /*
!
< CTS line retry interval (ms) */
-#define SER_TXPOLLDELAY 2 /*
!
< Transmit buffer full retry interval (ms) */
-#define SER_RXPOLLDELAY 2 /*
!
< Receive buffer empty retry interval (ms) */
+#define SER_CTSDELAY 70 /*
*
< CTS line retry interval (ms) */
+#define SER_TXPOLLDELAY 2 /*
*
< Transmit buffer full retry interval (ms) */
+#define SER_RXPOLLDELAY 2 /*
*
< Receive buffer empty retry interval (ms) */
struct Serial ser_handles[SER_CNT];
struct Serial ser_handles[SER_CNT];
-/*
!
+/*
*
* Inserisce il carattere c nel buffer di trasmissione.
* Questa funzione mette il processo chiamante in attesa
* quando il buffer e' pieno.
* Inserisce il carattere c nel buffer di trasmissione.
* Questa funzione mette il processo chiamante in attesa
* quando il buffer e' pieno.
@@
-175,7
+180,7
@@
int ser_putchar(int c, struct Serial *port)
if (fifo_isfull_locked(&port->txfifo))
{
#if CONFIG_SER_TXTIMEOUT != -1
if (fifo_isfull_locked(&port->txfifo))
{
#if CONFIG_SER_TXTIMEOUT != -1
-
mtime_t start_time = timer_ticks
();
+
ticks_t start_time = timer_clock
();
#endif
/* Attende finche' il buffer e' pieno... */
#endif
/* Attende finche' il buffer e' pieno... */
@@
-186,7
+191,7
@@
int ser_putchar(int c, struct Serial *port)
proc_switch();
#endif
#if CONFIG_SER_TXTIMEOUT != -1
proc_switch();
#endif
#if CONFIG_SER_TXTIMEOUT != -1
- if (timer_
ticks
() - start_time >= port->txtimeout)
+ if (timer_
clock
() - start_time >= port->txtimeout)
{
port->status |= SERRF_TXTIMEOUT;
return EOF;
{
port->status |= SERRF_TXTIMEOUT;
return EOF;
@@
-206,7
+211,7
@@
int ser_putchar(int c, struct Serial *port)
}
}
-/*
!
+/*
*
* Preleva un carattere dal buffer di ricezione.
* Questa funzione mette il processo chiamante in attesa
* quando il buffer e' vuoto. L'attesa ha un timeout
* Preleva un carattere dal buffer di ricezione.
* Questa funzione mette il processo chiamante in attesa
* quando il buffer e' vuoto. L'attesa ha un timeout
@@
-220,7
+225,7
@@
int ser_getchar(struct Serial *port)
if (fifo_isempty_locked(&port->rxfifo))
{
#if CONFIG_SER_RXTIMEOUT != -1
if (fifo_isempty_locked(&port->rxfifo))
{
#if CONFIG_SER_RXTIMEOUT != -1
-
mtime_t start_time = timer_ticks
();
+
ticks_t start_time = timer_clock
();
#endif
/* Wait while buffer is empty */
do
#endif
/* Wait while buffer is empty */
do
@@
-230,7
+235,7
@@
int ser_getchar(struct Serial *port)
proc_switch();
#endif
#if CONFIG_SER_RXTIMEOUT != -1
proc_switch();
#endif
#if CONFIG_SER_RXTIMEOUT != -1
- if (timer_
ticks
() - start_time >= port->rxtimeout)
+ if (timer_
clock
() - start_time >= port->rxtimeout)
{
port->status |= SERRF_RXTIMEOUT;
return EOF;
{
port->status |= SERRF_RXTIMEOUT;
return EOF;
@@
-250,7
+255,7
@@
int ser_getchar(struct Serial *port)
}
}
-/*
!
+/*
*
* Preleva un carattere dal buffer di ricezione.
* Se il buffer e' vuoto, ser_getchar_nowait() ritorna
* immediatamente EOF.
* Preleva un carattere dal buffer di ricezione.
* Se il buffer e' vuoto, ser_getchar_nowait() ritorna
* immediatamente EOF.
@@
-266,7
+271,7
@@
int ser_getchar_nowait(struct Serial *port)
#if CONFIG_SER_GETS
#if CONFIG_SER_GETS
-/*
!
+/*
*
* Read a line long at most as size and put it
* in buf.
* \return number of chars read or EOF in case
* Read a line long at most as size and put it
* in buf.
* \return number of chars read or EOF in case
@@
-278,7
+283,7
@@
int ser_gets(struct Serial *port, char *buf, int size)
}
}
-/*
!
+/*
*
* Read a line long at most as size and put it
* in buf, with optional echo.
*
* Read a line long at most as size and put it
* in buf, with optional echo.
*
@@
-316,7
+321,7
@@
int ser_gets_echo(struct Serial *port, char *buf, int size, bool echo)
#endif /* !CONFIG_SER_GETS */
#endif /* !CONFIG_SER_GETS */
-/*
!
+/*
*
* Read at most \a size bytes from \a port and put them in \a buf
*
* \return number of bytes actually read, or EOF in
* Read at most \a size bytes from \a port and put them in \a buf
*
* \return number of bytes actually read, or EOF in
@@
-339,7
+344,7
@@
int ser_read(struct Serial *port, void *buf, size_t size)
}
}
-/*
!
+/*
*
* Write a string to serial.
* \return 0 if OK, EOF in case of error.
*/
* Write a string to serial.
* \return 0 if OK, EOF in case of error.
*/
@@
-354,7
+359,7
@@
int ser_print(struct Serial *port, const char *s)
}
}
-/*
!
+/*
*
* \brief Write a buffer to serial.
*
* \return 0 if OK, EOF in case of error.
* \brief Write a buffer to serial.
*
* \return 0 if OK, EOF in case of error.
@@
-375,7
+380,7
@@
int ser_write(struct Serial *port, const void *_buf, size_t len)
#if CONFIG_PRINTF
#if CONFIG_PRINTF
-/*
!
+/*
*
* Formatted write
*/
int ser_printf(struct Serial *port, const char *format, ...)
* Formatted write
*/
int ser_printf(struct Serial *port, const char *format, ...)
@@
-395,13
+400,13
@@
int ser_printf(struct Serial *port, const char *format, ...)
#if CONFIG_SER_RXTIMEOUT != -1 || CONFIG_SER_TXTIMEOUT != -1
void ser_settimeouts(struct Serial *port, mtime_t rxtimeout, mtime_t txtimeout)
{
#if CONFIG_SER_RXTIMEOUT != -1 || CONFIG_SER_TXTIMEOUT != -1
void ser_settimeouts(struct Serial *port, mtime_t rxtimeout, mtime_t txtimeout)
{
- port->rxtimeout =
rxtimeout
;
- port->txtimeout =
txtimeout
;
+ port->rxtimeout =
ms_to_ticks(rxtimeout)
;
+ port->txtimeout =
ms_to_ticks(txtimeout)
;
}
#endif /* CONFIG_SER_RXTIMEOUT || CONFIG_SER_TXTIMEOUT */
#if CONFIG_SER_RXTIMEOUT != -1
}
#endif /* CONFIG_SER_RXTIMEOUT || CONFIG_SER_TXTIMEOUT */
#if CONFIG_SER_RXTIMEOUT != -1
-/*
!
+/*
*
* Discard input to resynchronize with remote end.
*
* Discard incoming data until the port stops receiving
* Discard input to resynchronize with remote end.
*
* Discard incoming data until the port stops receiving
@@
-411,9
+416,9
@@
void ser_settimeouts(struct Serial *port, mtime_t rxtimeout, mtime_t txtimeout)
*/
void ser_resync(struct Serial *port, mtime_t delay)
{
*/
void ser_resync(struct Serial *port, mtime_t delay)
{
- mtime_t old_rxtimeout =
port->rxtimeout
;
+ mtime_t old_rxtimeout =
ticks_to_ms(port->rxtimeout)
;
- ser_settimeouts(port, delay,
port->txtimeout
);
+ ser_settimeouts(port, delay,
ticks_to_ms(port->txtimeout)
);
do
{
ser_setstatus(port, 0);
do
{
ser_setstatus(port, 0);
@@
-423,7
+428,7
@@
void ser_resync(struct Serial *port, mtime_t delay)
/* Restore port to an usable status */
ser_setstatus(port, 0);
/* Restore port to an usable status */
ser_setstatus(port, 0);
- ser_settimeouts(port, old_rxtimeout,
port->txtimeout
);
+ ser_settimeouts(port, old_rxtimeout,
ticks_to_ms(port->txtimeout)
);
}
#endif /* CONFIG_SER_RXTIMEOUT */
}
#endif /* CONFIG_SER_RXTIMEOUT */
@@
-440,7
+445,7
@@
void ser_setparity(struct Serial *port, int parity)
}
}
-/*
!
+/*
*
* Flush both the RX and TX buffers.
*/
void ser_purge(struct Serial *port)
* Flush both the RX and TX buffers.
*/
void ser_purge(struct Serial *port)
@@
-450,7
+455,7
@@
void ser_purge(struct Serial *port)
}
}
-/*
!
+/*
*
* Wait until all pending output is completely
* transmitted to the other end.
*
* Wait until all pending output is completely
* transmitted to the other end.
*
@@
-461,7
+466,7
@@
void ser_purge(struct Serial *port)
void ser_drain(struct Serial *ser)
{
/*
void ser_drain(struct Serial *ser)
{
/*
- * Wait until the FIFO
i
s empty, and then until the byte currently in
+ * Wait until the FIFO
become
s empty, and then until the byte currently in
* the hardware register gets shifted out.
*/
while (!fifo_isempty(&ser->txfifo)
* the hardware register gets shifted out.
*/
while (!fifo_isempty(&ser->txfifo)
@@
-475,7
+480,7
@@
void ser_drain(struct Serial *ser)
}
}
-/*
!
+/*
*
* Initialize a serial port.
*
* \param unit Serial unit to open. Possible values are architecture dependant.
* Initialize a serial port.
*
* \param unit Serial unit to open. Possible values are architecture dependant.
@@
-517,7
+522,7
@@
struct Serial *ser_open(unsigned int unit)
}
}
-/*
!
+/*
*
* Clean up serial port, disabling the associated hardware.
*/
void ser_close(struct Serial *port)
* Clean up serial port, disabling the associated hardware.
*/
void ser_close(struct Serial *port)