فهرست منبع

VIO initial documentation added; more work on the header file for easy documentation.

Christopher Seidl 5 سال پیش
والد
کامیت
8e3cb18cfc

+ 2 - 0
CMSIS/DoxyGen/Driver/Driver.dxy

@@ -784,6 +784,8 @@ INPUT                  = . \
                          src/Driver_USBH.c \
                          ../../Driver/Include/Driver_USB.h \
                          src/Driver_USB.c \
+                         ../../Driver/VIO/Include/cmsis_vio.h \
+                         src/VIO.txt \
                          ../../Driver/Include/Driver_WiFi.h \
                          src/Driver_WiFi.c \
                          src/General.txt

+ 1 - 0
CMSIS/DoxyGen/Driver/src/General.txt

@@ -34,6 +34,7 @@ The following CMSIS-Driver API groups are defined:
   - \ref storage_interface_gr "Storage": Storage device interface driver.
   - \ref usart_interface_gr "USART": Universal Synchronous and Asynchronous Receiver/Transmitter interface driver.
   - \ref usb_interface_gr "USB": Interface driver for USB Host and USB Device communication.
+  - \ref vio_interface_gr "VIO": API for virtual I/Os (VIO).
   - \ref wifi_interface_gr "WiFi": Interface driver for wireless communication.
 
 <hr>

+ 467 - 0
CMSIS/DoxyGen/Driver/src/VIO.txt

