Javascript wrappers for HTS221 Sensor library

Dependencies:   HTS221

Dependents:   ST_SENSOR_JS

Committer:
akhtar.syedzeeshan@gmail.com
Date:
Wed Jan 17 10:54:19 2018 +0100
Revision:
6:b2c4b0678856
Parent:
5:bbe15d3cac27
Code fixes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 1 /**
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 2 ******************************************************************************
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 3 * @file HTS221_JS.cpp
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 4 * @author ST
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 5 * @version V1.0.0
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 6 * @date 9 October 2017
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 7 * @brief Implementation of an HTS221 Humidity and Temperature sensor for use
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 8 * with Javascript.
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 9 ******************************************************************************
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 10 * @attention
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 11 *
akhtar.syedzeeshan@gmail.com 6:b2c4b0678856 12 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 13 *
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 14 * Redistribution and use in source and binary forms, with or without modification,
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 15 * are permitted provided that the following conditions are met:
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 16 * 1. Redistributions of source code must retain the above copyright notice,
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 17 * this list of conditions and the following disclaimer.
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 19 * this list of conditions and the following disclaimer in the documentation
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 20 * and/or other materials provided with the distribution.
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 22 * may be used to endorse or promote products derived from this software
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 23 * without specific prior written permission.
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 24 *
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 35 *
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 36 ******************************************************************************
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 37 */
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 38
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 39
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 40 /* Includes ------------------------------------------------------------------*/
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 41
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 42 #include "HTS221_JS.h"
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 43
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 44 #include <stdlib.h> /* atoi */
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 45 #include "mbed.h"
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 46
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 47 /* Helper function for printing floats & doubles */
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 48 static char *print_double(char* str, double v, int decimalDigits=2)
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 49 {
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 50 int i = 1;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 51 int intPart, fractPart;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 52 int len;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 53 char *ptr;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 54
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 55 /* prepare decimal digits multiplicator */
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 56 for (;decimalDigits!=0; i*=10, decimalDigits--);
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 57
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 58 /* calculate integer & fractinal parts */
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 59 intPart = (int)v;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 60 fractPart = (int)((v-(double)(int)v)*i);
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 61
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 62 /* fill in integer part */
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 63 sprintf(str, "%i.", intPart);
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 64
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 65 /* prepare fill in of fractional part */
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 66 len = strlen(str);
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 67 ptr = &str[len];
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 68
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 69 /* fill in leading fractional zeros */
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 70 for (i/=10;i>1; i/=10, ptr++) {
akhtar.syedzeeshan@gmail.com 3:df24cbc8aaf0 71 if (fractPart >= i) {
akhtar.syedzeeshan@gmail.com 3:df24cbc8aaf0 72 break;
akhtar.syedzeeshan@gmail.com 3:df24cbc8aaf0 73 }
akhtar.syedzeeshan@gmail.com 3:df24cbc8aaf0 74 *ptr = '0';
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 75 }
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 76
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 77 /* fill in (rest of) fractional part */
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 78 sprintf(ptr, "%i", fractPart);
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 79
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 80 return str;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 81 }
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 82
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 83 /* Class Implementation ------------------------------------------------------*/
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 84
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 85 /** Constructor
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 86 * @brief Initializing the component.
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 87 * @param devI2c object of an helper class which handles the DevI2C peripheral
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 88 */
akhtar.syedzeeshan@gmail.com 4:6043b9511072 89 HTS221_JS::HTS221_JS(DevI2C &devI2c){
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 90 init(devI2c);
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 91 }
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 92
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 93 /** init
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 94 * @brief Initializing the component.
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 95 * @param devI2c object of an helper class which handles the DevI2C peripheral
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 96 */
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 97 void HTS221_JS::init(DevI2C &devI2c){
akhtar.syedzeeshan@gmail.com 4:6043b9511072 98 hum_temp = new HTS221Sensor(&devI2c);
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 99 hum_temp->init(NULL);
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 100 hum_temp->enable();
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 101 }
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 102
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 103 /** Constructor
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 104 * @brief Initializing the component.
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 105 * @param devI2c object of an helper class which handles the DevI2C peripheral
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 106 * @param address
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 107 * @param drdy pin
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 108 */
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 109 HTS221_JS::HTS221_JS(DevI2C &devI2c, uint8_t address, PinName drdy_pin){
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 110 init(devI2c, address, drdy_pin);
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 111 }
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 112
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 113 /** init
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 114 * @brief Initializing the component.
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 115 * @param devI2c object of an helper class which handles the DevI2C peripheral
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 116 * @param address
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 117 * @param drdy pin
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 118 */
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 119 void HTS221_JS::init(DevI2C &devI2c, uint8_t address, PinName drdy_pin){
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 120 hum_temp = new HTS221Sensor(&devI2c, address, drdy_pin);
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 121 hum_temp->init(NULL);
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 122 hum_temp->enable();
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 123 }
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 124
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 125 /** Constructor
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 126 * @brief Initializing the component.
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 127 * @param spi object of an helper class which handles the SPI peripheral
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 128 */
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 129 HTS221_JS::HTS221_JS(SPI &spi){
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 130 init(spi);
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 131 }
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 132
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 133 /** init
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 134 * @brief Initializing the component.
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 135 * @param spi object of an helper class which handles the SPI peripheral
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 136 */
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 137 void HTS221_JS::init(SPI &spi){
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 138 hum_temp = new HTS221Sensor(&spi);
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 139 hum_temp->init(NULL);
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 140 hum_temp->enable();
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 141 }
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 142
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 143 /** Constructor
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 144 * @brief Initializing the component.
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 145 * @param spi object of an helper class which handles the SPI peripheral
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 146 * @param cs pin
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 147 * @param drdy pin
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 148 */
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 149 HTS221_JS::HTS221_JS(SPI &spi, PinName cs_pin, PinName drdy_pin){
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 150 init(spi, cs_pin, drdy_pin);
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 151 }
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 152
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 153 /** init
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 154 * @brief Initializing the component.
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 155 * @param spi object of an helper class which handles the SPI peripheral
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 156 * @param cs pin
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 157 * @param drdy pin
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 158 */
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 159 void HTS221_JS::init(SPI &spi, PinName cs_pin, PinName drdy_pin){
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 160 hum_temp = new HTS221Sensor(&spi, cs_pin, drdy_pin);
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 161 hum_temp->init(NULL);
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 162 hum_temp->enable();
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 163 }
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 164
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 165 /** Destructor
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 166 * @brief Recycle the component.
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 167 * Deletes the Sensor Object
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 168 */
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 169 HTS221_JS::~HTS221_JS(){
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 170 if(hum_temp != NULL){
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 171 delete hum_temp;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 172 }
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 173 }
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 174
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 175 /**
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 176 * @brief Read ID address of HTS221
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 177 * @retval The ID of the Sensor
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 178 */
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 179 uint8_t HTS221_JS::readID(){
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 180 uint8_t result;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 181 hum_temp->read_id(&result);
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 182 return result;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 183 }
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 184
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 185 /**
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 186 * @brief Get the temperature reading from HTS221
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 187 * @retval Temperature value
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 188 */
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 189 float HTS221_JS::get_temperature(){
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 190 float value;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 191 hum_temp->get_temperature(&value);
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 192 return value;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 193 }
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 194
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 195 /**
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 196 * @brief Get the temperature reading from HTS221
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 197 * @retval Temperature value in string
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 198 */
akhtar.syedzeeshan@gmail.com 1:924fb53eb7f8 199 char *HTS221_JS::get_temperature_string(char *buffer){
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 200 float value;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 201 hum_temp->get_temperature(&value);
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 202 print_double(buffer, value);
akhtar.syedzeeshan@gmail.com 1:924fb53eb7f8 203 return buffer;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 204 }
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 205
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 206 /**
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 207 * @brief Get the humidity reading from HTS221
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 208 * @retval Humidity value
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 209 */
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 210 float HTS221_JS::get_humidity(){
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 211 float value;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 212 hum_temp->get_humidity(&value);
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 213 return value;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 214 }
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 215
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 216 /**
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 217 * @brief Get the humidity reading from HTS221
akhtar.syedzeeshan@gmail.com 5:bbe15d3cac27 218 * @retval Humidity value in string
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 219 */
akhtar.syedzeeshan@gmail.com 1:924fb53eb7f8 220 char *HTS221_JS::get_humidity_string(char *buffer){
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 221 float value;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 222 hum_temp->get_humidity(&value);
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 223 print_double(buffer, value);
akhtar.syedzeeshan@gmail.com 1:924fb53eb7f8 224 return buffer;
akhtar.syedzeeshan@gmail.com 0:89911ffe212d 225 }