aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/dox
diff options
context:
space:
mode:
Diffstat (limited to 'os/hal/dox')
-rw-r--r--os/hal/dox/adc.dox16
-rw-r--r--os/hal/dox/ext.dox84
-rw-r--r--os/hal/dox/rtc.dox2
-rw-r--r--os/hal/dox/usb.dox14
4 files changed, 105 insertions, 11 deletions
diff --git a/os/hal/dox/adc.dox b/os/hal/dox/adc.dox
index bb8ff014f..53bfb75d2 100644
--- a/os/hal/dox/adc.dox
+++ b/os/hal/dox/adc.dox
@@ -34,8 +34,9 @@
* @if LATEX_PDF
* @dot
digraph example {
- size="5, 7";
rankdir="LR";
+ size="5, 7";
+
node [shape=circle, fontname=Helvetica, fontsize=8, fixedsize="true", width="0.9", height="0.9"];
edge [fontname=Helvetica, fontsize=8];
@@ -43,6 +44,7 @@
uninit [label="ADC_UNINIT", style="bold"];
ready [label="ADC_READY\nClock Enabled"];
active [label="ADC_ACTIVE\nConverting"];
+ error [label="ADC_ERROR\nError"];
complete [label="ADC_COMPLETE\nComplete"];
uninit -> stop [label="\n adcInit()", constraint=false];
@@ -53,15 +55,19 @@
ready -> active [label="\nadcStartConversion() (async)\nadcConvert() (sync)"];
active -> ready [label="\nadcStopConversion()\nsync return"];
active -> active [label="\nasync callback (half buffer)\nasync callback (full buffer circular)\n>acg_endcb<"];
- active -> complete [label="\nasync callback (full buffer)\n>acg_endcb<"];
+ active -> complete [label="\n\nasync callback (full buffer)\n>end_cb<"];
+ active -> error [label="\n\nasync callback (error)\n>error_cb<"];
complete -> active [label="\nadcStartConversionI()\nthen\ncallback return"];
complete -> ready [label="\ncallback return"];
+ error -> active [label="\nadcStartConversionI()\nthen\ncallback return"];
+ error -> ready [label="\ncallback return"];
}
* @enddot
* @else
* @dot
digraph example {
rankdir="LR";
+
node [shape=circle, fontname=Helvetica, fontsize=8, fixedsize="true", width="0.9", height="0.9"];
edge [fontname=Helvetica, fontsize=8];
@@ -69,6 +75,7 @@
uninit [label="ADC_UNINIT", style="bold"];
ready [label="ADC_READY\nClock Enabled"];
active [label="ADC_ACTIVE\nConverting"];
+ error [label="ADC_ERROR\nError"];
complete [label="ADC_COMPLETE\nComplete"];
uninit -> stop [label="\n adcInit()", constraint=false];
@@ -79,9 +86,12 @@
ready -> active [label="\nadcStartConversion() (async)\nadcConvert() (sync)"];
active -> ready [label="\nadcStopConversion()\nsync return"];
active -> active [label="\nasync callback (half buffer)\nasync callback (full buffer circular)\n>acg_endcb<"];
- active -> complete [label="\nasync callback (full buffer)\n>acg_endcb<"];
+ active -> complete [label="\n\nasync callback (full buffer)\n>end_cb<"];
+ active -> error [label="\n\nasync callback (error)\n>error_cb<"];
complete -> active [label="\nadcStartConversionI()\nthen\ncallback return"];
complete -> ready [label="\ncallback return"];
+ error -> active [label="\nadcStartConversionI()\nthen\ncallback return"];
+ error -> ready [label="\ncallback return"];
}
* @enddot
* @endif
diff --git a/os/hal/dox/ext.dox b/os/hal/dox/ext.dox
new file mode 100644
index 000000000..5a66830e9
--- /dev/null
+++ b/os/hal/dox/ext.dox
@@ -0,0 +1,84 @@
+/*
+ ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
+ 2011 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * @defgroup EXT EXT Driver
+ * @brief Generic EXT Driver.
+ * @details This module implements a generic EXT (EXTernal) driver.
+ * @pre In order to use the EXT driver the @p HAL_USE_EXT option
+ * must be enabled in @p halconf.h.
+ *
+ * @section ext_1 Driver State Machine
+ * The driver implements a state machine internally, not all the driver
+ * functionalities can be used in any moment, any transition not explicitly
+ * shown in the following diagram has to be considered an error and shall
+ * be captured by an assertion (if enabled).
+ * @if LATEX_PDF
+ * @dot
+ digraph example {
+ size="5, 7";
+ rankdir="LR";
+
+ node [shape=circle, fontname=Sans, fontsize=8, fixedsize="true", width="0.9", height="0.9"];
+ edge [fontname=Sans, fontsize=8];
+
+ uninit [label="EXT_UNINIT", style="bold"];
+ stop [label="EXT_STOP\nLow Power"];
+ active [label="EXT_ACTIVE"];
+
+ uninit -> stop [label="extInit()"];
+ stop -> stop [label="\nextStop()"];
+ stop -> active [label="\nextStart()"];
+ active -> stop [label="\nextStop()"];
+ active -> active [label="\nextStart()"];
+ }
+ * @enddot
+ * @else
+ * @dot
+ digraph example {
+ rankdir="LR";
+
+ node [shape=circle, fontname=Sans, fontsize=8, fixedsize="true", width="0.9", height="0.9"];
+ edge [fontname=Sans, fontsize=8];
+
+ uninit [label="EXT_UNINIT", style="bold"];
+ stop [label="EXT_STOP\nLow Power"];
+ active [label="EXT_ACTIVE"];
+
+ uninit -> stop [label="extInit()"];
+ stop -> stop [label="\nextStop()"];
+ stop -> active [label="\nextStart()"];
+ active -> stop [label="\nextStop()"];
+ active -> active [label="\nextStart()"];
+ }
+ * @enddot
+ * @endif
+ *
+ * @section ext_2 EXT Operations.
+ * This driver abstracts generic external interrupt sources, a callback
+ * is invoked when a programmable transition is detected on one of the
+ * configured channels. Several channel modes are possible.
+ * - <b>EXT_CH_MODE_DISABLED</b>, channel not used.
+ * - <b>EXT_CH_MODE_RISING_EDGE</b>, callback on a rising edge.
+ * - <b>EXT_CH_MODE_FALLING_EDGE</b>, callback on a falling edge.
+ * - <b>EXT_CH_MODE_BOTH_EDGES</b>, callback on a both edges.
+ * .
+ * @ingroup IO
+ */
diff --git a/os/hal/dox/rtc.dox b/os/hal/dox/rtc.dox
index 3572aca18..b538f3a4a 100644
--- a/os/hal/dox/rtc.dox
+++ b/os/hal/dox/rtc.dox
@@ -29,6 +29,6 @@
*
* @pre In order to use the RTC driver the @p HAL_USE_RTC option
* must be enabled in @p halconf.h.
- *
+ *
* @ingroup IO
*/
diff --git a/os/hal/dox/usb.dox b/os/hal/dox/usb.dox
index 62b3aaf12..5778cc1a7 100644
--- a/os/hal/dox/usb.dox
+++ b/os/hal/dox/usb.dox
@@ -132,9 +132,9 @@
receiving [label="EP_BUSY\nReceiving Packet"];
idle [label="EP_IDLE\nPacket in Buffer"];
- disabled -> receiving [label="\usbInitEndpointI()"];
+ disabled -> receiving [label="\nusbInitEndpointI()"];
receiving -> idle [label="\npacket received\n>out_cb<"];
- idle -> receiving [label="\nusbReadPacketI()"];
+ idle -> receiving [label="\nusbReadPacketBuffer()\nusbStartReceiveI()"];
receiving -> disabled [label="\nUSB RESET\nusbDisableEndpointsI()"];
idle -> disabled [label="\nUSB RESET\nusbDisableEndpointsI()"];
}
@@ -152,8 +152,8 @@
transmitting [label="EP_BUSY\nSending Packet"];
idle [label="EP_IDLE\nBuffer Empty"];
- disabled -> idle [label="\usbInitEndpointI()"];
- idle -> transmitting [label="\nusbWritePacketI()"];
+ disabled -> idle [label="\nusbInitEndpointI()"];
+ idle -> transmitting [label="\nusbWritePacketBuffer()\nusbStartTransmitI()"];
transmitting -> idle [label="\npacket sent\n>in_cb<"];
transmitting -> disabled [label="\nUSB RESET\nusbDisableEndpointsI()"];
idle -> disabled [label="\nUSB RESET\nusbDisableEndpointsI()"];
@@ -176,8 +176,8 @@
receiving [label="EP_BUSY\nReceiving"];
idle [label="EP_IDLE\nReady"];
- disabled -> idle [label="\usbInitEndpointI()"];
- idle -> receiving [label="\usbStartReceiveI()"];
+ disabled -> idle [label="\nusbInitEndpointI()"];
+ idle -> receiving [label="\nusbPrepareReceive()\nusbStartReceiveI()"];
receiving -> receiving [label="\nmore packets"];
receiving -> idle [label="\nreception end\n>out_cb<"];
receiving -> disabled [label="\nUSB RESET\nusbDisableEndpointsI()"];
@@ -198,7 +198,7 @@
idle [label="EP_IDLE\nReady"];
disabled -> idle [label="\usbInitEndpointI()"];
- idle -> transmitting [label="\nusbStartTransmitI()"];
+ idle -> transmitting [label="\nusbPrepareTransmit()\nusbStartTransmitI()"];
transmitting -> transmitting [label="\nmore packets"];
transmitting -> idle [label="\ntransmission end\n>in_cb<"];
transmitting -> disabled [label="\nUSB RESET\nusbDisableEndpointsI()"];