blob: ef6437ecff2ef2b3635424e2ff7f8107b0de3d43 [file] [log] [blame]
/*
** Copyright (c) 2007-2010 by Silicon Laboratories
**
** $Id: si_voice_ctrl.h 2009 2010-06-11 21:26:54Z nizajerk $
**
** si_voice_ctrl.h
** SPI driver header file
**
** Author(s):
** laj
**
** Distributed by:
** Silicon Laboratories, Inc
**
** File Description:
** This is the header file for the control driver used
** in the ProSLIC demonstration code.
**
** Dependancies:
** si_voice_datatypes.h
**
*/
#ifndef CTRL_H
#define CTRL_H
/** @defgroup PROSLIC_CUSTOMER_APIS Customer implemented functions
* This section has documentation related to APIs that the customer
* needs to implement to allow the ProSLIC API to function correctly.
*
* @note Please note, in addition to the functions mentioned here, the
* customer will need to review/modify si_voice_datatypes.h to match
* the native datatypes of their system.
*
* @{
*/
/*****************************************************************************/
/** @defgroup PROSLIC_CUSTOMER_CONTROL Customer implemented control functions
* This group of function pointer prototypes need to be implemented by the
* customer in order for the ProSLIC API to function correctly. These functions
* need to be associated with the API by the functions documented in @ref SIVOICE_IO
* @{
*/
/**
* @brief
* Sets/clears the reset pin of all the ProSLICs/VDAAs
*
* @param[in] *hCtrl - which interface to reset (this is a customer supplied structure)
* @param[in] in_reset - 0 = Take the device out of reset, 1 = place the device(s) in reset
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*/
typedef int (*ctrl_Reset_fptr) (void *hCtrl, int in_reset);
/**
* @brief
* Register write function pointer
*
* @param[in] *hCtrl - which interface to communicate through (this is a customer supplied structure)
* @param[in] channel - ProSLIC channel to write to (this is the value passed is the same as found in @ref SiVoice_SWInitChan)
* @param[in] regAddr - Address of register to write
* @param[in] data - data to write to register
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
*/
typedef int (*ctrl_WriteRegister_fptr) (void *hCtrl, uInt8 channel, uInt8 regAddr, uInt8 data);
/**
* @brief
* RAM write function pointer
*
* @param[in] *hCtrl - which interface to communicate through (this is a customer supplied structure)
* @param[in] channel - ProSLIC channel to write to (this is the value passed is the same as found in @ref SiVoice_SWInitChan)
* @param[in] ramAddr - Address of the RAM location to write
* @param[in] ramData - data to write to the RAM location
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
*/
typedef int (*ctrl_WriteRAM_fptr) (void *hCtrl, uInt8 channel, uInt16 ramAddr, ramData data);
/**
* @brief
* Register read function pointer
*
* @param[in] *hCtrl - which interface to communicate through (this is a customer supplied structure)
* @param[in] channel - ProSLIC channel to read from (this is the value passed is the same as found in @ref SiVoice_SWInitChan)
* @param[in] regAddr - Address of register to read from
* @retval uInt8 - the value read. If an error occurs, this value is undefined.
*/
typedef uInt8 (*ctrl_ReadRegister_fptr) (void *hCtrl, uInt8 channel, uInt8 regAddr);
/**
* @brief
* RAM read function pointer
*
* @param[in] *hCtrl - which interface to communicate through (this is a customer supplied structure)
* @param[in] channel - ProSLIC channel to read from (this is the value passed is the same as found in @ref SiVoice_SWInitChan)
* @param[in] ramAddr - Address of the RAM location to read from
* @retval ramData - the value read. If an error occurs, this value is undefined.
*/
typedef ramData (*ctrl_ReadRAM_fptr) (void *hCtrl, uInt8 channel, uInt16 ramAddr);
/**
* @brief
* Critical Section/Semaphore function pointer
*
* @param[in] *hCtrl - which interface to communicate through (this is a customer supplied structure)
* @param[in] in_critical_section - request to lock the critical section 1 = lock, 0 = unlock
* @retval 1 = success, 0 = failed
*/
typedef int (*ctrl_Semaphore_fptr) (void *hCtrl, int in_critical_section);
/** @} PROSLIC_CUSTOMER_CONTROL */
/** @} */
#endif