git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2114 35acf78f-673a-0410-8e92-d51de3d6d3f4

This commit is contained in:
gdisirio 2010-08-05 10:30:37 +00:00
parent 31981145cf
commit 04e29829b6
6 changed files with 183 additions and 9 deletions

View File

@ -78,6 +78,32 @@ typedef void (*pwmcallback_t)(void);
/* Driver macros. */ /* Driver macros. */
/*===========================================================================*/ /*===========================================================================*/
/**
* @brief Enables a PWM channel.
* @details Programs (or reprograms) a PWM channel.
* @note This function has to be invoked from a lock zone.
*
* @param[in] pwmp pointer to a @p PWMDriver object
* @param[in] channel PWM channel identifier
* @param[in] width PWM pulse width as clock pulses number
*/
#define pwmEnableChannelI(pwmp, channel, width) { \
pwm_lld_enable_channel(pwmp, channel, width); \
}
/**
* @brief Disables a PWM channel.
* @details The channel is disabled and its output line returned to the
* idle state.
* @note This function has to be invoked from a lock zone.
*
* @param[in] pwmp pointer to a @p PWMDriver object
* @param[in] channel PWM channel identifier
*/
#define pwmDisableChannelI(pwmp, channel) { \
pwm_lld_disable_channel(pwmp, channel); \
}
/*===========================================================================*/ /*===========================================================================*/
/* External declarations. */ /* External declarations. */
/*===========================================================================*/ /*===========================================================================*/

View File

