diff options
Diffstat (limited to 'os/hal/dox')
-rw-r--r-- | os/hal/dox/adc.dox | 16 | ||||
-rw-r--r-- | os/hal/dox/ext.dox | 84 | ||||
-rw-r--r-- | os/hal/dox/rtc.dox | 2 | ||||
-rw-r--r-- | os/hal/dox/usb.dox | 14 |
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()"];
|