Sean Wilson
/
AdiSense1000_V21
AdiSense1000_V21 MBED API
Fork of AdiSense1000 by
Diff: main.cpp
- Revision:
- 13:176ca4f0ca20
- Parent:
- 12:97457cf77bcb
- Child:
- 14:81f059dc75d0
--- a/main.cpp Mon Nov 27 13:10:11 2017 +0000 +++ b/main.cpp Tue Nov 28 10:52:47 2017 +0000 @@ -1,163 +1,164 @@ -/* - ****************************************************************************** - * file: main.cpp - *----------------------------------------------------------------------------- - * -Copyright (c) 2017 Emutex Ltd. / Analog Devices, Inc. - -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - Modified versions of the software must be conspicuously marked as such. - - This software is licensed solely and exclusively for use with processors - manufactured by or for Analog Devices, Inc. - - This software may not be combined or merged with other code in any manner - that would cause the software to become subject to terms and conditions - which differ from those listed here. - - Neither the name of Analog Devices, Inc. nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - The use of this software may or may not infringe the patent rights of one - or more patent holders. This license does not release you from the - requirement that you obtain separate licenses from these patent holders - to use this software. - -THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES, INC. AND CONTRIBUTORS "AS IS" AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, -TITLE, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN -NO EVENT SHALL ANALOG DEVICES, INC. OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, DAMAGES ARISING OUT OF CLAIMS OF INTELLECTUAL -PROPERTY RIGHTS INFRINGEMENT; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS -OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - *****************************************************************************/ -#include "mbed.h" -#include "inc/adi_sense_api.h" -#include "inc/adi_sense_1000/adi_sense_1000_api.h" -#include "inc/adi_sense_log.h" -#include "common/utils.h" - -extern ADI_SENSE_CONFIG sensor0_rtd_2w_pt100_config; -extern ADI_SENSE_CONFIG sensor1_typeK_cjc1_config; -extern ADI_SENSE_CONFIG sensor1_rtd_3w_pt100_config; -extern ADI_SENSE_CONFIG sensor2_typeT_cjc0_config; -extern ADI_SENSE_CONFIG sensor2_bridge_6w_pressure_config; -extern ADI_SENSE_CONFIG sensor3_typeJ_cjc0_config; -extern ADI_SENSE_CONFIG sensor3_thermistor_10k_ntc_config; -extern ADI_SENSE_CONFIG voltage_honeywellPressure_config; -extern ADI_SENSE_CONFIG current_honeywellPressure_config; -extern ADI_SENSE_CONFIG i2c0_honeywellHumidity_config; -extern ADI_SENSE_CONFIG spi0_honeywellTrustability_config; -extern ADI_SENSE_CONFIG spi0_adiAdxl362_config; -extern ADI_SENSE_CONFIG multichannel_continuous_config; -extern ADI_SENSE_CONFIG multichannel_multicycle_config; -extern ADI_SENSE_CONFIG multichannel_singlecycle_config; - -/* Change the following pointer to select any of the configurations above */ -static ADI_SENSE_CONFIG *pSelectedConfig = &sensor0_rtd_2w_pt100_config; - -static ADI_SENSE_CONNECTION connectionInfo = { - .type = ADI_SENSE_CONNECTION_TYPE_SPI, - .spi = { - .mosiPin = SPI_MOSI, - .misoPin = SPI_MISO, - .sckPin = SPI_SCK, - .csPin = D10, - .maxSpeedHz = 2000000, - }, - .gpio = { - .resetPin = D6, - .errorPin = D3, - .alertPin = D4, - .datareadyPin = D5, - }, -}; - -int main() -{ - ADI_SENSE_RESULT res; - ADI_SENSE_DEVICE_HANDLE hDevice; - bool_t bHealthCheckMode = false; - bool_t bDeviceReady; - - /* - * Open an ADI Sense device instance. - */ - res = adi_sense_Open(0, &connectionInfo, &hDevice); - if (res != ADI_SENSE_SUCCESS) - { - ADI_SENSE_LOG_ERROR("Failed to open device instance"); - return res; - } - - /* - * Reset the given ADI Sense device.... - */ - ADI_SENSE_LOG_INFO("Resetting ADI Sense device, please wait..."); - res = adi_sense_Reset(hDevice); - if (res != ADI_SENSE_SUCCESS) - { - ADI_SENSE_LOG_ERROR("Failed to reset device"); - return res; - } - /* - * ...and wait until the device is ready. - */ - do { - wait_ms(100); - res = adi_sense_GetDeviceReadyState(hDevice, &bDeviceReady); - if (res != ADI_SENSE_SUCCESS) - { - ADI_SENSE_LOG_ERROR("Failed to get device ready-state"); - return res; - } - } while (! bDeviceReady); - ADI_SENSE_LOG_INFO("ADI Sense device ready"); - - /* - * Write configuration settings to the device registers. - * Settings are not applied until adi_sense_ApplyConfigUpdates() is called. - */ - ADI_SENSE_LOG_INFO("Setting device configuration"); - res = adi_sense_SetConfig(hDevice, pSelectedConfig); - if (res != ADI_SENSE_SUCCESS) - { - ADI_SENSE_LOG_ERROR("Failed to set device configuration"); - return res; - } - res = adi_sense_ApplyConfigUpdates(hDevice); - if (res != ADI_SENSE_SUCCESS) - { - ADI_SENSE_LOG_ERROR("Failed to apply device configuration"); - return res; - } - - /* - * Kick off the measurement cycle here - */ - ADI_SENSE_LOG_INFO("Configuration completed, starting measurement cycles"); - utils_runMeasurement(hDevice, bHealthCheckMode); - - /* - * Clean up and exit - */ - res = adi_sense_Close(hDevice); - if (res != ADI_SENSE_SUCCESS) - { - ADI_SENSE_LOG_ERROR("Failed to close device instance"); - return res; - } - - return 0; -} +/* + ****************************************************************************** + * file: main.cpp + *----------------------------------------------------------------------------- + * +Copyright (c) 2017 Emutex Ltd. / Analog Devices, Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + - Modified versions of the software must be conspicuously marked as such. + - This software is licensed solely and exclusively for use with processors + manufactured by or for Analog Devices, Inc. + - This software may not be combined or merged with other code in any manner + that would cause the software to become subject to terms and conditions + which differ from those listed here. + - Neither the name of Analog Devices, Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + - The use of this software may or may not infringe the patent rights of one + or more patent holders. This license does not release you from the + requirement that you obtain separate licenses from these patent holders + to use this software. + +THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES, INC. AND CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, +TITLE, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN +NO EVENT SHALL ANALOG DEVICES, INC. OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, DAMAGES ARISING OUT OF CLAIMS OF INTELLECTUAL +PROPERTY RIGHTS INFRINGEMENT; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + *****************************************************************************/ +#include "mbed.h" +#include "inc/adi_sense_api.h" +#include "inc/adi_sense_1000/adi_sense_1000_api.h" +#include "inc/adi_sense_log.h" +#include "common/utils.h" + +extern ADI_SENSE_CONFIG sensor0_rtd_2w_pt100_config; +extern ADI_SENSE_CONFIG sensor0_rtd_2w_pt100_lut_config; +extern ADI_SENSE_CONFIG sensor1_typeK_cjc1_config; +extern ADI_SENSE_CONFIG sensor1_rtd_3w_pt100_config; +extern ADI_SENSE_CONFIG sensor2_typeT_cjc0_config; +extern ADI_SENSE_CONFIG sensor2_bridge_6w_pressure_config; +extern ADI_SENSE_CONFIG sensor3_typeJ_cjc0_config; +extern ADI_SENSE_CONFIG sensor3_thermistor_10k_ntc_config; +extern ADI_SENSE_CONFIG voltage_honeywellPressure_config; +extern ADI_SENSE_CONFIG current_honeywellPressure_config; +extern ADI_SENSE_CONFIG i2c0_honeywellHumidicon_config; +extern ADI_SENSE_CONFIG i2c0_sensirionSHT3X_config; +extern ADI_SENSE_CONFIG spi0_honeywellTrustability_config; +extern ADI_SENSE_CONFIG spi0_adiAdxl362_config; +extern ADI_SENSE_CONFIG multichannel_continuous_config; +extern ADI_SENSE_CONFIG multichannel_multicycle_config; +extern ADI_SENSE_CONFIG multichannel_singlecycle_config; + +/* Change the following pointer to select any of the configurations above */ +static ADI_SENSE_CONFIG *pSelectedConfig = &sensor0_rtd_2w_pt100_config; +static ADI_SENSE_CONNECTION connectionInfo = { + .type = ADI_SENSE_CONNECTION_TYPE_SPI, + .spi = { + .mosiPin = SPI_MOSI, + .misoPin = SPI_MISO, + .sckPin = SPI_SCK, + .csPin = D10, + .maxSpeedHz = 2000000, + }, + .gpio = { + .resetPin = D6, + .errorPin = D3, + .alertPin = D4, + .datareadyPin = D5, + }, +}; + +int main() +{ + ADI_SENSE_RESULT res; + ADI_SENSE_DEVICE_HANDLE hDevice; + bool_t bHealthCheckMode = false; + bool_t bDeviceReady; + + /* + * Open an ADI Sense device instance. + */ + res = adi_sense_Open(0, &connectionInfo, &hDevice); + if (res != ADI_SENSE_SUCCESS) + { + ADI_SENSE_LOG_ERROR("Failed to open device instance"); + return res; + } + + /* + * Reset the given ADI Sense device.... + */ + ADI_SENSE_LOG_INFO("Resetting ADI Sense device, please wait..."); + res = adi_sense_Reset(hDevice); + if (res != ADI_SENSE_SUCCESS) + { + ADI_SENSE_LOG_ERROR("Failed to reset device"); + return res; + } + /* + * ...and wait until the device is ready. + */ + do { + wait_ms(100); + res = adi_sense_GetDeviceReadyState(hDevice, &bDeviceReady); + if (res != ADI_SENSE_SUCCESS) + { + ADI_SENSE_LOG_ERROR("Failed to get device ready-state"); + return res; + } + } while (! bDeviceReady); + ADI_SENSE_LOG_INFO("ADI Sense device ready"); + + /* + * Write configuration settings to the device registers. + * Settings are not applied until adi_sense_ApplyConfigUpdates() is called. + */ + ADI_SENSE_LOG_INFO("Setting device configuration"); + res = adi_sense_SetConfig(hDevice, pSelectedConfig); + if (res != ADI_SENSE_SUCCESS) + { + ADI_SENSE_LOG_ERROR("Failed to set device configuration"); + return res; + } + res = adi_sense_ApplyConfigUpdates(hDevice); + if (res != ADI_SENSE_SUCCESS) + { + ADI_SENSE_LOG_ERROR("Failed to apply device configuration"); + return res; + } + + /* + * Kick off the measurement cycle here + */ + ADI_SENSE_LOG_INFO("Configuration completed, starting measurement cycles"); + utils_runMeasurement(hDevice, bHealthCheckMode); + + /* + * Clean up and exit + */ + res = adi_sense_Close(hDevice); + if (res != ADI_SENSE_SUCCESS) + { + ADI_SENSE_LOG_ERROR("Failed to close device instance"); + return res; + } + + return 0; +}