@@ -0,0 +1,467 @@
+/**
+\defgroup vio_interface_gr VIO
+\brief API for Virtual I/O (VIO) (%cmsis_vio.h)
+\details 
+
+The VIO software component is a virtual I/O abstraction for peripherals that are typically used in example projects.
+
+<b>VIO API</b>
+
+The following header file defines the Application Programming Interface (API) for VIO:
+  - \b %cmsis_vio.h : API for VIO
+
+<b>VIO User Code Templates</b>
+
+The VIO software component contains two user code templates wit different purposes:
+  - VIO:Custom: This file is an empty stub with all functions that are defined in the header file that can be used to
+    implement the VIO layer for the hardware that is used in the application.
+  - VIO:Virtual:  This file uses a fixed memory location to emulate the VIO functionality and can be used off-the-shelf.
+
+Both templates come with an SCVD file that is used to display the VIO signals in Component Viewer:
+
+\image html vioComponentViewer.png
+
+@{
+*/
+
+/**
+\defgroup cvDefines_gr  Defines and Structs
+\ingroup vio_interface_gr
+\brief Documents the defines and structs of the VIO API.
+\details
+@{
+    Test.
+*/
+
+/**
+\defgroup cvSignals_gr  Signals
+\ingroup cvDefines_gr
+\brief Signal related defines.
+\details
+@{
+\def cvLED0
+\def cvLED1
+\def cvLED2
+\def cvLED3
+\def cvLED4
+\def cvLED5
+\def cvLED6
+\def cvLED7
+\def cvLEDon
+\def cvLEDoff
+\def cvBUTTON0  
+\def cvBUTTON1  
+\def cvBUTTON2  
+\def cvBUTTON3  
+\def cvJOYup    
+\def cvJOYdown  
+\def cvJOYleft  
+\def cvJOYright 
+\def cvJOYselect
+\def cvJOYall   
+@}
+*/
+
+/**
+\defgroup cvValues_gr  Values
+\ingroup cvDefines_gr
+\brief Value related defines.
+\details
+@{
+\def cvAIN0 
+\def cvAIN1 
+\def cvAIN2 
+\def cvAIN3 
+\def cvAOUT0
+/** 
+\struct     cvValueXYZ_t
+\details
+Structure holding three-dimensional values for gyroscopes, accelerometers, etc.
+
+<b>Parameter for:</b>
+  - \ref cvGetXYZ
+  - \ref cvSetXYZ
+***************************************************************************************************************************/
+@}
+*/
+
+/**
+\defgroup cvIDs_gr  IDs
+\ingroup cvDefines_gr
+\brief ID related defines.
+\details
+@{
+\def cvAIN0 
+\def cvAIN1 
+\def cvAIN2 
+\def cvAIN3 
+\def cvAOUT0
+\def cvMotionGyro    
+\def cvMotionAccelero
+\def cvMotionMagneto 
+@}
+*/
+
+/**
+\defgroup cvPrintLevels_gr  Print Levels
+\ingroup cvDefines_gr
+\brief Print level related defines.
+\details
+@{
+\def cvLevelNone   
+\def cvLevelHeading
+\def cvLevelMessage
+\def cvLevelError
+@}
+*/
+
+/**
+\defgroup cvIPAddr_gr  IP Addresses
+\ingroup cvDefines_gr
+\brief IP address related structs.
+\details
+@{
+\struct     cvAddrIPv4_t
+\details
+Structure holding IPv4 addresses.
+
+<b>Parameter for:</b>
+  - \ref cvGetIPv4
+  - \ref cvSetIPv4
+
+\struct     cvAddrIPv6_t
+\details
+Structure holding IPv6 addresses.
+
+<b>Parameter for:</b>
+  - \ref cvGetIPv6
+  - \ref cvSetIPv6
+@}
+*/
+
+/**
+@}
+*/
+// end group cvDefines_gr
+
+
+
+void cvInit (void) {};
+/**
+\fn void cvInit (void)
+\details
+The function \b cvInit initializes the VIO interface. Use it to initialize any connected hardware that is used to
+map VIO signals. 
+
+\b Code \b Example:
+\code
+void cvInit (void) {
+
+  BSP_LED_Init(LED_BLUE);
+  BSP_LED_Init(LED_RED);
+  BSP_LED_Init(LED_GREEN);
+  BSP_PB_Init(BUTTON_USER, BUTTON_MODE_GPIO);
+}
+\endcode
+***************************************************************************************************************************/
+
+int32_t cvPrint (uint32_t level, const char *format, ...) {
+  return (0);
+};
+/**
+\fn int32_t cvPrint (uint32_t level, const char *format, ...)
+\details
+The function \b cvPrint prints a formatted string to a test terminal. Formatting of the output follows the rulse od standard
+C language printf().
+
+Refer to \ref cvPrintLevels_gr for information about the possible \a levels.
+
+\b Code \b Example:
+\code
+int32_t cvPrint (uint32_t level, const char *format, ...) {
+  va_list args;
+  int32_t ret = -1;
+ 
+  if (level > cvLevelError) {
+    return (-1);
+  }
+ 
+  if (level > CV_PRINTMEM_NUM) {
+    return (-1);
+  }
+ 
+  va_start(args, format);
+ 
+  ret = vsnprintf((char *)cvPrintMem[level], sizeof(cvPrintMem[level]), format, args);
+ 
+  switch (level) {
+    case cvLevelNone:
+      GUI_SetFont(&Font12);
+      GUI_SetTextColor(GUI_COLOR_WHITE);
+      displayString (level, (char *)cvPrintMem[level]);
+      break;
+    case cvLevelHeading:
+      GUI_SetFont(&Font16);
+      GUI_SetTextColor(GUI_COLOR_GREEN);
+      displayString (level, (char *)cvPrintMem[level]);
+      break;
+    case cvLevelMessage:
+      GUI_SetFont(&Font12);
+      GUI_SetTextColor(GUI_COLOR_BLUE);
+      displayString (level, (char *)cvPrintMem[level]);
+      break;
+    case cvLevelError:
+      GUI_SetFont(&Font12);
+      GUI_SetTextColor(GUI_COLOR_RED);
+      displayString (level, (char *)cvPrintMem[level]);
+      break;
+  }
+      GUI_SetFont(&Font12);
+      GUI_SetTextColor(GUI_COLOR_DARKBLUE);
+ 
+  va_end(args);
+ 
+  return (ret);
+}
+\endcode
+***************************************************************************************************************************/
+
+int32_t cvGetChar (void) {
+  return (0);
+};
+/**
+\fn int32_t cvGetChar (void)
+\details
+The function \b cvGetChar retrieves a charater from the test terminal. Use this function to get data for further processing
+in your application.
+
+\b Code \b Example:
+\code
+// todo
+\endcode
+***************************************************************************************************************************/
+
+void cvSetSignal (uint32_t mask, uint32_t signal) {};
+/**
+\fn void cvSetSignal (uint32_t mask, uint32_t signal)
+\details
+The function \b cvSetSignal set a \a signal to an output specified by \a mask. Use this function to map VIOs to actual
+hardware for displaying signals on a target board.
+
+Refer to \ref cvSignals_gr for information about the possible \a mask and \a signal values.
+
+\b Code \b Example:
+\code
+void cvSetSignal (uint32_t mask, uint32_t signal) {
+  cvSignalOut &= ~mask;
+  cvSignalOut |=  mask & signal;
+ 
+  if (mask & cvLED0) {
+    if (signal & cvLED0) {
+      BSP_LED_On(LED_RED);
+    } else {
+      BSP_LED_Off(LED_RED);
+    }
+  }
+ 
+  if (mask & cvLED1) {
+    if (signal & cvLED1) {
+      BSP_LED_On(LED_GREEN);
+    } else {
+      BSP_LED_Off(LED_GREEN);
+    }
+  }
+ 
+  if (mask & cvLED2) {
+    if (signal & cvLED2) {
+      BSP_LED_On(LED_BLUE);
+    } else {
+      BSP_LED_Off(LED_BLUE);
+    }
+  }
+  return;
+}
+\endcode
+***************************************************************************************************************************/
+
+uint32_t cvGetSignal (uint32_t mask) {
+  return (0);
+};
+/**
+\fn uint32_t cvGetSignal (uint32_t mask)
+\details
+The function \b cvGetSignal retrieves a signal from an input identified by \a mask. Use this function to read data from any
+input that is provided.
+
+Refer to \ref cvSignals_gr for information about the possible \a mask values.
+
+\b Code \b Example:
+\code
+// todo
+\endcode
+***************************************************************************************************************************/
+
+void cvSetValue (uint32_t id, int32_t value) {};
+/**
+\fn void cvSetValue (uint32_t id, int32_t value)
+\details
+The function \b cvSetValue set the \a value to the output identified by \a id. Use this function to set states of I/Os for
+example.
+
+Refer to \ref cvValues_gr for information about \a value and \ref cvIDs_gr for \a id.
+
+\b Code \b Example:
+\code
+// todo
+\endcode
+***************************************************************************************************************************/
+
+int32_t cvGetValue (uint32_t id) {
+  return (0);
+};
+/**
+\fn int32_t cvGetValue (uint32_t id)
+\details
+The function \b cvGetValue retrieves a value from the input identified by \a id. Use this function to read data from inputs.
+
+Refer to \ref cvIDs_gr for information about \a id.
+
+\b Code \b Example:
+\code
+// todo
+\endcode
+***************************************************************************************************************************/
+
+void cvSetXYZ (uint32_t id, cvValueXYZ_t valueXYZ) {
+  return (0);
+};
+/**
+\fn void cvSetXYZ (uint32_t id, cvValueXYZ_t valueXYZ)
+\details
+The function \b cvSetXYZ sets a three-dimensional value \a valueXYZ to the output identified by \a id. Use this function to
+apply a 3d value to an output.
+
+Refer to \ref cvValues_gr for information about the \a valueXYZ and \ref cvIDs_gr for \a id.
+
+\b Code \b Example:
+\code
+// todo
+\endcode
+***************************************************************************************************************************/
+
+cvValueXYZ_t cvGetXYZ (uint32_t id) {
+  return (0);
+};
+/**
+\fn cvValueXYZ_t cvGetXYZ (uint32_t id)
+\details
+The function \b cvGetXYZ retrieves a three-dimensional value from the input identified by \a id. Use this function to get a
+3d value.
+
+Refer to \ref cvIDs_gr for information about \a id.
+
+\b Code \b Example:
+\code
+cvValueXYZ_t cvGetXYZ (uint32_t id) {
+  uint32_t index;
+  cvValueXYZ_t valueXYZ = {0, 0, 0};
+  BSP_MOTION_SENSOR_Axes_t axes;
+ 
+  index = id;
+  if (index >= CV_VALUE_NUM) {
+    return valueXYZ;                   /* return default in case of out-of-range index */
+  }
+ 
+  if (index == 0U) {
+    if (BSP_MOTION_SENSOR_GetAxes(0, MOTION_ACCELERO, &axes) == BSP_ERROR_NONE)
+    {
+      cvValueXYZ[index].X = axes.x;
+      cvValueXYZ[index].Y = axes.y;
+      cvValueXYZ[index].Z = axes.z;
+    }
+  }
+ 
+  if (index == 1U) {
+    if (BSP_MOTION_SENSOR_GetAxes(0, MOTION_GYRO, &axes) == BSP_ERROR_NONE)
+    {
+      cvValueXYZ[index].X = axes.x;
+      cvValueXYZ[index].Y = axes.y;
+      cvValueXYZ[index].Z = axes.z;
+    }
+  }
+ 
+  valueXYZ = cvValueXYZ[index];
+ 
+  return valueXYZ;
+}
+\endcode
+***************************************************************************************************************************/
+
+void cvSetIPv4 (uint32_t id, cvAddrIPv4_t addrIPv4) {};
+/**
+\fn void cvSetIPv4 (uint32_t id, cvAddrIPv4_t addrIPv4)
+\details
+The function \b cvSetIPv4 sets an IPv4 address specified by \a addrIPv4 to an interface identified by \a id. Use this
+function to assign an IPv4 address to an interface.
+
+Refer to \ref cvIDs_gr for information about \a id and \ref cvIPAddr_gr for \a addrIPv4.
+
+\b Code \b Example:
+\code
+// todo
+\endcode
+***************************************************************************************************************************/
+
+cvAddrIPv4_t cvGetIPv4 (uint32_t id) {
+  return (0);
+};
+/**
+\fn cvAddrIPv4_t cvGetIPv4 (uint32_t id)
+\details
+The function \b cvGetIPv4 retrieves the IPv4 addrIPv4 from an interface identified by \a id. Use this function to read an
+IPv4 address.
+
+Refer to \ref cvIDs_gr for information about \a id.
+
+\b Code \b Example:
+\code
+// todo
+\endcode
+***************************************************************************************************************************/
+
+void cvSetIPv6 (uint32_t id, cvAddrIPv6_t addrIPv6) {};
+/**
+\fn void cvSetIPv6 (uint32_t id, cvAddrIPv6_t addrIPv6)
+\details
+The function \b cvSetIPv6 sets an IPv6 address specified by \a addrIPv6 to an interface identified by \a id. Use this
+function to assign an IPv6 address to an interface.
+
+Refer to \ref cvIDs_gr for information about \a id and \ref cvIPAddr_gr for \a addrIPv6.
+
+\b Code \b Example:
+\code
+// todo
+\endcode
+***************************************************************************************************************************/
+
+cvAddrIPv6_t cvGetIPv6 (uint32_t id) {
+  return (0);
+};
+/**
+\fn cvAddrIPv6_t cvGetIPv6 (uint32_t id)
+\details
+The function \b cvGetIPv6 retrieves the IPv6 addrIPv6 from an interface identified by \a id. Use this function to read an
+IPv6 address.
+
+Refer to \ref cvIDs_gr for information about \a id.
+
+\b Code \b Example:
+\code
+// todo
+\endcode
+***************************************************************************************************************************/
+
+/**
+@}
+*/
+// End VIO Interface

