/* ChibiOS/HAL - Copyright (C) 2006,2007,2008,2009,2010, 2011,2012,2013,2014 Giovanni Di Sirio. This file is part of ChibiOS/HAL ChibiOS/HAL 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 . */ /** * @file dac.c * @brief DAC Driver code. * * @addtogroup DAC * @{ */ #include "hal.h" #if HAL_USE_DAC || defined(__DOXYGEN__) /*===========================================================================*/ /* Driver local definitions. */ /*===========================================================================*/ /*===========================================================================*/ /* Driver exported variables. */ /*===========================================================================*/ /*===========================================================================*/ /* Driver local variables. */ /*===========================================================================*/ /*===========================================================================*/ /* Driver local functions. */ /*===========================================================================*/ /*===========================================================================*/ /* Driver exported functions. */ /*===========================================================================*/ /** * @brief DAC Driver initialization. * @note This function is implicitly invoked by @p halInit(), there is * no need to explicitly initialize the driver. * * @init */ void dacInit(void) { dac_lld_init(); } /** * @brief Initializes the standard part of a @p DACDriver structure. * * @param[out] dacp pointer to the @p DACDriver object * * @init */ void dacObjectInit(DACDriver *dacp) { dacp->state = DAC_STOP; dacp->config = NULL; #if DAC_USE_WAIT dacp->thread = NULL; #endif /* DAC_USE_WAIT */ #if DAC_USE_MUTUAL_EXCLUSION osalMutexObjectInit(&dacp->mutex); #endif /* DAC_USE_MUTUAL_EXCLUSION */ #if defined(DAC_DRIVER_EXT_INIT_HOOK) DAC_DRIVER_EXT_INIT_HOOK(dacp); #endif } /** * @brief Configures and activates the DAC peripheral. * * @param[in] dacp pointer to the @p DACDriver object * @param[in] config pointer to the @p DACConfig object * * @api */ void dacStart(DACDriver *dacp, const DACConfig *config) { osalDbgCheck((dacp != NULL) && (config != NULL)); osalSysLock(); osalDbgAssert((dacp->state == DAC_STOP) || (dacp->state == DAC_READY),
#pragma once

#include <common/matrix.h>
result buffer may contain incorrect data. * @retval MSG_TIMEOUT The conversion has been stopped because an hardware * error. * * @api */ msg_t dacConvert(DACDriver *dacp, const DACConversionGroup *grpp, const dacsample_t *samples, size_t depth) { msg_t msg; osalSysLock(); dacStartConversionI(dacp, grpp, samples, depth); msg = osalThreadSuspendS(&dacp->thread); osalSysUnlock(); return msg; } #endif /* DAC_USE_WAIT */ #if DAC_USE_MUTUAL_EXCLUSION || defined(__DOXYGEN__) /** * @brief Gains exclusive access to the DAC bus. * @details This function tries to gain ownership to the DAC bus, if the bus * is already being used then the invoking thread is queued. * @pre In order to use this function the option @p DAC_USE_MUTUAL_EXCLUSION * must be enabled. * * @param[in] dacp pointer to the @p DACDriver object * * @api */ void dacAcquireBus(DACDriver *dacp) { osalDbgCheck(dacp != NULL); osalMutexLock(&dacp->mutex); } /** * @brief Releases exclusive access to the DAC bus. * @pre In order to use this function the option @p DAC_USE_MUTUAL_EXCLUSION * must be enabled. * * @param[in] dacp pointer to the @p DACDriver object * * @api */ void dacReleaseBus(DACDriver *dacp) { osalDbgCheck(dacp != NULL); osalMutexUnlock(&dacp->mutex); } #endif /* DAC_USE_MUTUAL_EXCLUSION */ #endif /* HAL_USE_DAC */ /** @} */