| ISF 1.1 Intelligent Sensing Framework

- Main Page
- Data Structures
- Files
- Sensor Adapters

- File List
- Globals

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines
Include/isf_sm_dsa_adapter.h
Go to the documentation of this file.

    00001 /**
    00002  * @file isf_sm_dsa_adapter.h
    00003  * @brief The \b isf_sm_dsa_adapter.h contains the data types and enumerations used by
    00004  * the Sensor Manager and the Digital Sensor Abstraction (DSA) implementation.
    00005  *
    00006  * @copyright Copyright (c) 2012, Freescale Semiconductor, Inc.
    00007  */
    00008
    00009 #ifndef ISF_SM_DSA_ADAPTER_H_
    00010 #define ISF_SM_DSA_ADAPTER_H_
    00011
    00012 #include "isf_types.h"
    00013 #include <mqx.h>
    00014 #include "lwevent.h"
    00015 #include "isf_sysconf_types.h"
    00016
    00017 /*!
    00018  * @brief This is the Sensor Manager API return type definition.
    00019  */
    00020 typedef int32   sm_status_t;
    00021
    00022
    00023 /*!
    00024  * @brief This enumerates the error types returned by the DSA sensor functions.
    00025  */
    00026 typedef enum sm_dsa_error_types
    00027 {
    00028   SM_DSA_ERR_INITIALIZE = 1,
    00029 /*!< Adapter initialize error.  */
    00030   SM_DSA_ERR_VALIDATE_SETTINGS,
    00031 /*!< Adapter settings validation error.  */
    00032   SM_DSA_ERR_CONFIGURE,
    00033 /*!< Adapter configuration error.  */
    00034   SM_DSA_ERR_START_DATA,
    00035 /*!< Adapter data start error.  */
    00036   SM_DSA_ERR_END_DATA,
    00037 /*!< Adapter data end error.  */
    00038   SM_DSA_ERR_CALIBRATE,
    00039 /*!< Adapter calibration error.  */
    00040   SM_DSA_ERR_PARAM
    00041 /*!< Adapter parameter error.  */
    00042 } sm_dsa_err_t;
    00043
    00044 /*!
    00045  * @brief This defines the DSA adapter control interface abstract function list.
    00046  */
    00047 typedef struct sm_dsa_ControlInterface_st
    00048 {
    00049                 sm_status_t       (*Initialize)( void *pSensorHandle);                        /*!< Pointer to the adapter Initialize() function. */
    00050                 sm_status_t       (*ValidateSettings)(void *pSensorHandle, void *pSettings);
    00051 /*!< Pointer to the adapter ValidateSettings() function. */
    00052                 sm_status_t       (*Configure)(void *pSensorHandle, void *pConfigSettings);
    00053 /*!< Pointer to the adapter Configure() function. */
    00054                 sm_status_t       (*StartData)(void *pSensorHandle );                         /*!< Pointer to the adapter StartData() function. */
    00055                 sm_status_t       (*EndData)(void *pSensorHandle );                           /*!< Pointer to the adapter EndData() function. */
    00056                 sm_status_t       (*Calibrate)(void *pSensorHandle );                         /*!< Pointer to the adapter Calibrate() function. */
    00057 } sm_dsa_ControlInterface_t;
    00058
    00059 /*!
    00060  * @brief This defines the DSA adapter device information block.
    00061  */
    00062 typedef struct sm_dsa_DeviceInfoBlock_st
    00063 {
    00064     uint8             nDataSetSize;
    00065 /*!< The size of a data sample for this sensor. */
    00066     uint8             nDevConfigSize;
    00067 /*!< The total size of the memory block for the device configuration parameters */
    00068 } sm_dsa_DeviceInfoBlock_t;
    00069
    00070 /*!
    00071  * @brief This defines the DSA adapter functional interface.
    00072  */
    00073 typedef struct sm_dsa_FunctionalInterface_st
    00074 {
    00075                 void              *pDataBuff;
    00076 /*!< The data buffer where sensor data is deposited by the sensor device adapter ISR. */
    00077     LWEVENT_STRUCT    *pEventGroup;
    00078 /*!< The event group to signal after depositing sensor sample in pDataBuff. */
    00079     uint32            nEventFieldIndex;
    00080 /*!< The event flag of the event group to signal after depositing sensor sample in pDataBuff. */
    00081 } sm_dsa_FunctionalInterface_t;
    00082
    00083 /*!
    00084  * @brief This defines the DSA adapter sensor status bit-field structure.
    00085  */
    00086 typedef struct sm_Dsa_SensorStatus_st
    00087 {
    00088                 uint8 bAvailable    : 1;
    00089 /*!< The current sensor is available for use. */
    00090                 uint8 bInitialized  : 1;
    00091 /*!< The current sensor is initialized. */
    00092                 uint8 bSensorOn     : 1;
    00093 /*!< The current sensor is on. */
    00094                 uint8 bDummy        : 5;
    00095 /*!< Unused bits. */
    00096 }sm_DsaAdapterStatus_t;
    00097
    00098 /*!
    00099  * @brief This defines the DSA adapter structure required for static initialization of
    00100  * the concrete instance of a given sensor adapter.
    00101  */
    00102 typedef struct  sm_DsaAdapter_st
    00103 {
    00104                 sm_dsa_DeviceInfoBlock_t       devInfoBlock;
    00105 /*!< Adapter device information block field. */
    00106                 sm_dsa_ControlInterface_t      ctrlIntf;
    00107  /*!< Adapter control interface field. */
    00108 } sm_DsaAdapter_t;
    00109
    00110 /*!
    00111  * @brief This defines the DSA sensor configuration parameter structure configuring the sensor settings
    00112  * by a subscriber task.
    00113  */
    00114 typedef struct sm_SensorConfigSettings_st
    00115 {
    00116                    uint32               nSampleRate;
    00117 /*!< Sample period in microseconds.   */
    00118                    uint8                nResolution;
    00119 /*!< Sample resolution.  */
    00120                    uint8                nRange;
    00121 /*!< Sensor dynamic range. */
    00122                    uint8                nMode;
    00123 /*!< Sensor specific mode. */
    00124 } SM_SensorConfigSettings_t;
    00125
    00126 /*!
    00127  * @brief This defines the DSA sensor device configuration header structure
    00128  * used for adapter initial configuration.
    00129  */
    00130 typedef struct sm_DevConfigHdr_St
    00131 {
    00132                 sm_DsaAdapterStatus_t           devStatus;
    00133 /*!< Adapter status bit-field. */
    00134                 sm_dsa_FunctionalInterface_t   funcIntf;
    00135 /*!< Adapter functional interface field. */
    00136                 sys_channelId_t                channelId;
    00137 /*!< Adapter physical channel identification field. */
    00138                 uint32                         devAddress;
    00139 /*!< Adapter physical device address field. */
    00140                 SM_SensorConfigSettings_t      sensorSettings;
    00141 /*!< Adapter sensor settings field. */
    00142                 LWSEM_STRUCT                   sensorDataSemaphore;
    00143 /*!< Adapter sensor data semaphore field. */
    00144                 uint8                          semTimeout;
    00145 /*!< Adapter sensor data semaphore timeout value field. */
    00146 } sm_DevConfigHdr_t;
    00147
    00148
    00149 /*!
    00150  * @brief This is defines the DSA sensor device handle structure
    00151  * to invoke the adapter access functions.
    00152  */
    00153 typedef struct sm_SensorHandle_St
    00154 {
    00155                 sm_DevConfigHdr_t     hdr;
    00156 /*!< Adapter device configuration header field. */
    00157                 void                  *pDescriptor;
    00158 /*!< Pointer to the adapter generic device descriptor field. */
    00159                 void                  *pSensorSpecificSettings;
    00160 /*!< Pointer to the adapter sensor specific settings field. */
    00161 } sm_SensorHandle_t;
    00162
    00163 /*!
    00164  * @brief This defines the DSA sensor configuration structure
    00165  * defining each individual sensor adapter in the DSA Sensor List.
    00166  */
    00167 typedef struct SensorConfig_st
    00168 {
    00169                 sm_DsaAdapter_t          *pAdapter;
    00170 /*!< Pointer to the statically initialized adapter structure. */
    00171                 void                    *pSensorHandle;
    00172 /*!< Pointer to the sensor device handle. */
    00173                 void                    *pSensorSpecificSettings;
    00174 /*!< Pointer to the adapter sensor specific settings. */
    00175                 sys_channelId_t         channelId;
    00176 /*!< Sensor device physical channel identification value. */
    00177                 uint32                  devAddress;
    00178 /*!< Sensor device physical address. */
    00179 } SensorConfig_t;
    00180
    00181 #endif /* ISF_SM_DSA_ADAPTER_H_*/