BIN
CMSIS/DoxyGen/Driver/src/images/vioComponentViewer.png


+ 65 - 63
CMSIS/Driver/VIO/Include/cmsis_vio.h

@@ -1,8 +1,8 @@
-/******************************************************************************
+/**************************************************************************//**
  * @file     cmsis_vio.h
  * @brief    CMSIS Virtual I/O header file
- * @version  V0.1.0
- * @date     18. March 2020
+ * @version  V1.4.0
+ * @date     11. March 2020
  ******************************************************************************/
 /*
  * Copyright (c) 2019-2020 Arm Limited. All rights reserved.
@@ -31,72 +31,74 @@
  * Generic I/O mapping recommended for CMSIS-VIO
  * Note: not every I/O must be physically available
  */
-
-/// cvSetSignal: mask values 
-#define cvLED0             (1U << 0)    /// cvSetSignal mask LED 0 (for 3-color: red)
-#define cvLED1             (1U << 1)    /// cvSetSignal mask LED 1 (for 3-color: green)
-#define cvLED2             (1U << 2)    /// cvSetSignal mask LED 2 (for 3-color: blue)
-#define cvLED3             (1U << 3)    /// cvSetSignal mask LED 3
-#define cvLED4             (1U << 4)    /// cvSetSignal mask LED 4
-#define cvLED5             (1U << 5)    /// cvSetSignal mask LED 5
-#define cvLED6             (1U << 6)    /// cvSetSignal mask LED 6
-#define cvLED7             (1U << 7)    /// cvSetSignal mask LED 7
-
-/// cvSetSignal: signal values
-#define cvLEDon            (0xFFU)      /// pattern to turn any LED on
-#define cvLEDoff           (0x00U)      /// pattern to turn any LED off
-
-
-/// cvGetSignal: mask values and return values
-#define cvBUTTON0          (1U << 0)    ///< cvGetSignal mask Push button 0
-#define cvBUTTON1          (1U << 1)    ///< cvGetSignal mask Push button 1
-#define cvBUTTON2          (1U << 2)    ///< cvGetSignal mask Push button 2
-#define cvBUTTON3          (1U << 3)    ///< cvGetSignal mask Push button 3
-#define cvJOYup            (1U << 4)    ///< cvGetSignal mask Joystick button: up
-#define cvJOYdown          (1U << 5)    ///< cvGetSignal mask Joystick button: down
-#define cvJOYleft          (1U << 6)    ///< cvGetSignal mask Joystick button: left
-#define cvJOYright         (1U << 7)    ///< cvGetSignal mask Joystick button: right
-#define cvJOYselect        (1U << 8)    ///< cvGetSignal mask Joystick button: select
+ 
+// cvSetSignal: mask values 
+#define cvLED0             (1U << 0)   ///< \ref cvSetSignal \a mask parameter: LED 0 (for 3-color: red)
+#define cvLED1             (1U << 1)   ///< \ref cvSetSignal \a mask parameter: LED 1 (for 3-color: green)
+#define cvLED2             (1U << 2)   ///< \ref cvSetSignal \a mask parameter: LED 2 (for 3-color: blue)
+#define cvLED3             (1U << 3)   ///< \ref cvSetSignal \a mask parameter: LED 3
+#define cvLED4             (1U << 4)   ///< \ref cvSetSignal \a mask parameter: LED 4
+#define cvLED5             (1U << 5)   ///< \ref cvSetSignal \a mask parameter: LED 5
+#define cvLED6             (1U << 6)   ///< \ref cvSetSignal \a mask parameter: LED 6
+#define cvLED7             (1U << 7)   ///< \ref cvSetSignal \a mask parameter: LED 7
+
+// cvSetSignal: signal values
+#define cvLEDon            (0xFF)      ///< \ref cvSetSignal \a signal parameter: pattern to turn any LED on
+#define cvLEDoff           (0x00)      ///< \ref cvSetSignal \a signal parameter: pattern to turn any LED off
+
+
+// cvGetSignal: mask values and return values
+#define cvBUTTON0          (1U << 0)   ///< \ref cvGetSignal \a mask parameter: Push button 0
+#define cvBUTTON1          (1U << 1)   ///< \ref cvGetSignal \a mask parameter: Push button 1
+#define cvBUTTON2          (1U << 2)   ///< \ref cvGetSignal \a mask parameter: Push button 2
+#define cvBUTTON3          (1U << 3)   ///< \ref cvGetSignal \a mask parameter: Push button 3
+#define cvJOYup            (1U << 4)   ///< \ref cvGetSignal \a mask parameter: Joystick button: up
+#define cvJOYdown          (1U << 5)   ///< \ref cvGetSignal \a mask parameter: Joystick button: down
+#define cvJOYleft          (1U << 6)   ///< \ref cvGetSignal \a mask parameter: Joystick button: left
+#define cvJOYright         (1U << 7)   ///< \ref cvGetSignal \a mask parameter: Joystick button: right
+#define cvJOYselect        (1U << 8)   ///< \ref cvGetSignal \a mask parameter: Joystick button: select
 #define cvJOYall           (cvJOYup     | \
                             cvJOYdown   | \
                             cvJOYleft   | \
                             cvJOYright  | \
