Initial commit: TC264 smart car project with IPS200 menu system
- IPS200 display menu with real-time status and parameter settings - Camera image processing and line tracking - IMU attitude solution and PID control - WiFi SPI oscilloscope data transmission
This commit is contained in:
commit
843447835d
660 files changed
+443632
No files matched your search
@@ -0,0 +1,583 @@
|
||||
/**
|
||||
* \file IfxStdIf_Pos.h
|
||||
* \brief Standard interface: Position interface
|
||||
* \ingroup IfxStdIf
|
||||
*
|
||||
* \version disabled
|
||||
* \copyright Copyright (c) 2013 Infineon Technologies AG. All rights reserved.
|
||||
*
|
||||
*
|
||||
* IMPORTANT NOTICE
|
||||
*
|
||||
*
|
||||
* Use of this file is subject to the terms of use agreed between (i) you or
|
||||
* the company in which ordinary course of business you are acting and (ii)
|
||||
* Infineon Technologies AG or its licensees. If and as long as no such
|
||||
* terms of use are agreed, use of this file is subject to following:
|
||||
|
||||
|
||||
* Boost Software License - Version 1.0 - August 17th, 2003
|
||||
|
||||
* Permission is hereby granted, free of charge, to any person or
|
||||
* organization obtaining a copy of the software and accompanying
|
||||
* documentation covered by this license (the "Software") to use, reproduce,
|
||||
* display, distribute, execute, and transmit the Software, and to prepare
|
||||
* derivative works of the Software, and to permit third-parties to whom the
|
||||
* Software is furnished to do so, all subject to the following:
|
||||
|
||||
* The copyright notices in the Software and this entire statement, including
|
||||
* the above license grant, this restriction and the following disclaimer, must
|
||||
* be included in all copies of the Software, in whole or in part, and all
|
||||
* derivative works of the Software, unless such copies or derivative works are
|
||||
* solely in the form of machine-executable object code generated by a source
|
||||
* language processor.
|
||||
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
* SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
* FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
|
||||
*
|
||||
*
|
||||
* \defgroup library_srvsw_stdif_posif Standard interface: Position interface
|
||||
* \ingroup library_srvsw_stdif
|
||||
*
|
||||
* The standard interface position interface (IfxStdIf_Pos) abstract the hardware used for position interface feature like encoder, hall, resolver, ... It provide, after proper initialization an hardware
|
||||
* Independent way to interact with the position sensor like getting position, speed, direction, ...
|
||||
*
|
||||
* The figure below shows the standard position interface.
|
||||
*
|
||||
* \image html "stdif_PosIf.png" "Standard position interface"
|
||||
*
|
||||
* This interface defines the following features:
|
||||
* -
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef IFXSTDIF_POSIF_H
|
||||
#define IFXSTDIF_POSIF_H 1
|
||||
|
||||
#include "Cpu/Std/Ifx_Types.h"
|
||||
#include "IfxStdIf.h"
|
||||
#include "IfxStdIf_DPipe.h"
|
||||
|
||||
/** \brief Output event enable / disable */
|
||||
typedef enum
|
||||
{
|
||||
IfxStdIf_Pos_MotionType_rotating, /**< \brief Rotating sensor */
|
||||
IfxStdIf_Pos_MotionType_linear /**< \brief Linear sensor */
|
||||
} IfxStdIf_Pos_MotionType;
|
||||
|
||||
/** \brief Output event enable / disable */
|
||||
typedef enum
|
||||
{
|
||||
IfxStdIf_Pos_ResolutionFactor_oneFold = 1, /**< \brief Default, no multipluication factor */
|
||||
IfxStdIf_Pos_ResolutionFactor_twoFold = 2, /**< \brief 2-fold resolution. Valid for encoder */
|
||||
IfxStdIf_Pos_ResolutionFactor_fourFold = 4 /**< \brief 4-fold resolution. Valid for encoder */
|
||||
} IfxStdIf_Pos_ResolutionFactor;
|
||||
|
||||
/** \brief Position sensor Types */
|
||||
typedef enum
|
||||
{
|
||||
IfxStdIf_Pos_SensorType_encoder,
|
||||
IfxStdIf_Pos_SensorType_hall,
|
||||
IfxStdIf_Pos_SensorType_resolver,
|
||||
IfxStdIf_Pos_SensorType_angletrk,
|
||||
IfxStdIf_Pos_SensorType_igmr,
|
||||
IfxStdIf_Pos_SensorType_virtual
|
||||
} IfxStdIf_Pos_SensorType;
|
||||
|
||||
/** \brief Position sensor direction definition */
|
||||
typedef enum
|
||||
{
|
||||
IfxStdIf_Pos_Dir_forward, /**< \brief Forward direction. For rotating position sensor, forward is clockwise rotation */
|
||||
IfxStdIf_Pos_Dir_backward, /**< \brief Backward direction. For rotating position sensor, fackward is counter-clockwise rotation */
|
||||
IfxStdIf_Pos_Dir_unknown /**< \brief Unknown direction */
|
||||
} IfxStdIf_Pos_Dir;
|
||||
|
||||
/** \brief Position sensor status definition */
|
||||
typedef union
|
||||
{
|
||||
uint32 status; /**< \brief Global status access */
|
||||
struct
|
||||
{
|
||||
uint32 notSynchronised : 1; /**< \brief Sensor is not synchronized */
|
||||
uint32 signalLoss : 1; /**< \brief Loss of signal error */
|
||||
uint32 signalDegradation : 1; /**< \brief Signal degradation warning */
|
||||
uint32 trackingLoss : 1; /**< \brief Tracking loss error */
|
||||
uint32 commError : 1; /**< \brief Communication error*/
|
||||
} B; /**< \brief Bitfielf status access */
|
||||
} IfxStdIf_Pos_Status;
|
||||
|
||||
typedef sint32 IfxStdIf_Pos_RawAngle;
|
||||
|
||||
/** \brief Forward declaration */
|
||||
typedef struct IfxStdIf_Pos_ IfxStdIf_Pos;
|
||||
|
||||
/** \brief Return the position, inclusive turns
|
||||
*
|
||||
* Return the sensor position in rad for rotating sensor inclusive turns, or in m for linear sensors.
|
||||
* For linear sensor the effect is the same as IfxStdIf_Pos_GetPosition.
|
||||
*
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return Return the position inclusive turns in rad
|
||||
*/
|
||||
typedef float32 (*IfxStdIf_Pos_GetAbsolutePosition)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Handles the zero interrupt
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return none
|
||||
*/
|
||||
typedef void (*IfxStdIf_Pos_OnZeroIrq)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Return the raw position sensor offset
|
||||
*
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return Return the raw position sensor offset sensor in ticks
|
||||
*/
|
||||
typedef sint32 (*IfxStdIf_Pos_GetOffset)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Return the position
|
||||
*
|
||||
* Return the sensor position in rad for rotating sensor or in m for linear sensors.
|
||||
* For rotating sensor, the position is always between 0 and 2*IFX_PI.
|
||||
*
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return Return the position in rad or m
|
||||
*/
|
||||
typedef float32 (*IfxStdIf_Pos_GetPosition)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Return the direction
|
||||
*
|
||||
* Return the sensor direction.
|
||||
*
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return Return the direction
|
||||
*/
|
||||
typedef IfxStdIf_Pos_Dir (*IfxStdIf_Pos_GetDirection)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Return the sensor status
|
||||
*
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return Return the sensor status
|
||||
*/
|
||||
typedef IfxStdIf_Pos_Status (*IfxStdIf_Pos_GetFault)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Return the period per rotation setting
|
||||
*
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return Return the period per rotation setting
|
||||
*/
|
||||
typedef uint16 (*IfxStdIf_Pos_GetPeriodPerRotation)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Return the raw position in ticks
|
||||
*
|
||||
* Return the sensor raw position in ticks.
|
||||
*
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return Return the raw position in ticks
|
||||
*/
|
||||
typedef sint32 (*IfxStdIf_Pos_GetRawPosition)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Get the update period
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return Return the update period in s
|
||||
*/
|
||||
typedef float32 (*IfxStdIf_Pos_GetRefreshPeriod)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Get the resolution
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return Return the resolution
|
||||
*/
|
||||
typedef sint32 (*IfxStdIf_Pos_GetResolution)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Get the sensor type
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return Return the sensor type
|
||||
*/
|
||||
typedef IfxStdIf_Pos_SensorType (*IfxStdIf_Pos_GetSensorType)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Return the speed
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return Return the speed in rad/s or m/s
|
||||
*/
|
||||
typedef float32 (*IfxStdIf_Pos_GetSpeed)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Return position in turn
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return Return position in turn
|
||||
*/
|
||||
typedef sint32 (*IfxStdIf_Pos_GetTurn)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Handles the A sensor event
|
||||
* Event A is a sensor defined event. it is optional.
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return none
|
||||
*/
|
||||
typedef void (*IfxStdIf_Pos_OnEventA)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Refresh the status
|
||||
*
|
||||
* Update the stdIf state like speed, position, status, taking into account the updatePeriod
|
||||
*
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return None
|
||||
*/
|
||||
typedef void (*IfxStdIf_Pos_Update)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Reset the driver
|
||||
*
|
||||
* Clear faults, reset speed and position to 0
|
||||
*
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return None
|
||||
*/
|
||||
typedef void (*IfxStdIf_Pos_Reset)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Reset the driver fault
|
||||
*
|
||||
* Clear faults
|
||||
*
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \return None
|
||||
*/
|
||||
typedef void (*IfxStdIf_Pos_ResetFaults)(IfxStdIf_InterfaceDriver stdIf);
|
||||
|
||||
/** \brief Set the sensor offset
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \param offset Offset in sensor ticks
|
||||
* \return None
|
||||
*/
|
||||
typedef void (*IfxStdIf_Pos_SetOffset)(IfxStdIf_InterfaceDriver stdIf, sint32 offset);
|
||||
|
||||
/** \brief Set the sensor position (virtual sensor)
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \param position Position sensor rad
|
||||
* \return None
|
||||
*/
|
||||
typedef void (*IfxStdIf_Pos_SetPosition)(IfxStdIf_InterfaceDriver stdIf, float32 position);
|
||||
/** \brief Set the sensor position (virtual sensor)
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \param position Position sensor ticks
|
||||
* \return None
|
||||
*/
|
||||
typedef void (*IfxStdIf_Pos_SetRawPosition)(IfxStdIf_InterfaceDriver stdIf, sint32 position);
|
||||
|
||||
/** \brief Set the sensor speed (virtual sensor)
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \param speed speed in rad/s
|
||||
* \return None
|
||||
*/
|
||||
typedef void (*IfxStdIf_Pos_SetSpeed)(IfxStdIf_InterfaceDriver stdIf, float32 speed);
|
||||
|
||||
/** \brief Set the update period
|
||||
* \param stdIf Pointer to the interface driver object
|
||||
* \param updatePeriod Refresh period in s
|
||||
* \return None
|
||||
*/
|
||||
typedef void (*IfxStdIf_Pos_SetRefreshPeriod)(IfxStdIf_InterfaceDriver stdIf, float32 updatePeriod);
|
||||
|
||||
/** \brief Standard interface object
|
||||
*/
|
||||
struct IfxStdIf_Pos_
|
||||
{
|
||||
IfxStdIf_InterfaceDriver driver; /**< \brief Interface driver object */
|
||||
IfxStdIf_Pos_OnZeroIrq onZeroIrq; /**< \brief \see IfxStdIf_Pos_OnZeroIrq */
|
||||
IfxStdIf_Pos_GetAbsolutePosition getAbsolutePosition; /**< \brief Return the absolute position */
|
||||
IfxStdIf_Pos_GetOffset getOffset; /**< \brief \see IfxStdIf_Pos_GetOffset */
|
||||
IfxStdIf_Pos_GetPosition getPosition; /**< \brief \see IfxStdIf_Pos_GetPosition */
|
||||
IfxStdIf_Pos_GetDirection getDirection; /**< \brief \see IfxStdIf_Pos_GetDirection */
|
||||
IfxStdIf_Pos_GetFault getFault; /**< \brief \see IfxStdIf_Pos_GetFault */
|
||||
IfxStdIf_Pos_GetRawPosition getRawPosition; /**< \brief \see IfxStdIf_Pos_GetRawPosition */
|
||||
IfxStdIf_Pos_GetPeriodPerRotation getPeriodPerRotation; /**< \brief \see IfxStdIf_Pos_GetPeriodPerRotation */
|
||||
IfxStdIf_Pos_GetRefreshPeriod getRefreshPeriod; /**< \brief \see IfxStdIf_Pos_GetRefreshPeriod */
|
||||
IfxStdIf_Pos_GetResolution getResolution; /**< \brief \see IfxStdIf_Pos_GetResolution */
|
||||
IfxStdIf_Pos_GetSensorType getSensorType; /**< \brief \see IfxStdIf_Pos_GetSensorType */
|
||||
IfxStdIf_Pos_GetTurn getTurn; /**< \brief \see IfxStdIf_Pos_GetTurn */
|
||||
IfxStdIf_Pos_OnEventA onEventA; /**< \brief \see IfxStdIf_Pos_OnEventA */
|
||||
IfxStdIf_Pos_Reset reset; /**< \brief \see IfxStdIf_Pos_Reset */
|
||||
IfxStdIf_Pos_ResetFaults resetFaults; /**< \brief \see IfxStdIf_Pos_ResetFaults */
|
||||
IfxStdIf_Pos_GetSpeed getSpeed; /**< \brief \see IfxStdIf_Pos_GetSpeed */
|
||||
IfxStdIf_Pos_Update update; /**< \brief \see IfxStdIf_Pos_Update */
|
||||
IfxStdIf_Pos_SetOffset setOffset; /**< \brief \see IfxStdIf_Pos_SetOffset */
|
||||
IfxStdIf_Pos_SetPosition setPosition; /**< \brief \see IfxStdIf_Pos_SetPosition */
|
||||
IfxStdIf_Pos_SetRawPosition setRawPosition; /**< \brief \see IfxStdIf_Pos_SetRawPosition */
|
||||
IfxStdIf_Pos_SetSpeed setSpeed; /**< \brief \see IfxStdIf_Pos_SetSpeed */
|
||||
IfxStdIf_Pos_SetRefreshPeriod setRefreshPeriod; /**< \brief \see IfxStdIf_Pos_SetRefreshPeriod */
|
||||
};
|
||||
|
||||
/** \brief Position interface configuration */
|
||||
typedef struct
|
||||
{
|
||||
sint32 offset; /**< \brief Position sensor offset */
|
||||
boolean reversed; /**< \brief If true, the sensor direction is reversed */
|
||||
sint32 resolution; /**< \brief Sensor resolution. For encoder with 1024 pulse per revolution, the value should be 1024 */
|
||||
uint16 periodPerRotation; /**< \brief Number of period per rotation. Is usually 1 for encoder */
|
||||
IfxStdIf_Pos_ResolutionFactor resolutionFactor; /**< \brief Resolution multiplier for encoder interface, valid is 2, 4. */
|
||||
float32 updatePeriod; /**< \brief period in seconds, at which the application calls IfxStdIf_Pos_update() */
|
||||
float32 speedModeThreshold; /**< \brief Speed threshold used for the speed calculation mode. For encoder, above the threshold the pulse count mode is used, below the threshold, the time delta is used */
|
||||
float32 minSpeed; /**< \brief Absolute minimal allowed speed. below speed is recognized as 0rad/s */
|
||||
float32 maxSpeed; /**< \brief Absolute maximal allowed speed. Above speed is recognized as error */
|
||||
boolean speedFilterEnabled; /**< \brief Enable / disable the speed low pass filter */
|
||||
float32 speedFilerCutOffFrequency; /**< \brief Speed low pass filter cut off frequency */
|
||||
} IfxStdIf_Pos_Config;
|
||||
|
||||
/** \addtogroup library_srvsw_stdif_posif
|
||||
* \{
|
||||
*/
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_OnZeroIrq
|
||||
*/
|
||||
IFX_INLINE void IfxStdIf_Pos_onZeroIrq(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
stdIf->onZeroIrq(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_GetAbsolutePosition
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE float32 IfxStdIf_Pos_getAbsolutePosition(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
return stdIf->getAbsolutePosition(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_GetFault MCMETILLD-521
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE IfxStdIf_Pos_Status IfxStdIf_Pos_getFault(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
return stdIf->getFault(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_GetOffset
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE sint32 IfxStdIf_Pos_getOffset(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
return stdIf->getOffset(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_GetPosition
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE float32 IfxStdIf_Pos_getPosition(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
return stdIf->getPosition(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_GetDirection
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE IfxStdIf_Pos_Dir IfxStdIf_Pos_getDirection(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
return stdIf->getDirection(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_GetPeriodPerRotation
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE uint16 IfxStdIf_Pos_getPeriodPerRotation(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
return stdIf->getPeriodPerRotation(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_GetRawPosition
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE sint32 IfxStdIf_Pos_getRawPosition(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
return stdIf->getRawPosition(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_GetRefreshPeriod
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE float32 IfxStdIf_Pos_getRefreshPeriod(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
return stdIf->getRefreshPeriod(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_GetResolution
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE sint32 IfxStdIf_Pos_getResolution(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
return stdIf->getResolution(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_GetTurn
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE sint32 IfxStdIf_Pos_getTurn(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
return stdIf->getTurn(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_GetSensorType
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE IfxStdIf_Pos_SensorType IfxStdIf_Pos_getSensorType(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
return stdIf->getSensorType(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_GetSpeed
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE float32 IfxStdIf_Pos_getSpeed(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
return stdIf->getSpeed(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** Check whether the sensor is faulty
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE boolean IfxStdIf_Pos_isFault(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
return IfxStdIf_Pos_getFault(stdIf).status != 0;
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_OnEventA
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE void IfxStdIf_Pos_onEventA(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
stdIf->onEventA(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_Update
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE void IfxStdIf_Pos_update(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
stdIf->update(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_Reset
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE void IfxStdIf_Pos_reset(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
stdIf->reset(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_ResetFaults
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE void IfxStdIf_Pos_resetFaults(IfxStdIf_Pos *stdIf)
|
||||
{
|
||||
stdIf->resetFaults(stdIf->driver);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_SetOffset
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE void IfxStdIf_Pos_setOffset(IfxStdIf_Pos *stdIf, sint32 offset)
|
||||
{
|
||||
stdIf->setOffset(stdIf->driver, offset);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_SetPosition
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE void IfxStdIf_Pos_setPosition(IfxStdIf_Pos *stdIf, float32 position)
|
||||
{
|
||||
stdIf->setPosition(stdIf->driver, position);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_SetRawPosition
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE void IfxStdIf_Pos_setRawPosition(IfxStdIf_Pos *stdIf, sint32 position)
|
||||
{
|
||||
stdIf->setRawPosition(stdIf->driver, position);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_SetSpeed
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE void IfxStdIf_Pos_setSpeed(IfxStdIf_Pos *stdIf, float32 speed)
|
||||
{
|
||||
stdIf->setSpeed(stdIf->driver, speed);
|
||||
}
|
||||
|
||||
|
||||
/** \copydoc IfxStdIf_Pos_SetRefreshPeriod
|
||||
* \param stdIf Standard interface pointer
|
||||
*/
|
||||
IFX_INLINE void IfxStdIf_Pos_setRefreshPeriod(IfxStdIf_Pos *stdIf, float32 updatePeriod)
|
||||
{
|
||||
stdIf->setRefreshPeriod(stdIf->driver, updatePeriod);
|
||||
}
|
||||
|
||||
|
||||
/** \} */
|
||||
|
||||
/** \brief Converts from rad/s to rpm
|
||||
*
|
||||
* \param speed Specifies the speed in rad/s.
|
||||
*
|
||||
* \return returns the converted speed in rpm.
|
||||
* \see IfxStdIf_Pos_rpmToRads()
|
||||
*/
|
||||
IFX_INLINE float32 IfxStdIf_Pos_radsToRpm(float32 speed)
|
||||
{
|
||||
return (60.0 / (2.0 * IFX_PI)) * speed;
|
||||
}
|
||||
|
||||
|
||||
/** \brief Converts from rpm to rad/s
|
||||
*
|
||||
* \param speed Specifies the speed in rpm.
|
||||
*
|
||||
* \return returns the converted speed in rad/s.
|
||||
* \see IfxStdIf_Pos_radsToRpm()
|
||||
*/
|
||||
IFX_INLINE float32 IfxStdIf_Pos_rpmToRads(float32 speed)
|
||||
{
|
||||
return speed * ((2.0 * IFX_PI) / 60.0);
|
||||
}
|
||||
|
||||
|
||||
/** Initialize the configuration structure to default
|
||||
*
|
||||
* \param config Position interface configuration. This parameter is initialized by the function
|
||||
*
|
||||
*/
|
||||
IFX_EXTERN void IfxStdIf_Pos_initConfig(IfxStdIf_Pos_Config *config);
|
||||
|
||||
/** \brief Print the device status
|
||||
*
|
||||
* \param driver driver handle
|
||||
* \param io Interface to which the status is output
|
||||
* \return none
|
||||
*/
|
||||
IFX_EXTERN void IfxStdIf_Pos_printStatus(IfxStdIf_Pos *driver, IfxStdIf_DPipe *io);
|
||||
|
||||
|
||||
#endif /* IFXSTDIF_POSIF_H */
|
||||
Reference in new issue
Block a user