Update preset.
[bertos.git] / bertos / drv / ser.c
index 60b1b749e33712d0a6d0edd3a7d15ba1b9104d76..c9c3b0f7611e13bcb97632eb3c40bdc04ac9bb7f 100644 (file)
@@ -46,7 +46,6 @@
  *  \li \c CONFIG_SER_TXTIMEOUT - Enable software serial transmission timeouts
  *
  *
- * \version $Id$
  * \author Bernie Innocenti <bernie@codewiz.org>
  */
 
@@ -56,7 +55,7 @@
 #include "ser_p.h"
 
 #include "cfg/cfg_ser.h"
-#include "cfg/cfg_kern.h"
+#include "cfg/cfg_proc.h"
 #include <cfg/debug.h>
 
 #include <mware/formatwr.h>
@@ -69,7 +68,7 @@
  * Sanity check for config parameters required by this module.
  */
 #if !defined(CONFIG_KERN) || ((CONFIG_KERN != 0) && CONFIG_KERN != 1)
-       #error CONFIG_KERNEL must be set to either 0 or 1 in cfg_kern.h
+       #error CONFIG_KERN must be set to either 0 or 1 in cfg_kern.h
 #endif
 #if !defined(CONFIG_SER_RXTIMEOUT)
        #error CONFIG_SER_TXTIMEOUT missing in cfg_ser.h
@@ -241,45 +240,33 @@ static size_t ser_write(struct KFile *fd, const void *_buf, size_t size)
 #if CONFIG_SER_RXTIMEOUT != -1 || CONFIG_SER_TXTIMEOUT != -1
 void ser_settimeouts(struct Serial *fd, mtime_t rxtimeout, mtime_t txtimeout)
 {
-       fd->rxtimeout = ms_to_ticks(rxtimeout);
-       fd->txtimeout = ms_to_ticks(txtimeout);
+       #if CONFIG_SER_RXTIMEOUT != -1
+               fd->rxtimeout = ms_to_ticks(rxtimeout);
+       #else
+               (void)rxtimeout;
+       #endif
+
+       #if CONFIG_SER_TXTIMEOUT != -1
+               fd->txtimeout = ms_to_ticks(txtimeout);
+       #else
+               (void)txtimeout;
+       #endif
 }
 #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
- * characters for at least \a delay milliseconds.
- *
- * \note Serial errors are reset before and after executing the purge.
+ * Set the baudrate for the serial port
  */
-void ser_resync(struct Serial *fd, mtime_t delay)
-{
-       mtime_t old_rxtimeout = ticks_to_ms(fd->rxtimeout);
-
-       ser_settimeouts(fd, delay, ticks_to_ms(fd->txtimeout));
-       do
-       {
-               ser_setstatus(fd, 0);
-               ser_getchar(fd);
-       }
-       while (!(ser_getstatus(fd) & SERRF_RXTIMEOUT));
-
-       /* Restore port to an usable status */
-       ser_setstatus(fd, 0);
-       ser_settimeouts(fd, old_rxtimeout, ticks_to_ms(fd->txtimeout));
-}
-#endif /* CONFIG_SER_RXTIMEOUT */
-
-
 void ser_setbaudrate(struct Serial *fd, unsigned long rate)
 {
        fd->hw->table->setBaudrate(fd->hw, rate);
 }
 
 
+/**
+ * Set the parity for the \a fd serial port
+ */
 void ser_setparity(struct Serial *fd, int parity)
 {
        fd->hw->table->setParity(fd->hw, parity);
@@ -428,6 +415,8 @@ static struct KFile *ser_reopen(struct KFile *fd)
 
 /**
  * Init serial driver for \a unit.
+ *
+ * Use values SER_UARTn as values for \a unit.
  */
 void ser_init(struct Serial *fds, unsigned int unit)
 {
@@ -494,6 +483,8 @@ static size_t spimaster_write(struct KFile *fd, const void *buf, size_t size)
 /**
  * Init SPI serial driver \a unit in master mode.
  *
+ * Use SER_SPIn for \a unit parameter.
+ *
  * This interface implements the SPI master protocol over a serial SPI
  * driver. This is needed because normal serial driver send/receive data
  * at the same time. SPI slaves like memories and other peripherals