-                            cvJOYselect | )
+                            cvJOYselect | ) ///< \ref cvGetSignal \a mask Joystick button: all
+
+
+// cvSetValue / cvGetValue: id values
+#define cvAIN0             (0U)        ///< \ref cvSetValue / \ref cvGetValue \a id parameter: Analog input value 0
+#define cvAIN1             (1U)        ///< \ref cvSetValue / \ref cvGetValue \a id parameter: Analog input value 1
+#define cvAIN2             (2U)        ///< \ref cvSetValue / \ref cvGetValue \a id parameter: Analog input value 2
+#define cvAIN3             (3U)        ///< \ref cvSetValue / \ref cvGetValue \a id parameter: Analog input value 3
+#define cvAOUT0            (3U)        ///< \ref cvSetValue / \ref cvGetValue \a id parameter: Analog output value 0
 
-/// cvSetValue / cvGetValue: id values
-#define cvAIN0             (0U)         ///< cvSetvalue / cvGetValue Analog input value 0
-#define cvAIN1             (1U)         ///< cvSetvalue / cvGetValue Analog input value 1
-#define cvAIN2             (2U)         ///< cvSetvalue / cvGetValue Analog input value 2
-#define cvAIN3             (3U)         ///< cvSetvalue / cvGetValue Analog input value 3
-#define cvAOUT0            (3U)         ///< cvSetvalue / cvGetValue Analog output value 0
 