@ -112,11 +112,10 @@ void adcStop(ADCDriver *adcp) {
* @brief Starts an ADC conversion. * @brief Starts an ADC conversion.
* @details Starts a conversion operation, there are two kind of conversion * @details Starts a conversion operation, there are two kind of conversion
* modes: * modes:
* - <b>LINEAR</b>, this mode is activated when the @p callback * - <b>LINEAR</b>, in this mode the buffer is filled once and then
* parameter is set to @p NULL, in this mode the buffer is filled * the conversion stops automatically.
* once and then the conversion stops automatically. * - <b>CIRCULAR</b>, in this mode the conversion never stops and
* - <b>CIRCULAR</b>, when a callback function is defined the * the buffer is filled circularly.<br>
* conversion never stops and the buffer is filled circularly.
* During the conversion the callback function is invoked when * During the conversion the callback function is invoked when
* the buffer is 50% filled and when the buffer is 100% filled, * the buffer is 50% filled and when the buffer is 100% filled,
* this way is possible to process the conversion stream in real * this way is possible to process the conversion stream in real
@ -133,7 +132,8 @@ void adcStop(ADCDriver *adcp) {
* @param[out] samples pointer to the samples buffer * @param[out] samples pointer to the samples buffer
* @param[in] depth buffer depth (matrix rows number). The buffer depth * @param[in] depth buffer depth (matrix rows number). The buffer depth
* must be one or an even number. * must be one or an even number.
* @param[in] callback pointer to the conversion callback function * @param[in] callback pointer to the conversion callback function, this
* parameter can be @p NULL if a callback is not required
* @return The operation status. * @return The operation status.
* @retval FALSE the conversion has been started. * @retval FALSE the conversion has been started.
* @retval TRUE the driver is busy, conversion not started. * @retval TRUE the driver is busy, conversion not started.

View File

@ -20,6 +20,7 @@
/** /**
* @file pwm.c * @file pwm.c
* @brief PWM Driver code. * @brief PWM Driver code.
*
* @addtogroup PWM * @addtogroup PWM
* @{ * @{
*/ */
@ -104,6 +105,7 @@ void pwmStop(PWMDriver *pwmp) {
/** /**
* @brief Enables a PWM channel. * @brief Enables a PWM channel.
* @details Programs (or reprograms) a PWM channel.
* *
* @param[in] pwmp pointer to a @p PWMDriver object * @param[in] pwmp pointer to a @p PWMDriver object
* @param[in] channel PWM channel identifier * @param[in] channel PWM channel identifier

133
os/kernel/include/chfiles.h Normal file
View File

@ -0,0 +1,133 @@
/*
ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 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/>.
*/
/**
* @file chfiles.h
* @brief Data files.
* @details This header defines abstract interfaces useful to access generic
* data files in a standardized way.
*
* @addtogroup data_files
* @details This module define an abstract interface for generic data files.
* Note that no code is present, data files are just abstract
* interface-like structures, you should look at the systems as to
* a set of abstract C++ classes (even if written in C). This system
* has the advantage to make the access to streams independent
* from the implementation logic.<br>
* The data files interface can be used as base class for high level
* object types such as an API for a File System implementation.
* @{
*/
#ifndef _CHFILES_H_
#define _CHFILES_H_
/**
* @brief Error code from the file stream methods.
*/
#define FILE_ERROR 0xFFFFFFFFUL
/**
* @brief File offset type.
*/
typedef uint32_t fileoffset_t;
/**
* @brief BaseFileStream specific methods.
*/
#define _base_file_stream_methods \
_base_sequential_stream_methods \
/* File close method.*/ \
uint32_t (*close)(void *instance); \
/* Get last error code method.*/ \
int (*geterror)(void *instance); \
/* File get size method.*/ \
fileoffset_t (*getsize)(void *instance); \
/* File get current position method.*/ \
fileoffset_t (*getposition)(void *instance); \
/* File seek method.*/ \
fileoffset_t (*lseek)(void *instance, fileoffset_t offset);
/**
* @brief @p BaseFileStream specific data.
* @note It is empty because @p BaseFileStream is only an interface
* without implementation.
*/
#define _base_file_stream_data \
_base_sequential_stream_data
/**
* @brief @p BaseFileStream virtual methods table.
*/
struct BaseFilelStreamVMT {
_base_file_stream_methods
};
/**
* @extends BaseSequentialStream
*
* @brief Base file stream class.
* @details This class represents a generic file data stream.
*/
typedef struct {
/** @brief Virtual Methods Table.*/
const struct FileStreamVMT *vmt;
_base_file_stream_data
} BaseFileStream;
/**
* @brief Base file Stream close.
* @details The function closes a file stream.
*
* @param[in] ip pointer to a @p BaseFileStream or derived class
*/
#define chFileStreamClose(ip) ((ip)->vmt->close(ip))
/**
* @brief Returns an implementation dependent error code.
*
* @param[in] ip pointer to a @p BaseFileStream or derived class
*/
#define chFileStreamGetError ((ip)->vmt->geterror(ip))
/**
* @brief Returns the current file size.
*
* @param[in] ip pointer to a @p BaseFileStream or derived class
*/
#define chFileStreamGetSize ((ip)->vmt->getposition(ip))
/**
* @brief Returns the current file pointer position.
*
* @param[in] ip pointer to a @p BaseFileStream or derived class
*/
#define chFileStreamGetPosition ((ip)->vmt->getposition(ip))
/**
* @brief Moves the file current pointer to an absolute position.
*
* @param[in] ip pointer to a @p BaseFileStream or derived class
* @param[in] offset new absolute position
*/
#define chFileStreamSeek ((ip)->vmt->lseek(ip, offset))
#endif /* _CHFILES_H_ */
/** @} */

View File

@ -55,13 +55,23 @@
+--test/ - Kernel test suite source code. +--test/ - Kernel test suite source code.
| +--coverage/ - Code coverage project. | +--coverage/ - Code coverage project.
+--testhal/ - HAL integration test demos. +--testhal/ - HAL integration test demos.
+--STM32/ - STM32 HAL demos.
***************************************************************************** *****************************************************************************
*** Releases *** *** Releases ***
***************************************************************************** *****************************************************************************
*** 2.1.2 *** *** 2.1.2 ***
- FIX: Fixed a documentation error regarding the ADC driver function
adcStartConversion() (bug 3039890)(backported to 2.0.3).
- NEW: Added a simple STM32 ADC demo under ./testhal/STM32/ADC. - NEW: Added a simple STM32 ADC demo under ./testhal/STM32/ADC.
- NEW: Added pwmEnableChannelI() and pwmDisableChannelI() APIs to the PWM
driver in order to allow channel reprogramming from within callbacks or
other interrupt handlers. The new APIs are implemented as macros so there
is no footprint overhead.
- NEW: Added a generic BaseFileStream interface for future File System
implementations or integrations (untested and not sure if it will stay or
change).
*** 2.1.1 *** *** 2.1.1 ***
- FIX: Fixed insufficient stack size for idle thread (bug 3033624)(backported - FIX: Fixed insufficient stack size for idle thread (bug 3033624)(backported

View File

@ -14,11 +14,12 @@ Within 2.1.x (hopefully)
verifiable. verifiable.
X Resist doing more changes and optimizations in the kernel, fixes only. X Resist doing more changes and optimizations in the kernel, fixes only.
X Rework STM32 drivers to use friendly IRQ names and centralized DMA macros. X Rework STM32 drivers to use friendly IRQ names and centralized DMA macros.
- Merge the Coldfire branch in mainline. X File System infrastructure.
- Merge the H8S branch in mainline. X General HAL improvements.
- File System infrastructure.
- Add a *very simple* ADC API for simgle one shot sampling (implement it as - Add a *very simple* ADC API for simgle one shot sampling (implement it as
an injected conversion on the STM32). an injected conversion on the STM32).
- Evaluate if reimplement the SPI/CAN drivers to be callback-based like the
ADC, PWM and UART drivers, the current API could be rebuilt on top.
- MAC driver for STM32F105/STM32F107 (hardware missing). - MAC driver for STM32F105/STM32F107 (hardware missing).
- Device drivers for STM8 (SPI, ADC, PWM, bring it on par with STM32). - Device drivers for STM8 (SPI, ADC, PWM, bring it on par with STM32).
- Support for more compilers (ARMCMx only initially). - Support for more compilers (ARMCMx only initially).
@ -26,6 +27,8 @@ X Rework STM32 drivers to use friendly IRQ names and centralized DMA macros.
- Batch testing of the ARM7/ARMCMx port using OpenOCD, with reports. - Batch testing of the ARM7/ARMCMx port using OpenOCD, with reports.
Later but within 2.x.x Later but within 2.x.x
- Merge the Coldfire branch in mainline.
- Merge the H8S branch in mainline.
- Debug-related features and tools. - Debug-related features and tools.
- I2C device driver class support. - I2C device driver class support.
- USB device driver class support. - USB device driver class support.