diff options
-rw-r--r-- | os/hal/include/hal.h | 3 | ||||
-rw-r--r-- | os/hal/include/io_block.h | 4 | ||||
-rw-r--r-- | os/hal/include/io_channel.h | 70 | ||||
-rw-r--r-- | readme.txt | 4 |
4 files changed, 42 insertions, 39 deletions
diff --git a/os/hal/include/hal.h b/os/hal/include/hal.h index 170c2bc03..4e5bf0b24 100644 --- a/os/hal/include/hal.h +++ b/os/hal/include/hal.h @@ -34,6 +34,9 @@ #include "hal_lld.h"
+#include "io_channel.h"
+#include "io_block.h"
+
#include "tm.h"
#include "pal.h"
#include "adc.h"
diff --git a/os/hal/include/io_block.h b/os/hal/include/io_block.h index 20c2e991c..ebfa608b3 100644 --- a/os/hal/include/io_block.h +++ b/os/hal/include/io_block.h @@ -51,9 +51,9 @@ typedef struct { */
#define _base_block_device_methods \
/* Removable media detection.*/ \
- bool_t is_inserted(void *instance); \
+ bool_t (*is_inserted)(void *instance); \
/* Removable write protection detection.*/ \
- bool_t is_protected(void *instance); \
+ bool_t (*is_protected)(void *instance); \
/* Connection to the block device.*/ \
bool_t (*connect)(void *instance); \
/* Disconnection from the block device.*/ \
diff --git a/os/hal/include/io_channel.h b/os/hal/include/io_channel.h index f6be5dad3..c6da6b89b 100644 --- a/os/hal/include/io_channel.h +++ b/os/hal/include/io_channel.h @@ -19,12 +19,12 @@ */
/**
- * @file io_serial.h
- * @brief I/O serial devices access.
+ * @file io_channel.h
+ * @brief I/O channels access.
* @details This header defines abstract interfaces useful to access generic
* I/O serial devices in a standardized way.
*
- * @addtogroup IO_SERIAL
+ * @addtogroup IO_CHANNEL
* @details This module defines an abstract interface for I/O channels by
* extending the @p BaseSequentialStream interface. Note that no code
* is present, I/O channels are just abstract interface like
@@ -36,8 +36,8 @@ * @{
*/
-#ifndef _IO_SERIAL_H_
-#define _IO_SERIAL_H_
+#ifndef _IO_CHANNEL_H_
+#define _IO_CHANNEL_H_
/**
* @brief @p BaseChannel specific methods.
@@ -71,7 +71,7 @@ *
* @brief @p BaseChannel virtual methods table.
*/
-struct BaseChannelVMT {
+struct tmp_BaseChannelVMT {
_base_channel_methods
};
@@ -86,7 +86,7 @@ typedef struct { /** @brief Virtual Methods Table.*/
const struct BaseChannelVMT *vmt;
_base_channel_data
-} BaseChannel;
+} tmp_BaseChannel;
/**
* @name Macro Functions (BaseChannel)
@@ -106,7 +106,7 @@ typedef struct { *
* @api
*/
-#define srlPutWouldBlock(ip) ((ip)->vmt->putwouldblock(ip))
+#define chnPutWouldBlock(ip) ((ip)->vmt->putwouldblock(ip))
/**
* @brief Channel input check.
@@ -122,7 +122,7 @@ typedef struct { *
* @api
*/
-#define srlGetWouldBlock(ip) ((ip)->vmt->getwouldblock(ip))
+#define chnGetWouldBlock(ip) ((ip)->vmt->getwouldblock(ip))
/**
* @brief Channel blocking byte write.
@@ -137,7 +137,7 @@ typedef struct { *
* @api
*/
-#define srlPut(ip, b) ((ip)->vmt->put(ip, b, TIME_INFINITE))
+#define chnPut(ip, b) ((ip)->vmt->put(ip, b, TIME_INFINITE))
/**
* @brief Channel blocking byte write with timeout.
@@ -158,7 +158,7 @@ typedef struct { *
* @api
*/
-#define srlPutTimeout(ip, b, time) ((ip)->vmt->put(ip, b, time))
+#define chnPutTimeout(ip, b, time) ((ip)->vmt->put(ip, b, time))
/**
* @brief Channel blocking byte read.
@@ -172,7 +172,7 @@ typedef struct { *
* @api
*/
-#define srlGet(ip) ((ip)->vmt->get(ip, TIME_INFINITE))
+#define chnGet(ip) ((ip)->vmt->get(ip, TIME_INFINITE))
/**
* @brief Channel blocking byte read with timeout.
@@ -192,7 +192,7 @@ typedef struct { *
* @api
*/
-#define srlGetTimeout(ip, time) ((ip)->vmt->get(ip, time))
+#define chnGetTimeout(ip, time) ((ip)->vmt->get(ip, time))
/**
* @brief Channel blocking write with timeout.
@@ -211,7 +211,7 @@ typedef struct { *
* @api
*/
-#define srlWriteTimeout(ip, bp, n, time) ((ip)->vmt->writet(ip, bp, n, time))
+#define chnWriteTimeout(ip, bp, n, time) ((ip)->vmt->writet(ip, bp, n, time))
/**
* @brief Channel blocking read with timeout.
@@ -230,7 +230,7 @@ typedef struct { *
* @api
*/
-#define srlReadTimeout(ip, bp, n, time) ((ip)->vmt->readt(ip, bp, n, time))
+#define chnReadTimeout(ip, bp, n, time) ((ip)->vmt->readt(ip, bp, n, time))
/** @} */
#if CH_USE_EVENTS || defined(__DOXYGEN__)
@@ -239,48 +239,48 @@ typedef struct { * @{
*/
/** @brief No pending conditions.*/
-#define IO_NO_ERROR 0
+#define CHN_NO_ERROR 0
/** @brief Connection happened.*/
-#define IO_CONNECTED 1
+#define ICHN_CONNECTED 1
/** @brief Disconnection happened.*/
-#define IO_DISCONNECTED 2
+#define CHN_DISCONNECTED 2
/** @brief Data available in the input queue.*/
-#define IO_INPUT_AVAILABLE 4
+#define CHN_INPUT_AVAILABLE 4
/** @brief Output queue empty.*/
-#define IO_OUTPUT_EMPTY 8
+#define CHN_OUTPUT_EMPTY 8
/** @brief Transmission end.*/
-#define IO_TRANSMISSION_END 16
+#define CHN_TRANSMISSION_END 16
/** @} */
/**
* @brief Type of an I/O condition flags mask.
*/
-typedef uint_fast16_t ioflags_t;
+typedef uint_fast16_t chnflags_t;
/**
* @brief @p BaseAsynchronousChannel specific methods.
*/
-#define _base_asynchronous_channel_methods \
+#define tmp__base_asynchronous_channel_methods \
_base_channel_methods \
/* Channel read method with timeout specification.*/ \
- ioflags_t (*getflags)(void *instance);
+ chnflags_t (*getflags)(void *instance);
/**
* @brief @p BaseAsynchronousChannel specific data.
*/
-#define _base_asynchronous_channel_data \
+#define tmp__base_asynchronous_channel_data \
_base_channel_data \
/* I/O condition event source.*/ \
EventSource event; \
/* I/O condition flags.*/ \
- ioflags_t flags;
+ chnflags_t flags;
/**
* @extends BaseChannelVMT
*
* @brief @p BaseAsynchronousChannel virtual methods table.
*/
-struct BaseAsynchronousChannelVMT {
+struct tmp_BaseAsynchronousChannelVMT {
_base_asynchronous_channel_methods
};
@@ -295,7 +295,7 @@ typedef struct { /** @brief Virtual Methods Table.*/
const struct BaseAsynchronousChannelVMT *vmt;
_base_asynchronous_channel_data
-} BaseAsynchronousChannel;
+} tmp_BaseAsynchronousChannel;
/**
* @name Macro Functions (BaseAsynchronousChannel)
@@ -311,7 +311,7 @@ typedef struct { *
* @api
*/
-#define srlGetEventSource(ip) (&((ip)->event))
+#define chnGetEventSource(ip) (&((ip)->event))
/**
* @brief Adds status flags to the channel's mask.
@@ -325,7 +325,7 @@ typedef struct { *
* @iclass
*/
-#define srlAddFlagsI(ip, mask) { \
+#define chnAddFlagsI(ip, mask) { \
(ip)->flags |= (mask); \
chEvtBroadcastI(&(ip)->event); \
}
@@ -340,7 +340,7 @@ typedef struct { *
* @api
*/
-#define srlGetAndClearFlags(ip) ((ip)->vmt->getflags(ip))
+#define chnGetAndClearFlags(ip) ((ip)->vmt->getflags(ip))
/** @} */
/**
@@ -353,16 +353,16 @@ typedef struct { *
* @notapi
*/
-#define _ser_get_and_clear_flags_impl(ip) \
- ioflags_t mask; \
+#define _chn_get_and_clear_flags_impl(ip) \
+ chnflags_t mask; \
chSysLock(); \
mask = ((BaseAsynchronousChannel *)(ip))->flags; \
- ((BaseAsynchronousChannel *)(ip))->flags = IO_NO_ERROR; \
+ ((BaseAsynchronousChannel *)(ip))->flags = CHN_NO_ERROR; \
chSysUnlock(); \
return mask
#endif /* CH_USE_EVENTS */
-#endif /* _IO_SERIAL_H_ */
+#endif /* _IO_CHANNEL_H_ */
/** @} */
diff --git a/readme.txt b/readme.txt index 2db2814da..ecbc41d4e 100644 --- a/readme.txt +++ b/readme.txt @@ -124,8 +124,8 @@ - FIX: Fixed various minor documentation errors (bug 3484942)(backported
to 2.4.1).
- NEW: Added an abstract interface for serial devices in the HAL. This
- interface is meant to replace the equivalent class present in the
- kernel. access macros are similar except for the prefix, "ser" instead
+ interface is meant to replace the equivalent class already present in the
+ kernel. access macros are similar except for the prefix, "chn" instead
of "chIO".
- NEW: Added an abstract interface for block devices in the HAL. This
abstraction layer is meant to unify the access protocol to the SDC and
|