From e884447d149504e51346930fb0e49fce9196245f Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Fri, 24 Sep 2021 09:57:55 +0000 Subject: [PATCH] Serial driver updated, fixed SIO template. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@14825 27425a3e-05d8-49a3-a47f-9c15f0e5edd8 --- os/hal/include/hal_serial.h | 2 +- os/hal/src/hal_serial.c | 13 ++++++++++++- os/hal/templates/hal_sio_lld.c | 2 +- os/hal/templates/hal_sio_lld.h | 4 ++-- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/os/hal/include/hal_serial.h b/os/hal/include/hal_serial.h index cbfbb35f1..bf916077d 100644 --- a/os/hal/include/hal_serial.h +++ b/os/hal/include/hal_serial.h @@ -294,7 +294,7 @@ extern "C" { #else void sdObjectInit(SerialDriver *sdp); #endif - void sdStart(SerialDriver *sdp, const SerialConfig *config); + msg_t sdStart(SerialDriver *sdp, const SerialConfig *config); void sdStop(SerialDriver *sdp); void sdIncomingDataI(SerialDriver *sdp, uint8_t b); msg_t sdRequestDataI(SerialDriver *sdp); diff --git a/os/hal/src/hal_serial.c b/os/hal/src/hal_serial.c index f4a7472dd..2522cc125 100644 --- a/os/hal/src/hal_serial.c +++ b/os/hal/src/hal_serial.c @@ -179,19 +179,30 @@ void sdObjectInit(SerialDriver *sdp) { * @param[in] config the architecture-dependent serial driver configuration. * If this parameter is set to @p NULL then a default * configuration is used. + * @return The operation status. * * @api */ -void sdStart(SerialDriver *sdp, const SerialConfig *config) { +msg_t sdStart(SerialDriver *sdp, const SerialConfig *config) { + msg_t msg; osalDbgCheck(sdp != NULL); osalSysLock(); osalDbgAssert((sdp->state == SD_STOP) || (sdp->state == SD_READY), "invalid state"); + +#if defined(SD_LLD_ENHANCED_API) + msg = sd_lld_start(sdp, config); +#else sd_lld_start(sdp, config); + msg = HAL_START_SUCCESS; +#endif + sdp->state = SD_READY; osalSysUnlock(); + + return msg; } /** diff --git a/os/hal/templates/hal_sio_lld.c b/os/hal/templates/hal_sio_lld.c index d9cddeaf3..f7e9fc792 100644 --- a/os/hal/templates/hal_sio_lld.c +++ b/os/hal/templates/hal_sio_lld.c @@ -90,7 +90,7 @@ msg_t sio_lld_start(SIODriver *siop) { } /* Configures the peripheral.*/ - return false; + return HAL_START_SUCCESS; } /** diff --git a/os/hal/templates/hal_sio_lld.h b/os/hal/templates/hal_sio_lld.h index a1a4393a4..c84634cd2 100644 --- a/os/hal/templates/hal_sio_lld.h +++ b/os/hal/templates/hal_sio_lld.h @@ -126,9 +126,9 @@ extern SIODriver SIOD1; extern "C" { #endif void sio_lld_init(void); -bool sio_lld_start(SIODriver *siop); +msg_t sio_lld_start(SIODriver *siop); void sio_lld_stop(SIODriver *siop); -msg_t sio_lld_start_operation(SIODriver *siop); +void sio_lld_start_operation(SIODriver *siop); void sio_lld_stop_operation(SIODriver *siop); sio_events_mask_t sio_lld_get_and_clear_events(SIODriver *siop); size_t sio_lld_read(SIODriver *siop, uint8_t *buffer, size_t n);