+// cvSetXYZ / cvGetXZY: id values
+#define cvMotionGyro       (0U)        ///< \ref cvSetXYZ / \ref cvGetXYZ \a id parameter: for Gyroscope
+#define cvMotionAccelero   (1U)        ///< \ref cvSetXYZ / \ref cvGetXYZ \a id parameter: for Accelerometer
+#define cvMotionMagneto    (2U)        ///< \ref cvSetXYZ / \ref cvGetXYZ \a id parameter: for Magnetometer
 
-/// cvSetXYZ / cvGetXZY: id values
-#define cvMotionGyro       (0U)         ///< cvSetXYZ / cvGetXYZ Gyroscope
-#define cvMotionAccelero   (1U)         ///< cvSetXYZ / cvGetXYZ Accelerometer
-#define cvMotionMagneto    (2U)         ///< cvSetXYZ / cvGetXYZ Magnetometer
 
-/// cvPrint: levels
-#define cvLevelNone        (0U)         ///< cvPrint Level None
-#define cvLevelHeading     (1U)         ///< cvPrint Level Heading
-#define cvLevelMessage     (2U)         ///< cvPrint Level Message
-#define cvLevelError       (3U)         ///< cvPrint Level Error
+// cvPrint: levels
+#define cvLevelNone        (0U)        ///< \ref cvPrint \a level parameter: None
+#define cvLevelHeading     (1U)        ///< \ref cvPrint \a level parameter: Heading
+#define cvLevelMessage     (2U)        ///< \ref cvPrint \a level parameter: Message
+#define cvLevelError       (3U)        ///< \ref cvPrint \a level parameter: Error
 
 /// 3-D vector value
 typedef struct cvValueXYZ {
-  int32_t   X;                          ///< X coordinate
-  int32_t   Y;                          ///< Y coordinate
-  int32_t   Z;                          ///< Z coordinate
+  int32_t   X;                         ///< X coordinate
+  int32_t   Y;                         ///< X coordinate
+  int32_t   Z;                         ///< X coordinate
 } cvValueXYZ_t;
 
 /// IPv4 Internet Address
