Javascript wrappers for LPS22HB Sensor library

Dependencies:   LPS22HB

Dependents:   ST_SENSOR_JS

Committer:
akhtar.syedzeeshan@gmail.com
Date:
Wed Oct 11 10:09:09 2017 +0200
Revision:
1:6b7b798e36ae
Parent:
0:c256bbccd0d4
Child:
3:3e19d8808491
Updated Code to fix char * intialization

Who changed what in which revision?

UserRevisionLine numberNew contents of line
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 1 /**
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 2 ******************************************************************************
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 3 * @file LPS22HB_JS.cpp
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 4 * @author ST
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 5 * @version V1.0.0
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 6 * @date 9 October 2017
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 7 * @brief Implementation of an LPS22HB Pressure and Temperature sensor for use
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 8 * with Javascript.
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 9 ******************************************************************************
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 10 * @attention
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 11 *
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 12 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 13 *
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 14 * Redistribution and use in source and binary forms, with or without modification,
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 15 * are permitted provided that the following conditions are met:
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 16 * 1. Redistributions of source code must retain the above copyright notice,
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 17 * this list of conditions and the following disclaimer.
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 19 * this list of conditions and the following disclaimer in the documentation
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 20 * and/or other materials provided with the distribution.
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 22 * may be used to endorse or promote products derived from this software
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 23 * without specific prior written permission.
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 24 *
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 35 *
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 36 ******************************************************************************
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 37 */
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 38
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 39
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 40 /* Includes ------------------------------------------------------------------*/
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 41
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 42 #include "LPS22HB_JS.h"
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 43
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 44 #include <stdlib.h> /* atoi */
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 45 #include "mbed.h"
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 46
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 47 /* Helper function for printing floats & doubles */
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 48 static char *print_double(char* str, double v, int decimalDigits=2)
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 49 {
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 50 int i = 1;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 51 int intPart, fractPart;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 52 int len;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 53 char *ptr;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 54
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 55 /* prepare decimal digits multiplicator */
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 56 for (;decimalDigits!=0; i*=10, decimalDigits--);
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 57
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 58 /* calculate integer & fractinal parts */
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 59 intPart = (int)v;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 60 fractPart = (int)((v-(double)(int)v)*i);
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 61
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 62 /* fill in integer part */
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 63 sprintf(str, "%i.", intPart);
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 64
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 65 /* prepare fill in of fractional part */
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 66 len = strlen(str);
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 67 ptr = &str[len];
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 68
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 69 /* fill in leading fractional zeros */
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 70 for (i/=10;i>1; i/=10, ptr++) {
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 71 if (fractPart >= i) {
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 72 break;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 73 }
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 74 *ptr = '0';
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 75 }
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 76
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 77 /* fill in (rest of) fractional part */
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 78 sprintf(ptr, "%i", fractPart);
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 79
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 80 return str;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 81 }
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 82
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 83 /* Class Implementation ------------------------------------------------------*/
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 84
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 85 /** Constructor
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 86 * @brief Initializing the component.
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 87 * @param i2c object of an helper class which handles the I2C peripheral
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 88 */
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 89 LPS22HB_JS::LPS22HB_JS(DevI2C &i2c){
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 90 press_temp = new LPS22HBSensor(&i2c);
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 91 press_temp->init(NULL);
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 92 press_temp->enable();
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 93 }
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 94
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 95 /** Destructor
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 96 * @brief Recycling the component.
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 97 * Deletes the Sensor Object
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 98 */
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 99 LPS22HB_JS::~LPS22HB_JS(){
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 100 if(press_temp != NULL){
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 101 delete press_temp;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 102 }
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 103 }
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 104
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 105 /**
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 106 * @brief Read ID address of LPS22HB
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 107 * @retval The ID of the Sensor
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 108 */
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 109 uint8_t LPS22HB_JS::readID(){
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 110 uint8_t result;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 111 press_temp->read_id(&result);
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 112 return result;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 113 }
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 114
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 115 /**
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 116 * @brief Get the temperature reading from LPS22HB
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 117 * @retval Temperature value
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 118 */
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 119 float LPS22HB_JS::get_temperature(){
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 120 float value;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 121 press_temp->get_temperature(&value);
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 122 return value;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 123 }
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 124
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 125 /**
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 126 * @brief Get the temperature reading from LPS22HB
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 127 * @retval Temperature value in string form
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 128 */
akhtar.syedzeeshan@gmail.com 1:6b7b798e36ae 129 char *LPS22HB_JS::get_temperature_string(char *buffer){
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 130 float value;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 131 press_temp->get_temperature(&value);
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 132 print_double(buffer, value);
akhtar.syedzeeshan@gmail.com 1:6b7b798e36ae 133 return buffer;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 134 }
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 135
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 136 /**
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 137 * @brief Get the pressure reading from LPS22HB
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 138 * @retval pressure value
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 139 */
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 140 float LPS22HB_JS::get_pressure(){
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 141 float value;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 142 press_temp->get_pressure(&value);
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 143 return value;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 144 }
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 145
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 146
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 147 /**
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 148 * @brief Get the pressure reading from LPS22HB
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 149 * @retval pressure value in string form
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 150 */
akhtar.syedzeeshan@gmail.com 1:6b7b798e36ae 151 char *LPS22HB_JS::get_pressure_string(char *buffer){
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 152 float value;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 153 press_temp->get_pressure(&value);
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 154 print_double(buffer, value);
akhtar.syedzeeshan@gmail.com 1:6b7b798e36ae 155 return buffer;
akhtar.syedzeeshan@gmail.com 0:c256bbccd0d4 156 }