-typedef struct {
-  uint8_t   addr[4];                    ///< IPv4 address value
+typedef struct cvAddrIPv4 {
+  uint8_t   addr[4];                   ///< IPv4 address value used in \ref cvSetIPv4 / \ref cvGetIPv4 
 } cvAddrIPv4_t;
 
 /// IPv6 Internet Address
-typedef struct {
-  uint8_t   addr[16];                   ///< IPv6 address value
+typedef struct cvAddrIPv6 {
+  uint8_t   addr[16];                  ///< IPv6 address value used in \ref cvSetIPv6 / \ref cvGetIPv6
 } cvAddrIPv6_t;
 
 #ifdef  __cplusplus
@@ -105,7 +107,7 @@ extern "C"
 #endif
 
 /// Initialize test input, output.
-/// \return none.
+/// \return none
 void cvInit (void);
 
 /// Print formated string to test terminal.
@@ -121,19 +123,19 @@ int32_t cvGetChar (void);
 
 /// Set signal output.
 /// \param[in]     mask         bit mask of signals to set.
-/// \param[in]     signal       signal value to set.
-/// \return none.
+/// \param[in]     signal       signal value to set (LEDs bit 0..15,  Switches bit 16..31).
+/// \return none
 void cvSetSignal (uint32_t mask, uint32_t signal);
 
 /// Get signal input.
 /// \param[in]     mask         bit mask of signals to read.
-/// \return signal value.
+/// \return signal value or highest bit set in case of error.
 uint32_t cvGetSignal (uint32_t mask);
 
 /// Set value output.
 /// \param[in]     id           output identifier.
 /// \param[in]     value        value to set.
-/// \return none.
+/// \return none
 void cvSetValue (uint32_t id, int32_t value);
 
 /// Get value input.
@@ -144,34 +146,34 @@ int32_t cvGetValue (uint32_t id);
 /// Set XYZ value output.
 /// \param[in]     id           output identifier.
 /// \param[in]     valueXYZ     XYZ data to set.
-/// \return none.
+/// \return none
 void cvSetXYZ (uint32_t id, cvValueXYZ_t valueXYZ);
 
 /// Get XYZ value input.
 /// \param[in]     id           input identifier.
-/// \return  XYZ data retrieved from input.
+/// \return  XYZ data retrieved from XYZ peripheral.
 cvValueXYZ_t cvGetXYZ (uint32_t id);
 
 /// Set IPv4 address output.
 /// \param[in]     id           output identifier.
 /// \param[in]     addrIPv4     pointer to IPv4 address.
-/// \return none.
+/// \return none
 void cvSetIPv4 (uint32_t id, cvAddrIPv4_t addrIPv4);
 
 /// Get IPv4 address input.
 /// \param[in]     id           input identifier.
-/// \return IPv4 address retrieved from peripheral.
+/// \return IPv4 address retrieved from peripheral
 cvAddrIPv4_t cvGetIPv4 (uint32_t id);
 
 /// Set IPv6 address output.
 /// \param[in]     id           output identifier.
 /// \param[in]     addrIPv6     pointer to IPv6 address.
-/// \return none.
+/// \return none
 void cvSetIPv6 (uint32_t id, cvAddrIPv6_t addrIPv6);
 
 /// Get IPv6 address from peripheral.
 /// \param[in]     id           input identifier.
-/// \return IPv6 address retrieved from peripheral.
+/// \return IPv6 address retrieved from peripheral
 cvAddrIPv6_t cvGetIPv6 (uint32_t id);
 
 #ifdef  __cplusplus