Blame | Last modification | View Log | Download | RSS feed
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 1
1 .cpu cortex-m3
2 .eabi_attribute 20, 1
3 .eabi_attribute 21, 1
4 .eabi_attribute 23, 3
5 .eabi_attribute 24, 1
6 .eabi_attribute 25, 1
7 .eabi_attribute 26, 1
8 .eabi_attribute 30, 1
9 .eabi_attribute 34, 1
10 .eabi_attribute 18, 4
11 .file "bme280.c"
12 .text
13 .Ltext0:
14 .cfi_sections .debug_frame
15 .section .text.fill_filter_settings,"ax",%progbits
16 .align 1
17 .arch armv7-m
18 .syntax unified
19 .thumb
20 .thumb_func
21 .fpu softvfp
23 fill_filter_settings:
24 .LVL0:
25 .LFB16:
26 .file 1 "../libBME280/src/bme280.c"
1:../libBME280/src/bme280.c **** /**
2:../libBME280/src/bme280.c **** * Copyright (c) 2020 Bosch Sensortec GmbH. All rights reserved.
3:../libBME280/src/bme280.c **** *
4:../libBME280/src/bme280.c **** * BSD-3-Clause
5:../libBME280/src/bme280.c **** *
6:../libBME280/src/bme280.c **** * Redistribution and use in source and binary forms, with or without
7:../libBME280/src/bme280.c **** * modification, are permitted provided that the following conditions are met:
8:../libBME280/src/bme280.c **** *
9:../libBME280/src/bme280.c **** * 1. Redistributions of source code must retain the above copyright
10:../libBME280/src/bme280.c **** * notice, this list of conditions and the following disclaimer.
11:../libBME280/src/bme280.c **** *
12:../libBME280/src/bme280.c **** * 2. Redistributions in binary form must reproduce the above copyright
13:../libBME280/src/bme280.c **** * notice, this list of conditions and the following disclaimer in the
14:../libBME280/src/bme280.c **** * documentation and/or other materials provided with the distribution.
15:../libBME280/src/bme280.c **** *
16:../libBME280/src/bme280.c **** * 3. Neither the name of the copyright holder nor the names of its
17:../libBME280/src/bme280.c **** * contributors may be used to endorse or promote products derived from
18:../libBME280/src/bme280.c **** * this software without specific prior written permission.
19:../libBME280/src/bme280.c **** *
20:../libBME280/src/bme280.c **** * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21:../libBME280/src/bme280.c **** * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22:../libBME280/src/bme280.c **** * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23:../libBME280/src/bme280.c **** * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24:../libBME280/src/bme280.c **** * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25:../libBME280/src/bme280.c **** * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26:../libBME280/src/bme280.c **** * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27:../libBME280/src/bme280.c **** * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28:../libBME280/src/bme280.c **** * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
29:../libBME280/src/bme280.c **** * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
30:../libBME280/src/bme280.c **** * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31:../libBME280/src/bme280.c **** * POSSIBILITY OF SUCH DAMAGE.
32:../libBME280/src/bme280.c **** *
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 2
33:../libBME280/src/bme280.c **** * @file bme280.c
34:../libBME280/src/bme280.c **** * @date 2020-03-28
35:../libBME280/src/bme280.c **** * @version v3.5.0
36:../libBME280/src/bme280.c **** *
37:../libBME280/src/bme280.c **** */
38:../libBME280/src/bme280.c ****
39:../libBME280/src/bme280.c **** /*! @file bme280.c
40:../libBME280/src/bme280.c **** * @brief Sensor driver for BME280 sensor
41:../libBME280/src/bme280.c **** */
42:../libBME280/src/bme280.c **** #include "libBME280/bme280.h"
43:../libBME280/src/bme280.c ****
44:../libBME280/src/bme280.c **** /**\name Internal macros */
45:../libBME280/src/bme280.c **** /* To identify osr settings selected by user */
46:../libBME280/src/bme280.c **** #define OVERSAMPLING_SETTINGS UINT8_C(0x07)
47:../libBME280/src/bme280.c ****
48:../libBME280/src/bme280.c **** /* To identify filter and standby settings selected by user */
49:../libBME280/src/bme280.c **** #define FILTER_STANDBY_SETTINGS UINT8_C(0x18)
50:../libBME280/src/bme280.c ****
51:../libBME280/src/bme280.c **** /*!
52:../libBME280/src/bme280.c **** * @brief This internal API puts the device to sleep mode.
53:../libBME280/src/bme280.c **** *
54:../libBME280/src/bme280.c **** * @param[in] dev : Structure instance of bme280_dev.
55:../libBME280/src/bme280.c **** *
56:../libBME280/src/bme280.c **** * @return Result of API execution status.
57:../libBME280/src/bme280.c **** *
58:../libBME280/src/bme280.c **** * @retval 0 -> Success.
59:../libBME280/src/bme280.c **** * @retval > 0 -> Warning.
60:../libBME280/src/bme280.c **** * @retval < 0 -> Fail.
61:../libBME280/src/bme280.c **** *
62:../libBME280/src/bme280.c **** */
63:../libBME280/src/bme280.c **** static int8_t put_device_to_sleep(struct bme280_dev *dev);
64:../libBME280/src/bme280.c ****
65:../libBME280/src/bme280.c **** /*!
66:../libBME280/src/bme280.c **** * @brief This internal API writes the power mode in the sensor.
67:../libBME280/src/bme280.c **** *
68:../libBME280/src/bme280.c **** * @param[in] dev : Structure instance of bme280_dev.
69:../libBME280/src/bme280.c **** * @param[in] sensor_mode : Variable which contains the power mode to be set.
70:../libBME280/src/bme280.c **** *
71:../libBME280/src/bme280.c **** * @return Result of API execution status.
72:../libBME280/src/bme280.c **** *
73:../libBME280/src/bme280.c **** * @retval 0 -> Success.
74:../libBME280/src/bme280.c **** * @retval > 0 -> Warning.
75:../libBME280/src/bme280.c **** * @retval < 0 -> Fail.
76:../libBME280/src/bme280.c **** *
77:../libBME280/src/bme280.c **** */
78:../libBME280/src/bme280.c **** static int8_t write_power_mode(uint8_t sensor_mode, struct bme280_dev *dev);
79:../libBME280/src/bme280.c ****
80:../libBME280/src/bme280.c **** /*!
81:../libBME280/src/bme280.c **** * @brief This internal API is used to validate the device pointer for
82:../libBME280/src/bme280.c **** * null conditions.
83:../libBME280/src/bme280.c **** *
84:../libBME280/src/bme280.c **** * @param[in] dev : Structure instance of bme280_dev.
85:../libBME280/src/bme280.c **** *
86:../libBME280/src/bme280.c **** * @return Result of API execution status
87:../libBME280/src/bme280.c **** *
88:../libBME280/src/bme280.c **** * @retval 0 -> Success.
89:../libBME280/src/bme280.c **** * @retval > 0 -> Warning.
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 3
90:../libBME280/src/bme280.c **** * @retval < 0 -> Fail.
91:../libBME280/src/bme280.c **** *
92:../libBME280/src/bme280.c **** */
93:../libBME280/src/bme280.c **** static int8_t null_ptr_check(const struct bme280_dev *dev);
94:../libBME280/src/bme280.c ****
95:../libBME280/src/bme280.c **** /*!
96:../libBME280/src/bme280.c **** * @brief This internal API interleaves the register address between the
97:../libBME280/src/bme280.c **** * register data buffer for burst write operation.
98:../libBME280/src/bme280.c **** *
99:../libBME280/src/bme280.c **** * @param[in] reg_addr : Contains the register address array.
100:../libBME280/src/bme280.c **** * @param[out] temp_buff : Contains the temporary buffer to store the
101:../libBME280/src/bme280.c **** * register data and register address.
102:../libBME280/src/bme280.c **** * @param[in] reg_data : Contains the register data to be written in the
103:../libBME280/src/bme280.c **** * temporary buffer.
104:../libBME280/src/bme280.c **** * @param[in] len : No of bytes of data to be written for burst write.
105:../libBME280/src/bme280.c **** *
106:../libBME280/src/bme280.c **** */
107:../libBME280/src/bme280.c **** static void interleave_reg_addr(const uint8_t *reg_addr, uint8_t *temp_buff, const uint8_t *reg_dat
108:../libBME280/src/bme280.c ****
109:../libBME280/src/bme280.c **** /*!
110:../libBME280/src/bme280.c **** * @brief This internal API reads the calibration data from the sensor, parse
111:../libBME280/src/bme280.c **** * it and store in the device structure.
112:../libBME280/src/bme280.c **** *
113:../libBME280/src/bme280.c **** * @param[in] dev : Structure instance of bme280_dev.
114:../libBME280/src/bme280.c **** *
115:../libBME280/src/bme280.c **** * @return Result of API execution status
116:../libBME280/src/bme280.c **** *
117:../libBME280/src/bme280.c **** * @retval 0 -> Success.
118:../libBME280/src/bme280.c **** * @retval > 0 -> Warning.
119:../libBME280/src/bme280.c **** * @retval < 0 -> Fail.
120:../libBME280/src/bme280.c **** *
121:../libBME280/src/bme280.c **** */
122:../libBME280/src/bme280.c **** static int8_t get_calib_data(struct bme280_dev *dev);
123:../libBME280/src/bme280.c ****
124:../libBME280/src/bme280.c **** /*!
125:../libBME280/src/bme280.c **** * @brief This internal API is used to parse the temperature and
126:../libBME280/src/bme280.c **** * pressure calibration data and store it in the device structure.
127:../libBME280/src/bme280.c **** *
128:../libBME280/src/bme280.c **** * @param[out] dev : Structure instance of bme280_dev to store the calib data.
129:../libBME280/src/bme280.c **** * @param[in] reg_data : Contains the calibration data to be parsed.
130:../libBME280/src/bme280.c **** *
131:../libBME280/src/bme280.c **** */
132:../libBME280/src/bme280.c **** static void parse_temp_press_calib_data(const uint8_t *reg_data, struct bme280_dev *dev);
133:../libBME280/src/bme280.c ****
134:../libBME280/src/bme280.c **** /*!
135:../libBME280/src/bme280.c **** * @brief This internal API is used to parse the humidity calibration data
136:../libBME280/src/bme280.c **** * and store it in device structure.
137:../libBME280/src/bme280.c **** *
138:../libBME280/src/bme280.c **** * @param[out] dev : Structure instance of bme280_dev to store the calib data.
139:../libBME280/src/bme280.c **** * @param[in] reg_data : Contains calibration data to be parsed.
140:../libBME280/src/bme280.c **** *
141:../libBME280/src/bme280.c **** */
142:../libBME280/src/bme280.c **** static void parse_humidity_calib_data(const uint8_t *reg_data, struct bme280_dev *dev);
143:../libBME280/src/bme280.c ****
144:../libBME280/src/bme280.c **** #ifdef BME280_FLOAT_ENABLE
145:../libBME280/src/bme280.c ****
146:../libBME280/src/bme280.c **** /*!
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 4
147:../libBME280/src/bme280.c **** * @brief This internal API is used to compensate the raw pressure data and
148:../libBME280/src/bme280.c **** * return the compensated pressure data in double data type.
149:../libBME280/src/bme280.c **** *
150:../libBME280/src/bme280.c **** * @param[in] uncomp_data : Contains the uncompensated pressure data.
151:../libBME280/src/bme280.c **** * @param[in] calib_data : Pointer to the calibration data structure.
152:../libBME280/src/bme280.c **** *
153:../libBME280/src/bme280.c **** * @return Compensated pressure data in double.
154:../libBME280/src/bme280.c **** *
155:../libBME280/src/bme280.c **** */
156:../libBME280/src/bme280.c **** static double compensate_pressure(const struct bme280_uncomp_data *uncomp_data,
157:../libBME280/src/bme280.c **** const struct bme280_calib_data *calib_data);
158:../libBME280/src/bme280.c ****
159:../libBME280/src/bme280.c **** /*!
160:../libBME280/src/bme280.c **** * @brief This internal API is used to compensate the raw humidity data and
161:../libBME280/src/bme280.c **** * return the compensated humidity data in double data type.
162:../libBME280/src/bme280.c **** *
163:../libBME280/src/bme280.c **** * @param[in] uncomp_data : Contains the uncompensated humidity data.
164:../libBME280/src/bme280.c **** * @param[in] calib_data : Pointer to the calibration data structure.
165:../libBME280/src/bme280.c **** *
166:../libBME280/src/bme280.c **** * @return Compensated humidity data in double.
167:../libBME280/src/bme280.c **** *
168:../libBME280/src/bme280.c **** */
169:../libBME280/src/bme280.c **** static double compensate_humidity(const struct bme280_uncomp_data *uncomp_data,
170:../libBME280/src/bme280.c **** const struct bme280_calib_data *calib_data);
171:../libBME280/src/bme280.c ****
172:../libBME280/src/bme280.c **** /*!
173:../libBME280/src/bme280.c **** * @brief This internal API is used to compensate the raw temperature data and
174:../libBME280/src/bme280.c **** * return the compensated temperature data in double data type.
175:../libBME280/src/bme280.c **** *
176:../libBME280/src/bme280.c **** * @param[in] uncomp_data : Contains the uncompensated temperature data.
177:../libBME280/src/bme280.c **** * @param[in] calib_data : Pointer to calibration data structure.
178:../libBME280/src/bme280.c **** *
179:../libBME280/src/bme280.c **** * @return Compensated temperature data in double.
180:../libBME280/src/bme280.c **** *
181:../libBME280/src/bme280.c **** */
182:../libBME280/src/bme280.c **** static double compensate_temperature(const struct bme280_uncomp_data *uncomp_data,
183:../libBME280/src/bme280.c **** struct bme280_calib_data *calib_data);
184:../libBME280/src/bme280.c ****
185:../libBME280/src/bme280.c **** #else
186:../libBME280/src/bme280.c ****
187:../libBME280/src/bme280.c **** /*!
188:../libBME280/src/bme280.c **** * @brief This internal API is used to compensate the raw temperature data and
189:../libBME280/src/bme280.c **** * return the compensated temperature data in integer data type.
190:../libBME280/src/bme280.c **** *
191:../libBME280/src/bme280.c **** * @param[in] uncomp_data : Contains the uncompensated temperature data.
192:../libBME280/src/bme280.c **** * @param[in] calib_data : Pointer to calibration data structure.
193:../libBME280/src/bme280.c **** *
194:../libBME280/src/bme280.c **** * @return Compensated temperature data in integer.
195:../libBME280/src/bme280.c **** *
196:../libBME280/src/bme280.c **** */
197:../libBME280/src/bme280.c **** static int32_t compensate_temperature(const struct bme280_uncomp_data *uncomp_data,
198:../libBME280/src/bme280.c **** struct bme280_calib_data *calib_data);
199:../libBME280/src/bme280.c ****
200:../libBME280/src/bme280.c **** /*!
201:../libBME280/src/bme280.c **** * @brief This internal API is used to compensate the raw pressure data and
202:../libBME280/src/bme280.c **** * return the compensated pressure data in integer data type.
203:../libBME280/src/bme280.c **** *
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 5
204:../libBME280/src/bme280.c **** * @param[in] uncomp_data : Contains the uncompensated pressure data.
205:../libBME280/src/bme280.c **** * @param[in] calib_data : Pointer to the calibration data structure.
206:../libBME280/src/bme280.c **** *
207:../libBME280/src/bme280.c **** * @return Compensated pressure data in integer.
208:../libBME280/src/bme280.c **** *
209:../libBME280/src/bme280.c **** */
210:../libBME280/src/bme280.c **** static uint32_t compensate_pressure(const struct bme280_uncomp_data *uncomp_data,
211:../libBME280/src/bme280.c **** const struct bme280_calib_data *calib_data);
212:../libBME280/src/bme280.c ****
213:../libBME280/src/bme280.c **** /*!
214:../libBME280/src/bme280.c **** * @brief This internal API is used to compensate the raw humidity data and
215:../libBME280/src/bme280.c **** * return the compensated humidity data in integer data type.
216:../libBME280/src/bme280.c **** *
217:../libBME280/src/bme280.c **** * @param[in] uncomp_data : Contains the uncompensated humidity data.
218:../libBME280/src/bme280.c **** * @param[in] calib_data : Pointer to the calibration data structure.
219:../libBME280/src/bme280.c **** *
220:../libBME280/src/bme280.c **** * @return Compensated humidity data in integer.
221:../libBME280/src/bme280.c **** *
222:../libBME280/src/bme280.c **** */
223:../libBME280/src/bme280.c **** static uint32_t compensate_humidity(const struct bme280_uncomp_data *uncomp_data,
224:../libBME280/src/bme280.c **** const struct bme280_calib_data *calib_data);
225:../libBME280/src/bme280.c ****
226:../libBME280/src/bme280.c **** #endif
227:../libBME280/src/bme280.c ****
228:../libBME280/src/bme280.c **** /*!
229:../libBME280/src/bme280.c **** * @brief This internal API is used to identify the settings which the user
230:../libBME280/src/bme280.c **** * wants to modify in the sensor.
231:../libBME280/src/bme280.c **** *
232:../libBME280/src/bme280.c **** * @param[in] sub_settings : Contains the settings subset to identify particular
233:../libBME280/src/bme280.c **** * group of settings which the user is interested to change.
234:../libBME280/src/bme280.c **** * @param[in] desired_settings : Contains the user specified settings.
235:../libBME280/src/bme280.c **** *
236:../libBME280/src/bme280.c **** * @return Indicates whether user is interested to modify the settings which
237:../libBME280/src/bme280.c **** * are related to sub_settings.
238:../libBME280/src/bme280.c **** * @return True -> User wants to modify this group of settings
239:../libBME280/src/bme280.c **** * @return False -> User does not want to modify this group of settings
240:../libBME280/src/bme280.c **** *
241:../libBME280/src/bme280.c **** */
242:../libBME280/src/bme280.c **** static uint8_t are_settings_changed(uint8_t sub_settings, uint8_t desired_settings);
243:../libBME280/src/bme280.c ****
244:../libBME280/src/bme280.c **** /*!
245:../libBME280/src/bme280.c **** * @brief This API sets the humidity over sampling settings of the sensor.
246:../libBME280/src/bme280.c **** *
247:../libBME280/src/bme280.c **** * @param[in] dev : Structure instance of bme280_dev.
248:../libBME280/src/bme280.c **** * @param[in] settings : Pointer variable which contains the settings to
249:../libBME280/src/bme280.c **** * be set in the sensor.
250:../libBME280/src/bme280.c **** *
251:../libBME280/src/bme280.c **** * @return Result of API execution status
252:../libBME280/src/bme280.c **** *
253:../libBME280/src/bme280.c **** * @retval 0 -> Success.
254:../libBME280/src/bme280.c **** * @retval > 0 -> Warning.
255:../libBME280/src/bme280.c **** * @retval < 0 -> Fail.
256:../libBME280/src/bme280.c **** *
257:../libBME280/src/bme280.c **** */
258:../libBME280/src/bme280.c **** static int8_t set_osr_humidity_settings(const struct bme280_settings *settings, struct bme280_dev *
259:../libBME280/src/bme280.c ****
260:../libBME280/src/bme280.c **** /*!
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 6
261:../libBME280/src/bme280.c **** * @brief This internal API sets the oversampling settings for pressure,
262:../libBME280/src/bme280.c **** * temperature and humidity in the sensor.
263:../libBME280/src/bme280.c **** *
264:../libBME280/src/bme280.c **** * @param[in] desired_settings : Variable used to select the settings which
265:../libBME280/src/bme280.c **** * are to be set.
266:../libBME280/src/bme280.c **** * @param[in] settings : Pointer variable which contains the settings to
267:../libBME280/src/bme280.c **** * be set in the sensor.
268:../libBME280/src/bme280.c **** * @param[in] dev : Structure instance of bme280_dev.
269:../libBME280/src/bme280.c **** *
270:../libBME280/src/bme280.c **** * @return Result of API execution status
271:../libBME280/src/bme280.c **** *
272:../libBME280/src/bme280.c **** * @retval 0 -> Success.
273:../libBME280/src/bme280.c **** * @retval > 0 -> Warning.
274:../libBME280/src/bme280.c **** * @retval < 0 -> Fail.
275:../libBME280/src/bme280.c **** *
276:../libBME280/src/bme280.c **** */
277:../libBME280/src/bme280.c **** static int8_t set_osr_settings(uint8_t desired_settings, const struct bme280_settings *settings,
278:../libBME280/src/bme280.c **** struct bme280_dev *dev);
279:../libBME280/src/bme280.c ****
280:../libBME280/src/bme280.c **** /*!
281:../libBME280/src/bme280.c **** * @brief This API sets the pressure and/or temperature oversampling settings
282:../libBME280/src/bme280.c **** * in the sensor according to the settings selected by the user.
283:../libBME280/src/bme280.c **** *
284:../libBME280/src/bme280.c **** * @param[in] dev : Structure instance of bme280_dev.
285:../libBME280/src/bme280.c **** * @param[in] desired_settings: variable to select the pressure and/or
286:../libBME280/src/bme280.c **** * temperature oversampling settings.
287:../libBME280/src/bme280.c **** * @param[in] settings : Pointer variable which contains the settings to
288:../libBME280/src/bme280.c **** * be set in the sensor.
289:../libBME280/src/bme280.c **** *
290:../libBME280/src/bme280.c **** * @return Result of API execution status
291:../libBME280/src/bme280.c **** *
292:../libBME280/src/bme280.c **** * @retval 0 -> Success.
293:../libBME280/src/bme280.c **** * @retval > 0 -> Warning.
294:../libBME280/src/bme280.c **** * @retval < 0 -> Fail.
295:../libBME280/src/bme280.c **** *
296:../libBME280/src/bme280.c **** */
297:../libBME280/src/bme280.c **** static int8_t set_osr_press_temp_settings(uint8_t desired_settings,
298:../libBME280/src/bme280.c **** const struct bme280_settings *settings,
299:../libBME280/src/bme280.c **** struct bme280_dev *dev);
300:../libBME280/src/bme280.c ****
301:../libBME280/src/bme280.c **** /*!
302:../libBME280/src/bme280.c **** * @brief This internal API fills the pressure oversampling settings provided by
303:../libBME280/src/bme280.c **** * the user in the data buffer so as to write in the sensor.
304:../libBME280/src/bme280.c **** *
305:../libBME280/src/bme280.c **** * @param[in] settings : Pointer variable which contains the settings to
306:../libBME280/src/bme280.c **** * be set in the sensor.
307:../libBME280/src/bme280.c **** * @param[out] reg_data : Variable which is filled according to the pressure
308:../libBME280/src/bme280.c **** * oversampling data provided by the user.
309:../libBME280/src/bme280.c **** *
310:../libBME280/src/bme280.c **** */
311:../libBME280/src/bme280.c **** static void fill_osr_press_settings(uint8_t *reg_data, const struct bme280_settings *settings);
312:../libBME280/src/bme280.c ****
313:../libBME280/src/bme280.c **** /*!
314:../libBME280/src/bme280.c **** * @brief This internal API fills the temperature oversampling settings provided
315:../libBME280/src/bme280.c **** * by the user in the data buffer so as to write in the sensor.
316:../libBME280/src/bme280.c **** *
317:../libBME280/src/bme280.c **** * @param[in] settings : Pointer variable which contains the settings to
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 7
318:../libBME280/src/bme280.c **** * be set in the sensor.
319:../libBME280/src/bme280.c **** * @param[out] reg_data : Variable which is filled according to the temperature
320:../libBME280/src/bme280.c **** * oversampling data provided by the user.
321:../libBME280/src/bme280.c **** *
322:../libBME280/src/bme280.c **** */
323:../libBME280/src/bme280.c **** static void fill_osr_temp_settings(uint8_t *reg_data, const struct bme280_settings *settings);
324:../libBME280/src/bme280.c ****
325:../libBME280/src/bme280.c **** /*!
326:../libBME280/src/bme280.c **** * @brief This internal API sets the filter and/or standby duration settings
327:../libBME280/src/bme280.c **** * in the sensor according to the settings selected by the user.
328:../libBME280/src/bme280.c **** *
329:../libBME280/src/bme280.c **** * @param[in] dev : Structure instance of bme280_dev.
330:../libBME280/src/bme280.c **** * @param[in] settings : Pointer variable which contains the settings to
331:../libBME280/src/bme280.c **** * be set in the sensor.
332:../libBME280/src/bme280.c **** * @param[in] settings : Structure instance of bme280_settings.
333:../libBME280/src/bme280.c **** *
334:../libBME280/src/bme280.c **** * @return Result of API execution status
335:../libBME280/src/bme280.c **** *
336:../libBME280/src/bme280.c **** * @retval 0 -> Success.
337:../libBME280/src/bme280.c **** * @retval > 0 -> Warning.
338:../libBME280/src/bme280.c **** * @retval < 0 -> Fail.
339:../libBME280/src/bme280.c **** *
340:../libBME280/src/bme280.c **** */
341:../libBME280/src/bme280.c **** static int8_t set_filter_standby_settings(uint8_t desired_settings,
342:../libBME280/src/bme280.c **** const struct bme280_settings *settings,
343:../libBME280/src/bme280.c **** struct bme280_dev *dev);
344:../libBME280/src/bme280.c ****
345:../libBME280/src/bme280.c **** /*!
346:../libBME280/src/bme280.c **** * @brief This internal API fills the filter settings provided by the user
347:../libBME280/src/bme280.c **** * in the data buffer so as to write in the sensor.
348:../libBME280/src/bme280.c **** *
349:../libBME280/src/bme280.c **** * @param[in] settings : Pointer variable which contains the settings to
350:../libBME280/src/bme280.c **** * be set in the sensor.
351:../libBME280/src/bme280.c **** * @param[out] reg_data : Variable which is filled according to the filter
352:../libBME280/src/bme280.c **** * settings data provided by the user.
353:../libBME280/src/bme280.c **** *
354:../libBME280/src/bme280.c **** */
355:../libBME280/src/bme280.c **** static void fill_filter_settings(uint8_t *reg_data, const struct bme280_settings *settings);
356:../libBME280/src/bme280.c ****
357:../libBME280/src/bme280.c **** /*!
358:../libBME280/src/bme280.c **** * @brief This internal API fills the standby duration settings provided by the
359:../libBME280/src/bme280.c **** * user in the data buffer so as to write in the sensor.
360:../libBME280/src/bme280.c **** *
361:../libBME280/src/bme280.c **** * @param[in] settings : Pointer variable which contains the settings to
362:../libBME280/src/bme280.c **** * be set in the sensor.
363:../libBME280/src/bme280.c **** * @param[out] reg_data : Variable which is filled according to the standby
364:../libBME280/src/bme280.c **** * settings data provided by the user.
365:../libBME280/src/bme280.c **** *
366:../libBME280/src/bme280.c **** */
367:../libBME280/src/bme280.c **** static void fill_standby_settings(uint8_t *reg_data, const struct bme280_settings *settings);
368:../libBME280/src/bme280.c ****
369:../libBME280/src/bme280.c **** /*!
370:../libBME280/src/bme280.c **** * @brief This internal API parse the oversampling(pressure, temperature
371:../libBME280/src/bme280.c **** * and humidity), filter and standby duration settings and store in the
372:../libBME280/src/bme280.c **** * device structure.
373:../libBME280/src/bme280.c **** *
374:../libBME280/src/bme280.c **** * @param[in] settings : Pointer variable which contains the settings to
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 8
375:../libBME280/src/bme280.c **** * be get in the sensor.
376:../libBME280/src/bme280.c **** * @param[in] reg_data : Register data to be parsed.
377:../libBME280/src/bme280.c **** *
378:../libBME280/src/bme280.c **** */
379:../libBME280/src/bme280.c **** static void parse_device_settings(const uint8_t *reg_data, struct bme280_settings *settings);
380:../libBME280/src/bme280.c ****
381:../libBME280/src/bme280.c **** /*!
382:../libBME280/src/bme280.c **** * @brief This internal API reloads the already existing device settings in the
383:../libBME280/src/bme280.c **** * sensor after soft reset.
384:../libBME280/src/bme280.c **** *
385:../libBME280/src/bme280.c **** * @param[in] dev : Structure instance of bme280_dev.
386:../libBME280/src/bme280.c **** * @param[in] settings : Pointer variable which contains the settings to
387:../libBME280/src/bme280.c **** * be set in the sensor.
388:../libBME280/src/bme280.c **** *
389:../libBME280/src/bme280.c **** * @return Result of API execution status
390:../libBME280/src/bme280.c **** *
391:../libBME280/src/bme280.c **** * @retval 0 -> Success.
392:../libBME280/src/bme280.c **** * @retval > 0 -> Warning.
393:../libBME280/src/bme280.c **** * @retval < 0 -> Fail.
394:../libBME280/src/bme280.c **** *
395:../libBME280/src/bme280.c **** */
396:../libBME280/src/bme280.c **** static int8_t reload_device_settings(const struct bme280_settings *settings, struct bme280_dev *dev
397:../libBME280/src/bme280.c ****
398:../libBME280/src/bme280.c **** /****************** Global Function Definitions *******************************/
399:../libBME280/src/bme280.c ****
400:../libBME280/src/bme280.c **** /*!
401:../libBME280/src/bme280.c **** * @brief This API is the entry point.
402:../libBME280/src/bme280.c **** * It reads the chip-id and calibration data from the sensor.
403:../libBME280/src/bme280.c **** */
404:../libBME280/src/bme280.c **** int8_t bme280_init(struct bme280_dev *dev)
405:../libBME280/src/bme280.c **** {
406:../libBME280/src/bme280.c **** int8_t rslt;
407:../libBME280/src/bme280.c ****
408:../libBME280/src/bme280.c **** /* chip id read try count */
409:../libBME280/src/bme280.c **** uint8_t try_count = 5;
410:../libBME280/src/bme280.c **** uint8_t chip_id = 0;
411:../libBME280/src/bme280.c ****
412:../libBME280/src/bme280.c **** /* Check for null pointer in the device structure*/
413:../libBME280/src/bme280.c **** rslt = null_ptr_check(dev);
414:../libBME280/src/bme280.c ****
415:../libBME280/src/bme280.c **** /* Proceed if null check is fine */
416:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
417:../libBME280/src/bme280.c **** {
418:../libBME280/src/bme280.c **** while (try_count)
419:../libBME280/src/bme280.c **** {
420:../libBME280/src/bme280.c **** /* Read the chip-id of bme280 sensor */
421:../libBME280/src/bme280.c **** rslt = bme280_get_regs(BME280_CHIP_ID_ADDR, &chip_id, 1, dev);
422:../libBME280/src/bme280.c ****
423:../libBME280/src/bme280.c **** /* Check for chip id validity */
424:../libBME280/src/bme280.c **** if ((rslt == BME280_OK) && (chip_id == BME280_CHIP_ID))
425:../libBME280/src/bme280.c **** {
426:../libBME280/src/bme280.c **** dev->chip_id = chip_id;
427:../libBME280/src/bme280.c ****
428:../libBME280/src/bme280.c **** /* Reset the sensor */
429:../libBME280/src/bme280.c **** rslt = bme280_soft_reset(dev);
430:../libBME280/src/bme280.c ****
431:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 9
432:../libBME280/src/bme280.c **** {
433:../libBME280/src/bme280.c **** /* Read the calibration data */
434:../libBME280/src/bme280.c **** rslt = get_calib_data(dev);
435:../libBME280/src/bme280.c **** }
436:../libBME280/src/bme280.c ****
437:../libBME280/src/bme280.c **** break;
438:../libBME280/src/bme280.c **** }
439:../libBME280/src/bme280.c ****
440:../libBME280/src/bme280.c **** /* Wait for 1 ms */
441:../libBME280/src/bme280.c **** dev->delay_us(1000, dev->intf_ptr);
442:../libBME280/src/bme280.c **** --try_count;
443:../libBME280/src/bme280.c **** }
444:../libBME280/src/bme280.c ****
445:../libBME280/src/bme280.c **** /* Chip id check failed */
446:../libBME280/src/bme280.c **** if (!try_count)
447:../libBME280/src/bme280.c **** {
448:../libBME280/src/bme280.c **** rslt = BME280_E_DEV_NOT_FOUND;
449:../libBME280/src/bme280.c **** }
450:../libBME280/src/bme280.c **** }
451:../libBME280/src/bme280.c ****
452:../libBME280/src/bme280.c **** return rslt;
453:../libBME280/src/bme280.c **** }
454:../libBME280/src/bme280.c ****
455:../libBME280/src/bme280.c **** /*!
456:../libBME280/src/bme280.c **** * @brief This API reads the data from the given register address of the sensor.
457:../libBME280/src/bme280.c **** */
458:../libBME280/src/bme280.c **** int8_t bme280_get_regs(uint8_t reg_addr, uint8_t *reg_data, uint16_t len, struct bme280_dev *dev)
459:../libBME280/src/bme280.c **** {
460:../libBME280/src/bme280.c **** int8_t rslt;
461:../libBME280/src/bme280.c ****
462:../libBME280/src/bme280.c **** /* Check for null pointer in the device structure*/
463:../libBME280/src/bme280.c **** rslt = null_ptr_check(dev);
464:../libBME280/src/bme280.c ****
465:../libBME280/src/bme280.c **** /* Proceed if null check is fine */
466:../libBME280/src/bme280.c **** if ((rslt == BME280_OK) && (reg_data != NULL))
467:../libBME280/src/bme280.c **** {
468:../libBME280/src/bme280.c **** /* If interface selected is SPI */
469:../libBME280/src/bme280.c **** if (dev->intf != BME280_I2C_INTF)
470:../libBME280/src/bme280.c **** {
471:../libBME280/src/bme280.c **** reg_addr = reg_addr | 0x80;
472:../libBME280/src/bme280.c **** }
473:../libBME280/src/bme280.c ****
474:../libBME280/src/bme280.c **** /* Read the data */
475:../libBME280/src/bme280.c **** dev->intf_rslt = dev->read(reg_addr, reg_data, len, dev->intf_ptr);
476:../libBME280/src/bme280.c ****
477:../libBME280/src/bme280.c **** /* Check for communication error */
478:../libBME280/src/bme280.c **** if (dev->intf_rslt != BME280_INTF_RET_SUCCESS)
479:../libBME280/src/bme280.c **** {
480:../libBME280/src/bme280.c **** rslt = BME280_E_COMM_FAIL;
481:../libBME280/src/bme280.c **** }
482:../libBME280/src/bme280.c **** }
483:../libBME280/src/bme280.c **** else
484:../libBME280/src/bme280.c **** {
485:../libBME280/src/bme280.c **** rslt = BME280_E_NULL_PTR;
486:../libBME280/src/bme280.c **** }
487:../libBME280/src/bme280.c ****
488:../libBME280/src/bme280.c **** return rslt;
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 10
489:../libBME280/src/bme280.c **** }
490:../libBME280/src/bme280.c ****
491:../libBME280/src/bme280.c **** /*!
492:../libBME280/src/bme280.c **** * @brief This API writes the given data to the register address
493:../libBME280/src/bme280.c **** * of the sensor.
494:../libBME280/src/bme280.c **** */
495:../libBME280/src/bme280.c **** int8_t bme280_set_regs(uint8_t *reg_addr, const uint8_t *reg_data, uint8_t len, struct bme280_dev *
496:../libBME280/src/bme280.c **** {
497:../libBME280/src/bme280.c **** int8_t rslt;
498:../libBME280/src/bme280.c **** uint8_t temp_buff[20]; /* Typically not to write more than 10 registers */
499:../libBME280/src/bme280.c ****
500:../libBME280/src/bme280.c **** if (len > 10)
501:../libBME280/src/bme280.c **** {
502:../libBME280/src/bme280.c **** len = 10;
503:../libBME280/src/bme280.c **** }
504:../libBME280/src/bme280.c ****
505:../libBME280/src/bme280.c **** uint16_t temp_len;
506:../libBME280/src/bme280.c **** uint8_t reg_addr_cnt;
507:../libBME280/src/bme280.c ****
508:../libBME280/src/bme280.c **** /* Check for null pointer in the device structure*/
509:../libBME280/src/bme280.c **** rslt = null_ptr_check(dev);
510:../libBME280/src/bme280.c ****
511:../libBME280/src/bme280.c **** /* Check for arguments validity */
512:../libBME280/src/bme280.c **** if ((rslt == BME280_OK) && (reg_addr != NULL) && (reg_data != NULL))
513:../libBME280/src/bme280.c **** {
514:../libBME280/src/bme280.c **** if (len != 0)
515:../libBME280/src/bme280.c **** {
516:../libBME280/src/bme280.c **** temp_buff[0] = reg_data[0];
517:../libBME280/src/bme280.c ****
518:../libBME280/src/bme280.c **** /* If interface selected is SPI */
519:../libBME280/src/bme280.c **** if (dev->intf != BME280_I2C_INTF)
520:../libBME280/src/bme280.c **** {
521:../libBME280/src/bme280.c **** for (reg_addr_cnt = 0; reg_addr_cnt < len; reg_addr_cnt++)
522:../libBME280/src/bme280.c **** {
523:../libBME280/src/bme280.c **** reg_addr[reg_addr_cnt] = reg_addr[reg_addr_cnt] & 0x7F;
524:../libBME280/src/bme280.c **** }
525:../libBME280/src/bme280.c **** }
526:../libBME280/src/bme280.c ****
527:../libBME280/src/bme280.c **** /* Burst write mode */
528:../libBME280/src/bme280.c **** if (len > 1)
529:../libBME280/src/bme280.c **** {
530:../libBME280/src/bme280.c **** /* Interleave register address w.r.t data for
531:../libBME280/src/bme280.c **** * burst write
532:../libBME280/src/bme280.c **** */
533:../libBME280/src/bme280.c **** interleave_reg_addr(reg_addr, temp_buff, reg_data, len);
534:../libBME280/src/bme280.c **** temp_len = ((len * 2) - 1);
535:../libBME280/src/bme280.c **** }
536:../libBME280/src/bme280.c **** else
537:../libBME280/src/bme280.c **** {
538:../libBME280/src/bme280.c **** temp_len = len;
539:../libBME280/src/bme280.c **** }
540:../libBME280/src/bme280.c ****
541:../libBME280/src/bme280.c **** dev->intf_rslt = dev->write(reg_addr[0], temp_buff, temp_len, dev->intf_ptr);
542:../libBME280/src/bme280.c ****
543:../libBME280/src/bme280.c **** /* Check for communication error */
544:../libBME280/src/bme280.c **** if (dev->intf_rslt != BME280_INTF_RET_SUCCESS)
545:../libBME280/src/bme280.c **** {
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 11
546:../libBME280/src/bme280.c **** rslt = BME280_E_COMM_FAIL;
547:../libBME280/src/bme280.c **** }
548:../libBME280/src/bme280.c **** }
549:../libBME280/src/bme280.c **** else
550:../libBME280/src/bme280.c **** {
551:../libBME280/src/bme280.c **** rslt = BME280_E_INVALID_LEN;
552:../libBME280/src/bme280.c **** }
553:../libBME280/src/bme280.c **** }
554:../libBME280/src/bme280.c **** else
555:../libBME280/src/bme280.c **** {
556:../libBME280/src/bme280.c **** rslt = BME280_E_NULL_PTR;
557:../libBME280/src/bme280.c **** }
558:../libBME280/src/bme280.c ****
559:../libBME280/src/bme280.c **** return rslt;
560:../libBME280/src/bme280.c **** }
561:../libBME280/src/bme280.c ****
562:../libBME280/src/bme280.c **** /*!
563:../libBME280/src/bme280.c **** * @brief This API sets the oversampling, filter and standby duration
564:../libBME280/src/bme280.c **** * (normal mode) settings in the sensor.
565:../libBME280/src/bme280.c **** */
566:../libBME280/src/bme280.c **** int8_t bme280_set_sensor_settings(uint8_t desired_settings, struct bme280_dev *dev)
567:../libBME280/src/bme280.c **** {
568:../libBME280/src/bme280.c **** int8_t rslt;
569:../libBME280/src/bme280.c **** uint8_t sensor_mode;
570:../libBME280/src/bme280.c ****
571:../libBME280/src/bme280.c **** /* Check for null pointer in the device structure*/
572:../libBME280/src/bme280.c **** rslt = null_ptr_check(dev);
573:../libBME280/src/bme280.c ****
574:../libBME280/src/bme280.c **** /* Proceed if null check is fine */
575:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
576:../libBME280/src/bme280.c **** {
577:../libBME280/src/bme280.c **** rslt = bme280_get_sensor_mode(&sensor_mode, dev);
578:../libBME280/src/bme280.c ****
579:../libBME280/src/bme280.c **** if ((rslt == BME280_OK) && (sensor_mode != BME280_SLEEP_MODE))
580:../libBME280/src/bme280.c **** {
581:../libBME280/src/bme280.c **** rslt = put_device_to_sleep(dev);
582:../libBME280/src/bme280.c **** }
583:../libBME280/src/bme280.c ****
584:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
585:../libBME280/src/bme280.c **** {
586:../libBME280/src/bme280.c **** /* Check if user wants to change oversampling
587:../libBME280/src/bme280.c **** * settings
588:../libBME280/src/bme280.c **** */
589:../libBME280/src/bme280.c **** if (are_settings_changed(OVERSAMPLING_SETTINGS, desired_settings))
590:../libBME280/src/bme280.c **** {
591:../libBME280/src/bme280.c **** rslt = set_osr_settings(desired_settings, &dev->settings, dev);
592:../libBME280/src/bme280.c **** }
593:../libBME280/src/bme280.c ****
594:../libBME280/src/bme280.c **** /* Check if user wants to change filter and/or
595:../libBME280/src/bme280.c **** * standby settings
596:../libBME280/src/bme280.c **** */
597:../libBME280/src/bme280.c **** if ((rslt == BME280_OK) && are_settings_changed(FILTER_STANDBY_SETTINGS, desired_settin
598:../libBME280/src/bme280.c **** {
599:../libBME280/src/bme280.c **** rslt = set_filter_standby_settings(desired_settings, &dev->settings, dev);
600:../libBME280/src/bme280.c **** }
601:../libBME280/src/bme280.c **** }
602:../libBME280/src/bme280.c **** }
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 12
603:../libBME280/src/bme280.c ****
604:../libBME280/src/bme280.c **** return rslt;
605:../libBME280/src/bme280.c **** }
606:../libBME280/src/bme280.c ****
607:../libBME280/src/bme280.c **** /*!
608:../libBME280/src/bme280.c **** * @brief This API gets the oversampling, filter and standby duration
609:../libBME280/src/bme280.c **** * (normal mode) settings from the sensor.
610:../libBME280/src/bme280.c **** */
611:../libBME280/src/bme280.c **** int8_t bme280_get_sensor_settings(struct bme280_dev *dev)
612:../libBME280/src/bme280.c **** {
613:../libBME280/src/bme280.c **** int8_t rslt;
614:../libBME280/src/bme280.c **** uint8_t reg_data[4];
615:../libBME280/src/bme280.c ****
616:../libBME280/src/bme280.c **** /* Check for null pointer in the device structure*/
617:../libBME280/src/bme280.c **** rslt = null_ptr_check(dev);
618:../libBME280/src/bme280.c ****
619:../libBME280/src/bme280.c **** /* Proceed if null check is fine */
620:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
621:../libBME280/src/bme280.c **** {
622:../libBME280/src/bme280.c **** rslt = bme280_get_regs(BME280_CTRL_HUM_ADDR, reg_data, 4, dev);
623:../libBME280/src/bme280.c ****
624:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
625:../libBME280/src/bme280.c **** {
626:../libBME280/src/bme280.c **** parse_device_settings(reg_data, &dev->settings);
627:../libBME280/src/bme280.c **** }
628:../libBME280/src/bme280.c **** }
629:../libBME280/src/bme280.c ****
630:../libBME280/src/bme280.c **** return rslt;
631:../libBME280/src/bme280.c **** }
632:../libBME280/src/bme280.c ****
633:../libBME280/src/bme280.c **** /*!
634:../libBME280/src/bme280.c **** * @brief This API sets the power mode of the sensor.
635:../libBME280/src/bme280.c **** */
636:../libBME280/src/bme280.c **** int8_t bme280_set_sensor_mode(uint8_t sensor_mode, struct bme280_dev *dev)
637:../libBME280/src/bme280.c **** {
638:../libBME280/src/bme280.c **** int8_t rslt;
639:../libBME280/src/bme280.c **** uint8_t last_set_mode;
640:../libBME280/src/bme280.c ****
641:../libBME280/src/bme280.c **** /* Check for null pointer in the device structure*/
642:../libBME280/src/bme280.c **** rslt = null_ptr_check(dev);
643:../libBME280/src/bme280.c ****
644:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
645:../libBME280/src/bme280.c **** {
646:../libBME280/src/bme280.c **** rslt = bme280_get_sensor_mode(&last_set_mode, dev);
647:../libBME280/src/bme280.c ****
648:../libBME280/src/bme280.c **** /* If the sensor is not in sleep mode put the device to sleep
649:../libBME280/src/bme280.c **** * mode
650:../libBME280/src/bme280.c **** */
651:../libBME280/src/bme280.c **** if ((rslt == BME280_OK) && (last_set_mode != BME280_SLEEP_MODE))
652:../libBME280/src/bme280.c **** {
653:../libBME280/src/bme280.c **** rslt = put_device_to_sleep(dev);
654:../libBME280/src/bme280.c **** }
655:../libBME280/src/bme280.c ****
656:../libBME280/src/bme280.c **** /* Set the power mode */
657:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
658:../libBME280/src/bme280.c **** {
659:../libBME280/src/bme280.c **** rslt = write_power_mode(sensor_mode, dev);
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 13
660:../libBME280/src/bme280.c **** }
661:../libBME280/src/bme280.c **** }
662:../libBME280/src/bme280.c ****
663:../libBME280/src/bme280.c **** return rslt;
664:../libBME280/src/bme280.c **** }
665:../libBME280/src/bme280.c ****
666:../libBME280/src/bme280.c **** /*!
667:../libBME280/src/bme280.c **** * @brief This API gets the power mode of the sensor.
668:../libBME280/src/bme280.c **** */
669:../libBME280/src/bme280.c **** int8_t bme280_get_sensor_mode(uint8_t *sensor_mode, struct bme280_dev *dev)
670:../libBME280/src/bme280.c **** {
671:../libBME280/src/bme280.c **** int8_t rslt;
672:../libBME280/src/bme280.c ****
673:../libBME280/src/bme280.c **** /* Check for null pointer in the device structure*/
674:../libBME280/src/bme280.c **** rslt = null_ptr_check(dev);
675:../libBME280/src/bme280.c ****
676:../libBME280/src/bme280.c **** if ((rslt == BME280_OK) && (sensor_mode != NULL))
677:../libBME280/src/bme280.c **** {
678:../libBME280/src/bme280.c **** /* Read the power mode register */
679:../libBME280/src/bme280.c **** rslt = bme280_get_regs(BME280_PWR_CTRL_ADDR, sensor_mode, 1, dev);
680:../libBME280/src/bme280.c ****
681:../libBME280/src/bme280.c **** /* Assign the power mode in the device structure */
682:../libBME280/src/bme280.c **** *sensor_mode = BME280_GET_BITS_POS_0(*sensor_mode, BME280_SENSOR_MODE);
683:../libBME280/src/bme280.c **** }
684:../libBME280/src/bme280.c **** else
685:../libBME280/src/bme280.c **** {
686:../libBME280/src/bme280.c **** rslt = BME280_E_NULL_PTR;
687:../libBME280/src/bme280.c **** }
688:../libBME280/src/bme280.c ****
689:../libBME280/src/bme280.c **** return rslt;
690:../libBME280/src/bme280.c **** }
691:../libBME280/src/bme280.c ****
692:../libBME280/src/bme280.c **** /*!
693:../libBME280/src/bme280.c **** * @brief This API performs the soft reset of the sensor.
694:../libBME280/src/bme280.c **** */
695:../libBME280/src/bme280.c **** int8_t bme280_soft_reset(struct bme280_dev *dev)
696:../libBME280/src/bme280.c **** {
697:../libBME280/src/bme280.c **** int8_t rslt;
698:../libBME280/src/bme280.c **** uint8_t reg_addr = BME280_RESET_ADDR;
699:../libBME280/src/bme280.c **** uint8_t status_reg = 0;
700:../libBME280/src/bme280.c **** uint8_t try_run = 5;
701:../libBME280/src/bme280.c ****
702:../libBME280/src/bme280.c **** /* 0xB6 is the soft reset command */
703:../libBME280/src/bme280.c **** uint8_t soft_rst_cmd = BME280_SOFT_RESET_COMMAND;
704:../libBME280/src/bme280.c ****
705:../libBME280/src/bme280.c **** /* Check for null pointer in the device structure*/
706:../libBME280/src/bme280.c **** rslt = null_ptr_check(dev);
707:../libBME280/src/bme280.c ****
708:../libBME280/src/bme280.c **** /* Proceed if null check is fine */
709:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
710:../libBME280/src/bme280.c **** {
711:../libBME280/src/bme280.c **** /* Write the soft reset command in the sensor */
712:../libBME280/src/bme280.c **** rslt = bme280_set_regs(®_addr, &soft_rst_cmd, 1, dev);
713:../libBME280/src/bme280.c ****
714:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
715:../libBME280/src/bme280.c **** {
716:../libBME280/src/bme280.c **** /* If NVM not copied yet, Wait for NVM to copy */
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 14
717:../libBME280/src/bme280.c **** do
718:../libBME280/src/bme280.c **** {
719:../libBME280/src/bme280.c **** /* As per data sheet - Table 1, startup time is 2 ms. */
720:../libBME280/src/bme280.c **** dev->delay_us(2000, dev->intf_ptr);
721:../libBME280/src/bme280.c **** rslt = bme280_get_regs(BME280_STATUS_REG_ADDR, &status_reg, 1, dev);
722:../libBME280/src/bme280.c ****
723:../libBME280/src/bme280.c **** } while ((rslt == BME280_OK) && (try_run--) && (status_reg & BME280_STATUS_IM_UPDATE));
724:../libBME280/src/bme280.c ****
725:../libBME280/src/bme280.c **** if (status_reg & BME280_STATUS_IM_UPDATE)
726:../libBME280/src/bme280.c **** {
727:../libBME280/src/bme280.c **** rslt = BME280_E_NVM_COPY_FAILED;
728:../libBME280/src/bme280.c **** }
729:../libBME280/src/bme280.c **** }
730:../libBME280/src/bme280.c **** }
731:../libBME280/src/bme280.c ****
732:../libBME280/src/bme280.c **** return rslt;
733:../libBME280/src/bme280.c **** }
734:../libBME280/src/bme280.c ****
735:../libBME280/src/bme280.c **** /*!
736:../libBME280/src/bme280.c **** * @brief This API reads the pressure, temperature and humidity data from the
737:../libBME280/src/bme280.c **** * sensor, compensates the data and store it in the bme280_data structure
738:../libBME280/src/bme280.c **** * instance passed by the user.
739:../libBME280/src/bme280.c **** */
740:../libBME280/src/bme280.c **** int8_t bme280_get_sensor_data(uint8_t sensor_comp, struct bme280_data *comp_data, struct bme280_dev
741:../libBME280/src/bme280.c **** {
742:../libBME280/src/bme280.c **** int8_t rslt;
743:../libBME280/src/bme280.c ****
744:../libBME280/src/bme280.c **** /* Array to store the pressure, temperature and humidity data read from
745:../libBME280/src/bme280.c **** * the sensor
746:../libBME280/src/bme280.c **** */
747:../libBME280/src/bme280.c **** uint8_t reg_data[BME280_P_T_H_DATA_LEN] = { 0 };
748:../libBME280/src/bme280.c **** struct bme280_uncomp_data uncomp_data = { 0 };
749:../libBME280/src/bme280.c ****
750:../libBME280/src/bme280.c **** /* Check for null pointer in the device structure*/
751:../libBME280/src/bme280.c **** rslt = null_ptr_check(dev);
752:../libBME280/src/bme280.c ****
753:../libBME280/src/bme280.c **** if ((rslt == BME280_OK) && (comp_data != NULL))
754:../libBME280/src/bme280.c **** {
755:../libBME280/src/bme280.c **** /* Read the pressure and temperature data from the sensor */
756:../libBME280/src/bme280.c **** rslt = bme280_get_regs(BME280_DATA_ADDR, reg_data, BME280_P_T_H_DATA_LEN, dev);
757:../libBME280/src/bme280.c ****
758:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
759:../libBME280/src/bme280.c **** {
760:../libBME280/src/bme280.c **** /* Parse the read data from the sensor */
761:../libBME280/src/bme280.c **** bme280_parse_sensor_data(reg_data, &uncomp_data);
762:../libBME280/src/bme280.c ****
763:../libBME280/src/bme280.c **** /* Compensate the pressure and/or temperature and/or
764:../libBME280/src/bme280.c **** * humidity data from the sensor
765:../libBME280/src/bme280.c **** */
766:../libBME280/src/bme280.c **** rslt = bme280_compensate_data(sensor_comp, &uncomp_data, comp_data, &dev->calib_data);
767:../libBME280/src/bme280.c **** }
768:../libBME280/src/bme280.c **** }
769:../libBME280/src/bme280.c **** else
770:../libBME280/src/bme280.c **** {
771:../libBME280/src/bme280.c **** rslt = BME280_E_NULL_PTR;
772:../libBME280/src/bme280.c **** }
773:../libBME280/src/bme280.c ****
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 15
774:../libBME280/src/bme280.c **** return rslt;
775:../libBME280/src/bme280.c **** }
776:../libBME280/src/bme280.c ****
777:../libBME280/src/bme280.c **** /*!
778:../libBME280/src/bme280.c **** * @brief This API is used to parse the pressure, temperature and
779:../libBME280/src/bme280.c **** * humidity data and store it in the bme280_uncomp_data structure instance.
780:../libBME280/src/bme280.c **** */
781:../libBME280/src/bme280.c **** void bme280_parse_sensor_data(const uint8_t *reg_data, struct bme280_uncomp_data *uncomp_data)
782:../libBME280/src/bme280.c **** {
783:../libBME280/src/bme280.c **** /* Variables to store the sensor data */
784:../libBME280/src/bme280.c **** uint32_t data_xlsb;
785:../libBME280/src/bme280.c **** uint32_t data_lsb;
786:../libBME280/src/bme280.c **** uint32_t data_msb;
787:../libBME280/src/bme280.c ****
788:../libBME280/src/bme280.c **** /* Store the parsed register values for pressure data */
789:../libBME280/src/bme280.c **** data_msb = (uint32_t)reg_data[0] << 12;
790:../libBME280/src/bme280.c **** data_lsb = (uint32_t)reg_data[1] << 4;
791:../libBME280/src/bme280.c **** data_xlsb = (uint32_t)reg_data[2] >> 4;
792:../libBME280/src/bme280.c **** uncomp_data->pressure = data_msb | data_lsb | data_xlsb;
793:../libBME280/src/bme280.c ****
794:../libBME280/src/bme280.c **** /* Store the parsed register values for temperature data */
795:../libBME280/src/bme280.c **** data_msb = (uint32_t)reg_data[3] << 12;
796:../libBME280/src/bme280.c **** data_lsb = (uint32_t)reg_data[4] << 4;
797:../libBME280/src/bme280.c **** data_xlsb = (uint32_t)reg_data[5] >> 4;
798:../libBME280/src/bme280.c **** uncomp_data->temperature = data_msb | data_lsb | data_xlsb;
799:../libBME280/src/bme280.c ****
800:../libBME280/src/bme280.c **** /* Store the parsed register values for humidity data */
801:../libBME280/src/bme280.c **** data_msb = (uint32_t)reg_data[6] << 8;
802:../libBME280/src/bme280.c **** data_lsb = (uint32_t)reg_data[7];
803:../libBME280/src/bme280.c **** uncomp_data->humidity = data_msb | data_lsb;
804:../libBME280/src/bme280.c **** }
805:../libBME280/src/bme280.c ****
806:../libBME280/src/bme280.c **** /*!
807:../libBME280/src/bme280.c **** * @brief This API is used to compensate the pressure and/or
808:../libBME280/src/bme280.c **** * temperature and/or humidity data according to the component selected
809:../libBME280/src/bme280.c **** * by the user.
810:../libBME280/src/bme280.c **** */
811:../libBME280/src/bme280.c **** int8_t bme280_compensate_data(uint8_t sensor_comp,
812:../libBME280/src/bme280.c **** const struct bme280_uncomp_data *uncomp_data,
813:../libBME280/src/bme280.c **** struct bme280_data *comp_data,
814:../libBME280/src/bme280.c **** struct bme280_calib_data *calib_data)
815:../libBME280/src/bme280.c **** {
816:../libBME280/src/bme280.c **** int8_t rslt = BME280_OK;
817:../libBME280/src/bme280.c ****
818:../libBME280/src/bme280.c **** if ((uncomp_data != NULL) && (comp_data != NULL) && (calib_data != NULL))
819:../libBME280/src/bme280.c **** {
820:../libBME280/src/bme280.c **** /* Initialize to zero */
821:../libBME280/src/bme280.c **** comp_data->temperature = 0;
822:../libBME280/src/bme280.c **** comp_data->pressure = 0;
823:../libBME280/src/bme280.c **** comp_data->humidity = 0;
824:../libBME280/src/bme280.c ****
825:../libBME280/src/bme280.c **** /* If pressure or temperature component is selected */
826:../libBME280/src/bme280.c **** if (sensor_comp & (BME280_PRESS | BME280_TEMP | BME280_HUM))
827:../libBME280/src/bme280.c **** {
828:../libBME280/src/bme280.c **** /* Compensate the temperature data */
829:../libBME280/src/bme280.c **** comp_data->temperature = compensate_temperature(uncomp_data, calib_data);
830:../libBME280/src/bme280.c **** }
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 16
831:../libBME280/src/bme280.c ****
832:../libBME280/src/bme280.c **** if (sensor_comp & BME280_PRESS)
833:../libBME280/src/bme280.c **** {
834:../libBME280/src/bme280.c **** /* Compensate the pressure data */
835:../libBME280/src/bme280.c **** comp_data->pressure = compensate_pressure(uncomp_data, calib_data);
836:../libBME280/src/bme280.c **** }
837:../libBME280/src/bme280.c ****
838:../libBME280/src/bme280.c **** if (sensor_comp & BME280_HUM)
839:../libBME280/src/bme280.c **** {
840:../libBME280/src/bme280.c **** /* Compensate the humidity data */
841:../libBME280/src/bme280.c **** comp_data->humidity = compensate_humidity(uncomp_data, calib_data);
842:../libBME280/src/bme280.c **** }
843:../libBME280/src/bme280.c **** }
844:../libBME280/src/bme280.c **** else
845:../libBME280/src/bme280.c **** {
846:../libBME280/src/bme280.c **** rslt = BME280_E_NULL_PTR;
847:../libBME280/src/bme280.c **** }
848:../libBME280/src/bme280.c ****
849:../libBME280/src/bme280.c **** return rslt;
850:../libBME280/src/bme280.c **** }
851:../libBME280/src/bme280.c ****
852:../libBME280/src/bme280.c **** /*!
853:../libBME280/src/bme280.c **** * @brief This API is used to calculate the maximum delay in milliseconds required for the
854:../libBME280/src/bme280.c **** * temperature/pressure/humidity(which ever at enabled) measurement to complete.
855:../libBME280/src/bme280.c **** */
856:../libBME280/src/bme280.c **** uint32_t bme280_cal_meas_delay(const struct bme280_settings *settings)
857:../libBME280/src/bme280.c **** {
858:../libBME280/src/bme280.c **** uint32_t max_delay;
859:../libBME280/src/bme280.c **** uint8_t temp_osr;
860:../libBME280/src/bme280.c **** uint8_t pres_osr;
861:../libBME280/src/bme280.c **** uint8_t hum_osr;
862:../libBME280/src/bme280.c ****
863:../libBME280/src/bme280.c **** /*Array to map OSR config register value to actual OSR */
864:../libBME280/src/bme280.c **** uint8_t osr_sett_to_act_osr[] = { 0, 1, 2, 4, 8, 16 };
865:../libBME280/src/bme280.c ****
866:../libBME280/src/bme280.c **** /* Mapping osr settings to the actual osr values e.g. 0b101 -> osr X16 */
867:../libBME280/src/bme280.c **** if (settings->osr_t <= 5)
868:../libBME280/src/bme280.c **** {
869:../libBME280/src/bme280.c **** temp_osr = osr_sett_to_act_osr[settings->osr_t];
870:../libBME280/src/bme280.c **** }
871:../libBME280/src/bme280.c **** else
872:../libBME280/src/bme280.c **** {
873:../libBME280/src/bme280.c **** temp_osr = 16;
874:../libBME280/src/bme280.c **** }
875:../libBME280/src/bme280.c ****
876:../libBME280/src/bme280.c **** if (settings->osr_p <= 5)
877:../libBME280/src/bme280.c **** {
878:../libBME280/src/bme280.c **** pres_osr = osr_sett_to_act_osr[settings->osr_p];
879:../libBME280/src/bme280.c **** }
880:../libBME280/src/bme280.c **** else
881:../libBME280/src/bme280.c **** {
882:../libBME280/src/bme280.c **** pres_osr = 16;
883:../libBME280/src/bme280.c **** }
884:../libBME280/src/bme280.c ****
885:../libBME280/src/bme280.c **** if (settings->osr_h <= 5)
886:../libBME280/src/bme280.c **** {
887:../libBME280/src/bme280.c **** hum_osr = osr_sett_to_act_osr[settings->osr_h];
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 17
888:../libBME280/src/bme280.c **** }
889:../libBME280/src/bme280.c **** else
890:../libBME280/src/bme280.c **** {
891:../libBME280/src/bme280.c **** hum_osr = 16;
892:../libBME280/src/bme280.c **** }
893:../libBME280/src/bme280.c ****
894:../libBME280/src/bme280.c **** max_delay =
895:../libBME280/src/bme280.c **** (uint32_t)((BME280_MEAS_OFFSET + (BME280_MEAS_DUR * temp_osr) +
896:../libBME280/src/bme280.c **** ((BME280_MEAS_DUR * pres_osr) + BME280_PRES_HUM_MEAS_OFFSET) +
897:../libBME280/src/bme280.c **** ((BME280_MEAS_DUR * hum_osr) + BME280_PRES_HUM_MEAS_OFFSET)) / BME280_MEAS_SCAL
898:../libBME280/src/bme280.c ****
899:../libBME280/src/bme280.c **** return max_delay;
900:../libBME280/src/bme280.c **** }
901:../libBME280/src/bme280.c ****
902:../libBME280/src/bme280.c **** /*!
903:../libBME280/src/bme280.c **** * @brief This internal API sets the oversampling settings for pressure,
904:../libBME280/src/bme280.c **** * temperature and humidity in the sensor.
905:../libBME280/src/bme280.c **** */
906:../libBME280/src/bme280.c **** static int8_t set_osr_settings(uint8_t desired_settings, const struct bme280_settings *settings, st
907:../libBME280/src/bme280.c **** {
908:../libBME280/src/bme280.c **** int8_t rslt = BME280_W_INVALID_OSR_MACRO;
909:../libBME280/src/bme280.c ****
910:../libBME280/src/bme280.c **** if (desired_settings & BME280_OSR_HUM_SEL)
911:../libBME280/src/bme280.c **** {
912:../libBME280/src/bme280.c **** rslt = set_osr_humidity_settings(settings, dev);
913:../libBME280/src/bme280.c **** }
914:../libBME280/src/bme280.c ****
915:../libBME280/src/bme280.c **** if (desired_settings & (BME280_OSR_PRESS_SEL | BME280_OSR_TEMP_SEL))
916:../libBME280/src/bme280.c **** {
917:../libBME280/src/bme280.c **** rslt = set_osr_press_temp_settings(desired_settings, settings, dev);
918:../libBME280/src/bme280.c **** }
919:../libBME280/src/bme280.c ****
920:../libBME280/src/bme280.c **** return rslt;
921:../libBME280/src/bme280.c **** }
922:../libBME280/src/bme280.c ****
923:../libBME280/src/bme280.c **** /*!
924:../libBME280/src/bme280.c **** * @brief This API sets the humidity oversampling settings of the sensor.
925:../libBME280/src/bme280.c **** */
926:../libBME280/src/bme280.c **** static int8_t set_osr_humidity_settings(const struct bme280_settings *settings, struct bme280_dev *
927:../libBME280/src/bme280.c **** {
928:../libBME280/src/bme280.c **** int8_t rslt;
929:../libBME280/src/bme280.c **** uint8_t ctrl_hum;
930:../libBME280/src/bme280.c **** uint8_t ctrl_meas;
931:../libBME280/src/bme280.c **** uint8_t reg_addr = BME280_CTRL_HUM_ADDR;
932:../libBME280/src/bme280.c ****
933:../libBME280/src/bme280.c **** ctrl_hum = settings->osr_h & BME280_CTRL_HUM_MSK;
934:../libBME280/src/bme280.c ****
935:../libBME280/src/bme280.c **** /* Write the humidity control value in the register */
936:../libBME280/src/bme280.c **** rslt = bme280_set_regs(®_addr, &ctrl_hum, 1, dev);
937:../libBME280/src/bme280.c ****
938:../libBME280/src/bme280.c **** /* Humidity related changes will be only effective after a
939:../libBME280/src/bme280.c **** * write operation to ctrl_meas register
940:../libBME280/src/bme280.c **** */
941:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
942:../libBME280/src/bme280.c **** {
943:../libBME280/src/bme280.c **** reg_addr = BME280_CTRL_MEAS_ADDR;
944:../libBME280/src/bme280.c **** rslt = bme280_get_regs(reg_addr, &ctrl_meas, 1, dev);
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 18
945:../libBME280/src/bme280.c ****
946:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
947:../libBME280/src/bme280.c **** {
948:../libBME280/src/bme280.c **** rslt = bme280_set_regs(®_addr, &ctrl_meas, 1, dev);
949:../libBME280/src/bme280.c **** }
950:../libBME280/src/bme280.c **** }
951:../libBME280/src/bme280.c ****
952:../libBME280/src/bme280.c **** return rslt;
953:../libBME280/src/bme280.c **** }
954:../libBME280/src/bme280.c ****
955:../libBME280/src/bme280.c **** /*!
956:../libBME280/src/bme280.c **** * @brief This API sets the pressure and/or temperature oversampling settings
957:../libBME280/src/bme280.c **** * in the sensor according to the settings selected by the user.
958:../libBME280/src/bme280.c **** */
959:../libBME280/src/bme280.c **** static int8_t set_osr_press_temp_settings(uint8_t desired_settings,
960:../libBME280/src/bme280.c **** const struct bme280_settings *settings,
961:../libBME280/src/bme280.c **** struct bme280_dev *dev)
962:../libBME280/src/bme280.c **** {
963:../libBME280/src/bme280.c **** int8_t rslt;
964:../libBME280/src/bme280.c **** uint8_t reg_addr = BME280_CTRL_MEAS_ADDR;
965:../libBME280/src/bme280.c **** uint8_t reg_data;
966:../libBME280/src/bme280.c ****
967:../libBME280/src/bme280.c **** rslt = bme280_get_regs(reg_addr, ®_data, 1, dev);
968:../libBME280/src/bme280.c ****
969:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
970:../libBME280/src/bme280.c **** {
971:../libBME280/src/bme280.c **** if (desired_settings & BME280_OSR_PRESS_SEL)
972:../libBME280/src/bme280.c **** {
973:../libBME280/src/bme280.c **** fill_osr_press_settings(®_data, settings);
974:../libBME280/src/bme280.c **** }
975:../libBME280/src/bme280.c ****
976:../libBME280/src/bme280.c **** if (desired_settings & BME280_OSR_TEMP_SEL)
977:../libBME280/src/bme280.c **** {
978:../libBME280/src/bme280.c **** fill_osr_temp_settings(®_data, settings);
979:../libBME280/src/bme280.c **** }
980:../libBME280/src/bme280.c ****
981:../libBME280/src/bme280.c **** /* Write the oversampling settings in the register */
982:../libBME280/src/bme280.c **** rslt = bme280_set_regs(®_addr, ®_data, 1, dev);
983:../libBME280/src/bme280.c **** }
984:../libBME280/src/bme280.c ****
985:../libBME280/src/bme280.c **** return rslt;
986:../libBME280/src/bme280.c **** }
987:../libBME280/src/bme280.c ****
988:../libBME280/src/bme280.c **** /*!
989:../libBME280/src/bme280.c **** * @brief This internal API sets the filter and/or standby duration settings
990:../libBME280/src/bme280.c **** * in the sensor according to the settings selected by the user.
991:../libBME280/src/bme280.c **** */
992:../libBME280/src/bme280.c **** static int8_t set_filter_standby_settings(uint8_t desired_settings,
993:../libBME280/src/bme280.c **** const struct bme280_settings *settings,
994:../libBME280/src/bme280.c **** struct bme280_dev *dev)
995:../libBME280/src/bme280.c **** {
996:../libBME280/src/bme280.c **** int8_t rslt;
997:../libBME280/src/bme280.c **** uint8_t reg_addr = BME280_CONFIG_ADDR;
998:../libBME280/src/bme280.c **** uint8_t reg_data;
999:../libBME280/src/bme280.c ****
1000:../libBME280/src/bme280.c **** rslt = bme280_get_regs(reg_addr, ®_data, 1, dev);
1001:../libBME280/src/bme280.c ****
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 19
1002:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
1003:../libBME280/src/bme280.c **** {
1004:../libBME280/src/bme280.c **** if (desired_settings & BME280_FILTER_SEL)
1005:../libBME280/src/bme280.c **** {
1006:../libBME280/src/bme280.c **** fill_filter_settings(®_data, settings);
1007:../libBME280/src/bme280.c **** }
1008:../libBME280/src/bme280.c ****
1009:../libBME280/src/bme280.c **** if (desired_settings & BME280_STANDBY_SEL)
1010:../libBME280/src/bme280.c **** {
1011:../libBME280/src/bme280.c **** fill_standby_settings(®_data, settings);
1012:../libBME280/src/bme280.c **** }
1013:../libBME280/src/bme280.c ****
1014:../libBME280/src/bme280.c **** /* Write the oversampling settings in the register */
1015:../libBME280/src/bme280.c **** rslt = bme280_set_regs(®_addr, ®_data, 1, dev);
1016:../libBME280/src/bme280.c **** }
1017:../libBME280/src/bme280.c ****
1018:../libBME280/src/bme280.c **** return rslt;
1019:../libBME280/src/bme280.c **** }
1020:../libBME280/src/bme280.c ****
1021:../libBME280/src/bme280.c **** /*!
1022:../libBME280/src/bme280.c **** * @brief This internal API fills the filter settings provided by the user
1023:../libBME280/src/bme280.c **** * in the data buffer so as to write in the sensor.
1024:../libBME280/src/bme280.c **** */
1025:../libBME280/src/bme280.c **** static void fill_filter_settings(uint8_t *reg_data, const struct bme280_settings *settings)
1026:../libBME280/src/bme280.c **** {
27 .loc 1 1026 1 view -0
28 .cfi_startproc
29 @ args = 0, pretend = 0, frame = 0
30 @ frame_needed = 0, uses_anonymous_args = 0
31 @ link register save eliminated.
1027:../libBME280/src/bme280.c **** *reg_data = BME280_SET_BITS(*reg_data, BME280_FILTER, settings->filter);
32 .loc 1 1027 5 view .LVU1
33 .loc 1 1027 17 is_stmt 0 view .LVU2
34 0000 90F90030 ldrsb r3, [r0]
35 0004 23F01C03 bic r3, r3, #28
36 0008 CA78 ldrb r2, [r1, #3] @ zero_extendqisi2
37 000a 9200 lsls r2, r2, #2
38 000c 02F01C02 and r2, r2, #28
39 0010 1343 orrs r3, r3, r2
40 .loc 1 1027 15 view .LVU3
41 0012 0370 strb r3, [r0]
1028:../libBME280/src/bme280.c **** }
42 .loc 1 1028 1 view .LVU4
43 0014 7047 bx lr
44 .cfi_endproc
45 .LFE16:
47 .section .text.fill_standby_settings,"ax",%progbits
48 .align 1
49 .syntax unified
50 .thumb
51 .thumb_func
52 .fpu softvfp
54 fill_standby_settings:
55 .LVL1:
56 .LFB17:
1029:../libBME280/src/bme280.c ****
1030:../libBME280/src/bme280.c **** /*!
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 20
1031:../libBME280/src/bme280.c **** * @brief This internal API fills the standby duration settings provided by
1032:../libBME280/src/bme280.c **** * the user in the data buffer so as to write in the sensor.
1033:../libBME280/src/bme280.c **** */
1034:../libBME280/src/bme280.c **** static void fill_standby_settings(uint8_t *reg_data, const struct bme280_settings *settings)
1035:../libBME280/src/bme280.c **** {
57 .loc 1 1035 1 is_stmt 1 view -0
58 .cfi_startproc
59 @ args = 0, pretend = 0, frame = 0
60 @ frame_needed = 0, uses_anonymous_args = 0
61 @ link register save eliminated.
1036:../libBME280/src/bme280.c **** *reg_data = BME280_SET_BITS(*reg_data, BME280_STANDBY, settings->standby_time);
62 .loc 1 1036 5 view .LVU6
63 .loc 1 1036 17 is_stmt 0 view .LVU7
64 0000 90F90030 ldrsb r3, [r0]
65 0004 03F01F03 and r3, r3, #31
66 0008 0A79 ldrb r2, [r1, #4] @ zero_extendqisi2
67 000a 43EA4213 orr r3, r3, r2, lsl #5
68 .loc 1 1036 15 view .LVU8
69 000e 0370 strb r3, [r0]
1037:../libBME280/src/bme280.c **** }
70 .loc 1 1037 1 view .LVU9
71 0010 7047 bx lr
72 .cfi_endproc
73 .LFE17:
75 .section .text.fill_osr_press_settings,"ax",%progbits
76 .align 1
77 .syntax unified
78 .thumb
79 .thumb_func
80 .fpu softvfp
82 fill_osr_press_settings:
83 .LVL2:
84 .LFB18:
1038:../libBME280/src/bme280.c ****
1039:../libBME280/src/bme280.c **** /*!
1040:../libBME280/src/bme280.c **** * @brief This internal API fills the pressure oversampling settings provided by
1041:../libBME280/src/bme280.c **** * the user in the data buffer so as to write in the sensor.
1042:../libBME280/src/bme280.c **** */
1043:../libBME280/src/bme280.c **** static void fill_osr_press_settings(uint8_t *reg_data, const struct bme280_settings *settings)
1044:../libBME280/src/bme280.c **** {
85 .loc 1 1044 1 is_stmt 1 view -0
86 .cfi_startproc
87 @ args = 0, pretend = 0, frame = 0
88 @ frame_needed = 0, uses_anonymous_args = 0
89 @ link register save eliminated.
1045:../libBME280/src/bme280.c **** *reg_data = BME280_SET_BITS(*reg_data, BME280_CTRL_PRESS, settings->osr_p);
90 .loc 1 1045 5 view .LVU11
91 .loc 1 1045 17 is_stmt 0 view .LVU12
92 0000 90F90030 ldrsb r3, [r0]
93 0004 23F01C03 bic r3, r3, #28
94 0008 0A78 ldrb r2, [r1] @ zero_extendqisi2
95 000a 9200 lsls r2, r2, #2
96 000c 02F01C02 and r2, r2, #28
97 0010 1343 orrs r3, r3, r2
98 .loc 1 1045 15 view .LVU13
99 0012 0370 strb r3, [r0]
1046:../libBME280/src/bme280.c **** }
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 21
100 .loc 1 1046 1 view .LVU14
101 0014 7047 bx lr
102 .cfi_endproc
103 .LFE18:
105 .section .text.fill_osr_temp_settings,"ax",%progbits
106 .align 1
107 .syntax unified
108 .thumb
109 .thumb_func
110 .fpu softvfp
112 fill_osr_temp_settings:
113 .LVL3:
114 .LFB19:
1047:../libBME280/src/bme280.c ****
1048:../libBME280/src/bme280.c **** /*!
1049:../libBME280/src/bme280.c **** * @brief This internal API fills the temperature oversampling settings
1050:../libBME280/src/bme280.c **** * provided by the user in the data buffer so as to write in the sensor.
1051:../libBME280/src/bme280.c **** */
1052:../libBME280/src/bme280.c **** static void fill_osr_temp_settings(uint8_t *reg_data, const struct bme280_settings *settings)
1053:../libBME280/src/bme280.c **** {
115 .loc 1 1053 1 is_stmt 1 view -0
116 .cfi_startproc
117 @ args = 0, pretend = 0, frame = 0
118 @ frame_needed = 0, uses_anonymous_args = 0
119 @ link register save eliminated.
1054:../libBME280/src/bme280.c **** *reg_data = BME280_SET_BITS(*reg_data, BME280_CTRL_TEMP, settings->osr_t);
120 .loc 1 1054 5 view .LVU16
121 .loc 1 1054 17 is_stmt 0 view .LVU17
122 0000 90F90030 ldrsb r3, [r0]
123 0004 03F01F03 and r3, r3, #31
124 0008 4A78 ldrb r2, [r1, #1] @ zero_extendqisi2
125 000a 43EA4213 orr r3, r3, r2, lsl #5
126 .loc 1 1054 15 view .LVU18
127 000e 0370 strb r3, [r0]
1055:../libBME280/src/bme280.c **** }
128 .loc 1 1055 1 view .LVU19
129 0010 7047 bx lr
130 .cfi_endproc
131 .LFE19:
133 .section .text.parse_device_settings,"ax",%progbits
134 .align 1
135 .syntax unified
136 .thumb
137 .thumb_func
138 .fpu softvfp
140 parse_device_settings:
141 .LVL4:
142 .LFB20:
1056:../libBME280/src/bme280.c ****
1057:../libBME280/src/bme280.c **** /*!
1058:../libBME280/src/bme280.c **** * @brief This internal API parse the oversampling(pressure, temperature
1059:../libBME280/src/bme280.c **** * and humidity), filter and standby duration settings and store in the
1060:../libBME280/src/bme280.c **** * device structure.
1061:../libBME280/src/bme280.c **** */
1062:../libBME280/src/bme280.c **** static void parse_device_settings(const uint8_t *reg_data, struct bme280_settings *settings)
1063:../libBME280/src/bme280.c **** {
143 .loc 1 1063 1 is_stmt 1 view -0
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 22
144 .cfi_startproc
145 @ args = 0, pretend = 0, frame = 0
146 @ frame_needed = 0, uses_anonymous_args = 0
147 @ link register save eliminated.
1064:../libBME280/src/bme280.c **** settings->osr_h = BME280_GET_BITS_POS_0(reg_data[0], BME280_CTRL_HUM);
148 .loc 1 1064 5 view .LVU21
149 .loc 1 1064 23 is_stmt 0 view .LVU22
150 0000 0378 ldrb r3, [r0] @ zero_extendqisi2
151 0002 03F00703 and r3, r3, #7
152 .loc 1 1064 21 view .LVU23
153 0006 8B70 strb r3, [r1, #2]
1065:../libBME280/src/bme280.c **** settings->osr_p = BME280_GET_BITS(reg_data[2], BME280_CTRL_PRESS);
154 .loc 1 1065 5 is_stmt 1 view .LVU24
155 .loc 1 1065 23 is_stmt 0 view .LVU25
156 0008 8378 ldrb r3, [r0, #2] @ zero_extendqisi2
157 000a C3F38203 ubfx r3, r3, #2, #3
158 .loc 1 1065 21 view .LVU26
159 000e 0B70 strb r3, [r1]
1066:../libBME280/src/bme280.c **** settings->osr_t = BME280_GET_BITS(reg_data[2], BME280_CTRL_TEMP);
160 .loc 1 1066 5 is_stmt 1 view .LVU27
161 .loc 1 1066 23 is_stmt 0 view .LVU28
162 0010 8378 ldrb r3, [r0, #2] @ zero_extendqisi2
163 0012 5B09 lsrs r3, r3, #5
164 .loc 1 1066 21 view .LVU29
165 0014 4B70 strb r3, [r1, #1]
1067:../libBME280/src/bme280.c **** settings->filter = BME280_GET_BITS(reg_data[3], BME280_FILTER);
166 .loc 1 1067 5 is_stmt 1 view .LVU30
167 .loc 1 1067 24 is_stmt 0 view .LVU31
168 0016 C378 ldrb r3, [r0, #3] @ zero_extendqisi2
169 0018 C3F38203 ubfx r3, r3, #2, #3
170 .loc 1 1067 22 view .LVU32
171 001c CB70 strb r3, [r1, #3]
1068:../libBME280/src/bme280.c **** settings->standby_time = BME280_GET_BITS(reg_data[3], BME280_STANDBY);
172 .loc 1 1068 5 is_stmt 1 view .LVU33
173 .loc 1 1068 30 is_stmt 0 view .LVU34
174 001e C378 ldrb r3, [r0, #3] @ zero_extendqisi2
175 0020 5B09 lsrs r3, r3, #5
176 .loc 1 1068 28 view .LVU35
177 0022 0B71 strb r3, [r1, #4]
1069:../libBME280/src/bme280.c **** }
178 .loc 1 1069 1 view .LVU36
179 0024 7047 bx lr
180 .cfi_endproc
181 .LFE20:
183 .global __aeabi_ui2d
184 .global __aeabi_dmul
185 .global __aeabi_dsub
186 .global __aeabi_i2d
187 .global __aeabi_dadd
188 .global __aeabi_d2iz
189 .global __aeabi_ddiv
190 .global __aeabi_dcmplt
191 .global __aeabi_dcmpgt
192 .section .text.compensate_temperature,"ax",%progbits
193 .align 1
194 .syntax unified
195 .thumb
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 23
196 .thumb_func
197 .fpu softvfp
199 compensate_temperature:
200 .LVL5:
201 .LFB24:
1070:../libBME280/src/bme280.c ****
1071:../libBME280/src/bme280.c **** /*!
1072:../libBME280/src/bme280.c **** * @brief This internal API writes the power mode in the sensor.
1073:../libBME280/src/bme280.c **** */
1074:../libBME280/src/bme280.c **** static int8_t write_power_mode(uint8_t sensor_mode, struct bme280_dev *dev)
1075:../libBME280/src/bme280.c **** {
1076:../libBME280/src/bme280.c **** int8_t rslt;
1077:../libBME280/src/bme280.c **** uint8_t reg_addr = BME280_PWR_CTRL_ADDR;
1078:../libBME280/src/bme280.c ****
1079:../libBME280/src/bme280.c **** /* Variable to store the value read from power mode register */
1080:../libBME280/src/bme280.c **** uint8_t sensor_mode_reg_val;
1081:../libBME280/src/bme280.c ****
1082:../libBME280/src/bme280.c **** /* Read the power mode register */
1083:../libBME280/src/bme280.c **** rslt = bme280_get_regs(reg_addr, &sensor_mode_reg_val, 1, dev);
1084:../libBME280/src/bme280.c ****
1085:../libBME280/src/bme280.c **** /* Set the power mode */
1086:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
1087:../libBME280/src/bme280.c **** {
1088:../libBME280/src/bme280.c **** sensor_mode_reg_val = BME280_SET_BITS_POS_0(sensor_mode_reg_val, BME280_SENSOR_MODE, sensor
1089:../libBME280/src/bme280.c ****
1090:../libBME280/src/bme280.c **** /* Write the power mode in the register */
1091:../libBME280/src/bme280.c **** rslt = bme280_set_regs(®_addr, &sensor_mode_reg_val, 1, dev);
1092:../libBME280/src/bme280.c **** }
1093:../libBME280/src/bme280.c ****
1094:../libBME280/src/bme280.c **** return rslt;
1095:../libBME280/src/bme280.c **** }
1096:../libBME280/src/bme280.c ****
1097:../libBME280/src/bme280.c **** /*!
1098:../libBME280/src/bme280.c **** * @brief This internal API puts the device to sleep mode.
1099:../libBME280/src/bme280.c **** */
1100:../libBME280/src/bme280.c **** static int8_t put_device_to_sleep(struct bme280_dev *dev)
1101:../libBME280/src/bme280.c **** {
1102:../libBME280/src/bme280.c **** int8_t rslt;
1103:../libBME280/src/bme280.c **** uint8_t reg_data[4];
1104:../libBME280/src/bme280.c **** struct bme280_settings settings;
1105:../libBME280/src/bme280.c ****
1106:../libBME280/src/bme280.c **** rslt = bme280_get_regs(BME280_CTRL_HUM_ADDR, reg_data, 4, dev);
1107:../libBME280/src/bme280.c ****
1108:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
1109:../libBME280/src/bme280.c **** {
1110:../libBME280/src/bme280.c **** parse_device_settings(reg_data, &settings);
1111:../libBME280/src/bme280.c **** rslt = bme280_soft_reset(dev);
1112:../libBME280/src/bme280.c ****
1113:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
1114:../libBME280/src/bme280.c **** {
1115:../libBME280/src/bme280.c **** rslt = reload_device_settings(&settings, dev);
1116:../libBME280/src/bme280.c **** }
1117:../libBME280/src/bme280.c **** }
1118:../libBME280/src/bme280.c ****
1119:../libBME280/src/bme280.c **** return rslt;
1120:../libBME280/src/bme280.c **** }
1121:../libBME280/src/bme280.c ****
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 24
1122:../libBME280/src/bme280.c **** /*!
1123:../libBME280/src/bme280.c **** * @brief This internal API reloads the already existing device settings in
1124:../libBME280/src/bme280.c **** * the sensor after soft reset.
1125:../libBME280/src/bme280.c **** */
1126:../libBME280/src/bme280.c **** static int8_t reload_device_settings(const struct bme280_settings *settings, struct bme280_dev *dev
1127:../libBME280/src/bme280.c **** {
1128:../libBME280/src/bme280.c **** int8_t rslt;
1129:../libBME280/src/bme280.c ****
1130:../libBME280/src/bme280.c **** rslt = set_osr_settings(BME280_ALL_SETTINGS_SEL, settings, dev);
1131:../libBME280/src/bme280.c ****
1132:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
1133:../libBME280/src/bme280.c **** {
1134:../libBME280/src/bme280.c **** rslt = set_filter_standby_settings(BME280_ALL_SETTINGS_SEL, settings, dev);
1135:../libBME280/src/bme280.c **** }
1136:../libBME280/src/bme280.c ****
1137:../libBME280/src/bme280.c **** return rslt;
1138:../libBME280/src/bme280.c **** }
1139:../libBME280/src/bme280.c ****
1140:../libBME280/src/bme280.c **** #ifdef BME280_FLOAT_ENABLE
1141:../libBME280/src/bme280.c ****
1142:../libBME280/src/bme280.c **** /*!
1143:../libBME280/src/bme280.c **** * @brief This internal API is used to compensate the raw temperature data and
1144:../libBME280/src/bme280.c **** * return the compensated temperature data in double data type.
1145:../libBME280/src/bme280.c **** */
1146:../libBME280/src/bme280.c **** static double compensate_temperature(const struct bme280_uncomp_data *uncomp_data, struct bme280_ca
1147:../libBME280/src/bme280.c **** {
202 .loc 1 1147 1 is_stmt 1 view -0
203 .cfi_startproc
204 @ args = 0, pretend = 0, frame = 0
205 @ frame_needed = 0, uses_anonymous_args = 0
206 .loc 1 1147 1 is_stmt 0 view .LVU38
207 0000 2DE9F84F push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
208 .LCFI0:
209 .cfi_def_cfa_offset 40
210 .cfi_offset 3, -40
211 .cfi_offset 4, -36
212 .cfi_offset 5, -32
213 .cfi_offset 6, -28
214 .cfi_offset 7, -24
215 .cfi_offset 8, -20
216 .cfi_offset 9, -16
217 .cfi_offset 10, -12
218 .cfi_offset 11, -8
219 .cfi_offset 14, -4
220 0004 0C46 mov r4, r1
1148:../libBME280/src/bme280.c **** double var1;
221 .loc 1 1148 5 is_stmt 1 view .LVU39
1149:../libBME280/src/bme280.c **** double var2;
222 .loc 1 1149 5 view .LVU40
1150:../libBME280/src/bme280.c **** double temperature;
223 .loc 1 1150 5 view .LVU41
1151:../libBME280/src/bme280.c **** double temperature_min = -40;
224 .loc 1 1151 5 view .LVU42
225 .LVL6:
1152:../libBME280/src/bme280.c **** double temperature_max = 85;
226 .loc 1 1152 5 view .LVU43
1153:../libBME280/src/bme280.c ****
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 25
1154:../libBME280/src/bme280.c **** var1 = ((double)uncomp_data->temperature) / 16384.0 - ((double)calib_data->dig_t1) / 1024.0;
227 .loc 1 1154 5 view .LVU44
228 .loc 1 1154 13 is_stmt 0 view .LVU45
229 0006 4068 ldr r0, [r0, #4]
230 .LVL7:
231 .loc 1 1154 13 view .LVU46
232 0008 FFF7FEFF bl __aeabi_ui2d
233 .LVL8:
234 .loc 1 1154 13 view .LVU47
235 000c 8046 mov r8, r0
236 000e 8946 mov r9, r1
237 .loc 1 1154 47 view .LVU48
238 0010 0022 movs r2, #0
239 0012 364B ldr r3, .L11
240 0014 FFF7FEFF bl __aeabi_dmul
241 .LVL9:
242 0018 0646 mov r6, r0
243 001a 0F46 mov r7, r1
244 .loc 1 1154 60 view .LVU49
245 001c 2088 ldrh r0, [r4]
246 001e FFF7FEFF bl __aeabi_ui2d
247 .LVL10:
248 0022 8246 mov r10, r0
249 0024 8B46 mov fp, r1
250 .loc 1 1154 88 view .LVU50
251 0026 0022 movs r2, #0
252 0028 314B ldr r3, .L11+4
253 002a FFF7FEFF bl __aeabi_dmul
254 .LVL11:
255 .loc 1 1154 10 view .LVU51
256 002e 0246 mov r2, r0
257 0030 0B46 mov r3, r1
258 0032 3046 mov r0, r6
259 0034 3946 mov r1, r7
260 0036 FFF7FEFF bl __aeabi_dsub
261 .LVL12:
262 003a 0646 mov r6, r0
263 003c 0F46 mov r7, r1
264 .LVL13:
1155:../libBME280/src/bme280.c **** var1 = var1 * ((double)calib_data->dig_t2);
265 .loc 1 1155 5 is_stmt 1 view .LVU52
266 .loc 1 1155 20 is_stmt 0 view .LVU53
267 003e B4F90200 ldrsh r0, [r4, #2]
268 0042 FFF7FEFF bl __aeabi_i2d
269 .LVL14:
270 .loc 1 1155 10 view .LVU54
271 0046 3246 mov r2, r6
272 0048 3B46 mov r3, r7
273 004a FFF7FEFF bl __aeabi_dmul
274 .LVL15:
275 004e 0646 mov r6, r0
276 .LVL16:
277 .loc 1 1155 10 view .LVU55
278 0050 0F46 mov r7, r1
279 .LVL17:
1156:../libBME280/src/bme280.c **** var2 = (((double)uncomp_data->temperature) / 131072.0 - ((double)calib_data->dig_t1) / 8192.0);
280 .loc 1 1156 5 is_stmt 1 view .LVU56
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 26
281 .loc 1 1156 48 is_stmt 0 view .LVU57
282 0052 0022 movs r2, #0
283 0054 274B ldr r3, .L11+8
284 0056 4046 mov r0, r8
285 0058 4946 mov r1, r9
286 005a FFF7FEFF bl __aeabi_dmul
287 .LVL18:
288 005e 8046 mov r8, r0
289 0060 8946 mov r9, r1
290 .loc 1 1156 90 view .LVU58
291 0062 0022 movs r2, #0
292 0064 244B ldr r3, .L11+12
293 0066 5046 mov r0, r10
294 0068 5946 mov r1, fp
295 006a FFF7FEFF bl __aeabi_dmul
296 .LVL19:
297 .loc 1 1156 10 view .LVU59
298 006e 0246 mov r2, r0
299 0070 0B46 mov r3, r1
300 0072 4046 mov r0, r8
301 0074 4946 mov r1, r9
302 0076 FFF7FEFF bl __aeabi_dsub
303 .LVL20:
1157:../libBME280/src/bme280.c **** var2 = (var2 * var2) * ((double)calib_data->dig_t3);
304 .loc 1 1157 5 is_stmt 1 view .LVU60
305 .loc 1 1157 18 is_stmt 0 view .LVU61
306 007a 0246 mov r2, r0
307 007c 0B46 mov r3, r1
308 007e FFF7FEFF bl __aeabi_dmul
309 .LVL21:
310 .loc 1 1157 18 view .LVU62
311 0082 8046 mov r8, r0
312 0084 8946 mov r9, r1
313 .loc 1 1157 29 view .LVU63
314 0086 B4F90400 ldrsh r0, [r4, #4]
315 008a FFF7FEFF bl __aeabi_i2d
316 .LVL22:
317 .loc 1 1157 10 view .LVU64
318 008e 0246 mov r2, r0
319 0090 0B46 mov r3, r1
320 0092 4046 mov r0, r8
321 0094 4946 mov r1, r9
322 0096 FFF7FEFF bl __aeabi_dmul
323 .LVL23:
1158:../libBME280/src/bme280.c **** calib_data->t_fine = (int32_t)(var1 + var2);
324 .loc 1 1158 5 is_stmt 1 view .LVU65
325 .loc 1 1158 41 is_stmt 0 view .LVU66
326 009a 0246 mov r2, r0
327 009c 0B46 mov r3, r1
328 009e 3046 mov r0, r6
329 .LVL24:
330 .loc 1 1158 41 view .LVU67
331 00a0 3946 mov r1, r7
332 00a2 FFF7FEFF bl __aeabi_dadd
333 .LVL25:
334 00a6 0646 mov r6, r0
335 .LVL26:
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 27
336 .loc 1 1158 41 view .LVU68
337 00a8 0F46 mov r7, r1
338 .loc 1 1158 26 view .LVU69
339 00aa FFF7FEFF bl __aeabi_d2iz
340 .LVL27:
341 .loc 1 1158 24 view .LVU70
342 00ae 6062 str r0, [r4, #36]
1159:../libBME280/src/bme280.c **** temperature = (var1 + var2) / 5120.0;
343 .loc 1 1159 5 is_stmt 1 view .LVU71
344 .loc 1 1159 17 is_stmt 0 view .LVU72
345 00b0 0022 movs r2, #0
346 00b2 124B ldr r3, .L11+16
347 00b4 3046 mov r0, r6
348 00b6 3946 mov r1, r7
349 00b8 FFF7FEFF bl __aeabi_ddiv
350 .LVL28:
351 00bc 0446 mov r4, r0
352 .LVL29:
353 .loc 1 1159 17 view .LVU73
354 00be 0D46 mov r5, r1
355 .LVL30:
1160:../libBME280/src/bme280.c ****
1161:../libBME280/src/bme280.c **** if (temperature < temperature_min)
356 .loc 1 1161 5 is_stmt 1 view .LVU74
357 .loc 1 1161 8 is_stmt 0 view .LVU75
358 00c0 0022 movs r2, #0
359 00c2 0F4B ldr r3, .L11+20
360 00c4 FFF7FEFF bl __aeabi_dcmplt
361 .LVL31:
362 00c8 48B9 cbnz r0, .L8
1162:../libBME280/src/bme280.c **** {
1163:../libBME280/src/bme280.c **** temperature = temperature_min;
1164:../libBME280/src/bme280.c **** }
1165:../libBME280/src/bme280.c **** else if (temperature > temperature_max)
363 .loc 1 1165 10 is_stmt 1 view .LVU76
364 .loc 1 1165 13 is_stmt 0 view .LVU77
365 00ca 0022 movs r2, #0
366 00cc 0D4B ldr r3, .L11+24
367 00ce 2046 mov r0, r4
368 00d0 2946 mov r1, r5
369 00d2 FFF7FEFF bl __aeabi_dcmpgt
370 .LVL32:
371 00d6 20B1 cbz r0, .L6
1166:../libBME280/src/bme280.c **** {
1167:../libBME280/src/bme280.c **** temperature = temperature_max;
372 .loc 1 1167 21 view .LVU78
373 00d8 0024 movs r4, #0
374 .LVL33:
375 .loc 1 1167 21 view .LVU79
376 00da 0A4D ldr r5, .L11+24
377 .LVL34:
1168:../libBME280/src/bme280.c **** }
1169:../libBME280/src/bme280.c ****
1170:../libBME280/src/bme280.c **** return temperature;
378 .loc 1 1170 5 is_stmt 1 view .LVU80
379 .loc 1 1170 12 is_stmt 0 view .LVU81
380 00dc 01E0 b .L6
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 28
381 .LVL35:
382 .L8:
1163:../libBME280/src/bme280.c **** }
383 .loc 1 1163 21 view .LVU82
384 00de 0024 movs r4, #0
385 .LVL36:
1163:../libBME280/src/bme280.c **** }
386 .loc 1 1163 21 view .LVU83
387 00e0 074D ldr r5, .L11+20
388 .L6:
1171:../libBME280/src/bme280.c **** }
389 .loc 1 1171 1 view .LVU84
390 00e2 2046 mov r0, r4
391 00e4 2946 mov r1, r5
392 00e6 BDE8F88F pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
393 .L12:
394 00ea 00BF .align 2
395 .L11:
396 00ec 0000103F .word 1058013184
397 00f0 0000503F .word 1062207488
398 00f4 0000E03E .word 1054867456
399 00f8 0000203F .word 1059061760
400 00fc 0000B440 .word 1085538304
401 0100 000044C0 .word -1069285376
402 0104 00405540 .word 1079328768
403 .cfi_endproc
404 .LFE24:
406 .section .text.compensate_pressure,"ax",%progbits
407 .align 1
408 .syntax unified
409 .thumb
410 .thumb_func
411 .fpu softvfp
413 compensate_pressure:
414 .LVL37:
415 .LFB25:
1172:../libBME280/src/bme280.c ****
1173:../libBME280/src/bme280.c **** /*!
1174:../libBME280/src/bme280.c **** * @brief This internal API is used to compensate the raw pressure data and
1175:../libBME280/src/bme280.c **** * return the compensated pressure data in double data type.
1176:../libBME280/src/bme280.c **** */
1177:../libBME280/src/bme280.c **** static double compensate_pressure(const struct bme280_uncomp_data *uncomp_data,
1178:../libBME280/src/bme280.c **** const struct bme280_calib_data *calib_data)
1179:../libBME280/src/bme280.c **** {
416 .loc 1 1179 1 is_stmt 1 view -0
417 .cfi_startproc
418 @ args = 0, pretend = 0, frame = 0
419 @ frame_needed = 0, uses_anonymous_args = 0
420 .loc 1 1179 1 is_stmt 0 view .LVU86
421 0000 2DE9F84F push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
422 .LCFI1:
423 .cfi_def_cfa_offset 40
424 .cfi_offset 3, -40
425 .cfi_offset 4, -36
426 .cfi_offset 5, -32
427 .cfi_offset 6, -28
428 .cfi_offset 7, -24
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 29
429 .cfi_offset 8, -20
430 .cfi_offset 9, -16
431 .cfi_offset 10, -12
432 .cfi_offset 11, -8
433 .cfi_offset 14, -4
434 0004 0546 mov r5, r0
435 0006 0C46 mov r4, r1
1180:../libBME280/src/bme280.c **** double var1;
436 .loc 1 1180 5 is_stmt 1 view .LVU87
1181:../libBME280/src/bme280.c **** double var2;
437 .loc 1 1181 5 view .LVU88
1182:../libBME280/src/bme280.c **** double var3;
438 .loc 1 1182 5 view .LVU89
1183:../libBME280/src/bme280.c **** double pressure;
439 .loc 1 1183 5 view .LVU90
1184:../libBME280/src/bme280.c **** double pressure_min = 30000.0;
440 .loc 1 1184 5 view .LVU91
441 .LVL38:
1185:../libBME280/src/bme280.c **** double pressure_max = 110000.0;
442 .loc 1 1185 5 view .LVU92
1186:../libBME280/src/bme280.c ****
1187:../libBME280/src/bme280.c **** var1 = ((double)calib_data->t_fine / 2.0) - 64000.0;
443 .loc 1 1187 5 view .LVU93
444 .loc 1 1187 13 is_stmt 0 view .LVU94
445 0008 486A ldr r0, [r1, #36]
446 .LVL39:
447 .loc 1 1187 13 view .LVU95
448 000a FFF7FEFF bl __aeabi_i2d
449 .LVL40:
450 .loc 1 1187 40 view .LVU96
451 000e 0022 movs r2, #0
452 0010 874B ldr r3, .L22+24
453 0012 FFF7FEFF bl __aeabi_dmul
454 .LVL41:
455 .loc 1 1187 10 view .LVU97
456 0016 0022 movs r2, #0
457 0018 864B ldr r3, .L22+28
458 001a FFF7FEFF bl __aeabi_dsub
459 .LVL42:
460 001e 0646 mov r6, r0
461 0020 0F46 mov r7, r1
462 .LVL43:
1188:../libBME280/src/bme280.c **** var2 = var1 * var1 * ((double)calib_data->dig_p6) / 32768.0;
463 .loc 1 1188 5 is_stmt 1 view .LVU98
464 .loc 1 1188 17 is_stmt 0 view .LVU99
465 0022 0246 mov r2, r0
466 0024 0B46 mov r3, r1
467 0026 FFF7FEFF bl __aeabi_dmul
468 .LVL44:
469 002a 8046 mov r8, r0
470 002c 8946 mov r9, r1
471 .loc 1 1188 27 view .LVU100
472 002e B4F91000 ldrsh r0, [r4, #16]
473 0032 FFF7FEFF bl __aeabi_i2d
474 .LVL45:
475 .loc 1 1188 24 view .LVU101
476 0036 0246 mov r2, r0
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 30
477 0038 0B46 mov r3, r1
478 003a 4046 mov r0, r8
479 003c 4946 mov r1, r9
480 003e FFF7FEFF bl __aeabi_dmul
481 .LVL46:
482 .loc 1 1188 10 view .LVU102
483 0042 0022 movs r2, #0
484 0044 4FF07C53 mov r3, #1056964608
485 0048 FFF7FEFF bl __aeabi_dmul
486 .LVL47:
487 004c 8046 mov r8, r0
488 004e 8946 mov r9, r1
489 .LVL48:
1189:../libBME280/src/bme280.c **** var2 = var2 + var1 * ((double)calib_data->dig_p5) * 2.0;
490 .loc 1 1189 5 is_stmt 1 view .LVU103
491 .loc 1 1189 27 is_stmt 0 view .LVU104
492 0050 B4F90E00 ldrsh r0, [r4, #14]
493 0054 FFF7FEFF bl __aeabi_i2d
494 .LVL49:
495 .loc 1 1189 24 view .LVU105
496 0058 3246 mov r2, r6
497 005a 3B46 mov r3, r7
498 005c FFF7FEFF bl __aeabi_dmul
499 .LVL50:
500 .loc 1 1189 55 view .LVU106
501 0060 0246 mov r2, r0
502 0062 0B46 mov r3, r1
503 0064 FFF7FEFF bl __aeabi_dadd
504 .LVL51:
505 .loc 1 1189 10 view .LVU107
506 0068 4246 mov r2, r8
507 006a 4B46 mov r3, r9
508 006c FFF7FEFF bl __aeabi_dadd
509 .LVL52:
1190:../libBME280/src/bme280.c **** var2 = (var2 / 4.0) + (((double)calib_data->dig_p4) * 65536.0);
510 .loc 1 1190 5 is_stmt 1 view .LVU108
511 .loc 1 1190 18 is_stmt 0 view .LVU109
512 0070 0022 movs r2, #0
513 0072 714B ldr r3, .L22+32
514 0074 FFF7FEFF bl __aeabi_dmul
515 .LVL53:
516 .loc 1 1190 18 view .LVU110
517 0078 8046 mov r8, r0
518 007a 8946 mov r9, r1
519 .loc 1 1190 29 view .LVU111
520 007c B4F90C00 ldrsh r0, [r4, #12]
521 0080 FFF7FEFF bl __aeabi_i2d
522 .LVL54:
523 .loc 1 1190 57 view .LVU112
524 0084 0022 movs r2, #0
525 0086 6D4B ldr r3, .L22+36
526 0088 FFF7FEFF bl __aeabi_dmul
527 .LVL55:
528 .loc 1 1190 10 view .LVU113
529 008c 0246 mov r2, r0
530 008e 0B46 mov r3, r1
531 0090 4046 mov r0, r8
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 31
532 0092 4946 mov r1, r9
533 0094 FFF7FEFF bl __aeabi_dadd
534 .LVL56:
535 0098 8046 mov r8, r0
536 009a 8946 mov r9, r1
537 .LVL57:
1191:../libBME280/src/bme280.c **** var3 = ((double)calib_data->dig_p3) * var1 * var1 / 524288.0;
538 .loc 1 1191 5 is_stmt 1 view .LVU114
539 .loc 1 1191 13 is_stmt 0 view .LVU115
540 009c B4F90A00 ldrsh r0, [r4, #10]
541 00a0 FFF7FEFF bl __aeabi_i2d
542 .LVL58:
543 .loc 1 1191 41 view .LVU116
544 00a4 3246 mov r2, r6
545 00a6 3B46 mov r3, r7
546 00a8 FFF7FEFF bl __aeabi_dmul
547 .LVL59:
548 .loc 1 1191 48 view .LVU117
549 00ac 3246 mov r2, r6
550 00ae 3B46 mov r3, r7
551 00b0 FFF7FEFF bl __aeabi_dmul
552 .LVL60:
553 .loc 1 1191 10 view .LVU118
554 00b4 0022 movs r2, #0
555 00b6 4FF07B53 mov r3, #1052770304
556 00ba FFF7FEFF bl __aeabi_dmul
557 .LVL61:
558 00be 8246 mov r10, r0
559 00c0 8B46 mov fp, r1
560 .LVL62:
1192:../libBME280/src/bme280.c **** var1 = (var3 + ((double)calib_data->dig_p2) * var1) / 524288.0;
561 .loc 1 1192 5 is_stmt 1 view .LVU119
562 .loc 1 1192 21 is_stmt 0 view .LVU120
563 00c2 B4F90800 ldrsh r0, [r4, #8]
564 00c6 FFF7FEFF bl __aeabi_i2d
565 .LVL63:
566 .loc 1 1192 49 view .LVU121
567 00ca 3246 mov r2, r6
568 00cc 3B46 mov r3, r7
569 00ce FFF7FEFF bl __aeabi_dmul
570 .LVL64:
571 .loc 1 1192 18 view .LVU122
572 00d2 5246 mov r2, r10
573 00d4 5B46 mov r3, fp
574 00d6 FFF7FEFF bl __aeabi_dadd
575 .LVL65:
576 .loc 1 1192 10 view .LVU123
577 00da 0022 movs r2, #0
578 00dc 4FF07B53 mov r3, #1052770304
579 00e0 FFF7FEFF bl __aeabi_dmul
580 .LVL66:
1193:../libBME280/src/bme280.c **** var1 = (1.0 + var1 / 32768.0) * ((double)calib_data->dig_p1);
581 .loc 1 1193 5 is_stmt 1 view .LVU124
582 .loc 1 1193 24 is_stmt 0 view .LVU125
583 00e4 0022 movs r2, #0
584 00e6 4FF07C53 mov r3, #1056964608
585 00ea FFF7FEFF bl __aeabi_dmul
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 32
586 .LVL67:
587 .loc 1 1193 17 view .LVU126
588 00ee 0022 movs r2, #0
589 00f0 534B ldr r3, .L22+40
590 00f2 FFF7FEFF bl __aeabi_dadd
591 .LVL68:
592 00f6 0646 mov r6, r0
593 00f8 0F46 mov r7, r1
594 .loc 1 1193 38 view .LVU127
595 00fa E088 ldrh r0, [r4, #6]
596 00fc FFF7FEFF bl __aeabi_ui2d
597 .LVL69:
598 .loc 1 1193 10 view .LVU128
599 0100 0246 mov r2, r0
600 0102 0B46 mov r3, r1
601 0104 3046 mov r0, r6
602 0106 3946 mov r1, r7
603 0108 FFF7FEFF bl __aeabi_dmul
604 .LVL70:
605 010c 8246 mov r10, r0
606 .LVL71:
607 .loc 1 1193 10 view .LVU129
608 010e 8B46 mov fp, r1
609 .LVL72:
1194:../libBME280/src/bme280.c ****
1195:../libBME280/src/bme280.c **** /* avoid exception caused by division by zero */
1196:../libBME280/src/bme280.c **** if (var1 > (0.0))
610 .loc 1 1196 5 is_stmt 1 view .LVU130
611 .loc 1 1196 8 is_stmt 0 view .LVU131
612 0110 0022 movs r2, #0
613 0112 0023 movs r3, #0
614 0114 FFF7FEFF bl __aeabi_dcmpgt
615 .LVL73:
616 0118 0028 cmp r0, #0
617 011a 6FD0 beq .L20
1197:../libBME280/src/bme280.c **** {
1198:../libBME280/src/bme280.c **** pressure = 1048576.0 - (double) uncomp_data->pressure;
618 .loc 1 1198 9 is_stmt 1 view .LVU132
619 .loc 1 1198 32 is_stmt 0 view .LVU133
620 011c 2868 ldr r0, [r5]
621 011e FFF7FEFF bl __aeabi_ui2d
622 .LVL74:
623 .loc 1 1198 18 view .LVU134
624 0122 0246 mov r2, r0
625 0124 0B46 mov r3, r1
626 0126 0020 movs r0, #0
627 0128 4649 ldr r1, .L22+44
628 012a FFF7FEFF bl __aeabi_dsub
629 .LVL75:
630 012e 0646 mov r6, r0
631 0130 0F46 mov r7, r1
632 .LVL76:
1199:../libBME280/src/bme280.c **** pressure = (pressure - (var2 / 4096.0)) * 6250.0 / var1;
633 .loc 1 1199 9 is_stmt 1 view .LVU135
634 .loc 1 1199 38 is_stmt 0 view .LVU136
635 0132 0022 movs r2, #0
636 0134 444B ldr r3, .L22+48
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 33
637 0136 4046 mov r0, r8
638 0138 4946 mov r1, r9
639 013a FFF7FEFF bl __aeabi_dmul
640 .LVL77:
641 .loc 1 1199 30 view .LVU137
642 013e 0246 mov r2, r0
643 0140 0B46 mov r3, r1
644 0142 3046 mov r0, r6
645 0144 3946 mov r1, r7
646 0146 FFF7FEFF bl __aeabi_dsub
647 .LVL78:
648 .loc 1 1199 49 view .LVU138
649 014a 33A3 adr r3, .L22
650 014c D3E90023 ldrd r2, [r3]
651 0150 FFF7FEFF bl __aeabi_dmul
652 .LVL79:
653 .loc 1 1199 18 view .LVU139
654 0154 5246 mov r2, r10
655 0156 5B46 mov r3, fp
656 0158 FFF7FEFF bl __aeabi_ddiv
657 .LVL80:
658 015c 0646 mov r6, r0
659 .LVL81:
660 .loc 1 1199 18 view .LVU140
661 015e 0F46 mov r7, r1
662 .LVL82:
1200:../libBME280/src/bme280.c **** var1 = ((double)calib_data->dig_p9) * pressure * pressure / 2147483648.0;
663 .loc 1 1200 9 is_stmt 1 view .LVU141
664 .loc 1 1200 17 is_stmt 0 view .LVU142
665 0160 B4F91600 ldrsh r0, [r4, #22]
666 0164 FFF7FEFF bl __aeabi_i2d
667 .LVL83:
668 .loc 1 1200 45 view .LVU143
669 0168 3246 mov r2, r6
670 016a 3B46 mov r3, r7
671 016c FFF7FEFF bl __aeabi_dmul
672 .LVL84:
673 .loc 1 1200 56 view .LVU144
674 0170 3246 mov r2, r6
675 0172 3B46 mov r3, r7
676 0174 FFF7FEFF bl __aeabi_dmul
677 .LVL85:
678 .loc 1 1200 14 view .LVU145
679 0178 0022 movs r2, #0
680 017a 4FF07853 mov r3, #1040187392
681 017e FFF7FEFF bl __aeabi_dmul
682 .LVL86:
683 0182 8046 mov r8, r0
684 .LVL87:
685 .loc 1 1200 14 view .LVU146
686 0184 8946 mov r9, r1
687 .LVL88:
1201:../libBME280/src/bme280.c **** var2 = pressure * ((double)calib_data->dig_p8) / 32768.0;
688 .loc 1 1201 9 is_stmt 1 view .LVU147
689 .loc 1 1201 28 is_stmt 0 view .LVU148
690 0186 B4F91400 ldrsh r0, [r4, #20]
691 018a FFF7FEFF bl __aeabi_i2d
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 34
692 .LVL89:
693 .loc 1 1201 25 view .LVU149
694 018e 3246 mov r2, r6
695 0190 3B46 mov r3, r7
696 0192 FFF7FEFF bl __aeabi_dmul
697 .LVL90:
698 .loc 1 1201 14 view .LVU150
699 0196 0022 movs r2, #0
700 0198 4FF07C53 mov r3, #1056964608
701 019c FFF7FEFF bl __aeabi_dmul
702 .LVL91:
1202:../libBME280/src/bme280.c **** pressure = pressure + (var1 + var2 + ((double)calib_data->dig_p7)) / 16.0;
703 .loc 1 1202 9 is_stmt 1 view .LVU151
704 .loc 1 1202 37 is_stmt 0 view .LVU152
705 01a0 0246 mov r2, r0
706 01a2 0B46 mov r3, r1
707 01a4 4046 mov r0, r8
708 .LVL92:
709 .loc 1 1202 37 view .LVU153
710 01a6 4946 mov r1, r9
711 01a8 FFF7FEFF bl __aeabi_dadd
712 .LVL93:
713 01ac 8046 mov r8, r0
714 .LVL94:
715 .loc 1 1202 37 view .LVU154
716 01ae 8946 mov r9, r1
717 .loc 1 1202 47 view .LVU155
718 01b0 B4F91200 ldrsh r0, [r4, #18]
719 01b4 FFF7FEFF bl __aeabi_i2d
720 .LVL95:
721 .loc 1 1202 44 view .LVU156
722 01b8 0246 mov r2, r0
723 01ba 0B46 mov r3, r1
724 01bc 4046 mov r0, r8
725 01be 4946 mov r1, r9
726 01c0 FFF7FEFF bl __aeabi_dadd
727 .LVL96:
728 .loc 1 1202 76 view .LVU157
729 01c4 0022 movs r2, #0
730 01c6 214B ldr r3, .L22+52
731 01c8 FFF7FEFF bl __aeabi_dmul
732 .LVL97:
733 .loc 1 1202 18 view .LVU158
734 01cc 3246 mov r2, r6
735 01ce 3B46 mov r3, r7
736 01d0 FFF7FEFF bl __aeabi_dadd
737 .LVL98:
738 01d4 0446 mov r4, r0
739 .LVL99:
740 .loc 1 1202 18 view .LVU159
741 01d6 0D46 mov r5, r1
742 .LVL100:
1203:../libBME280/src/bme280.c ****
1204:../libBME280/src/bme280.c **** if (pressure < pressure_min)
743 .loc 1 1204 9 is_stmt 1 view .LVU160
744 .loc 1 1204 12 is_stmt 0 view .LVU161
745 01d8 11A3 adr r3, .L22+8
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 35
746 01da D3E90023 ldrd r2, [r3]
747 01de FFF7FEFF bl __aeabi_dcmplt
748 .LVL101:
749 01e2 90B9 cbnz r0, .L17
1205:../libBME280/src/bme280.c **** {
1206:../libBME280/src/bme280.c **** pressure = pressure_min;
1207:../libBME280/src/bme280.c **** }
1208:../libBME280/src/bme280.c **** else if (pressure > pressure_max)
750 .loc 1 1208 14 is_stmt 1 view .LVU162
751 .loc 1 1208 17 is_stmt 0 view .LVU163
752 01e4 10A3 adr r3, .L22+16
753 01e6 D3E90023 ldrd r2, [r3]
754 01ea 2046 mov r0, r4
755 01ec 2946 mov r1, r5
756 01ee FFF7FEFF bl __aeabi_dcmpgt
757 .LVL102:
758 01f2 30B1 cbz r0, .L13
1209:../libBME280/src/bme280.c **** {
1210:../libBME280/src/bme280.c **** pressure = pressure_max;
759 .loc 1 1210 22 view .LVU164
760 01f4 0CA5 adr r5, .L22+16
761 01f6 D5E90045 ldrd r4, [r5]
762 .LVL103:
1211:../libBME280/src/bme280.c **** }
1212:../libBME280/src/bme280.c **** }
1213:../libBME280/src/bme280.c **** else /* Invalid case */
1214:../libBME280/src/bme280.c **** {
1215:../libBME280/src/bme280.c **** pressure = pressure_min;
1216:../libBME280/src/bme280.c **** }
1217:../libBME280/src/bme280.c ****
1218:../libBME280/src/bme280.c **** return pressure;
763 .loc 1 1218 5 is_stmt 1 view .LVU165
764 .loc 1 1218 12 is_stmt 0 view .LVU166
765 01fa 02E0 b .L13
766 .LVL104:
767 .L20:
1215:../libBME280/src/bme280.c **** }
768 .loc 1 1215 18 view .LVU167
769 01fc 08A5 adr r5, .L22+8
770 01fe D5E90045 ldrd r4, [r5]
771 .LVL105:
772 .L13:
1219:../libBME280/src/bme280.c **** }
773 .loc 1 1219 1 view .LVU168
774 0202 2046 mov r0, r4
775 0204 2946 mov r1, r5
776 0206 BDE8F88F pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
777 .LVL106:
778 .L17:
1206:../libBME280/src/bme280.c **** }
779 .loc 1 1206 22 view .LVU169
780 020a 05A5 adr r5, .L22+8
781 020c D5E90045 ldrd r4, [r5]
782 .LVL107:
1206:../libBME280/src/bme280.c **** }
783 .loc 1 1206 22 view .LVU170
784 0210 F7E7 b .L13
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 36
785 .L23:
786 0212 00BFAFF3 .align 3
786 0080
787 .L22:
788 0218 00000000 .word 0
789 021c 006AB840 .word 1085827584
790 0220 00000000 .word 0
791 0224 004CDD40 .word 1088244736
792 0228 00000000 .word 0
793 022c 00DBFA40 .word 1090181888
794 0230 0000E03F .word 1071644672
795 0234 0040EF40 .word 1089421312
796 0238 0000D03F .word 1070596096
797 023c 0000F040 .word 1089470464
798 0240 0000F03F .word 1072693248
799 0244 00003041 .word 1093664768
800 0248 0000303F .word 1060110336
801 024c 0000B03F .word 1068498944
802 .cfi_endproc
803 .LFE25:
805 .section .text.compensate_humidity,"ax",%progbits
806 .align 1
807 .syntax unified
808 .thumb
809 .thumb_func
810 .fpu softvfp
812 compensate_humidity:
813 .LVL108:
814 .LFB26:
1220:../libBME280/src/bme280.c ****
1221:../libBME280/src/bme280.c **** /*!
1222:../libBME280/src/bme280.c **** * @brief This internal API is used to compensate the raw humidity data and
1223:../libBME280/src/bme280.c **** * return the compensated humidity data in double data type.
1224:../libBME280/src/bme280.c **** */
1225:../libBME280/src/bme280.c **** static double compensate_humidity(const struct bme280_uncomp_data *uncomp_data,
1226:../libBME280/src/bme280.c **** const struct bme280_calib_data *calib_data)
1227:../libBME280/src/bme280.c **** {
815 .loc 1 1227 1 is_stmt 1 view -0
816 .cfi_startproc
817 @ args = 0, pretend = 0, frame = 16
818 @ frame_needed = 0, uses_anonymous_args = 0
819 .loc 1 1227 1 is_stmt 0 view .LVU172
820 0000 2DE9F047 push {r4, r5, r6, r7, r8, r9, r10, lr}
821 .LCFI2:
822 .cfi_def_cfa_offset 32
823 .cfi_offset 4, -32
824 .cfi_offset 5, -28
825 .cfi_offset 6, -24
826 .cfi_offset 7, -20
827 .cfi_offset 8, -16
828 .cfi_offset 9, -12
829 .cfi_offset 10, -8
830 .cfi_offset 14, -4
831 0004 84B0 sub sp, sp, #16
832 .LCFI3:
833 .cfi_def_cfa_offset 48
834 0006 8046 mov r8, r0
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 37
835 0008 8A46 mov r10, r1
1228:../libBME280/src/bme280.c **** double humidity;
836 .loc 1 1228 5 is_stmt 1 view .LVU173
1229:../libBME280/src/bme280.c **** double humidity_min = 0.0;
837 .loc 1 1229 5 view .LVU174
838 .LVL109:
1230:../libBME280/src/bme280.c **** double humidity_max = 100.0;
839 .loc 1 1230 5 view .LVU175
1231:../libBME280/src/bme280.c **** double var1;
840 .loc 1 1231 5 view .LVU176
1232:../libBME280/src/bme280.c **** double var2;
841 .loc 1 1232 5 view .LVU177
1233:../libBME280/src/bme280.c **** double var3;
842 .loc 1 1233 5 view .LVU178
1234:../libBME280/src/bme280.c **** double var4;
843 .loc 1 1234 5 view .LVU179
1235:../libBME280/src/bme280.c **** double var5;
844 .loc 1 1235 5 view .LVU180
1236:../libBME280/src/bme280.c **** double var6;
845 .loc 1 1236 5 view .LVU181
1237:../libBME280/src/bme280.c ****
1238:../libBME280/src/bme280.c **** var1 = ((double)calib_data->t_fine) - 76800.0;
846 .loc 1 1238 5 view .LVU182
847 .loc 1 1238 13 is_stmt 0 view .LVU183
848 000a 486A ldr r0, [r1, #36]
849 .LVL110:
850 .loc 1 1238 13 view .LVU184
851 000c FFF7FEFF bl __aeabi_i2d
852 .LVL111:
853 .loc 1 1238 10 view .LVU185
854 0010 0022 movs r2, #0
855 0012 524B ldr r3, .L29
856 0014 FFF7FEFF bl __aeabi_dsub
857 .LVL112:
858 0018 0646 mov r6, r0
859 001a 0F46 mov r7, r1
860 .LVL113:
1239:../libBME280/src/bme280.c **** var2 = (((double)calib_data->dig_h4) * 64.0 + (((double)calib_data->dig_h5) / 16384.0) * var1);
861 .loc 1 1239 5 is_stmt 1 view .LVU186
862 .loc 1 1239 14 is_stmt 0 view .LVU187
863 001c BAF91E00 ldrsh r0, [r10, #30]
864 0020 FFF7FEFF bl __aeabi_i2d
865 .LVL114:
866 .loc 1 1239 42 view .LVU188
867 0024 0022 movs r2, #0
868 0026 4E4B ldr r3, .L29+4
869 0028 FFF7FEFF bl __aeabi_dmul
870 .LVL115:
871 002c 0446 mov r4, r0
872 002e 0D46 mov r5, r1
873 .loc 1 1239 53 view .LVU189
874 0030 BAF92000 ldrsh r0, [r10, #32]
875 0034 FFF7FEFF bl __aeabi_i2d
876 .LVL116:
877 .loc 1 1239 81 view .LVU190
878 0038 0022 movs r2, #0
879 003a 4A4B ldr r3, .L29+8
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 38
880 003c FFF7FEFF bl __aeabi_dmul
881 .LVL117:
882 .loc 1 1239 92 view .LVU191
883 0040 3246 mov r2, r6
884 0042 3B46 mov r3, r7
885 0044 FFF7FEFF bl __aeabi_dmul
886 .LVL118:
887 .loc 1 1239 10 view .LVU192
888 0048 0246 mov r2, r0
889 004a 0B46 mov r3, r1
890 004c 2046 mov r0, r4
891 004e 2946 mov r1, r5
892 0050 FFF7FEFF bl __aeabi_dadd
893 .LVL119:
894 0054 0446 mov r4, r0
895 0056 0D46 mov r5, r1
896 .LVL120:
1240:../libBME280/src/bme280.c **** var3 = uncomp_data->humidity - var2;
897 .loc 1 1240 5 is_stmt 1 view .LVU193
898 .loc 1 1240 34 is_stmt 0 view .LVU194
899 0058 D8F80800 ldr r0, [r8, #8]
900 005c FFF7FEFF bl __aeabi_ui2d
901 .LVL121:
902 .loc 1 1240 10 view .LVU195
903 0060 2246 mov r2, r4
904 0062 2B46 mov r3, r5
905 0064 FFF7FEFF bl __aeabi_dsub
906 .LVL122:
907 0068 CDE90001 strd r0, [sp]
908 .LVL123:
1241:../libBME280/src/bme280.c **** var4 = ((double)calib_data->dig_h2) / 65536.0;
909 .loc 1 1241 5 is_stmt 1 view .LVU196
910 .loc 1 1241 13 is_stmt 0 view .LVU197
911 006c BAF91A00 ldrsh r0, [r10, #26]
912 .LVL124:
913 .loc 1 1241 13 view .LVU198
914 0070 FFF7FEFF bl __aeabi_i2d
915 .LVL125:
916 .loc 1 1241 10 view .LVU199
917 0074 0022 movs r2, #0
918 0076 3C4B ldr r3, .L29+12
919 0078 FFF7FEFF bl __aeabi_dmul
920 .LVL126:
921 007c CDE90201 strd r0, [sp, #8]
922 .LVL127:
1242:../libBME280/src/bme280.c **** var5 = (1.0 + (((double)calib_data->dig_h3) / 67108864.0) * var1);
923 .loc 1 1242 5 is_stmt 1 view .LVU200
924 .loc 1 1242 21 is_stmt 0 view .LVU201
925 0080 9AF81C00 ldrb r0, [r10, #28] @ zero_extendqisi2
926 .LVL128:
927 .loc 1 1242 21 view .LVU202
928 0084 FFF7FEFF bl __aeabi_ui2d
929 .LVL129:
930 .loc 1 1242 49 view .LVU203
931 0088 0022 movs r2, #0
932 008a 384B ldr r3, .L29+16
933 008c FFF7FEFF bl __aeabi_dmul
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 39
934 .LVL130:
935 .loc 1 1242 63 view .LVU204
936 0090 3246 mov r2, r6
937 0092 3B46 mov r3, r7
938 0094 FFF7FEFF bl __aeabi_dmul
939 .LVL131:
940 .loc 1 1242 10 view .LVU205
941 0098 0022 movs r2, #0
942 009a 354B ldr r3, .L29+20
943 009c FFF7FEFF bl __aeabi_dadd
944 .LVL132:
945 00a0 0446 mov r4, r0
946 .LVL133:
947 .loc 1 1242 10 view .LVU206
948 00a2 0D46 mov r5, r1
949 .LVL134:
1243:../libBME280/src/bme280.c **** var6 = 1.0 + (((double)calib_data->dig_h6) / 67108864.0) * var1 * var5;
950 .loc 1 1243 5 is_stmt 1 view .LVU207
951 .loc 1 1243 20 is_stmt 0 view .LVU208
952 00a4 9AF92200 ldrsb r0, [r10, #34]
953 00a8 FFF7FEFF bl __aeabi_i2d
954 .LVL135:
955 .loc 1 1243 48 view .LVU209
956 00ac 0022 movs r2, #0
957 00ae 2F4B ldr r3, .L29+16
958 00b0 FFF7FEFF bl __aeabi_dmul
959 .LVL136:
960 .loc 1 1243 62 view .LVU210
961 00b4 3246 mov r2, r6
962 00b6 3B46 mov r3, r7
963 00b8 FFF7FEFF bl __aeabi_dmul
964 .LVL137:
965 .loc 1 1243 69 view .LVU211
966 00bc 2246 mov r2, r4
967 00be 2B46 mov r3, r5
968 00c0 FFF7FEFF bl __aeabi_dmul
969 .LVL138:
970 .loc 1 1243 10 view .LVU212
971 00c4 0022 movs r2, #0
972 00c6 2A4B ldr r3, .L29+20
973 00c8 FFF7FEFF bl __aeabi_dadd
974 .LVL139:
975 00cc 8046 mov r8, r0
976 .LVL140:
977 .loc 1 1243 10 view .LVU213
978 00ce 8946 mov r9, r1
979 .LVL141:
1244:../libBME280/src/bme280.c **** var6 = var3 * var4 * (var5 * var6);
980 .loc 1 1244 5 is_stmt 1 view .LVU214
981 .loc 1 1244 17 is_stmt 0 view .LVU215
982 00d0 DDE90223 ldrd r2, [sp, #8]
983 00d4 DDE90001 ldrd r0, [sp]
984 00d8 FFF7FEFF bl __aeabi_dmul
985 .LVL142:
986 00dc 0646 mov r6, r0
987 .LVL143:
988 .loc 1 1244 17 view .LVU216
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 40
989 00de 0F46 mov r7, r1
990 .loc 1 1244 32 view .LVU217
991 00e0 4246 mov r2, r8
992 00e2 4B46 mov r3, r9
993 00e4 2046 mov r0, r4
994 00e6 2946 mov r1, r5
995 00e8 FFF7FEFF bl __aeabi_dmul
996 .LVL144:
997 .loc 1 1244 10 view .LVU218
998 00ec 0246 mov r2, r0
999 00ee 0B46 mov r3, r1
1000 00f0 3046 mov r0, r6
1001 00f2 3946 mov r1, r7
1002 00f4 FFF7FEFF bl __aeabi_dmul
1003 .LVL145:
1004 00f8 0446 mov r4, r0
1005 .LVL146:
1006 .loc 1 1244 10 view .LVU219
1007 00fa 0D46 mov r5, r1
1008 .LVL147:
1245:../libBME280/src/bme280.c **** humidity = var6 * (1.0 - ((double)calib_data->dig_h1) * var6 / 524288.0);
1009 .loc 1 1245 5 is_stmt 1 view .LVU220
1010 .loc 1 1245 31 is_stmt 0 view .LVU221
1011 00fc 9AF81800 ldrb r0, [r10, #24] @ zero_extendqisi2
1012 0100 FFF7FEFF bl __aeabi_ui2d
1013 .LVL148:
1014 .loc 1 1245 59 view .LVU222
1015 0104 2246 mov r2, r4
1016 0106 2B46 mov r3, r5
1017 0108 FFF7FEFF bl __aeabi_dmul
1018 .LVL149:
1019 .loc 1 1245 66 view .LVU223
1020 010c 0022 movs r2, #0
1021 010e 4FF07B53 mov r3, #1052770304
1022 0112 FFF7FEFF bl __aeabi_dmul
1023 .LVL150:
1024 .loc 1 1245 28 view .LVU224
1025 0116 0246 mov r2, r0
1026 0118 0B46 mov r3, r1
1027 011a 0020 movs r0, #0
1028 011c 1449 ldr r1, .L29+20
1029 011e FFF7FEFF bl __aeabi_dsub
1030 .LVL151:
1031 .loc 1 1245 14 view .LVU225
1032 0122 2246 mov r2, r4
1033 0124 2B46 mov r3, r5
1034 0126 FFF7FEFF bl __aeabi_dmul
1035 .LVL152:
1036 012a 0446 mov r4, r0
1037 .LVL153:
1038 .loc 1 1245 14 view .LVU226
1039 012c 0D46 mov r5, r1
1040 .LVL154:
1246:../libBME280/src/bme280.c ****
1247:../libBME280/src/bme280.c **** if (humidity > humidity_max)
1041 .loc 1 1247 5 is_stmt 1 view .LVU227
1042 .loc 1 1247 8 is_stmt 0 view .LVU228
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 41
1043 012e 0022 movs r2, #0
1044 0130 104B ldr r3, .L29+24
1045 0132 FFF7FEFF bl __aeabi_dcmpgt
1046 .LVL155:
1047 0136 48B9 cbnz r0, .L26
1248:../libBME280/src/bme280.c **** {
1249:../libBME280/src/bme280.c **** humidity = humidity_max;
1250:../libBME280/src/bme280.c **** }
1251:../libBME280/src/bme280.c **** else if (humidity < humidity_min)
1048 .loc 1 1251 10 is_stmt 1 view .LVU229
1049 .loc 1 1251 13 is_stmt 0 view .LVU230
1050 0138 0022 movs r2, #0
1051 013a 0023 movs r3, #0
1052 013c 2046 mov r0, r4
1053 013e 2946 mov r1, r5
1054 0140 FFF7FEFF bl __aeabi_dcmplt
1055 .LVL156:
1056 0144 20B1 cbz r0, .L24
1252:../libBME280/src/bme280.c **** {
1253:../libBME280/src/bme280.c **** humidity = humidity_min;
1057 .loc 1 1253 18 view .LVU231
1058 0146 0024 movs r4, #0
1059 .LVL157:
1060 .loc 1 1253 18 view .LVU232
1061 0148 0025 movs r5, #0
1062 .LVL158:
1254:../libBME280/src/bme280.c **** }
1255:../libBME280/src/bme280.c ****
1256:../libBME280/src/bme280.c **** return humidity;
1063 .loc 1 1256 5 is_stmt 1 view .LVU233
1064 .loc 1 1256 12 is_stmt 0 view .LVU234
1065 014a 01E0 b .L24
1066 .LVL159:
1067 .L26:
1249:../libBME280/src/bme280.c **** }
1068 .loc 1 1249 18 view .LVU235
1069 014c 0024 movs r4, #0
1070 .LVL160:
1249:../libBME280/src/bme280.c **** }
1071 .loc 1 1249 18 view .LVU236
1072 014e 094D ldr r5, .L29+24
1073 .L24:
1257:../libBME280/src/bme280.c **** }
1074 .loc 1 1257 1 view .LVU237
1075 0150 2046 mov r0, r4
1076 0152 2946 mov r1, r5
1077 0154 04B0 add sp, sp, #16
1078 .LCFI4:
1079 .cfi_def_cfa_offset 32
1080 .LVL161:
1081 .loc 1 1257 1 view .LVU238
1082 @ sp needed
1083 0156 BDE8F087 pop {r4, r5, r6, r7, r8, r9, r10, pc}
1084 .LVL162:
1085 .L30:
1086 .loc 1 1257 1 view .LVU239
1087 015a 00BF .align 2
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 42
1088 .L29:
1089 015c 00C0F240 .word 1089650688
1090 0160 00005040 .word 1078984704
1091 0164 0000103F .word 1058013184
1092 0168 0000F03E .word 1055916032
1093 016c 0000503E .word 1045430272
1094 0170 0000F03F .word 1072693248
1095 0174 00005940 .word 1079574528
1096 .cfi_endproc
1097 .LFE26:
1099 .section .text.interleave_reg_addr,"ax",%progbits
1100 .align 1
1101 .syntax unified
1102 .thumb
1103 .thumb_func
1104 .fpu softvfp
1106 interleave_reg_addr:
1107 .LVL163:
1108 .LFB28:
1258:../libBME280/src/bme280.c ****
1259:../libBME280/src/bme280.c **** #else
1260:../libBME280/src/bme280.c ****
1261:../libBME280/src/bme280.c **** /*!
1262:../libBME280/src/bme280.c **** * @brief This internal API is used to compensate the raw temperature data and
1263:../libBME280/src/bme280.c **** * return the compensated temperature data in integer data type.
1264:../libBME280/src/bme280.c **** */
1265:../libBME280/src/bme280.c **** static int32_t compensate_temperature(const struct bme280_uncomp_data *uncomp_data,
1266:../libBME280/src/bme280.c **** struct bme280_calib_data *calib_data)
1267:../libBME280/src/bme280.c **** {
1268:../libBME280/src/bme280.c **** int32_t var1;
1269:../libBME280/src/bme280.c **** int32_t var2;
1270:../libBME280/src/bme280.c **** int32_t temperature;
1271:../libBME280/src/bme280.c **** int32_t temperature_min = -4000;
1272:../libBME280/src/bme280.c **** int32_t temperature_max = 8500;
1273:../libBME280/src/bme280.c ****
1274:../libBME280/src/bme280.c **** var1 = (int32_t)((uncomp_data->temperature / 8) - ((int32_t)calib_data->dig_t1 * 2));
1275:../libBME280/src/bme280.c **** var1 = (var1 * ((int32_t)calib_data->dig_t2)) / 2048;
1276:../libBME280/src/bme280.c **** var2 = (int32_t)((uncomp_data->temperature / 16) - ((int32_t)calib_data->dig_t1));
1277:../libBME280/src/bme280.c **** var2 = (((var2 * var2) / 4096) * ((int32_t)calib_data->dig_t3)) / 16384;
1278:../libBME280/src/bme280.c **** calib_data->t_fine = var1 + var2;
1279:../libBME280/src/bme280.c **** temperature = (calib_data->t_fine * 5 + 128) / 256;
1280:../libBME280/src/bme280.c ****
1281:../libBME280/src/bme280.c **** if (temperature < temperature_min)
1282:../libBME280/src/bme280.c **** {
1283:../libBME280/src/bme280.c **** temperature = temperature_min;
1284:../libBME280/src/bme280.c **** }
1285:../libBME280/src/bme280.c **** else if (temperature > temperature_max)
1286:../libBME280/src/bme280.c **** {
1287:../libBME280/src/bme280.c **** temperature = temperature_max;
1288:../libBME280/src/bme280.c **** }
1289:../libBME280/src/bme280.c ****
1290:../libBME280/src/bme280.c **** return temperature;
1291:../libBME280/src/bme280.c **** }
1292:../libBME280/src/bme280.c **** #ifndef BME280_32BIT_ENABLE /* 64 bit compensation for pressure data */
1293:../libBME280/src/bme280.c ****
1294:../libBME280/src/bme280.c **** /*!
1295:../libBME280/src/bme280.c **** * @brief This internal API is used to compensate the raw pressure data and
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 43
1296:../libBME280/src/bme280.c **** * return the compensated pressure data in integer data type with higher
1297:../libBME280/src/bme280.c **** * accuracy.
1298:../libBME280/src/bme280.c **** */
1299:../libBME280/src/bme280.c **** static uint32_t compensate_pressure(const struct bme280_uncomp_data *uncomp_data,
1300:../libBME280/src/bme280.c **** const struct bme280_calib_data *calib_data)
1301:../libBME280/src/bme280.c **** {
1302:../libBME280/src/bme280.c **** int64_t var1;
1303:../libBME280/src/bme280.c **** int64_t var2;
1304:../libBME280/src/bme280.c **** int64_t var3;
1305:../libBME280/src/bme280.c **** int64_t var4;
1306:../libBME280/src/bme280.c **** uint32_t pressure;
1307:../libBME280/src/bme280.c **** uint32_t pressure_min = 3000000;
1308:../libBME280/src/bme280.c **** uint32_t pressure_max = 11000000;
1309:../libBME280/src/bme280.c ****
1310:../libBME280/src/bme280.c **** var1 = ((int64_t)calib_data->t_fine) - 128000;
1311:../libBME280/src/bme280.c **** var2 = var1 * var1 * (int64_t)calib_data->dig_p6;
1312:../libBME280/src/bme280.c **** var2 = var2 + ((var1 * (int64_t)calib_data->dig_p5) * 131072);
1313:../libBME280/src/bme280.c **** var2 = var2 + (((int64_t)calib_data->dig_p4) * 34359738368);
1314:../libBME280/src/bme280.c **** var1 = ((var1 * var1 * (int64_t)calib_data->dig_p3) / 256) + ((var1 * ((int64_t)calib_data->dig
1315:../libBME280/src/bme280.c **** var3 = ((int64_t)1) * 140737488355328;
1316:../libBME280/src/bme280.c **** var1 = (var3 + var1) * ((int64_t)calib_data->dig_p1) / 8589934592;
1317:../libBME280/src/bme280.c ****
1318:../libBME280/src/bme280.c **** /* To avoid divide by zero exception */
1319:../libBME280/src/bme280.c **** if (var1 != 0)
1320:../libBME280/src/bme280.c **** {
1321:../libBME280/src/bme280.c **** var4 = 1048576 - uncomp_data->pressure;
1322:../libBME280/src/bme280.c **** var4 = (((var4 * INT64_C(2147483648)) - var2) * 3125) / var1;
1323:../libBME280/src/bme280.c **** var1 = (((int64_t)calib_data->dig_p9) * (var4 / 8192) * (var4 / 8192)) / 33554432;
1324:../libBME280/src/bme280.c **** var2 = (((int64_t)calib_data->dig_p8) * var4) / 524288;
1325:../libBME280/src/bme280.c **** var4 = ((var4 + var1 + var2) / 256) + (((int64_t)calib_data->dig_p7) * 16);
1326:../libBME280/src/bme280.c **** pressure = (uint32_t)(((var4 / 2) * 100) / 128);
1327:../libBME280/src/bme280.c ****
1328:../libBME280/src/bme280.c **** if (pressure < pressure_min)
1329:../libBME280/src/bme280.c **** {
1330:../libBME280/src/bme280.c **** pressure = pressure_min;
1331:../libBME280/src/bme280.c **** }
1332:../libBME280/src/bme280.c **** else if (pressure > pressure_max)
1333:../libBME280/src/bme280.c **** {
1334:../libBME280/src/bme280.c **** pressure = pressure_max;
1335:../libBME280/src/bme280.c **** }
1336:../libBME280/src/bme280.c **** }
1337:../libBME280/src/bme280.c **** else
1338:../libBME280/src/bme280.c **** {
1339:../libBME280/src/bme280.c **** pressure = pressure_min;
1340:../libBME280/src/bme280.c **** }
1341:../libBME280/src/bme280.c ****
1342:../libBME280/src/bme280.c **** return pressure;
1343:../libBME280/src/bme280.c **** }
1344:../libBME280/src/bme280.c **** #else /* 32 bit compensation for pressure data */
1345:../libBME280/src/bme280.c ****
1346:../libBME280/src/bme280.c **** /*!
1347:../libBME280/src/bme280.c **** * @brief This internal API is used to compensate the raw pressure data and
1348:../libBME280/src/bme280.c **** * return the compensated pressure data in integer data type.
1349:../libBME280/src/bme280.c **** */
1350:../libBME280/src/bme280.c **** static uint32_t compensate_pressure(const struct bme280_uncomp_data *uncomp_data,
1351:../libBME280/src/bme280.c **** const struct bme280_calib_data *calib_data)
1352:../libBME280/src/bme280.c **** {
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 44
1353:../libBME280/src/bme280.c **** int32_t var1;
1354:../libBME280/src/bme280.c **** int32_t var2;
1355:../libBME280/src/bme280.c **** int32_t var3;
1356:../libBME280/src/bme280.c **** int32_t var4;
1357:../libBME280/src/bme280.c **** uint32_t var5;
1358:../libBME280/src/bme280.c **** uint32_t pressure;
1359:../libBME280/src/bme280.c **** uint32_t pressure_min = 30000;
1360:../libBME280/src/bme280.c **** uint32_t pressure_max = 110000;
1361:../libBME280/src/bme280.c ****
1362:../libBME280/src/bme280.c **** var1 = (((int32_t)calib_data->t_fine) / 2) - (int32_t)64000;
1363:../libBME280/src/bme280.c **** var2 = (((var1 / 4) * (var1 / 4)) / 2048) * ((int32_t)calib_data->dig_p6);
1364:../libBME280/src/bme280.c **** var2 = var2 + ((var1 * ((int32_t)calib_data->dig_p5)) * 2);
1365:../libBME280/src/bme280.c **** var2 = (var2 / 4) + (((int32_t)calib_data->dig_p4) * 65536);
1366:../libBME280/src/bme280.c **** var3 = (calib_data->dig_p3 * (((var1 / 4) * (var1 / 4)) / 8192)) / 8;
1367:../libBME280/src/bme280.c **** var4 = (((int32_t)calib_data->dig_p2) * var1) / 2;
1368:../libBME280/src/bme280.c **** var1 = (var3 + var4) / 262144;
1369:../libBME280/src/bme280.c **** var1 = (((32768 + var1)) * ((int32_t)calib_data->dig_p1)) / 32768;
1370:../libBME280/src/bme280.c ****
1371:../libBME280/src/bme280.c **** /* avoid exception caused by division by zero */
1372:../libBME280/src/bme280.c **** if (var1)
1373:../libBME280/src/bme280.c **** {
1374:../libBME280/src/bme280.c **** var5 = (uint32_t)((uint32_t)1048576) - uncomp_data->pressure;
1375:../libBME280/src/bme280.c **** pressure = ((uint32_t)(var5 - (uint32_t)(var2 / 4096))) * 3125;
1376:../libBME280/src/bme280.c ****
1377:../libBME280/src/bme280.c **** if (pressure < 0x80000000)
1378:../libBME280/src/bme280.c **** {
1379:../libBME280/src/bme280.c **** pressure = (pressure << 1) / ((uint32_t)var1);
1380:../libBME280/src/bme280.c **** }
1381:../libBME280/src/bme280.c **** else
1382:../libBME280/src/bme280.c **** {
1383:../libBME280/src/bme280.c **** pressure = (pressure / (uint32_t)var1) * 2;
1384:../libBME280/src/bme280.c **** }
1385:../libBME280/src/bme280.c ****
1386:../libBME280/src/bme280.c **** var1 = (((int32_t)calib_data->dig_p9) * ((int32_t)(((pressure / 8) * (pressure / 8)) / 8192
1387:../libBME280/src/bme280.c **** var2 = (((int32_t)(pressure / 4)) * ((int32_t)calib_data->dig_p8)) / 8192;
1388:../libBME280/src/bme280.c **** pressure = (uint32_t)((int32_t)pressure + ((var1 + var2 + calib_data->dig_p7) / 16));
1389:../libBME280/src/bme280.c ****
1390:../libBME280/src/bme280.c **** if (pressure < pressure_min)
1391:../libBME280/src/bme280.c **** {
1392:../libBME280/src/bme280.c **** pressure = pressure_min;
1393:../libBME280/src/bme280.c **** }
1394:../libBME280/src/bme280.c **** else if (pressure > pressure_max)
1395:../libBME280/src/bme280.c **** {
1396:../libBME280/src/bme280.c **** pressure = pressure_max;
1397:../libBME280/src/bme280.c **** }
1398:../libBME280/src/bme280.c **** }
1399:../libBME280/src/bme280.c **** else
1400:../libBME280/src/bme280.c **** {
1401:../libBME280/src/bme280.c **** pressure = pressure_min;
1402:../libBME280/src/bme280.c **** }
1403:../libBME280/src/bme280.c ****
1404:../libBME280/src/bme280.c **** return pressure;
1405:../libBME280/src/bme280.c **** }
1406:../libBME280/src/bme280.c **** #endif
1407:../libBME280/src/bme280.c ****
1408:../libBME280/src/bme280.c **** /*!
1409:../libBME280/src/bme280.c **** * @brief This internal API is used to compensate the raw humidity data and
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 45
1410:../libBME280/src/bme280.c **** * return the compensated humidity data in integer data type.
1411:../libBME280/src/bme280.c **** */
1412:../libBME280/src/bme280.c **** static uint32_t compensate_humidity(const struct bme280_uncomp_data *uncomp_data,
1413:../libBME280/src/bme280.c **** const struct bme280_calib_data *calib_data)
1414:../libBME280/src/bme280.c **** {
1415:../libBME280/src/bme280.c **** int32_t var1;
1416:../libBME280/src/bme280.c **** int32_t var2;
1417:../libBME280/src/bme280.c **** int32_t var3;
1418:../libBME280/src/bme280.c **** int32_t var4;
1419:../libBME280/src/bme280.c **** int32_t var5;
1420:../libBME280/src/bme280.c **** uint32_t humidity;
1421:../libBME280/src/bme280.c **** uint32_t humidity_max = 102400;
1422:../libBME280/src/bme280.c ****
1423:../libBME280/src/bme280.c **** var1 = calib_data->t_fine - ((int32_t)76800);
1424:../libBME280/src/bme280.c **** var2 = (int32_t)(uncomp_data->humidity * 16384);
1425:../libBME280/src/bme280.c **** var3 = (int32_t)(((int32_t)calib_data->dig_h4) * 1048576);
1426:../libBME280/src/bme280.c **** var4 = ((int32_t)calib_data->dig_h5) * var1;
1427:../libBME280/src/bme280.c **** var5 = (((var2 - var3) - var4) + (int32_t)16384) / 32768;
1428:../libBME280/src/bme280.c **** var2 = (var1 * ((int32_t)calib_data->dig_h6)) / 1024;
1429:../libBME280/src/bme280.c **** var3 = (var1 * ((int32_t)calib_data->dig_h3)) / 2048;
1430:../libBME280/src/bme280.c **** var4 = ((var2 * (var3 + (int32_t)32768)) / 1024) + (int32_t)2097152;
1431:../libBME280/src/bme280.c **** var2 = ((var4 * ((int32_t)calib_data->dig_h2)) + 8192) / 16384;
1432:../libBME280/src/bme280.c **** var3 = var5 * var2;
1433:../libBME280/src/bme280.c **** var4 = ((var3 / 32768) * (var3 / 32768)) / 128;
1434:../libBME280/src/bme280.c **** var5 = var3 - ((var4 * ((int32_t)calib_data->dig_h1)) / 16);
1435:../libBME280/src/bme280.c **** var5 = (var5 < 0 ? 0 : var5);
1436:../libBME280/src/bme280.c **** var5 = (var5 > 419430400 ? 419430400 : var5);
1437:../libBME280/src/bme280.c **** humidity = (uint32_t)(var5 / 4096);
1438:../libBME280/src/bme280.c ****
1439:../libBME280/src/bme280.c **** if (humidity > humidity_max)
1440:../libBME280/src/bme280.c **** {
1441:../libBME280/src/bme280.c **** humidity = humidity_max;
1442:../libBME280/src/bme280.c **** }
1443:../libBME280/src/bme280.c ****
1444:../libBME280/src/bme280.c **** return humidity;
1445:../libBME280/src/bme280.c **** }
1446:../libBME280/src/bme280.c **** #endif
1447:../libBME280/src/bme280.c ****
1448:../libBME280/src/bme280.c **** /*!
1449:../libBME280/src/bme280.c **** * @brief This internal API reads the calibration data from the sensor, parse
1450:../libBME280/src/bme280.c **** * it and store in the device structure.
1451:../libBME280/src/bme280.c **** */
1452:../libBME280/src/bme280.c **** static int8_t get_calib_data(struct bme280_dev *dev)
1453:../libBME280/src/bme280.c **** {
1454:../libBME280/src/bme280.c **** int8_t rslt;
1455:../libBME280/src/bme280.c **** uint8_t reg_addr = BME280_TEMP_PRESS_CALIB_DATA_ADDR;
1456:../libBME280/src/bme280.c ****
1457:../libBME280/src/bme280.c **** /* Array to store calibration data */
1458:../libBME280/src/bme280.c **** uint8_t calib_data[BME280_TEMP_PRESS_CALIB_DATA_LEN] = { 0 };
1459:../libBME280/src/bme280.c ****
1460:../libBME280/src/bme280.c **** /* Read the calibration data from the sensor */
1461:../libBME280/src/bme280.c **** rslt = bme280_get_regs(reg_addr, calib_data, BME280_TEMP_PRESS_CALIB_DATA_LEN, dev);
1462:../libBME280/src/bme280.c ****
1463:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
1464:../libBME280/src/bme280.c **** {
1465:../libBME280/src/bme280.c **** /* Parse temperature and pressure calibration data and store
1466:../libBME280/src/bme280.c **** * it in device structure
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 46
1467:../libBME280/src/bme280.c **** */
1468:../libBME280/src/bme280.c **** parse_temp_press_calib_data(calib_data, dev);
1469:../libBME280/src/bme280.c **** reg_addr = BME280_HUMIDITY_CALIB_DATA_ADDR;
1470:../libBME280/src/bme280.c ****
1471:../libBME280/src/bme280.c **** /* Read the humidity calibration data from the sensor */
1472:../libBME280/src/bme280.c **** rslt = bme280_get_regs(reg_addr, calib_data, BME280_HUMIDITY_CALIB_DATA_LEN, dev);
1473:../libBME280/src/bme280.c ****
1474:../libBME280/src/bme280.c **** if (rslt == BME280_OK)
1475:../libBME280/src/bme280.c **** {
1476:../libBME280/src/bme280.c **** /* Parse humidity calibration data and store it in
1477:../libBME280/src/bme280.c **** * device structure
1478:../libBME280/src/bme280.c **** */
1479:../libBME280/src/bme280.c **** parse_humidity_calib_data(calib_data, dev);
1480:../libBME280/src/bme280.c **** }
1481:../libBME280/src/bme280.c **** }
1482:../libBME280/src/bme280.c ****
1483:../libBME280/src/bme280.c **** return rslt;
1484:../libBME280/src/bme280.c **** }
1485:../libBME280/src/bme280.c ****
1486:../libBME280/src/bme280.c **** /*!
1487:../libBME280/src/bme280.c **** * @brief This internal API interleaves the register address between the
1488:../libBME280/src/bme280.c **** * register data buffer for burst write operation.
1489:../libBME280/src/bme280.c **** */
1490:../libBME280/src/bme280.c **** static void interleave_reg_addr(const uint8_t *reg_addr, uint8_t *temp_buff, const uint8_t *reg_dat
1491:../libBME280/src/bme280.c **** {
1109 .loc 1 1491 1 is_stmt 1 view -0
1110 .cfi_startproc
1111 @ args = 0, pretend = 0, frame = 0
1112 @ frame_needed = 0, uses_anonymous_args = 0
1113 @ link register save eliminated.
1114 .loc 1 1491 1 is_stmt 0 view .LVU241
1115 0000 70B4 push {r4, r5, r6}
1116 .LCFI5:
1117 .cfi_def_cfa_offset 12
1118 .cfi_offset 4, -12
1119 .cfi_offset 5, -8
1120 .cfi_offset 6, -4
1492:../libBME280/src/bme280.c **** uint8_t index;
1121 .loc 1 1492 5 is_stmt 1 view .LVU242
1493:../libBME280/src/bme280.c ****
1494:../libBME280/src/bme280.c **** for (index = 1; index < len; index++)
1122 .loc 1 1494 5 view .LVU243
1123 .LVL164:
1124 .loc 1 1494 16 is_stmt 0 view .LVU244
1125 0002 0124 movs r4, #1
1126 .LVL165:
1127 .L32:
1128 .loc 1 1494 5 discriminator 1 view .LVU245
1129 0004 9C42 cmp r4, r3
1130 0006 09D2 bcs .L35
1495:../libBME280/src/bme280.c **** {
1496:../libBME280/src/bme280.c **** temp_buff[(index * 2) - 1] = reg_addr[index];
1131 .loc 1 1496 9 is_stmt 1 discriminator 3 view .LVU246
1132 .loc 1 1496 26 is_stmt 0 discriminator 3 view .LVU247
1133 0008 6500 lsls r5, r4, #1
1134 .loc 1 1496 18 discriminator 3 view .LVU248
1135 000a 013D subs r5, r5, #1
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 47
1136 .loc 1 1496 46 discriminator 3 view .LVU249
1137 000c 065D ldrb r6, [r0, r4] @ zero_extendqisi2
1138 .loc 1 1496 36 discriminator 3 view .LVU250
1139 000e 4E55 strb r6, [r1, r5]
1497:../libBME280/src/bme280.c **** temp_buff[index * 2] = reg_data[index];
1140 .loc 1 1497 9 is_stmt 1 discriminator 3 view .LVU251
1141 .loc 1 1497 40 is_stmt 0 discriminator 3 view .LVU252
1142 0010 155D ldrb r5, [r2, r4] @ zero_extendqisi2
1143 .loc 1 1497 30 discriminator 3 view .LVU253
1144 0012 01F81450 strb r5, [r1, r4, lsl #1]
1494:../libBME280/src/bme280.c **** {
1145 .loc 1 1494 39 discriminator 3 view .LVU254
1146 0016 0134 adds r4, r4, #1
1147 .LVL166:
1494:../libBME280/src/bme280.c **** {
1148 .loc 1 1494 39 discriminator 3 view .LVU255
1149 0018 E4B2 uxtb r4, r4
1150 .LVL167:
1494:../libBME280/src/bme280.c **** {
1151 .loc 1 1494 39 discriminator 3 view .LVU256
1152 001a F3E7 b .L32
1153 .L35:
1498:../libBME280/src/bme280.c **** }
1499:../libBME280/src/bme280.c **** }
1154 .loc 1 1499 1 view .LVU257
1155 001c 70BC pop {r4, r5, r6}
1156 .LCFI6:
1157 .cfi_restore 6
1158 .cfi_restore 5
1159 .cfi_restore 4
1160 .cfi_def_cfa_offset 0
1161 .LVL168:
1162 .loc 1 1499 1 view .LVU258
1163 001e 7047 bx lr
1164 .cfi_endproc
1165 .LFE28:
1167 .section .text.parse_temp_press_calib_data,"ax",%progbits
1168 .align 1
1169 .syntax unified
1170 .thumb
1171 .thumb_func
1172 .fpu softvfp
1174 parse_temp_press_calib_data:
1175 .LVL169:
1176 .LFB29:
1500:../libBME280/src/bme280.c ****
1501:../libBME280/src/bme280.c **** /*!
1502:../libBME280/src/bme280.c **** * @brief This internal API is used to parse the temperature and
1503:../libBME280/src/bme280.c **** * pressure calibration data and store it in device structure.
1504:../libBME280/src/bme280.c **** */
1505:../libBME280/src/bme280.c **** static void parse_temp_press_calib_data(const uint8_t *reg_data, struct bme280_dev *dev)
1506:../libBME280/src/bme280.c **** {
1177 .loc 1 1506 1 is_stmt 1 view -0
1178 .cfi_startproc
1179 @ args = 0, pretend = 0, frame = 0
1180 @ frame_needed = 0, uses_anonymous_args = 0
1181 @ link register save eliminated.
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 48
1507:../libBME280/src/bme280.c **** struct bme280_calib_data *calib_data = &dev->calib_data;
1182 .loc 1 1507 5 view .LVU260
1508:../libBME280/src/bme280.c ****
1509:../libBME280/src/bme280.c **** calib_data->dig_t1 = BME280_CONCAT_BYTES(reg_data[1], reg_data[0]);
1183 .loc 1 1509 5 view .LVU261
1184 .loc 1 1509 26 is_stmt 0 view .LVU262
1185 0000 4278 ldrb r2, [r0, #1] @ zero_extendqisi2
1186 0002 0378 ldrb r3, [r0] @ zero_extendqisi2
1187 0004 43EA0223 orr r3, r3, r2, lsl #8
1188 .loc 1 1509 24 view .LVU263
1189 0008 0B83 strh r3, [r1, #24] @ movhi
1510:../libBME280/src/bme280.c **** calib_data->dig_t2 = (int16_t)BME280_CONCAT_BYTES(reg_data[3], reg_data[2]);
1190 .loc 1 1510 5 is_stmt 1 view .LVU264
1191 .loc 1 1510 35 is_stmt 0 view .LVU265
1192 000a C278 ldrb r2, [r0, #3] @ zero_extendqisi2
1193 000c 8378 ldrb r3, [r0, #2] @ zero_extendqisi2
1194 .loc 1 1510 26 view .LVU266
1195 000e 43EA0223 orr r3, r3, r2, lsl #8
1196 .loc 1 1510 24 view .LVU267
1197 0012 4B83 strh r3, [r1, #26] @ movhi
1511:../libBME280/src/bme280.c **** calib_data->dig_t3 = (int16_t)BME280_CONCAT_BYTES(reg_data[5], reg_data[4]);
1198 .loc 1 1511 5 is_stmt 1 view .LVU268
1199 .loc 1 1511 35 is_stmt 0 view .LVU269
1200 0014 4279 ldrb r2, [r0, #5] @ zero_extendqisi2
1201 0016 0379 ldrb r3, [r0, #4] @ zero_extendqisi2
1202 .loc 1 1511 26 view .LVU270
1203 0018 43EA0223 orr r3, r3, r2, lsl #8
1204 .loc 1 1511 24 view .LVU271
1205 001c 8B83 strh r3, [r1, #28] @ movhi
1512:../libBME280/src/bme280.c **** calib_data->dig_p1 = BME280_CONCAT_BYTES(reg_data[7], reg_data[6]);
1206 .loc 1 1512 5 is_stmt 1 view .LVU272
1207 .loc 1 1512 26 is_stmt 0 view .LVU273
1208 001e C279 ldrb r2, [r0, #7] @ zero_extendqisi2
1209 0020 8379 ldrb r3, [r0, #6] @ zero_extendqisi2
1210 0022 43EA0223 orr r3, r3, r2, lsl #8
1211 .loc 1 1512 24 view .LVU274
1212 0026 CB83 strh r3, [r1, #30] @ movhi
1513:../libBME280/src/bme280.c **** calib_data->dig_p2 = (int16_t)BME280_CONCAT_BYTES(reg_data[9], reg_data[8]);
1213 .loc 1 1513 5 is_stmt 1 view .LVU275
1214 .loc 1 1513 35 is_stmt 0 view .LVU276
1215 0028 427A ldrb r2, [r0, #9] @ zero_extendqisi2
1216 002a 037A ldrb r3, [r0, #8] @ zero_extendqisi2
1217 .loc 1 1513 26 view .LVU277
1218 002c 43EA0223 orr r3, r3, r2, lsl #8
1219 .loc 1 1513 24 view .LVU278
1220 0030 0B84 strh r3, [r1, #32] @ movhi
1514:../libBME280/src/bme280.c **** calib_data->dig_p3 = (int16_t)BME280_CONCAT_BYTES(reg_data[11], reg_data[10]);
1221 .loc 1 1514 5 is_stmt 1 view .LVU279
1222 .loc 1 1514 35 is_stmt 0 view .LVU280
1223 0032 C27A ldrb r2, [r0, #11] @ zero_extendqisi2
1224 0034 837A ldrb r3, [r0, #10] @ zero_extendqisi2
1225 .loc 1 1514 26 view .LVU281
1226 0036 43EA0223 orr r3, r3, r2, lsl #8
1227 .loc 1 1514 24 view .LVU282
1228 003a 4B84 strh r3, [r1, #34] @ movhi
1515:../libBME280/src/bme280.c **** calib_data->dig_p4 = (int16_t)BME280_CONCAT_BYTES(reg_data[13], reg_data[12]);
1229 .loc 1 1515 5 is_stmt 1 view .LVU283
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 49
1230 .loc 1 1515 35 is_stmt 0 view .LVU284
1231 003c 427B ldrb r2, [r0, #13] @ zero_extendqisi2
1232 003e 037B ldrb r3, [r0, #12] @ zero_extendqisi2
1233 .loc 1 1515 26 view .LVU285
1234 0040 43EA0223 orr r3, r3, r2, lsl #8
1235 .loc 1 1515 24 view .LVU286
1236 0044 8B84 strh r3, [r1, #36] @ movhi
1516:../libBME280/src/bme280.c **** calib_data->dig_p5 = (int16_t)BME280_CONCAT_BYTES(reg_data[15], reg_data[14]);
1237 .loc 1 1516 5 is_stmt 1 view .LVU287
1238 .loc 1 1516 35 is_stmt 0 view .LVU288
1239 0046 C27B ldrb r2, [r0, #15] @ zero_extendqisi2
1240 0048 837B ldrb r3, [r0, #14] @ zero_extendqisi2
1241 .loc 1 1516 26 view .LVU289
1242 004a 43EA0223 orr r3, r3, r2, lsl #8
1243 .loc 1 1516 24 view .LVU290
1244 004e CB84 strh r3, [r1, #38] @ movhi
1517:../libBME280/src/bme280.c **** calib_data->dig_p6 = (int16_t)BME280_CONCAT_BYTES(reg_data[17], reg_data[16]);
1245 .loc 1 1517 5 is_stmt 1 view .LVU291
1246 .loc 1 1517 35 is_stmt 0 view .LVU292
1247 0050 427C ldrb r2, [r0, #17] @ zero_extendqisi2
1248 0052 037C ldrb r3, [r0, #16] @ zero_extendqisi2
1249 .loc 1 1517 26 view .LVU293
1250 0054 43EA0223 orr r3, r3, r2, lsl #8
1251 .loc 1 1517 24 view .LVU294
1252 0058 0B85 strh r3, [r1, #40] @ movhi
1518:../libBME280/src/bme280.c **** calib_data->dig_p7 = (int16_t)BME280_CONCAT_BYTES(reg_data[19], reg_data[18]);
1253 .loc 1 1518 5 is_stmt 1 view .LVU295
1254 .loc 1 1518 35 is_stmt 0 view .LVU296
1255 005a C27C ldrb r2, [r0, #19] @ zero_extendqisi2
1256 005c 837C ldrb r3, [r0, #18] @ zero_extendqisi2
1257 .loc 1 1518 26 view .LVU297
1258 005e 43EA0223 orr r3, r3, r2, lsl #8
1259 .loc 1 1518 24 view .LVU298
1260 0062 4B85 strh r3, [r1, #42] @ movhi
1519:../libBME280/src/bme280.c **** calib_data->dig_p8 = (int16_t)BME280_CONCAT_BYTES(reg_data[21], reg_data[20]);
1261 .loc 1 1519 5 is_stmt 1 view .LVU299
1262 .loc 1 1519 35 is_stmt 0 view .LVU300
1263 0064 427D ldrb r2, [r0, #21] @ zero_extendqisi2
1264 0066 037D ldrb r3, [r0, #20] @ zero_extendqisi2
1265 .loc 1 1519 26 view .LVU301
1266 0068 43EA0223 orr r3, r3, r2, lsl #8
1267 .loc 1 1519 24 view .LVU302
1268 006c 8B85 strh r3, [r1, #44] @ movhi
1520:../libBME280/src/bme280.c **** calib_data->dig_p9 = (int16_t)BME280_CONCAT_BYTES(reg_data[23], reg_data[22]);
1269 .loc 1 1520 5 is_stmt 1 view .LVU303
1270 .loc 1 1520 35 is_stmt 0 view .LVU304
1271 006e C27D ldrb r2, [r0, #23] @ zero_extendqisi2
1272 0070 837D ldrb r3, [r0, #22] @ zero_extendqisi2
1273 .loc 1 1520 26 view .LVU305
1274 0072 43EA0223 orr r3, r3, r2, lsl #8
1275 .loc 1 1520 24 view .LVU306
1276 0076 CB85 strh r3, [r1, #46] @ movhi
1521:../libBME280/src/bme280.c **** calib_data->dig_h1 = reg_data[25];
1277 .loc 1 1521 5 is_stmt 1 view .LVU307
1278 .loc 1 1521 24 is_stmt 0 view .LVU308
1279 0078 437E ldrb r3, [r0, #25] @ zero_extendqisi2
1280 007a 81F83030 strb r3, [r1, #48]
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 50
1522:../libBME280/src/bme280.c **** }
1281 .loc 1 1522 1 view .LVU309
1282 007e 7047 bx lr
1283 .cfi_endproc
1284 .LFE29:
1286 .section .text.parse_humidity_calib_data,"ax",%progbits
1287 .align 1
1288 .syntax unified
1289 .thumb
1290 .thumb_func
1291 .fpu softvfp
1293 parse_humidity_calib_data:
1294 .LVL170:
1295 .LFB30:
1523:../libBME280/src/bme280.c ****
1524:../libBME280/src/bme280.c **** /*!
1525:../libBME280/src/bme280.c **** * @brief This internal API is used to parse the humidity calibration data
1526:../libBME280/src/bme280.c **** * and store it in device structure.
1527:../libBME280/src/bme280.c **** */
1528:../libBME280/src/bme280.c **** static void parse_humidity_calib_data(const uint8_t *reg_data, struct bme280_dev *dev)
1529:../libBME280/src/bme280.c **** {
1296 .loc 1 1529 1 is_stmt 1 view -0
1297 .cfi_startproc
1298 @ args = 0, pretend = 0, frame = 0
1299 @ frame_needed = 0, uses_anonymous_args = 0
1300 @ link register save eliminated.
1530:../libBME280/src/bme280.c **** struct bme280_calib_data *calib_data = &dev->calib_data;
1301 .loc 1 1530 5 view .LVU311
1531:../libBME280/src/bme280.c **** int16_t dig_h4_lsb;
1302 .loc 1 1531 5 view .LVU312
1532:../libBME280/src/bme280.c **** int16_t dig_h4_msb;
1303 .loc 1 1532 5 view .LVU313
1533:../libBME280/src/bme280.c **** int16_t dig_h5_lsb;
1304 .loc 1 1533 5 view .LVU314
1534:../libBME280/src/bme280.c **** int16_t dig_h5_msb;
1305 .loc 1 1534 5 view .LVU315
1535:../libBME280/src/bme280.c ****
1536:../libBME280/src/bme280.c **** calib_data->dig_h2 = (int16_t)BME280_CONCAT_BYTES(reg_data[1], reg_data[0]);
1306 .loc 1 1536 5 view .LVU316
1307 .loc 1 1536 35 is_stmt 0 view .LVU317
1308 0000 4278 ldrb r2, [r0, #1] @ zero_extendqisi2
1309 0002 0378 ldrb r3, [r0] @ zero_extendqisi2
1310 .loc 1 1536 26 view .LVU318
1311 0004 43EA0223 orr r3, r3, r2, lsl #8
1312 .loc 1 1536 24 view .LVU319
1313 0008 4B86 strh r3, [r1, #50] @ movhi
1537:../libBME280/src/bme280.c **** calib_data->dig_h3 = reg_data[2];
1314 .loc 1 1537 5 is_stmt 1 view .LVU320
1315 .loc 1 1537 24 is_stmt 0 view .LVU321
1316 000a 8378 ldrb r3, [r0, #2] @ zero_extendqisi2
1317 000c 81F83430 strb r3, [r1, #52]
1538:../libBME280/src/bme280.c **** dig_h4_msb = (int16_t)(int8_t)reg_data[3] * 16;
1318 .loc 1 1538 5 is_stmt 1 view .LVU322
1319 .loc 1 1538 27 is_stmt 0 view .LVU323
1320 0010 90F90330 ldrsb r3, [r0, #3]
1321 0014 9BB2 uxth r3, r3
1322 .loc 1 1538 47 view .LVU324
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 51
1323 0016 1B01 lsls r3, r3, #4
1324 .loc 1 1538 16 view .LVU325
1325 0018 1BB2 sxth r3, r3
1326 .LVL171:
1539:../libBME280/src/bme280.c **** dig_h4_lsb = (int16_t)(reg_data[4] & 0x0F);
1327 .loc 1 1539 5 is_stmt 1 view .LVU326
1328 .loc 1 1539 36 is_stmt 0 view .LVU327
1329 001a 0279 ldrb r2, [r0, #4] @ zero_extendqisi2
1330 .loc 1 1539 16 view .LVU328
1331 001c 02F00F02 and r2, r2, #15
1332 .LVL172:
1540:../libBME280/src/bme280.c **** calib_data->dig_h4 = dig_h4_msb | dig_h4_lsb;
1333 .loc 1 1540 5 is_stmt 1 view .LVU329
1334 .loc 1 1540 24 is_stmt 0 view .LVU330
1335 0020 1343 orrs r3, r3, r2
1336 .LVL173:
1337 .loc 1 1540 24 view .LVU331
1338 0022 CB86 strh r3, [r1, #54] @ movhi
1339 .LVL174:
1541:../libBME280/src/bme280.c **** dig_h5_msb = (int16_t)(int8_t)reg_data[5] * 16;
1340 .loc 1 1541 5 is_stmt 1 view .LVU332
1341 .loc 1 1541 27 is_stmt 0 view .LVU333
1342 0024 90F90530 ldrsb r3, [r0, #5]
1343 0028 9BB2 uxth r3, r3
1344 .loc 1 1541 47 view .LVU334
1345 002a 1B01 lsls r3, r3, #4
1346 .loc 1 1541 16 view .LVU335
1347 002c 1BB2 sxth r3, r3
1348 .LVL175:
1542:../libBME280/src/bme280.c **** dig_h5_lsb = (int16_t)(reg_data[4] >> 4);
1349 .loc 1 1542 5 is_stmt 1 view .LVU336
1350 .loc 1 1542 36 is_stmt 0 view .LVU337
1351 002e 0279 ldrb r2, [r0, #4] @ zero_extendqisi2
1352 .LVL176:
1543:../libBME280/src/bme280.c **** calib_data->dig_h5 = dig_h5_msb | dig_h5_lsb;
1353 .loc 1 1543 5 is_stmt 1 view .LVU338
1354 .loc 1 1543 24 is_stmt 0 view .LVU339
1355 0030 43EA1213 orr r3, r3, r2, lsr #4
1356 .LVL177:
1357 .loc 1 1543 24 view .LVU340
1358 0034 0B87 strh r3, [r1, #56] @ movhi
1359 .LVL178:
1544:../libBME280/src/bme280.c **** calib_data->dig_h6 = (int8_t)reg_data[6];
1360 .loc 1 1544 5 is_stmt 1 view .LVU341
1361 .loc 1 1544 26 is_stmt 0 view .LVU342
1362 0036 90F90630 ldrsb r3, [r0, #6]
1363 .loc 1 1544 24 view .LVU343
1364 003a 81F83A30 strb r3, [r1, #58]
1545:../libBME280/src/bme280.c **** }
1365 .loc 1 1545 1 view .LVU344
1366 003e 7047 bx lr
1367 .cfi_endproc
1368 .LFE30:
1370 .section .text.are_settings_changed,"ax",%progbits
1371 .align 1
1372 .syntax unified
1373 .thumb
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 52
1374 .thumb_func
1375 .fpu softvfp
1377 are_settings_changed:
1378 .LVL179:
1379 .LFB31:
1546:../libBME280/src/bme280.c ****
1547:../libBME280/src/bme280.c **** /*!
1548:../libBME280/src/bme280.c **** * @brief This internal API is used to identify the settings which the user
1549:../libBME280/src/bme280.c **** * wants to modify in the sensor.
1550:../libBME280/src/bme280.c **** */
1551:../libBME280/src/bme280.c **** static uint8_t are_settings_changed(uint8_t sub_settings, uint8_t desired_settings)
1552:../libBME280/src/bme280.c **** {
1380 .loc 1 1552 1 is_stmt 1 view -0
1381 .cfi_startproc
1382 @ args = 0, pretend = 0, frame = 0
1383 @ frame_needed = 0, uses_anonymous_args = 0
1384 @ link register save eliminated.
1553:../libBME280/src/bme280.c **** uint8_t settings_changed = FALSE;
1385 .loc 1 1553 5 view .LVU346
1554:../libBME280/src/bme280.c ****
1555:../libBME280/src/bme280.c **** if (sub_settings & desired_settings)
1386 .loc 1 1555 5 view .LVU347
1387 .loc 1 1555 8 is_stmt 0 view .LVU348
1388 0000 0842 tst r0, r1
1389 0002 01D0 beq .L40
1556:../libBME280/src/bme280.c **** {
1557:../libBME280/src/bme280.c **** /* User wants to modify this particular settings */
1558:../libBME280/src/bme280.c **** settings_changed = TRUE;
1390 .loc 1 1558 26 view .LVU349
1391 0004 0120 movs r0, #1
1392 .LVL180:
1393 .loc 1 1558 26 view .LVU350
1394 0006 7047 bx lr
1395 .LVL181:
1396 .L40:
1559:../libBME280/src/bme280.c **** }
1560:../libBME280/src/bme280.c **** else
1561:../libBME280/src/bme280.c **** {
1562:../libBME280/src/bme280.c **** /* User don't want to modify this particular settings */
1563:../libBME280/src/bme280.c **** settings_changed = FALSE;
1397 .loc 1 1563 26 view .LVU351
1398 0008 0020 movs r0, #0
1399 .LVL182:
1564:../libBME280/src/bme280.c **** }
1565:../libBME280/src/bme280.c ****
1566:../libBME280/src/bme280.c **** return settings_changed;
1400 .loc 1 1566 5 is_stmt 1 view .LVU352
1567:../libBME280/src/bme280.c **** }
1401 .loc 1 1567 1 is_stmt 0 view .LVU353
1402 000a 7047 bx lr
1403 .cfi_endproc
1404 .LFE31:
1406 .section .text.null_ptr_check,"ax",%progbits
1407 .align 1
1408 .syntax unified
1409 .thumb
1410 .thumb_func
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 53
1411 .fpu softvfp
1413 null_ptr_check:
1414 .LVL183:
1415 .LFB32:
1568:../libBME280/src/bme280.c ****
1569:../libBME280/src/bme280.c **** /*!
1570:../libBME280/src/bme280.c **** * @brief This internal API is used to validate the device structure pointer for
1571:../libBME280/src/bme280.c **** * null conditions.
1572:../libBME280/src/bme280.c **** */
1573:../libBME280/src/bme280.c **** static int8_t null_ptr_check(const struct bme280_dev *dev)
1574:../libBME280/src/bme280.c **** {
1416 .loc 1 1574 1 is_stmt 1 view -0
1417 .cfi_startproc
1418 @ args = 0, pretend = 0, frame = 0
1419 @ frame_needed = 0, uses_anonymous_args = 0
1420 @ link register save eliminated.
1575:../libBME280/src/bme280.c **** int8_t rslt;
1421 .loc 1 1575 5 view .LVU355
1576:../libBME280/src/bme280.c ****
1577:../libBME280/src/bme280.c **** if ((dev == NULL) || (dev->read == NULL) || (dev->write == NULL) || (dev->delay_us == NULL))
1422 .loc 1 1577 5 view .LVU356
1423 .loc 1 1577 8 is_stmt 0 view .LVU357
1424 0000 50B1 cbz r0, .L43
1425 .loc 1 1577 30 discriminator 1 view .LVU358
1426 0002 C268 ldr r2, [r0, #12]
1427 .loc 1 1577 23 discriminator 1 view .LVU359
1428 0004 5AB1 cbz r2, .L44
1429 .loc 1 1577 53 discriminator 2 view .LVU360
1430 0006 0269 ldr r2, [r0, #16]
1431 .loc 1 1577 46 discriminator 2 view .LVU361
1432 0008 62B1 cbz r2, .L45
1433 .loc 1 1577 77 discriminator 3 view .LVU362
1434 000a 4369 ldr r3, [r0, #20]
1435 .loc 1 1577 70 discriminator 3 view .LVU363
1436 000c 0BB1 cbz r3, .L47
1578:../libBME280/src/bme280.c **** {
1579:../libBME280/src/bme280.c **** /* Device structure pointer is not valid */
1580:../libBME280/src/bme280.c **** rslt = BME280_E_NULL_PTR;
1581:../libBME280/src/bme280.c **** }
1582:../libBME280/src/bme280.c **** else
1583:../libBME280/src/bme280.c **** {
1584:../libBME280/src/bme280.c **** /* Device structure is fine */
1585:../libBME280/src/bme280.c **** rslt = BME280_OK;
1437 .loc 1 1585 14 view .LVU364
1438 000e 0020 movs r0, #0
1439 .LVL184:
1586:../libBME280/src/bme280.c **** }
1587:../libBME280/src/bme280.c ****
1588:../libBME280/src/bme280.c **** return rslt;
1440 .loc 1 1588 5 is_stmt 1 view .LVU365
1589:../libBME280/src/bme280.c **** }
1441 .loc 1 1589 1 is_stmt 0 view .LVU366
1442 0010 7047 bx lr
1443 .LVL185:
1444 .L47:
1580:../libBME280/src/bme280.c **** }
1445 .loc 1 1580 14 view .LVU367
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 54
1446 0012 4FF0FF30 mov r0, #-1
1447 .LVL186:
1580:../libBME280/src/bme280.c **** }
1448 .loc 1 1580 14 view .LVU368
1449 0016 7047 bx lr
1450 .LVL187:
1451 .L43:
1580:../libBME280/src/bme280.c **** }
1452 .loc 1 1580 14 view .LVU369
1453 0018 4FF0FF30 mov r0, #-1
1454 .LVL188:
1580:../libBME280/src/bme280.c **** }
1455 .loc 1 1580 14 view .LVU370
1456 001c 7047 bx lr
1457 .LVL189:
1458 .L44:
1580:../libBME280/src/bme280.c **** }
1459 .loc 1 1580 14 view .LVU371
1460 001e 4FF0FF30 mov r0, #-1
1461 .LVL190:
1580:../libBME280/src/bme280.c **** }
1462 .loc 1 1580 14 view .LVU372
1463 0022 7047 bx lr
1464 .LVL191:
1465 .L45:
1580:../libBME280/src/bme280.c **** }
1466 .loc 1 1580 14 view .LVU373
1467 0024 4FF0FF30 mov r0, #-1
1468 .LVL192:
1580:../libBME280/src/bme280.c **** }
1469 .loc 1 1580 14 view .LVU374
1470 0028 7047 bx lr
1471 .cfi_endproc
1472 .LFE32:
1474 .section .text.bme280_get_regs,"ax",%progbits
1475 .align 1
1476 .global bme280_get_regs
1477 .syntax unified
1478 .thumb
1479 .thumb_func
1480 .fpu softvfp
1482 bme280_get_regs:
1483 .LVL193:
1484 .LFB1:
459:../libBME280/src/bme280.c **** int8_t rslt;
1485 .loc 1 459 1 is_stmt 1 view -0
1486 .cfi_startproc
1487 @ args = 0, pretend = 0, frame = 0
1488 @ frame_needed = 0, uses_anonymous_args = 0
459:../libBME280/src/bme280.c **** int8_t rslt;
1489 .loc 1 459 1 is_stmt 0 view .LVU376
1490 0000 2DE9F843 push {r3, r4, r5, r6, r7, r8, r9, lr}
1491 .LCFI7:
1492 .cfi_def_cfa_offset 32
1493 .cfi_offset 3, -32
1494 .cfi_offset 4, -28
1495 .cfi_offset 5, -24
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 55
1496 .cfi_offset 6, -20
1497 .cfi_offset 7, -16
1498 .cfi_offset 8, -12
1499 .cfi_offset 9, -8
1500 .cfi_offset 14, -4
1501 0004 0546 mov r5, r0
1502 0006 0E46 mov r6, r1
1503 0008 9146 mov r9, r2
1504 000a 1C46 mov r4, r3
460:../libBME280/src/bme280.c ****
1505 .loc 1 460 5 is_stmt 1 view .LVU377
463:../libBME280/src/bme280.c ****
1506 .loc 1 463 5 view .LVU378
463:../libBME280/src/bme280.c ****
1507 .loc 1 463 12 is_stmt 0 view .LVU379
1508 000c 1846 mov r0, r3
1509 .LVL194:
463:../libBME280/src/bme280.c ****
1510 .loc 1 463 12 view .LVU380
1511 000e FFF7FEFF bl null_ptr_check
1512 .LVL195:
466:../libBME280/src/bme280.c **** {
1513 .loc 1 466 5 is_stmt 1 view .LVU381
466:../libBME280/src/bme280.c **** {
1514 .loc 1 466 8 is_stmt 0 view .LVU382
1515 0012 90B9 cbnz r0, .L51
1516 0014 8046 mov r8, r0
466:../libBME280/src/bme280.c **** {
1517 .loc 1 466 29 discriminator 1 view .LVU383
1518 0016 9EB1 cbz r6, .L52
469:../libBME280/src/bme280.c **** {
1519 .loc 1 469 9 is_stmt 1 view .LVU384
469:../libBME280/src/bme280.c **** {
1520 .loc 1 469 16 is_stmt 0 view .LVU385
1521 0018 237A ldrb r3, [r4, #8] @ zero_extendqisi2
469:../libBME280/src/bme280.c **** {
1522 .loc 1 469 12 view .LVU386
1523 001a 012B cmp r3, #1
1524 001c 01D0 beq .L50
471:../libBME280/src/bme280.c **** }
1525 .loc 1 471 13 is_stmt 1 view .LVU387
471:../libBME280/src/bme280.c **** }
1526 .loc 1 471 22 is_stmt 0 view .LVU388
1527 001e 45F08005 orr r5, r5, #128
1528 .LVL196:
1529 .L50:
475:../libBME280/src/bme280.c ****
1530 .loc 1 475 9 is_stmt 1 view .LVU389
475:../libBME280/src/bme280.c ****
1531 .loc 1 475 29 is_stmt 0 view .LVU390
1532 0022 E768 ldr r7, [r4, #12]
475:../libBME280/src/bme280.c ****
1533 .loc 1 475 26 view .LVU391
1534 0024 6368 ldr r3, [r4, #4]
1535 0026 4A46 mov r2, r9
1536 0028 3146 mov r1, r6
1537 002a 2846 mov r0, r5
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 56
1538 .LVL197:
475:../libBME280/src/bme280.c ****
1539 .loc 1 475 26 view .LVU392
1540 002c B847 blx r7
1541 .LVL198:
475:../libBME280/src/bme280.c ****
1542 .loc 1 475 24 view .LVU393
1543 002e 84F84500 strb r0, [r4, #69]
478:../libBME280/src/bme280.c **** {
1544 .loc 1 478 9 is_stmt 1 view .LVU394
478:../libBME280/src/bme280.c **** {
1545 .loc 1 478 12 is_stmt 0 view .LVU395
1546 0032 40B9 cbnz r0, .L55
1547 .LVL199:
1548 .L49:
488:../libBME280/src/bme280.c **** }
1549 .loc 1 488 5 is_stmt 1 view .LVU396
489:../libBME280/src/bme280.c ****
1550 .loc 1 489 1 is_stmt 0 view .LVU397
1551 0034 4046 mov r0, r8
1552 0036 BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc}
1553 .LVL200:
1554 .L51:
485:../libBME280/src/bme280.c **** }
1555 .loc 1 485 14 view .LVU398
1556 003a 4FF0FF38 mov r8, #-1
1557 003e F9E7 b .L49
1558 .L52:
1559 0040 4FF0FF38 mov r8, #-1
1560 0044 F6E7 b .L49
1561 .LVL201:
1562 .L55:
480:../libBME280/src/bme280.c **** }
1563 .loc 1 480 18 view .LVU399
1564 0046 6FF00308 mvn r8, #3
1565 004a F3E7 b .L49
1566 .cfi_endproc
1567 .LFE1:
1569 .section .text.get_calib_data,"ax",%progbits
1570 .align 1
1571 .syntax unified
1572 .thumb
1573 .thumb_func
1574 .fpu softvfp
1576 get_calib_data:
1577 .LVL202:
1578 .LFB27:
1453:../libBME280/src/bme280.c **** int8_t rslt;
1579 .loc 1 1453 1 is_stmt 1 view -0
1580 .cfi_startproc
1581 @ args = 0, pretend = 0, frame = 32
1582 @ frame_needed = 0, uses_anonymous_args = 0
1453:../libBME280/src/bme280.c **** int8_t rslt;
1583 .loc 1 1453 1 is_stmt 0 view .LVU401
1584 0000 30B5 push {r4, r5, lr}
1585 .LCFI8:
1586 .cfi_def_cfa_offset 12
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 57
1587 .cfi_offset 4, -12
1588 .cfi_offset 5, -8
1589 .cfi_offset 14, -4
1590 0002 89B0 sub sp, sp, #36
1591 .LCFI9:
1592 .cfi_def_cfa_offset 48
1593 0004 0446 mov r4, r0
1454:../libBME280/src/bme280.c **** uint8_t reg_addr = BME280_TEMP_PRESS_CALIB_DATA_ADDR;
1594 .loc 1 1454 5 is_stmt 1 view .LVU402
1455:../libBME280/src/bme280.c ****
1595 .loc 1 1455 5 view .LVU403
1596 .LVL203:
1458:../libBME280/src/bme280.c ****
1597 .loc 1 1458 5 view .LVU404
1458:../libBME280/src/bme280.c ****
1598 .loc 1 1458 13 is_stmt 0 view .LVU405
1599 0006 0023 movs r3, #0
1600 0008 0193 str r3, [sp, #4]
1601 000a 0293 str r3, [sp, #8]
1602 000c 0393 str r3, [sp, #12]
1603 000e 0493 str r3, [sp, #16]
1604 0010 0593 str r3, [sp, #20]
1605 0012 0693 str r3, [sp, #24]
1606 0014 ADF81C30 strh r3, [sp, #28] @ movhi
1461:../libBME280/src/bme280.c ****
1607 .loc 1 1461 5 is_stmt 1 view .LVU406
1461:../libBME280/src/bme280.c ****
1608 .loc 1 1461 12 is_stmt 0 view .LVU407
1609 0018 0346 mov r3, r0
1610 001a 1A22 movs r2, #26
1611 001c 01A9 add r1, sp, #4
1612 001e 8820 movs r0, #136
1613 .LVL204:
1461:../libBME280/src/bme280.c ****
1614 .loc 1 1461 12 view .LVU408
1615 0020 FFF7FEFF bl bme280_get_regs
1616 .LVL205:
1463:../libBME280/src/bme280.c **** {
1617 .loc 1 1463 5 is_stmt 1 view .LVU409
1463:../libBME280/src/bme280.c **** {
1618 .loc 1 1463 8 is_stmt 0 view .LVU410
1619 0024 0546 mov r5, r0
1620 0026 10B1 cbz r0, .L59
1621 .LVL206:
1622 .L57:
1483:../libBME280/src/bme280.c **** }
1623 .loc 1 1483 5 is_stmt 1 view .LVU411
1484:../libBME280/src/bme280.c ****
1624 .loc 1 1484 1 is_stmt 0 view .LVU412
1625 0028 2846 mov r0, r5
1626 002a 09B0 add sp, sp, #36
1627 .LCFI10:
1628 .cfi_remember_state
1629 .cfi_def_cfa_offset 12
1630 @ sp needed
1631 002c 30BD pop {r4, r5, pc}
1632 .LVL207:
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 58
1633 .L59:
1634 .LCFI11:
1635 .cfi_restore_state
1468:../libBME280/src/bme280.c **** reg_addr = BME280_HUMIDITY_CALIB_DATA_ADDR;
1636 .loc 1 1468 9 is_stmt 1 view .LVU413
1637 002e 2146 mov r1, r4
1638 0030 01A8 add r0, sp, #4
1639 .LVL208:
1468:../libBME280/src/bme280.c **** reg_addr = BME280_HUMIDITY_CALIB_DATA_ADDR;
1640 .loc 1 1468 9 is_stmt 0 view .LVU414
1641 0032 FFF7FEFF bl parse_temp_press_calib_data
1642 .LVL209:
1469:../libBME280/src/bme280.c ****
1643 .loc 1 1469 9 is_stmt 1 view .LVU415
1472:../libBME280/src/bme280.c ****
1644 .loc 1 1472 9 view .LVU416
1472:../libBME280/src/bme280.c ****
1645 .loc 1 1472 16 is_stmt 0 view .LVU417
1646 0036 2346 mov r3, r4
1647 0038 0722 movs r2, #7
1648 003a 01A9 add r1, sp, #4
1649 003c E120 movs r0, #225
1650 003e FFF7FEFF bl bme280_get_regs
1651 .LVL210:
1474:../libBME280/src/bme280.c **** {
1652 .loc 1 1474 9 is_stmt 1 view .LVU418
1474:../libBME280/src/bme280.c **** {
1653 .loc 1 1474 12 is_stmt 0 view .LVU419
1654 0042 0546 mov r5, r0
1655 0044 0028 cmp r0, #0
1656 0046 EFD1 bne .L57
1479:../libBME280/src/bme280.c **** }
1657 .loc 1 1479 13 is_stmt 1 view .LVU420
1658 0048 2146 mov r1, r4
1659 004a 01A8 add r0, sp, #4
1660 .LVL211:
1479:../libBME280/src/bme280.c **** }
1661 .loc 1 1479 13 is_stmt 0 view .LVU421
1662 004c FFF7FEFF bl parse_humidity_calib_data
1663 .LVL212:
1664 0050 EAE7 b .L57
1665 .cfi_endproc
1666 .LFE27:
1668 .section .text.bme280_set_regs,"ax",%progbits
1669 .align 1
1670 .global bme280_set_regs
1671 .syntax unified
1672 .thumb
1673 .thumb_func
1674 .fpu softvfp
1676 bme280_set_regs:
1677 .LVL213:
1678 .LFB2:
496:../libBME280/src/bme280.c **** int8_t rslt;
1679 .loc 1 496 1 is_stmt 1 view -0
1680 .cfi_startproc
1681 @ args = 0, pretend = 0, frame = 24
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 59
1682 @ frame_needed = 0, uses_anonymous_args = 0
496:../libBME280/src/bme280.c **** int8_t rslt;
1683 .loc 1 496 1 is_stmt 0 view .LVU423
1684 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr}
1685 .LCFI12:
1686 .cfi_def_cfa_offset 24
1687 .cfi_offset 4, -24
1688 .cfi_offset 5, -20
1689 .cfi_offset 6, -16
1690 .cfi_offset 7, -12
1691 .cfi_offset 8, -8
1692 .cfi_offset 14, -4
1693 0004 86B0 sub sp, sp, #24
1694 .LCFI13:
1695 .cfi_def_cfa_offset 48
1696 0006 0546 mov r5, r0
1697 0008 0F46 mov r7, r1
1698 000a 1446 mov r4, r2
1699 000c 1E46 mov r6, r3
497:../libBME280/src/bme280.c **** uint8_t temp_buff[20]; /* Typically not to write more than 10 registers */
1700 .loc 1 497 5 is_stmt 1 view .LVU424
498:../libBME280/src/bme280.c ****
1701 .loc 1 498 5 view .LVU425
500:../libBME280/src/bme280.c **** {
1702 .loc 1 500 5 view .LVU426
500:../libBME280/src/bme280.c **** {
1703 .loc 1 500 8 is_stmt 0 view .LVU427
1704 000e 0A2A cmp r2, #10
1705 0010 00D9 bls .L61
502:../libBME280/src/bme280.c **** }
1706 .loc 1 502 13 view .LVU428
1707 0012 0A24 movs r4, #10
1708 .L61:
1709 .LVL214:
505:../libBME280/src/bme280.c **** uint8_t reg_addr_cnt;
1710 .loc 1 505 5 is_stmt 1 view .LVU429
506:../libBME280/src/bme280.c ****
1711 .loc 1 506 5 view .LVU430
509:../libBME280/src/bme280.c ****
1712 .loc 1 509 5 view .LVU431
509:../libBME280/src/bme280.c ****
1713 .loc 1 509 12 is_stmt 0 view .LVU432
1714 0014 3046 mov r0, r6
1715 .LVL215:
509:../libBME280/src/bme280.c ****
1716 .loc 1 509 12 view .LVU433
1717 0016 FFF7FEFF bl null_ptr_check
1718 .LVL216:
512:../libBME280/src/bme280.c **** {
1719 .loc 1 512 5 is_stmt 1 view .LVU434
512:../libBME280/src/bme280.c **** {
1720 .loc 1 512 8 is_stmt 0 view .LVU435
1721 001a 8046 mov r8, r0
1722 001c 58BB cbnz r0, .L69
512:../libBME280/src/bme280.c **** {
1723 .loc 1 512 29 discriminator 1 view .LVU436
1724 001e 6DB3 cbz r5, .L70
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 60
512:../libBME280/src/bme280.c **** {
1725 .loc 1 512 51 discriminator 2 view .LVU437
1726 0020 7FB3 cbz r7, .L71
514:../libBME280/src/bme280.c **** {
1727 .loc 1 514 9 is_stmt 1 view .LVU438
514:../libBME280/src/bme280.c **** {
1728 .loc 1 514 12 is_stmt 0 view .LVU439
1729 0022 8CB3 cbz r4, .L72
516:../libBME280/src/bme280.c ****
1730 .loc 1 516 13 is_stmt 1 view .LVU440
516:../libBME280/src/bme280.c ****
1731 .loc 1 516 36 is_stmt 0 view .LVU441
1732 0024 3B78 ldrb r3, [r7] @ zero_extendqisi2
516:../libBME280/src/bme280.c ****
1733 .loc 1 516 26 view .LVU442
1734 0026 8DF80430 strb r3, [sp, #4]
519:../libBME280/src/bme280.c **** {
1735 .loc 1 519 13 is_stmt 1 view .LVU443
519:../libBME280/src/bme280.c **** {
1736 .loc 1 519 20 is_stmt 0 view .LVU444
1737 002a 337A ldrb r3, [r6, #8] @ zero_extendqisi2
519:../libBME280/src/bme280.c **** {
1738 .loc 1 519 16 view .LVU445
1739 002c 012B cmp r3, #1
1740 002e 09D0 beq .L64
521:../libBME280/src/bme280.c **** {
1741 .loc 1 521 35 view .LVU446
1742 0030 0023 movs r3, #0
1743 .L63:
1744 .LVL217:
521:../libBME280/src/bme280.c **** {
1745 .loc 1 521 17 discriminator 1 view .LVU447
1746 0032 9C42 cmp r4, r3
1747 0034 06D9 bls .L64
523:../libBME280/src/bme280.c **** }
1748 .loc 1 523 21 is_stmt 1 discriminator 3 view .LVU448
523:../libBME280/src/bme280.c **** }
1749 .loc 1 523 54 is_stmt 0 discriminator 3 view .LVU449
1750 0036 E95C ldrb r1, [r5, r3] @ zero_extendqisi2
523:../libBME280/src/bme280.c **** }
1751 .loc 1 523 69 discriminator 3 view .LVU450
1752 0038 01F07F01 and r1, r1, #127
523:../libBME280/src/bme280.c **** }
1753 .loc 1 523 44 discriminator 3 view .LVU451
1754 003c E954 strb r1, [r5, r3]
521:../libBME280/src/bme280.c **** {
1755 .loc 1 521 72 discriminator 3 view .LVU452
1756 003e 0133 adds r3, r3, #1
1757 .LVL218:
521:../libBME280/src/bme280.c **** {
1758 .loc 1 521 72 discriminator 3 view .LVU453
1759 0040 DBB2 uxtb r3, r3
1760 .LVL219:
521:../libBME280/src/bme280.c **** {
1761 .loc 1 521 72 discriminator 3 view .LVU454
1762 0042 F6E7 b .L63
1763 .LVL220:
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 61
1764 .L64:
528:../libBME280/src/bme280.c **** {
1765 .loc 1 528 13 is_stmt 1 view .LVU455
528:../libBME280/src/bme280.c **** {
1766 .loc 1 528 16 is_stmt 0 view .LVU456
1767 0044 012C cmp r4, #1
1768 0046 0CD8 bhi .L76
538:../libBME280/src/bme280.c **** }
1769 .loc 1 538 17 is_stmt 1 view .LVU457
538:../libBME280/src/bme280.c **** }
1770 .loc 1 538 26 is_stmt 0 view .LVU458
1771 0048 A2B2 uxth r2, r4
1772 .LVL221:
1773 .L67:
541:../libBME280/src/bme280.c ****
1774 .loc 1 541 13 is_stmt 1 view .LVU459
541:../libBME280/src/bme280.c ****
1775 .loc 1 541 33 is_stmt 0 view .LVU460
1776 004a 3769 ldr r7, [r6, #16]
1777 .LVL222:
541:../libBME280/src/bme280.c ****
1778 .loc 1 541 30 view .LVU461
1779 004c 7368 ldr r3, [r6, #4]
1780 004e 01A9 add r1, sp, #4
1781 0050 2878 ldrb r0, [r5] @ zero_extendqisi2
1782 0052 B847 blx r7
1783 .LVL223:
541:../libBME280/src/bme280.c ****
1784 .loc 1 541 28 view .LVU462
1785 0054 86F84500 strb r0, [r6, #69]
544:../libBME280/src/bme280.c **** {
1786 .loc 1 544 13 is_stmt 1 view .LVU463
544:../libBME280/src/bme280.c **** {
1787 .loc 1 544 16 is_stmt 0 view .LVU464
1788 0058 C8B9 cbnz r0, .L77
1789 .L62:
1790 .LVL224:
559:../libBME280/src/bme280.c **** }
1791 .loc 1 559 5 is_stmt 1 view .LVU465
560:../libBME280/src/bme280.c ****
1792 .loc 1 560 1 is_stmt 0 view .LVU466
1793 005a 4046 mov r0, r8
1794 005c 06B0 add sp, sp, #24
1795 .LCFI14:
1796 .cfi_remember_state
1797 .cfi_def_cfa_offset 24
1798 @ sp needed
1799 005e BDE8F081 pop {r4, r5, r6, r7, r8, pc}
1800 .LVL225:
1801 .L76:
1802 .LCFI15:
1803 .cfi_restore_state
533:../libBME280/src/bme280.c **** temp_len = ((len * 2) - 1);
1804 .loc 1 533 17 is_stmt 1 view .LVU467
1805 0062 2346 mov r3, r4
1806 0064 3A46 mov r2, r7
1807 0066 01A9 add r1, sp, #4
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 62
1808 0068 2846 mov r0, r5
1809 .LVL226:
533:../libBME280/src/bme280.c **** temp_len = ((len * 2) - 1);
1810 .loc 1 533 17 is_stmt 0 view .LVU468
1811 006a FFF7FEFF bl interleave_reg_addr
1812 .LVL227:
534:../libBME280/src/bme280.c **** }
1813 .loc 1 534 17 is_stmt 1 view .LVU469
534:../libBME280/src/bme280.c **** }
1814 .loc 1 534 39 is_stmt 0 view .LVU470
1815 006e 6400 lsls r4, r4, #1
1816 .LVL228:
534:../libBME280/src/bme280.c **** }
1817 .loc 1 534 26 view .LVU471
1818 0070 013C subs r4, r4, #1
1819 0072 A2B2 uxth r2, r4
1820 .LVL229:
534:../libBME280/src/bme280.c **** }
1821 .loc 1 534 26 view .LVU472
1822 0074 E9E7 b .L67
1823 .LVL230:
1824 .L69:
556:../libBME280/src/bme280.c **** }
1825 .loc 1 556 14 view .LVU473
1826 0076 4FF0FF38 mov r8, #-1
1827 007a EEE7 b .L62
1828 .L70:
1829 007c 4FF0FF38 mov r8, #-1
1830 0080 EBE7 b .L62
1831 .L71:
1832 0082 4FF0FF38 mov r8, #-1
1833 0086 E8E7 b .L62
1834 .L72:
551:../libBME280/src/bme280.c **** }
1835 .loc 1 551 18 view .LVU474
1836 0088 6FF00208 mvn r8, #2
1837 008c E5E7 b .L62
1838 .LVL231:
1839 .L77:
546:../libBME280/src/bme280.c **** }
1840 .loc 1 546 22 view .LVU475
1841 008e 6FF00308 mvn r8, #3
1842 0092 E2E7 b .L62
1843 .cfi_endproc
1844 .LFE2:
1846 .section .text.set_osr_humidity_settings,"ax",%progbits
1847 .align 1
1848 .syntax unified
1849 .thumb
1850 .thumb_func
1851 .fpu softvfp
1853 set_osr_humidity_settings:
1854 .LVL232:
1855 .LFB13:
927:../libBME280/src/bme280.c **** int8_t rslt;
1856 .loc 1 927 1 is_stmt 1 view -0
1857 .cfi_startproc
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 63
1858 @ args = 0, pretend = 0, frame = 8
1859 @ frame_needed = 0, uses_anonymous_args = 0
927:../libBME280/src/bme280.c **** int8_t rslt;
1860 .loc 1 927 1 is_stmt 0 view .LVU477
1861 0000 10B5 push {r4, lr}
1862 .LCFI16:
1863 .cfi_def_cfa_offset 8
1864 .cfi_offset 4, -8
1865 .cfi_offset 14, -4
1866 0002 82B0 sub sp, sp, #8
1867 .LCFI17:
1868 .cfi_def_cfa_offset 16
1869 0004 0C46 mov r4, r1
928:../libBME280/src/bme280.c **** uint8_t ctrl_hum;
1870 .loc 1 928 5 is_stmt 1 view .LVU478
929:../libBME280/src/bme280.c **** uint8_t ctrl_meas;
1871 .loc 1 929 5 view .LVU479
930:../libBME280/src/bme280.c **** uint8_t reg_addr = BME280_CTRL_HUM_ADDR;
1872 .loc 1 930 5 view .LVU480
931:../libBME280/src/bme280.c ****
1873 .loc 1 931 5 view .LVU481
931:../libBME280/src/bme280.c ****
1874 .loc 1 931 13 is_stmt 0 view .LVU482
1875 0006 F223 movs r3, #242
1876 0008 8DF80530 strb r3, [sp, #5]
933:../libBME280/src/bme280.c ****
1877 .loc 1 933 5 is_stmt 1 view .LVU483
933:../libBME280/src/bme280.c ****
1878 .loc 1 933 24 is_stmt 0 view .LVU484
1879 000c 8378 ldrb r3, [r0, #2] @ zero_extendqisi2
933:../libBME280/src/bme280.c ****
1880 .loc 1 933 32 view .LVU485
1881 000e 03F00703 and r3, r3, #7
933:../libBME280/src/bme280.c ****
1882 .loc 1 933 14 view .LVU486
1883 0012 8DF80730 strb r3, [sp, #7]
936:../libBME280/src/bme280.c ****
1884 .loc 1 936 5 is_stmt 1 view .LVU487
936:../libBME280/src/bme280.c ****
1885 .loc 1 936 12 is_stmt 0 view .LVU488
1886 0016 0B46 mov r3, r1
1887 0018 0122 movs r2, #1
1888 001a 0DF10701 add r1, sp, #7
1889 .LVL233:
936:../libBME280/src/bme280.c ****
1890 .loc 1 936 12 view .LVU489
1891 001e 0DF10500 add r0, sp, #5
1892 .LVL234:
936:../libBME280/src/bme280.c ****
1893 .loc 1 936 12 view .LVU490
1894 0022 FFF7FEFF bl bme280_set_regs
1895 .LVL235:
941:../libBME280/src/bme280.c **** {
1896 .loc 1 941 5 is_stmt 1 view .LVU491
941:../libBME280/src/bme280.c **** {
1897 .loc 1 941 8 is_stmt 0 view .LVU492
1898 0026 0346 mov r3, r0
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 64
1899 0028 10B1 cbz r0, .L81
1900 .LVL236:
1901 .L79:
952:../libBME280/src/bme280.c **** }
1902 .loc 1 952 5 is_stmt 1 view .LVU493
953:../libBME280/src/bme280.c ****
1903 .loc 1 953 1 is_stmt 0 view .LVU494
1904 002a 1846 mov r0, r3
1905 002c 02B0 add sp, sp, #8
1906 .LCFI18:
1907 .cfi_remember_state
1908 .cfi_def_cfa_offset 8
1909 @ sp needed
1910 002e 10BD pop {r4, pc}
1911 .LVL237:
1912 .L81:
1913 .LCFI19:
1914 .cfi_restore_state
943:../libBME280/src/bme280.c **** rslt = bme280_get_regs(reg_addr, &ctrl_meas, 1, dev);
1915 .loc 1 943 9 is_stmt 1 view .LVU495
943:../libBME280/src/bme280.c **** rslt = bme280_get_regs(reg_addr, &ctrl_meas, 1, dev);
1916 .loc 1 943 18 is_stmt 0 view .LVU496
1917 0030 F420 movs r0, #244
1918 .LVL238:
943:../libBME280/src/bme280.c **** rslt = bme280_get_regs(reg_addr, &ctrl_meas, 1, dev);
1919 .loc 1 943 18 view .LVU497
1920 0032 8DF80500 strb r0, [sp, #5]
944:../libBME280/src/bme280.c ****
1921 .loc 1 944 9 is_stmt 1 view .LVU498
944:../libBME280/src/bme280.c ****
1922 .loc 1 944 16 is_stmt 0 view .LVU499
1923 0036 2346 mov r3, r4
1924 0038 0122 movs r2, #1
1925 003a 0DF10601 add r1, sp, #6
1926 003e FFF7FEFF bl bme280_get_regs
1927 .LVL239:
946:../libBME280/src/bme280.c **** {
1928 .loc 1 946 9 is_stmt 1 view .LVU500
946:../libBME280/src/bme280.c **** {
1929 .loc 1 946 12 is_stmt 0 view .LVU501
1930 0042 0346 mov r3, r0
1931 0044 0028 cmp r0, #0
1932 0046 F0D1 bne .L79
948:../libBME280/src/bme280.c **** }
1933 .loc 1 948 13 is_stmt 1 view .LVU502
948:../libBME280/src/bme280.c **** }
1934 .loc 1 948 20 is_stmt 0 view .LVU503
1935 0048 2346 mov r3, r4
1936 004a 0122 movs r2, #1
1937 004c 0DF10601 add r1, sp, #6
1938 0050 0DF10500 add r0, sp, #5
1939 .LVL240:
948:../libBME280/src/bme280.c **** }
1940 .loc 1 948 20 view .LVU504
1941 0054 FFF7FEFF bl bme280_set_regs
1942 .LVL241:
1943 0058 0346 mov r3, r0
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 65
1944 .LVL242:
948:../libBME280/src/bme280.c **** }
1945 .loc 1 948 20 view .LVU505
1946 005a E6E7 b .L79
1947 .cfi_endproc
1948 .LFE13:
1950 .section .text.set_osr_press_temp_settings,"ax",%progbits
1951 .align 1
1952 .syntax unified
1953 .thumb
1954 .thumb_func
1955 .fpu softvfp
1957 set_osr_press_temp_settings:
1958 .LVL243:
1959 .LFB14:
962:../libBME280/src/bme280.c **** int8_t rslt;
1960 .loc 1 962 1 is_stmt 1 view -0
1961 .cfi_startproc
1962 @ args = 0, pretend = 0, frame = 8
1963 @ frame_needed = 0, uses_anonymous_args = 0
962:../libBME280/src/bme280.c **** int8_t rslt;
1964 .loc 1 962 1 is_stmt 0 view .LVU507
1965 0000 70B5 push {r4, r5, r6, lr}
1966 .LCFI20:
1967 .cfi_def_cfa_offset 16
1968 .cfi_offset 4, -16
1969 .cfi_offset 5, -12
1970 .cfi_offset 6, -8
1971 .cfi_offset 14, -4
1972 0002 82B0 sub sp, sp, #8
1973 .LCFI21:
1974 .cfi_def_cfa_offset 24
1975 0004 0546 mov r5, r0
1976 0006 0E46 mov r6, r1
1977 0008 1446 mov r4, r2
963:../libBME280/src/bme280.c **** uint8_t reg_addr = BME280_CTRL_MEAS_ADDR;
1978 .loc 1 963 5 is_stmt 1 view .LVU508
964:../libBME280/src/bme280.c **** uint8_t reg_data;
1979 .loc 1 964 5 view .LVU509
964:../libBME280/src/bme280.c **** uint8_t reg_data;
1980 .loc 1 964 13 is_stmt 0 view .LVU510
1981 000a F420 movs r0, #244
1982 .LVL244:
964:../libBME280/src/bme280.c **** uint8_t reg_data;
1983 .loc 1 964 13 view .LVU511
1984 000c 8DF80700 strb r0, [sp, #7]
965:../libBME280/src/bme280.c ****
1985 .loc 1 965 5 is_stmt 1 view .LVU512
967:../libBME280/src/bme280.c ****
1986 .loc 1 967 5 view .LVU513
967:../libBME280/src/bme280.c ****
1987 .loc 1 967 12 is_stmt 0 view .LVU514
1988 0010 1346 mov r3, r2
1989 0012 0122 movs r2, #1
1990 .LVL245:
967:../libBME280/src/bme280.c ****
1991 .loc 1 967 12 view .LVU515
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 66
1992 0014 0DF10601 add r1, sp, #6
1993 .LVL246:
967:../libBME280/src/bme280.c ****
1994 .loc 1 967 12 view .LVU516
1995 0018 FFF7FEFF bl bme280_get_regs
1996 .LVL247:
969:../libBME280/src/bme280.c **** {
1997 .loc 1 969 5 is_stmt 1 view .LVU517
969:../libBME280/src/bme280.c **** {
1998 .loc 1 969 8 is_stmt 0 view .LVU518
1999 001c 0346 mov r3, r0
2000 001e 70B9 cbnz r0, .L83
971:../libBME280/src/bme280.c **** {
2001 .loc 1 971 9 is_stmt 1 view .LVU519
971:../libBME280/src/bme280.c **** {
2002 .loc 1 971 12 is_stmt 0 view .LVU520
2003 0020 15F0010F tst r5, #1
2004 0024 0ED1 bne .L87
2005 .LVL248:
2006 .L84:
976:../libBME280/src/bme280.c **** {
2007 .loc 1 976 9 is_stmt 1 view .LVU521
976:../libBME280/src/bme280.c **** {
2008 .loc 1 976 12 is_stmt 0 view .LVU522
2009 0026 15F0020F tst r5, #2
2010 002a 11D1 bne .L88
2011 .L85:
982:../libBME280/src/bme280.c **** }
2012 .loc 1 982 9 is_stmt 1 view .LVU523
982:../libBME280/src/bme280.c **** }
2013 .loc 1 982 16 is_stmt 0 view .LVU524
2014 002c 2346 mov r3, r4
2015 002e 0122 movs r2, #1
2016 0030 0DF10601 add r1, sp, #6
2017 0034 0DF10700 add r0, sp, #7
2018 0038 FFF7FEFF bl bme280_set_regs
2019 .LVL249:
2020 003c 0346 mov r3, r0
2021 .LVL250:
2022 .L83:
985:../libBME280/src/bme280.c **** }
2023 .loc 1 985 5 is_stmt 1 view .LVU525
986:../libBME280/src/bme280.c ****
2024 .loc 1 986 1 is_stmt 0 view .LVU526
2025 003e 1846 mov r0, r3
2026 0040 02B0 add sp, sp, #8
2027 .LCFI22:
2028 .cfi_remember_state
2029 .cfi_def_cfa_offset 16
2030 @ sp needed
2031 0042 70BD pop {r4, r5, r6, pc}
2032 .LVL251:
2033 .L87:
2034 .LCFI23:
2035 .cfi_restore_state
973:../libBME280/src/bme280.c **** }
2036 .loc 1 973 13 is_stmt 1 view .LVU527
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 67
2037 0044 3146 mov r1, r6
2038 0046 0DF10600 add r0, sp, #6
2039 .LVL252:
973:../libBME280/src/bme280.c **** }
2040 .loc 1 973 13 is_stmt 0 view .LVU528
2041 004a FFF7FEFF bl fill_osr_press_settings
2042 .LVL253:
2043 004e EAE7 b .L84
2044 .L88:
978:../libBME280/src/bme280.c **** }
2045 .loc 1 978 13 is_stmt 1 view .LVU529
2046 0050 3146 mov r1, r6
2047 0052 0DF10600 add r0, sp, #6
2048 0056 FFF7FEFF bl fill_osr_temp_settings
2049 .LVL254:
2050 005a E7E7 b .L85
2051 .cfi_endproc
2052 .LFE14:
2054 .section .text.set_osr_settings,"ax",%progbits
2055 .align 1
2056 .syntax unified
2057 .thumb
2058 .thumb_func
2059 .fpu softvfp
2061 set_osr_settings:
2062 .LVL255:
2063 .LFB12:
907:../libBME280/src/bme280.c **** int8_t rslt = BME280_W_INVALID_OSR_MACRO;
2064 .loc 1 907 1 view -0
2065 .cfi_startproc
2066 @ args = 0, pretend = 0, frame = 0
2067 @ frame_needed = 0, uses_anonymous_args = 0
907:../libBME280/src/bme280.c **** int8_t rslt = BME280_W_INVALID_OSR_MACRO;
2068 .loc 1 907 1 is_stmt 0 view .LVU531
2069 0000 70B5 push {r4, r5, r6, lr}
2070 .LCFI24:
2071 .cfi_def_cfa_offset 16
2072 .cfi_offset 4, -16
2073 .cfi_offset 5, -12
2074 .cfi_offset 6, -8
2075 .cfi_offset 14, -4
2076 0002 0446 mov r4, r0
2077 0004 0D46 mov r5, r1
2078 0006 1646 mov r6, r2
908:../libBME280/src/bme280.c ****
2079 .loc 1 908 5 is_stmt 1 view .LVU532
2080 .LVL256:
910:../libBME280/src/bme280.c **** {
2081 .loc 1 910 5 view .LVU533
910:../libBME280/src/bme280.c **** {
2082 .loc 1 910 8 is_stmt 0 view .LVU534
2083 0008 10F0040F tst r0, #4
2084 000c 04D1 bne .L94
908:../libBME280/src/bme280.c ****
2085 .loc 1 908 12 view .LVU535
2086 000e 0120 movs r0, #1
2087 .LVL257:
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 68
2088 .L90:
915:../libBME280/src/bme280.c **** {
2089 .loc 1 915 5 is_stmt 1 view .LVU536
915:../libBME280/src/bme280.c **** {
2090 .loc 1 915 8 is_stmt 0 view .LVU537
2091 0010 14F0030F tst r4, #3
2092 0014 05D1 bne .L95
2093 .L91:
920:../libBME280/src/bme280.c **** }
2094 .loc 1 920 5 is_stmt 1 view .LVU538
921:../libBME280/src/bme280.c ****
2095 .loc 1 921 1 is_stmt 0 view .LVU539
2096 0016 70BD pop {r4, r5, r6, pc}
2097 .LVL258:
2098 .L94:
912:../libBME280/src/bme280.c **** }
2099 .loc 1 912 9 is_stmt 1 view .LVU540
912:../libBME280/src/bme280.c **** }
2100 .loc 1 912 16 is_stmt 0 view .LVU541
2101 0018 1146 mov r1, r2
2102 .LVL259:
912:../libBME280/src/bme280.c **** }
2103 .loc 1 912 16 view .LVU542
2104 001a 2846 mov r0, r5
2105 .LVL260:
912:../libBME280/src/bme280.c **** }
2106 .loc 1 912 16 view .LVU543
2107 001c FFF7FEFF bl set_osr_humidity_settings
2108 .LVL261:
912:../libBME280/src/bme280.c **** }
2109 .loc 1 912 16 view .LVU544
2110 0020 F6E7 b .L90
2111 .L95:
917:../libBME280/src/bme280.c **** }
2112 .loc 1 917 9 is_stmt 1 view .LVU545
917:../libBME280/src/bme280.c **** }
2113 .loc 1 917 16 is_stmt 0 view .LVU546
2114 0022 3246 mov r2, r6
2115 0024 2946 mov r1, r5
2116 0026 2046 mov r0, r4
2117 .LVL262:
917:../libBME280/src/bme280.c **** }
2118 .loc 1 917 16 view .LVU547
2119 0028 FFF7FEFF bl set_osr_press_temp_settings
2120 .LVL263:
917:../libBME280/src/bme280.c **** }
2121 .loc 1 917 16 view .LVU548
2122 002c F3E7 b .L91
2123 .cfi_endproc
2124 .LFE12:
2126 .section .text.set_filter_standby_settings,"ax",%progbits
2127 .align 1
2128 .syntax unified
2129 .thumb
2130 .thumb_func
2131 .fpu softvfp
2133 set_filter_standby_settings:
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 69
2134 .LVL264:
2135 .LFB15:
995:../libBME280/src/bme280.c **** int8_t rslt;
2136 .loc 1 995 1 is_stmt 1 view -0
2137 .cfi_startproc
2138 @ args = 0, pretend = 0, frame = 8
2139 @ frame_needed = 0, uses_anonymous_args = 0
995:../libBME280/src/bme280.c **** int8_t rslt;
2140 .loc 1 995 1 is_stmt 0 view .LVU550
2141 0000 70B5 push {r4, r5, r6, lr}
2142 .LCFI25:
2143 .cfi_def_cfa_offset 16
2144 .cfi_offset 4, -16
2145 .cfi_offset 5, -12
2146 .cfi_offset 6, -8
2147 .cfi_offset 14, -4
2148 0002 82B0 sub sp, sp, #8
2149 .LCFI26:
2150 .cfi_def_cfa_offset 24
2151 0004 0546 mov r5, r0
2152 0006 0E46 mov r6, r1
2153 0008 1446 mov r4, r2
996:../libBME280/src/bme280.c **** uint8_t reg_addr = BME280_CONFIG_ADDR;
2154 .loc 1 996 5 is_stmt 1 view .LVU551
997:../libBME280/src/bme280.c **** uint8_t reg_data;
2155 .loc 1 997 5 view .LVU552
997:../libBME280/src/bme280.c **** uint8_t reg_data;
2156 .loc 1 997 13 is_stmt 0 view .LVU553
2157 000a F520 movs r0, #245
2158 .LVL265:
997:../libBME280/src/bme280.c **** uint8_t reg_data;
2159 .loc 1 997 13 view .LVU554
2160 000c 8DF80700 strb r0, [sp, #7]
998:../libBME280/src/bme280.c ****
2161 .loc 1 998 5 is_stmt 1 view .LVU555
1000:../libBME280/src/bme280.c ****
2162 .loc 1 1000 5 view .LVU556
1000:../libBME280/src/bme280.c ****
2163 .loc 1 1000 12 is_stmt 0 view .LVU557
2164 0010 1346 mov r3, r2
2165 0012 0122 movs r2, #1
2166 .LVL266:
1000:../libBME280/src/bme280.c ****
2167 .loc 1 1000 12 view .LVU558
2168 0014 0DF10601 add r1, sp, #6
2169 .LVL267:
1000:../libBME280/src/bme280.c ****
2170 .loc 1 1000 12 view .LVU559
2171 0018 FFF7FEFF bl bme280_get_regs
2172 .LVL268:
1002:../libBME280/src/bme280.c **** {
2173 .loc 1 1002 5 is_stmt 1 view .LVU560
1002:../libBME280/src/bme280.c **** {
2174 .loc 1 1002 8 is_stmt 0 view .LVU561
2175 001c 0346 mov r3, r0
2176 001e 70B9 cbnz r0, .L97
1004:../libBME280/src/bme280.c **** {
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 70
2177 .loc 1 1004 9 is_stmt 1 view .LVU562
1004:../libBME280/src/bme280.c **** {
2178 .loc 1 1004 12 is_stmt 0 view .LVU563
2179 0020 15F0080F tst r5, #8
2180 0024 0ED1 bne .L101
2181 .LVL269:
2182 .L98:
1009:../libBME280/src/bme280.c **** {
2183 .loc 1 1009 9 is_stmt 1 view .LVU564
1009:../libBME280/src/bme280.c **** {
2184 .loc 1 1009 12 is_stmt 0 view .LVU565
2185 0026 15F0100F tst r5, #16
2186 002a 11D1 bne .L102
2187 .L99:
1015:../libBME280/src/bme280.c **** }
2188 .loc 1 1015 9 is_stmt 1 view .LVU566
1015:../libBME280/src/bme280.c **** }
2189 .loc 1 1015 16 is_stmt 0 view .LVU567
2190 002c 2346 mov r3, r4
2191 002e 0122 movs r2, #1
2192 0030 0DF10601 add r1, sp, #6
2193 0034 0DF10700 add r0, sp, #7
2194 0038 FFF7FEFF bl bme280_set_regs
2195 .LVL270:
2196 003c 0346 mov r3, r0
2197 .LVL271:
2198 .L97:
1018:../libBME280/src/bme280.c **** }
2199 .loc 1 1018 5 is_stmt 1 view .LVU568
1019:../libBME280/src/bme280.c ****
2200 .loc 1 1019 1 is_stmt 0 view .LVU569
2201 003e 1846 mov r0, r3
2202 0040 02B0 add sp, sp, #8
2203 .LCFI27:
2204 .cfi_remember_state
2205 .cfi_def_cfa_offset 16
2206 @ sp needed
2207 0042 70BD pop {r4, r5, r6, pc}
2208 .LVL272:
2209 .L101:
2210 .LCFI28:
2211 .cfi_restore_state
1006:../libBME280/src/bme280.c **** }
2212 .loc 1 1006 13 is_stmt 1 view .LVU570
2213 0044 3146 mov r1, r6
2214 0046 0DF10600 add r0, sp, #6
2215 .LVL273:
1006:../libBME280/src/bme280.c **** }
2216 .loc 1 1006 13 is_stmt 0 view .LVU571
2217 004a FFF7FEFF bl fill_filter_settings
2218 .LVL274:
2219 004e EAE7 b .L98
2220 .L102:
1011:../libBME280/src/bme280.c **** }
2221 .loc 1 1011 13 is_stmt 1 view .LVU572
2222 0050 3146 mov r1, r6
2223 0052 0DF10600 add r0, sp, #6
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 71
2224 0056 FFF7FEFF bl fill_standby_settings
2225 .LVL275:
2226 005a E7E7 b .L99
2227 .cfi_endproc
2228 .LFE15:
2230 .section .text.reload_device_settings,"ax",%progbits
2231 .align 1
2232 .syntax unified
2233 .thumb
2234 .thumb_func
2235 .fpu softvfp
2237 reload_device_settings:
2238 .LVL276:
2239 .LFB23:
1127:../libBME280/src/bme280.c **** int8_t rslt;
2240 .loc 1 1127 1 view -0
2241 .cfi_startproc
2242 @ args = 0, pretend = 0, frame = 0
2243 @ frame_needed = 0, uses_anonymous_args = 0
1127:../libBME280/src/bme280.c **** int8_t rslt;
2244 .loc 1 1127 1 is_stmt 0 view .LVU574
2245 0000 38B5 push {r3, r4, r5, lr}
2246 .LCFI29:
2247 .cfi_def_cfa_offset 16
2248 .cfi_offset 3, -16
2249 .cfi_offset 4, -12
2250 .cfi_offset 5, -8
2251 .cfi_offset 14, -4
2252 0002 0446 mov r4, r0
2253 0004 0D46 mov r5, r1
1128:../libBME280/src/bme280.c ****
2254 .loc 1 1128 5 is_stmt 1 view .LVU575
1130:../libBME280/src/bme280.c ****
2255 .loc 1 1130 5 view .LVU576
1130:../libBME280/src/bme280.c ****
2256 .loc 1 1130 12 is_stmt 0 view .LVU577
2257 0006 0A46 mov r2, r1
2258 0008 0146 mov r1, r0
2259 .LVL277:
1130:../libBME280/src/bme280.c ****
2260 .loc 1 1130 12 view .LVU578
2261 000a 1F20 movs r0, #31
2262 .LVL278:
1130:../libBME280/src/bme280.c ****
2263 .loc 1 1130 12 view .LVU579
2264 000c FFF7FEFF bl set_osr_settings
2265 .LVL279:
1132:../libBME280/src/bme280.c **** {
2266 .loc 1 1132 5 is_stmt 1 view .LVU580
1132:../libBME280/src/bme280.c **** {
2267 .loc 1 1132 8 is_stmt 0 view .LVU581
2268 0010 0346 mov r3, r0
2269 0012 08B1 cbz r0, .L106
2270 .LVL280:
2271 .L104:
1137:../libBME280/src/bme280.c **** }
2272 .loc 1 1137 5 is_stmt 1 view .LVU582
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 72
1138:../libBME280/src/bme280.c ****
2273 .loc 1 1138 1 is_stmt 0 view .LVU583
2274 0014 1846 mov r0, r3
2275 0016 38BD pop {r3, r4, r5, pc}
2276 .LVL281:
2277 .L106:
1134:../libBME280/src/bme280.c **** }
2278 .loc 1 1134 9 is_stmt 1 view .LVU584
1134:../libBME280/src/bme280.c **** }
2279 .loc 1 1134 16 is_stmt 0 view .LVU585
2280 0018 2A46 mov r2, r5
2281 001a 2146 mov r1, r4
2282 001c 1F20 movs r0, #31
2283 .LVL282:
1134:../libBME280/src/bme280.c **** }
2284 .loc 1 1134 16 view .LVU586
2285 001e FFF7FEFF bl set_filter_standby_settings
2286 .LVL283:
2287 0022 0346 mov r3, r0
2288 .LVL284:
1134:../libBME280/src/bme280.c **** }
2289 .loc 1 1134 16 view .LVU587
2290 0024 F6E7 b .L104
2291 .cfi_endproc
2292 .LFE23:
2294 .section .text.write_power_mode,"ax",%progbits
2295 .align 1
2296 .syntax unified
2297 .thumb
2298 .thumb_func
2299 .fpu softvfp
2301 write_power_mode:
2302 .LVL285:
2303 .LFB21:
1075:../libBME280/src/bme280.c **** int8_t rslt;
2304 .loc 1 1075 1 is_stmt 1 view -0
2305 .cfi_startproc
2306 @ args = 0, pretend = 0, frame = 8
2307 @ frame_needed = 0, uses_anonymous_args = 0
1075:../libBME280/src/bme280.c **** int8_t rslt;
2308 .loc 1 1075 1 is_stmt 0 view .LVU589
2309 0000 30B5 push {r4, r5, lr}
2310 .LCFI30:
2311 .cfi_def_cfa_offset 12
2312 .cfi_offset 4, -12
2313 .cfi_offset 5, -8
2314 .cfi_offset 14, -4
2315 0002 83B0 sub sp, sp, #12
2316 .LCFI31:
2317 .cfi_def_cfa_offset 24
2318 0004 0546 mov r5, r0
2319 0006 0C46 mov r4, r1
1076:../libBME280/src/bme280.c **** uint8_t reg_addr = BME280_PWR_CTRL_ADDR;
2320 .loc 1 1076 5 is_stmt 1 view .LVU590
1077:../libBME280/src/bme280.c ****
2321 .loc 1 1077 5 view .LVU591
1077:../libBME280/src/bme280.c ****
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 73
2322 .loc 1 1077 13 is_stmt 0 view .LVU592
2323 0008 F420 movs r0, #244
2324 .LVL286:
1077:../libBME280/src/bme280.c ****
2325 .loc 1 1077 13 view .LVU593
2326 000a 8DF80700 strb r0, [sp, #7]
1080:../libBME280/src/bme280.c ****
2327 .loc 1 1080 5 is_stmt 1 view .LVU594
1083:../libBME280/src/bme280.c ****
2328 .loc 1 1083 5 view .LVU595
1083:../libBME280/src/bme280.c ****
2329 .loc 1 1083 12 is_stmt 0 view .LVU596
2330 000e 0B46 mov r3, r1
2331 0010 0122 movs r2, #1
2332 0012 0DF10601 add r1, sp, #6
2333 .LVL287:
1083:../libBME280/src/bme280.c ****
2334 .loc 1 1083 12 view .LVU597
2335 0016 FFF7FEFF bl bme280_get_regs
2336 .LVL288:
1086:../libBME280/src/bme280.c **** {
2337 .loc 1 1086 5 is_stmt 1 view .LVU598
1086:../libBME280/src/bme280.c **** {
2338 .loc 1 1086 8 is_stmt 0 view .LVU599
2339 001a 0346 mov r3, r0
2340 001c 10B1 cbz r0, .L110
2341 .LVL289:
2342 .L108:
1094:../libBME280/src/bme280.c **** }
2343 .loc 1 1094 5 is_stmt 1 view .LVU600
1095:../libBME280/src/bme280.c ****
2344 .loc 1 1095 1 is_stmt 0 view .LVU601
2345 001e 1846 mov r0, r3
2346 0020 03B0 add sp, sp, #12
2347 .LCFI32:
2348 .cfi_remember_state
2349 .cfi_def_cfa_offset 12
2350 @ sp needed
2351 0022 30BD pop {r4, r5, pc}
2352 .LVL290:
2353 .L110:
2354 .LCFI33:
2355 .cfi_restore_state
1088:../libBME280/src/bme280.c ****
2356 .loc 1 1088 9 is_stmt 1 view .LVU602
1088:../libBME280/src/bme280.c ****
2357 .loc 1 1088 31 is_stmt 0 view .LVU603
2358 0024 9DF80600 ldrb r0, [sp, #6] @ zero_extendqisi2
2359 .LVL291:
1088:../libBME280/src/bme280.c ****
2360 .loc 1 1088 31 view .LVU604
2361 0028 20F00300 bic r0, r0, #3
2362 002c 40B2 sxtb r0, r0
2363 002e 05F00305 and r5, r5, #3
2364 0032 2843 orrs r0, r0, r5
1088:../libBME280/src/bme280.c ****
2365 .loc 1 1088 29 view .LVU605
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 74
2366 0034 8DF80600 strb r0, [sp, #6]
1091:../libBME280/src/bme280.c **** }
2367 .loc 1 1091 9 is_stmt 1 view .LVU606
1091:../libBME280/src/bme280.c **** }
2368 .loc 1 1091 16 is_stmt 0 view .LVU607
2369 0038 2346 mov r3, r4
2370 003a 0122 movs r2, #1
2371 003c 0DF10601 add r1, sp, #6
2372 0040 0DF10700 add r0, sp, #7
2373 0044 FFF7FEFF bl bme280_set_regs
2374 .LVL292:
2375 0048 0346 mov r3, r0
2376 .LVL293:
1091:../libBME280/src/bme280.c **** }
2377 .loc 1 1091 16 view .LVU608
2378 004a E8E7 b .L108
2379 .cfi_endproc
2380 .LFE21:
2382 .section .text.bme280_get_sensor_settings,"ax",%progbits
2383 .align 1
2384 .global bme280_get_sensor_settings
2385 .syntax unified
2386 .thumb
2387 .thumb_func
2388 .fpu softvfp
2390 bme280_get_sensor_settings:
2391 .LVL294:
2392 .LFB4:
612:../libBME280/src/bme280.c **** int8_t rslt;
2393 .loc 1 612 1 is_stmt 1 view -0
2394 .cfi_startproc
2395 @ args = 0, pretend = 0, frame = 8
2396 @ frame_needed = 0, uses_anonymous_args = 0
612:../libBME280/src/bme280.c **** int8_t rslt;
2397 .loc 1 612 1 is_stmt 0 view .LVU610
2398 0000 30B5 push {r4, r5, lr}
2399 .LCFI34:
2400 .cfi_def_cfa_offset 12
2401 .cfi_offset 4, -12
2402 .cfi_offset 5, -8
2403 .cfi_offset 14, -4
2404 0002 83B0 sub sp, sp, #12
2405 .LCFI35:
2406 .cfi_def_cfa_offset 24
2407 0004 0546 mov r5, r0
613:../libBME280/src/bme280.c **** uint8_t reg_data[4];
2408 .loc 1 613 5 is_stmt 1 view .LVU611
614:../libBME280/src/bme280.c ****
2409 .loc 1 614 5 view .LVU612
617:../libBME280/src/bme280.c ****
2410 .loc 1 617 5 view .LVU613
617:../libBME280/src/bme280.c ****
2411 .loc 1 617 12 is_stmt 0 view .LVU614
2412 0006 FFF7FEFF bl null_ptr_check
2413 .LVL295:
620:../libBME280/src/bme280.c **** {
2414 .loc 1 620 5 is_stmt 1 view .LVU615
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 75
620:../libBME280/src/bme280.c **** {
2415 .loc 1 620 8 is_stmt 0 view .LVU616
2416 000a 0446 mov r4, r0
2417 000c 10B1 cbz r0, .L114
2418 .LVL296:
2419 .L112:
630:../libBME280/src/bme280.c **** }
2420 .loc 1 630 5 is_stmt 1 view .LVU617
631:../libBME280/src/bme280.c ****
2421 .loc 1 631 1 is_stmt 0 view .LVU618
2422 000e 2046 mov r0, r4
2423 0010 03B0 add sp, sp, #12
2424 .LCFI36:
2425 .cfi_remember_state
2426 .cfi_def_cfa_offset 12
2427 @ sp needed
2428 0012 30BD pop {r4, r5, pc}
2429 .LVL297:
2430 .L114:
2431 .LCFI37:
2432 .cfi_restore_state
622:../libBME280/src/bme280.c ****
2433 .loc 1 622 9 is_stmt 1 view .LVU619
622:../libBME280/src/bme280.c ****
2434 .loc 1 622 16 is_stmt 0 view .LVU620
2435 0014 2B46 mov r3, r5
2436 0016 0422 movs r2, #4
2437 0018 0DEB0201 add r1, sp, r2
2438 001c F220 movs r0, #242
2439 .LVL298:
622:../libBME280/src/bme280.c ****
2440 .loc 1 622 16 view .LVU621
2441 001e FFF7FEFF bl bme280_get_regs
2442 .LVL299:
624:../libBME280/src/bme280.c **** {
2443 .loc 1 624 9 is_stmt 1 view .LVU622
624:../libBME280/src/bme280.c **** {
2444 .loc 1 624 12 is_stmt 0 view .LVU623
2445 0022 0446 mov r4, r0
2446 0024 0028 cmp r0, #0
2447 0026 F2D1 bne .L112
626:../libBME280/src/bme280.c **** }
2448 .loc 1 626 13 is_stmt 1 view .LVU624
2449 0028 05F14001 add r1, r5, #64
2450 002c 01A8 add r0, sp, #4
2451 .LVL300:
626:../libBME280/src/bme280.c **** }
2452 .loc 1 626 13 is_stmt 0 view .LVU625
2453 002e FFF7FEFF bl parse_device_settings
2454 .LVL301:
2455 0032 ECE7 b .L112
2456 .cfi_endproc
2457 .LFE4:
2459 .section .text.bme280_get_sensor_mode,"ax",%progbits
2460 .align 1
2461 .global bme280_get_sensor_mode
2462 .syntax unified
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 76
2463 .thumb
2464 .thumb_func
2465 .fpu softvfp
2467 bme280_get_sensor_mode:
2468 .LVL302:
2469 .LFB6:
670:../libBME280/src/bme280.c **** int8_t rslt;
2470 .loc 1 670 1 is_stmt 1 view -0
2471 .cfi_startproc
2472 @ args = 0, pretend = 0, frame = 0
2473 @ frame_needed = 0, uses_anonymous_args = 0
670:../libBME280/src/bme280.c **** int8_t rslt;
2474 .loc 1 670 1 is_stmt 0 view .LVU627
2475 0000 38B5 push {r3, r4, r5, lr}
2476 .LCFI38:
2477 .cfi_def_cfa_offset 16
2478 .cfi_offset 3, -16
2479 .cfi_offset 4, -12
2480 .cfi_offset 5, -8
2481 .cfi_offset 14, -4
2482 0002 0446 mov r4, r0
2483 0004 0D46 mov r5, r1
671:../libBME280/src/bme280.c ****
2484 .loc 1 671 5 is_stmt 1 view .LVU628
674:../libBME280/src/bme280.c ****
2485 .loc 1 674 5 view .LVU629
674:../libBME280/src/bme280.c ****
2486 .loc 1 674 12 is_stmt 0 view .LVU630
2487 0006 0846 mov r0, r1
2488 .LVL303:
674:../libBME280/src/bme280.c ****
2489 .loc 1 674 12 view .LVU631
2490 0008 FFF7FEFF bl null_ptr_check
2491 .LVL304:
676:../libBME280/src/bme280.c **** {
2492 .loc 1 676 5 is_stmt 1 view .LVU632
676:../libBME280/src/bme280.c **** {
2493 .loc 1 676 8 is_stmt 0 view .LVU633
2494 000c 58B9 cbnz r0, .L117
676:../libBME280/src/bme280.c **** {
2495 .loc 1 676 29 discriminator 1 view .LVU634
2496 000e 6CB1 cbz r4, .L118
679:../libBME280/src/bme280.c ****
2497 .loc 1 679 9 is_stmt 1 view .LVU635
679:../libBME280/src/bme280.c ****
2498 .loc 1 679 16 is_stmt 0 view .LVU636
2499 0010 2B46 mov r3, r5
2500 0012 0122 movs r2, #1
2501 0014 2146 mov r1, r4
2502 0016 F420 movs r0, #244
2503 .LVL305:
679:../libBME280/src/bme280.c ****
2504 .loc 1 679 16 view .LVU637
2505 0018 FFF7FEFF bl bme280_get_regs
2506 .LVL306:
682:../libBME280/src/bme280.c **** }
2507 .loc 1 682 9 is_stmt 1 view .LVU638
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 77
682:../libBME280/src/bme280.c **** }
2508 .loc 1 682 24 is_stmt 0 view .LVU639
2509 001c 2378 ldrb r3, [r4] @ zero_extendqisi2
2510 001e 03F00303 and r3, r3, #3
682:../libBME280/src/bme280.c **** }
2511 .loc 1 682 22 view .LVU640
2512 0022 2370 strb r3, [r4]
2513 .LVL307:
2514 .L116:
689:../libBME280/src/bme280.c **** }
2515 .loc 1 689 5 is_stmt 1 view .LVU641
690:../libBME280/src/bme280.c ****
2516 .loc 1 690 1 is_stmt 0 view .LVU642
2517 0024 38BD pop {r3, r4, r5, pc}
2518 .LVL308:
2519 .L117:
686:../libBME280/src/bme280.c **** }
2520 .loc 1 686 14 view .LVU643
2521 0026 4FF0FF30 mov r0, #-1
2522 .LVL309:
686:../libBME280/src/bme280.c **** }
2523 .loc 1 686 14 view .LVU644
2524 002a FBE7 b .L116
2525 .LVL310:
2526 .L118:
686:../libBME280/src/bme280.c **** }
2527 .loc 1 686 14 view .LVU645
2528 002c 4FF0FF30 mov r0, #-1
2529 .LVL311:
686:../libBME280/src/bme280.c **** }
2530 .loc 1 686 14 view .LVU646
2531 0030 F8E7 b .L116
2532 .cfi_endproc
2533 .LFE6:
2535 .section .text.bme280_soft_reset,"ax",%progbits
2536 .align 1
2537 .global bme280_soft_reset
2538 .syntax unified
2539 .thumb
2540 .thumb_func
2541 .fpu softvfp
2543 bme280_soft_reset:
2544 .LVL312:
2545 .LFB7:
696:../libBME280/src/bme280.c **** int8_t rslt;
2546 .loc 1 696 1 is_stmt 1 view -0
2547 .cfi_startproc
2548 @ args = 0, pretend = 0, frame = 8
2549 @ frame_needed = 0, uses_anonymous_args = 0
696:../libBME280/src/bme280.c **** int8_t rslt;
2550 .loc 1 696 1 is_stmt 0 view .LVU648
2551 0000 30B5 push {r4, r5, lr}
2552 .LCFI39:
2553 .cfi_def_cfa_offset 12
2554 .cfi_offset 4, -12
2555 .cfi_offset 5, -8
2556 .cfi_offset 14, -4
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 78
2557 0002 83B0 sub sp, sp, #12
2558 .LCFI40:
2559 .cfi_def_cfa_offset 24
2560 0004 0446 mov r4, r0
697:../libBME280/src/bme280.c **** uint8_t reg_addr = BME280_RESET_ADDR;
2561 .loc 1 697 5 is_stmt 1 view .LVU649
698:../libBME280/src/bme280.c **** uint8_t status_reg = 0;
2562 .loc 1 698 5 view .LVU650
698:../libBME280/src/bme280.c **** uint8_t status_reg = 0;
2563 .loc 1 698 13 is_stmt 0 view .LVU651
2564 0006 E023 movs r3, #224
2565 0008 8DF80730 strb r3, [sp, #7]
699:../libBME280/src/bme280.c **** uint8_t try_run = 5;
2566 .loc 1 699 5 is_stmt 1 view .LVU652
699:../libBME280/src/bme280.c **** uint8_t try_run = 5;
2567 .loc 1 699 13 is_stmt 0 view .LVU653
2568 000c 0023 movs r3, #0
2569 000e 8DF80630 strb r3, [sp, #6]
700:../libBME280/src/bme280.c ****
2570 .loc 1 700 5 is_stmt 1 view .LVU654
2571 .LVL313:
703:../libBME280/src/bme280.c ****
2572 .loc 1 703 5 view .LVU655
703:../libBME280/src/bme280.c ****
2573 .loc 1 703 13 is_stmt 0 view .LVU656
2574 0012 B623 movs r3, #182
2575 0014 8DF80530 strb r3, [sp, #5]
706:../libBME280/src/bme280.c ****
2576 .loc 1 706 5 is_stmt 1 view .LVU657
706:../libBME280/src/bme280.c ****
2577 .loc 1 706 12 is_stmt 0 view .LVU658
2578 0018 FFF7FEFF bl null_ptr_check
2579 .LVL314:
709:../libBME280/src/bme280.c **** {
2580 .loc 1 709 5 is_stmt 1 view .LVU659
709:../libBME280/src/bme280.c **** {
2581 .loc 1 709 8 is_stmt 0 view .LVU660
2582 001c 0346 mov r3, r0
2583 001e 10B1 cbz r0, .L127
2584 .LVL315:
2585 .L121:
732:../libBME280/src/bme280.c **** }
2586 .loc 1 732 5 is_stmt 1 view .LVU661
733:../libBME280/src/bme280.c ****
2587 .loc 1 733 1 is_stmt 0 view .LVU662
2588 0020 1846 mov r0, r3
2589 0022 03B0 add sp, sp, #12
2590 .LCFI41:
2591 .cfi_remember_state
2592 .cfi_def_cfa_offset 12
2593 @ sp needed
2594 0024 30BD pop {r4, r5, pc}
2595 .LVL316:
2596 .L127:
2597 .LCFI42:
2598 .cfi_restore_state
712:../libBME280/src/bme280.c ****
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 79
2599 .loc 1 712 9 is_stmt 1 view .LVU663
712:../libBME280/src/bme280.c ****
2600 .loc 1 712 16 is_stmt 0 view .LVU664
2601 0026 2346 mov r3, r4
2602 0028 0122 movs r2, #1
2603 002a 0DF10501 add r1, sp, #5
2604 002e 0DF10700 add r0, sp, #7
2605 .LVL317:
712:../libBME280/src/bme280.c ****
2606 .loc 1 712 16 view .LVU665
2607 0032 FFF7FEFF bl bme280_set_regs
2608 .LVL318:
714:../libBME280/src/bme280.c **** {
2609 .loc 1 714 9 is_stmt 1 view .LVU666
714:../libBME280/src/bme280.c **** {
2610 .loc 1 714 12 is_stmt 0 view .LVU667
2611 0036 0346 mov r3, r0
2612 0038 0028 cmp r0, #0
2613 003a F1D1 bne .L121
700:../libBME280/src/bme280.c ****
2614 .loc 1 700 13 view .LVU668
2615 003c 0525 movs r5, #5
2616 003e 00E0 b .L123
2617 .LVL319:
2618 .L124:
723:../libBME280/src/bme280.c ****
2619 .loc 1 723 53 view .LVU669
2620 0040 1546 mov r5, r2
2621 .LVL320:
2622 .L123:
717:../libBME280/src/bme280.c **** {
2623 .loc 1 717 13 is_stmt 1 discriminator 3 view .LVU670
720:../libBME280/src/bme280.c **** rslt = bme280_get_regs(BME280_STATUS_REG_ADDR, &status_reg, 1, dev);
2624 .loc 1 720 17 discriminator 3 view .LVU671
720:../libBME280/src/bme280.c **** rslt = bme280_get_regs(BME280_STATUS_REG_ADDR, &status_reg, 1, dev);
2625 .loc 1 720 20 is_stmt 0 discriminator 3 view .LVU672
2626 0042 6369 ldr r3, [r4, #20]
720:../libBME280/src/bme280.c **** rslt = bme280_get_regs(BME280_STATUS_REG_ADDR, &status_reg, 1, dev);
2627 .loc 1 720 17 discriminator 3 view .LVU673
2628 0044 6168 ldr r1, [r4, #4]
2629 0046 4FF4FA60 mov r0, #2000
2630 .LVL321:
720:../libBME280/src/bme280.c **** rslt = bme280_get_regs(BME280_STATUS_REG_ADDR, &status_reg, 1, dev);
2631 .loc 1 720 17 discriminator 3 view .LVU674
2632 004a 9847 blx r3
2633 .LVL322:
721:../libBME280/src/bme280.c ****
2634 .loc 1 721 17 is_stmt 1 discriminator 3 view .LVU675
721:../libBME280/src/bme280.c ****
2635 .loc 1 721 24 is_stmt 0 discriminator 3 view .LVU676
2636 004c 2346 mov r3, r4
2637 004e 0122 movs r2, #1
2638 0050 0DF10601 add r1, sp, #6
2639 0054 F320 movs r0, #243
2640 0056 FFF7FEFF bl bme280_get_regs
2641 .LVL323:
723:../libBME280/src/bme280.c ****
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 80
2642 .loc 1 723 13 discriminator 3 view .LVU677
2643 005a 0346 mov r3, r0
2644 005c 38B9 cbnz r0, .L122
723:../libBME280/src/bme280.c ****
2645 .loc 1 723 53 discriminator 1 view .LVU678
2646 005e 6A1E subs r2, r5, #1
2647 0060 D2B2 uxtb r2, r2
2648 .LVL324:
723:../libBME280/src/bme280.c ****
2649 .loc 1 723 42 discriminator 1 view .LVU679
2650 0062 25B1 cbz r5, .L122
723:../libBME280/src/bme280.c ****
2651 .loc 1 723 72 discriminator 2 view .LVU680
2652 0064 9DF80610 ldrb r1, [sp, #6] @ zero_extendqisi2
723:../libBME280/src/bme280.c ****
2653 .loc 1 723 57 discriminator 2 view .LVU681
2654 0068 11F0010F tst r1, #1
2655 006c E8D1 bne .L124
2656 .LVL325:
2657 .L122:
725:../libBME280/src/bme280.c **** {
2658 .loc 1 725 13 is_stmt 1 view .LVU682
725:../libBME280/src/bme280.c **** {
2659 .loc 1 725 28 is_stmt 0 view .LVU683
2660 006e 9DF80620 ldrb r2, [sp, #6] @ zero_extendqisi2
725:../libBME280/src/bme280.c **** {
2661 .loc 1 725 16 view .LVU684
2662 0072 12F0010F tst r2, #1
2663 0076 D3D0 beq .L121
727:../libBME280/src/bme280.c **** }
2664 .loc 1 727 22 view .LVU685
2665 0078 6FF00503 mvn r3, #5
2666 007c D0E7 b .L121
2667 .cfi_endproc
2668 .LFE7:
2670 .section .text.bme280_init,"ax",%progbits
2671 .align 1
2672 .global bme280_init
2673 .syntax unified
2674 .thumb
2675 .thumb_func
2676 .fpu softvfp
2678 bme280_init:
2679 .LVL326:
2680 .LFB0:
405:../libBME280/src/bme280.c **** int8_t rslt;
2681 .loc 1 405 1 is_stmt 1 view -0
2682 .cfi_startproc
2683 @ args = 0, pretend = 0, frame = 8
2684 @ frame_needed = 0, uses_anonymous_args = 0
405:../libBME280/src/bme280.c **** int8_t rslt;
2685 .loc 1 405 1 is_stmt 0 view .LVU687
2686 0000 70B5 push {r4, r5, r6, lr}
2687 .LCFI43:
2688 .cfi_def_cfa_offset 16
2689 .cfi_offset 4, -16
2690 .cfi_offset 5, -12
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 81
2691 .cfi_offset 6, -8
2692 .cfi_offset 14, -4
2693 0002 82B0 sub sp, sp, #8
2694 .LCFI44:
2695 .cfi_def_cfa_offset 24
2696 0004 0546 mov r5, r0
406:../libBME280/src/bme280.c ****
2697 .loc 1 406 5 is_stmt 1 view .LVU688
409:../libBME280/src/bme280.c **** uint8_t chip_id = 0;
2698 .loc 1 409 5 view .LVU689
2699 .LVL327:
410:../libBME280/src/bme280.c ****
2700 .loc 1 410 5 view .LVU690
410:../libBME280/src/bme280.c ****
2701 .loc 1 410 13 is_stmt 0 view .LVU691
2702 0006 0023 movs r3, #0
2703 0008 8DF80730 strb r3, [sp, #7]
413:../libBME280/src/bme280.c ****
2704 .loc 1 413 5 is_stmt 1 view .LVU692
413:../libBME280/src/bme280.c ****
2705 .loc 1 413 12 is_stmt 0 view .LVU693
2706 000c FFF7FEFF bl null_ptr_check
2707 .LVL328:
416:../libBME280/src/bme280.c **** {
2708 .loc 1 416 5 is_stmt 1 view .LVU694
416:../libBME280/src/bme280.c **** {
2709 .loc 1 416 8 is_stmt 0 view .LVU695
2710 0010 0646 mov r6, r0
2711 0012 48B3 cbz r0, .L134
2712 .LVL329:
2713 .L130:
452:../libBME280/src/bme280.c **** }
2714 .loc 1 452 5 is_stmt 1 view .LVU696
453:../libBME280/src/bme280.c ****
2715 .loc 1 453 1 is_stmt 0 view .LVU697
2716 0014 3046 mov r0, r6
2717 0016 02B0 add sp, sp, #8
2718 .LCFI45:
2719 .cfi_remember_state
2720 .cfi_def_cfa_offset 16
2721 @ sp needed
2722 0018 70BD pop {r4, r5, r6, pc}
2723 .LVL330:
2724 .L137:
2725 .LCFI46:
2726 .cfi_restore_state
434:../libBME280/src/bme280.c **** }
2727 .loc 1 434 21 is_stmt 1 view .LVU698
434:../libBME280/src/bme280.c **** }
2728 .loc 1 434 28 is_stmt 0 view .LVU699
2729 001a 2846 mov r0, r5
2730 .LVL331:
434:../libBME280/src/bme280.c **** }
2731 .loc 1 434 28 view .LVU700
2732 001c FFF7FEFF bl get_calib_data
2733 .LVL332:
2734 0020 0646 mov r6, r0
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 82
2735 .LVL333:
434:../libBME280/src/bme280.c **** }
2736 .loc 1 434 28 view .LVU701
2737 0022 1CE0 b .L132
2738 .LVL334:
2739 .L131:
441:../libBME280/src/bme280.c **** --try_count;
2740 .loc 1 441 13 is_stmt 1 view .LVU702
441:../libBME280/src/bme280.c **** --try_count;
2741 .loc 1 441 16 is_stmt 0 view .LVU703
2742 0024 6B69 ldr r3, [r5, #20]
441:../libBME280/src/bme280.c **** --try_count;
2743 .loc 1 441 13 view .LVU704
2744 0026 6968 ldr r1, [r5, #4]
2745 0028 4FF47A70 mov r0, #1000
2746 .LVL335:
441:../libBME280/src/bme280.c **** --try_count;
2747 .loc 1 441 13 view .LVU705
2748 002c 9847 blx r3
2749 .LVL336:
442:../libBME280/src/bme280.c **** }
2750 .loc 1 442 13 is_stmt 1 view .LVU706
2751 002e 013C subs r4, r4, #1
2752 .LVL337:
442:../libBME280/src/bme280.c **** }
2753 .loc 1 442 13 is_stmt 0 view .LVU707
2754 0030 E4B2 uxtb r4, r4
2755 .LVL338:
2756 .L129:
418:../libBME280/src/bme280.c **** {
2757 .loc 1 418 15 view .LVU708
2758 0032 A4B1 cbz r4, .L132
421:../libBME280/src/bme280.c ****
2759 .loc 1 421 13 is_stmt 1 view .LVU709
421:../libBME280/src/bme280.c ****
2760 .loc 1 421 20 is_stmt 0 view .LVU710
2761 0034 2B46 mov r3, r5
2762 0036 0122 movs r2, #1
2763 0038 0DF10701 add r1, sp, #7
2764 003c D020 movs r0, #208
2765 003e FFF7FEFF bl bme280_get_regs
2766 .LVL339:
424:../libBME280/src/bme280.c **** {
2767 .loc 1 424 13 is_stmt 1 view .LVU711
424:../libBME280/src/bme280.c **** {
2768 .loc 1 424 16 is_stmt 0 view .LVU712
2769 0042 0646 mov r6, r0
2770 0044 0028 cmp r0, #0
2771 0046 EDD1 bne .L131
424:../libBME280/src/bme280.c **** {
2772 .loc 1 424 49 discriminator 1 view .LVU713
2773 0048 9DF80730 ldrb r3, [sp, #7] @ zero_extendqisi2
424:../libBME280/src/bme280.c **** {
2774 .loc 1 424 37 discriminator 1 view .LVU714
2775 004c 602B cmp r3, #96
2776 004e E9D1 bne .L131
426:../libBME280/src/bme280.c ****
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 83
2777 .loc 1 426 17 is_stmt 1 view .LVU715
426:../libBME280/src/bme280.c ****
2778 .loc 1 426 30 is_stmt 0 view .LVU716
2779 0050 2B70 strb r3, [r5]
429:../libBME280/src/bme280.c ****
2780 .loc 1 429 17 is_stmt 1 view .LVU717
429:../libBME280/src/bme280.c ****
2781 .loc 1 429 24 is_stmt 0 view .LVU718
2782 0052 2846 mov r0, r5
2783 .LVL340:
429:../libBME280/src/bme280.c ****
2784 .loc 1 429 24 view .LVU719
2785 0054 FFF7FEFF bl bme280_soft_reset
2786 .LVL341:
431:../libBME280/src/bme280.c **** {
2787 .loc 1 431 17 is_stmt 1 view .LVU720
431:../libBME280/src/bme280.c **** {
2788 .loc 1 431 20 is_stmt 0 view .LVU721
2789 0058 0646 mov r6, r0
2790 005a 0028 cmp r0, #0
2791 005c DDD0 beq .L137
2792 .LVL342:
2793 .L132:
446:../libBME280/src/bme280.c **** {
2794 .loc 1 446 9 is_stmt 1 view .LVU722
446:../libBME280/src/bme280.c **** {
2795 .loc 1 446 12 is_stmt 0 view .LVU723
2796 005e 002C cmp r4, #0
2797 0060 D8D1 bne .L130
448:../libBME280/src/bme280.c **** }
2798 .loc 1 448 18 view .LVU724
2799 0062 6FF00106 mvn r6, #1
2800 .LVL343:
448:../libBME280/src/bme280.c **** }
2801 .loc 1 448 18 view .LVU725
2802 0066 D5E7 b .L130
2803 .LVL344:
2804 .L134:
409:../libBME280/src/bme280.c **** uint8_t chip_id = 0;
2805 .loc 1 409 13 view .LVU726
2806 0068 0524 movs r4, #5
2807 006a E2E7 b .L129
2808 .cfi_endproc
2809 .LFE0:
2811 .section .text.put_device_to_sleep,"ax",%progbits
2812 .align 1
2813 .syntax unified
2814 .thumb
2815 .thumb_func
2816 .fpu softvfp
2818 put_device_to_sleep:
2819 .LVL345:
2820 .LFB22:
1101:../libBME280/src/bme280.c **** int8_t rslt;
2821 .loc 1 1101 1 is_stmt 1 view -0
2822 .cfi_startproc
2823 @ args = 0, pretend = 0, frame = 16
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 84
2824 @ frame_needed = 0, uses_anonymous_args = 0
1101:../libBME280/src/bme280.c **** int8_t rslt;
2825 .loc 1 1101 1 is_stmt 0 view .LVU728
2826 0000 10B5 push {r4, lr}
2827 .LCFI47:
2828 .cfi_def_cfa_offset 8
2829 .cfi_offset 4, -8
2830 .cfi_offset 14, -4
2831 0002 84B0 sub sp, sp, #16
2832 .LCFI48:
2833 .cfi_def_cfa_offset 24
2834 0004 0446 mov r4, r0
1102:../libBME280/src/bme280.c **** uint8_t reg_data[4];
2835 .loc 1 1102 5 is_stmt 1 view .LVU729
1103:../libBME280/src/bme280.c **** struct bme280_settings settings;
2836 .loc 1 1103 5 view .LVU730
1104:../libBME280/src/bme280.c ****
2837 .loc 1 1104 5 view .LVU731
1106:../libBME280/src/bme280.c ****
2838 .loc 1 1106 5 view .LVU732
1106:../libBME280/src/bme280.c ****
2839 .loc 1 1106 12 is_stmt 0 view .LVU733
2840 0006 0346 mov r3, r0
2841 0008 0422 movs r2, #4
2842 000a 03A9 add r1, sp, #12
2843 000c F220 movs r0, #242
2844 .LVL346:
1106:../libBME280/src/bme280.c ****
2845 .loc 1 1106 12 view .LVU734
2846 000e FFF7FEFF bl bme280_get_regs
2847 .LVL347:
1108:../libBME280/src/bme280.c **** {
2848 .loc 1 1108 5 is_stmt 1 view .LVU735
1108:../libBME280/src/bme280.c **** {
2849 .loc 1 1108 8 is_stmt 0 view .LVU736
2850 0012 0346 mov r3, r0
2851 0014 10B1 cbz r0, .L141
2852 .LVL348:
2853 .L139:
1119:../libBME280/src/bme280.c **** }
2854 .loc 1 1119 5 is_stmt 1 view .LVU737
1120:../libBME280/src/bme280.c ****
2855 .loc 1 1120 1 is_stmt 0 view .LVU738
2856 0016 1846 mov r0, r3
2857 0018 04B0 add sp, sp, #16
2858 .LCFI49:
2859 .cfi_remember_state
2860 .cfi_def_cfa_offset 8
2861 @ sp needed
2862 001a 10BD pop {r4, pc}
2863 .LVL349:
2864 .L141:
2865 .LCFI50:
2866 .cfi_restore_state
1110:../libBME280/src/bme280.c **** rslt = bme280_soft_reset(dev);
2867 .loc 1 1110 9 is_stmt 1 view .LVU739
2868 001c 01A9 add r1, sp, #4
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 85
2869 001e 03A8 add r0, sp, #12
2870 .LVL350:
1110:../libBME280/src/bme280.c **** rslt = bme280_soft_reset(dev);
2871 .loc 1 1110 9 is_stmt 0 view .LVU740
2872 0020 FFF7FEFF bl parse_device_settings
2873 .LVL351:
1111:../libBME280/src/bme280.c ****
2874 .loc 1 1111 9 is_stmt 1 view .LVU741
1111:../libBME280/src/bme280.c ****
2875 .loc 1 1111 16 is_stmt 0 view .LVU742
2876 0024 2046 mov r0, r4
2877 0026 FFF7FEFF bl bme280_soft_reset
2878 .LVL352:
1113:../libBME280/src/bme280.c **** {
2879 .loc 1 1113 9 is_stmt 1 view .LVU743
1113:../libBME280/src/bme280.c **** {
2880 .loc 1 1113 12 is_stmt 0 view .LVU744
2881 002a 0346 mov r3, r0
2882 002c 0028 cmp r0, #0
2883 002e F2D1 bne .L139
1115:../libBME280/src/bme280.c **** }
2884 .loc 1 1115 13 is_stmt 1 view .LVU745
1115:../libBME280/src/bme280.c **** }
2885 .loc 1 1115 20 is_stmt 0 view .LVU746
2886 0030 2146 mov r1, r4
2887 0032 01A8 add r0, sp, #4
2888 .LVL353:
1115:../libBME280/src/bme280.c **** }
2889 .loc 1 1115 20 view .LVU747
2890 0034 FFF7FEFF bl reload_device_settings
2891 .LVL354:
2892 0038 0346 mov r3, r0
2893 .LVL355:
1115:../libBME280/src/bme280.c **** }
2894 .loc 1 1115 20 view .LVU748
2895 003a ECE7 b .L139
2896 .cfi_endproc
2897 .LFE22:
2899 .section .text.bme280_set_sensor_settings,"ax",%progbits
2900 .align 1
2901 .global bme280_set_sensor_settings
2902 .syntax unified
2903 .thumb
2904 .thumb_func
2905 .fpu softvfp
2907 bme280_set_sensor_settings:
2908 .LVL356:
2909 .LFB3:
567:../libBME280/src/bme280.c **** int8_t rslt;
2910 .loc 1 567 1 is_stmt 1 view -0
2911 .cfi_startproc
2912 @ args = 0, pretend = 0, frame = 8
2913 @ frame_needed = 0, uses_anonymous_args = 0
567:../libBME280/src/bme280.c **** int8_t rslt;
2914 .loc 1 567 1 is_stmt 0 view .LVU750
2915 0000 70B5 push {r4, r5, r6, lr}
2916 .LCFI51:
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 86
2917 .cfi_def_cfa_offset 16
2918 .cfi_offset 4, -16
2919 .cfi_offset 5, -12
2920 .cfi_offset 6, -8
2921 .cfi_offset 14, -4
2922 0002 82B0 sub sp, sp, #8
2923 .LCFI52:
2924 .cfi_def_cfa_offset 24
2925 0004 0646 mov r6, r0
2926 0006 0D46 mov r5, r1
568:../libBME280/src/bme280.c **** uint8_t sensor_mode;
2927 .loc 1 568 5 is_stmt 1 view .LVU751
569:../libBME280/src/bme280.c ****
2928 .loc 1 569 5 view .LVU752
572:../libBME280/src/bme280.c ****
2929 .loc 1 572 5 view .LVU753
572:../libBME280/src/bme280.c ****
2930 .loc 1 572 12 is_stmt 0 view .LVU754
2931 0008 0846 mov r0, r1
2932 .LVL357:
572:../libBME280/src/bme280.c ****
2933 .loc 1 572 12 view .LVU755
2934 000a FFF7FEFF bl null_ptr_check
2935 .LVL358:
575:../libBME280/src/bme280.c **** {
2936 .loc 1 575 5 is_stmt 1 view .LVU756
575:../libBME280/src/bme280.c **** {
2937 .loc 1 575 8 is_stmt 0 view .LVU757
2938 000e 0446 mov r4, r0
2939 0010 10B1 cbz r0, .L147
2940 .LVL359:
2941 .L143:
604:../libBME280/src/bme280.c **** }
2942 .loc 1 604 5 is_stmt 1 view .LVU758
605:../libBME280/src/bme280.c ****
2943 .loc 1 605 1 is_stmt 0 view .LVU759
2944 0012 2046 mov r0, r4
2945 0014 02B0 add sp, sp, #8
2946 .LCFI53:
2947 .cfi_remember_state
2948 .cfi_def_cfa_offset 16
2949 @ sp needed
2950 0016 70BD pop {r4, r5, r6, pc}
2951 .LVL360:
2952 .L147:
2953 .LCFI54:
2954 .cfi_restore_state
577:../libBME280/src/bme280.c ****
2955 .loc 1 577 9 is_stmt 1 view .LVU760
577:../libBME280/src/bme280.c ****
2956 .loc 1 577 16 is_stmt 0 view .LVU761
2957 0018 2946 mov r1, r5
2958 001a 0DF10700 add r0, sp, #7
2959 .LVL361:
577:../libBME280/src/bme280.c ****
2960 .loc 1 577 16 view .LVU762
2961 001e FFF7FEFF bl bme280_get_sensor_mode
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 87
2962 .LVL362:
579:../libBME280/src/bme280.c **** {
2963 .loc 1 579 9 is_stmt 1 view .LVU763
579:../libBME280/src/bme280.c **** {
2964 .loc 1 579 12 is_stmt 0 view .LVU764
2965 0022 0446 mov r4, r0
2966 0024 10B9 cbnz r0, .L144
579:../libBME280/src/bme280.c **** {
2967 .loc 1 579 49 discriminator 1 view .LVU765
2968 0026 9DF80730 ldrb r3, [sp, #7] @ zero_extendqisi2
579:../libBME280/src/bme280.c **** {
2969 .loc 1 579 33 discriminator 1 view .LVU766
2970 002a B3B9 cbnz r3, .L148
2971 .LVL363:
2972 .L144:
584:../libBME280/src/bme280.c **** {
2973 .loc 1 584 9 is_stmt 1 view .LVU767
584:../libBME280/src/bme280.c **** {
2974 .loc 1 584 12 is_stmt 0 view .LVU768
2975 002c 002C cmp r4, #0
2976 002e F0D1 bne .L143
589:../libBME280/src/bme280.c **** {
2977 .loc 1 589 13 is_stmt 1 view .LVU769
589:../libBME280/src/bme280.c **** {
2978 .loc 1 589 17 is_stmt 0 view .LVU770
2979 0030 3146 mov r1, r6
2980 0032 0720 movs r0, #7
2981 0034 FFF7FEFF bl are_settings_changed
2982 .LVL364:
589:../libBME280/src/bme280.c **** {
2983 .loc 1 589 16 view .LVU771
2984 0038 A0B9 cbnz r0, .L149
2985 .L145:
597:../libBME280/src/bme280.c **** {
2986 .loc 1 597 13 is_stmt 1 view .LVU772
597:../libBME280/src/bme280.c **** {
2987 .loc 1 597 16 is_stmt 0 view .LVU773
2988 003a 002C cmp r4, #0
2989 003c E9D1 bne .L143
597:../libBME280/src/bme280.c **** {
2990 .loc 1 597 40 discriminator 1 view .LVU774
2991 003e 3146 mov r1, r6
2992 0040 1820 movs r0, #24
2993 0042 FFF7FEFF bl are_settings_changed
2994 .LVL365:
597:../libBME280/src/bme280.c **** {
2995 .loc 1 597 37 discriminator 1 view .LVU775
2996 0046 0028 cmp r0, #0
2997 0048 E3D0 beq .L143
599:../libBME280/src/bme280.c **** }
2998 .loc 1 599 17 is_stmt 1 view .LVU776
599:../libBME280/src/bme280.c **** }
2999 .loc 1 599 24 is_stmt 0 view .LVU777
3000 004a 2A46 mov r2, r5
3001 004c 05F14001 add r1, r5, #64
3002 0050 3046 mov r0, r6
3003 0052 FFF7FEFF bl set_filter_standby_settings
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 88
3004 .LVL366:
3005 0056 0446 mov r4, r0
3006 .LVL367:
599:../libBME280/src/bme280.c **** }
3007 .loc 1 599 24 view .LVU778
3008 0058 DBE7 b .L143
3009 .LVL368:
3010 .L148:
581:../libBME280/src/bme280.c **** }
3011 .loc 1 581 13 is_stmt 1 view .LVU779
581:../libBME280/src/bme280.c **** }
3012 .loc 1 581 20 is_stmt 0 view .LVU780
3013 005a 2846 mov r0, r5
3014 .LVL369:
581:../libBME280/src/bme280.c **** }
3015 .loc 1 581 20 view .LVU781
3016 005c FFF7FEFF bl put_device_to_sleep
3017 .LVL370:
3018 0060 0446 mov r4, r0
3019 .LVL371:
581:../libBME280/src/bme280.c **** }
3020 .loc 1 581 20 view .LVU782
3021 0062 E3E7 b .L144
3022 .L149:
591:../libBME280/src/bme280.c **** }
3023 .loc 1 591 17 is_stmt 1 view .LVU783
591:../libBME280/src/bme280.c **** }
3024 .loc 1 591 24 is_stmt 0 view .LVU784
3025 0064 2A46 mov r2, r5
3026 0066 05F14001 add r1, r5, #64
3027 006a 3046 mov r0, r6
3028 006c FFF7FEFF bl set_osr_settings
3029 .LVL372:
3030 0070 0446 mov r4, r0
3031 .LVL373:
591:../libBME280/src/bme280.c **** }
3032 .loc 1 591 24 view .LVU785
3033 0072 E2E7 b .L145
3034 .cfi_endproc
3035 .LFE3:
3037 .section .text.bme280_set_sensor_mode,"ax",%progbits
3038 .align 1
3039 .global bme280_set_sensor_mode
3040 .syntax unified
3041 .thumb
3042 .thumb_func
3043 .fpu softvfp
3045 bme280_set_sensor_mode:
3046 .LVL374:
3047 .LFB5:
637:../libBME280/src/bme280.c **** int8_t rslt;
3048 .loc 1 637 1 is_stmt 1 view -0
3049 .cfi_startproc
3050 @ args = 0, pretend = 0, frame = 8
3051 @ frame_needed = 0, uses_anonymous_args = 0
637:../libBME280/src/bme280.c **** int8_t rslt;
3052 .loc 1 637 1 is_stmt 0 view .LVU787
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 89
3053 0000 30B5 push {r4, r5, lr}
3054 .LCFI55:
3055 .cfi_def_cfa_offset 12
3056 .cfi_offset 4, -12
3057 .cfi_offset 5, -8
3058 .cfi_offset 14, -4
3059 0002 83B0 sub sp, sp, #12
3060 .LCFI56:
3061 .cfi_def_cfa_offset 24
3062 0004 0546 mov r5, r0
3063 0006 0C46 mov r4, r1
638:../libBME280/src/bme280.c **** uint8_t last_set_mode;
3064 .loc 1 638 5 is_stmt 1 view .LVU788
639:../libBME280/src/bme280.c ****
3065 .loc 1 639 5 view .LVU789
642:../libBME280/src/bme280.c ****
3066 .loc 1 642 5 view .LVU790
642:../libBME280/src/bme280.c ****
3067 .loc 1 642 12 is_stmt 0 view .LVU791
3068 0008 0846 mov r0, r1
3069 .LVL375:
642:../libBME280/src/bme280.c ****
3070 .loc 1 642 12 view .LVU792
3071 000a FFF7FEFF bl null_ptr_check
3072 .LVL376:
644:../libBME280/src/bme280.c **** {
3073 .loc 1 644 5 is_stmt 1 view .LVU793
644:../libBME280/src/bme280.c **** {
3074 .loc 1 644 8 is_stmt 0 view .LVU794
3075 000e 0346 mov r3, r0
3076 0010 10B1 cbz r0, .L154
3077 .LVL377:
3078 .L151:
663:../libBME280/src/bme280.c **** }
3079 .loc 1 663 5 is_stmt 1 view .LVU795
664:../libBME280/src/bme280.c ****
3080 .loc 1 664 1 is_stmt 0 view .LVU796
3081 0012 1846 mov r0, r3
3082 0014 03B0 add sp, sp, #12
3083 .LCFI57:
3084 .cfi_remember_state
3085 .cfi_def_cfa_offset 12
3086 @ sp needed
3087 0016 30BD pop {r4, r5, pc}
3088 .LVL378:
3089 .L154:
3090 .LCFI58:
3091 .cfi_restore_state
646:../libBME280/src/bme280.c ****
3092 .loc 1 646 9 is_stmt 1 view .LVU797
646:../libBME280/src/bme280.c ****
3093 .loc 1 646 16 is_stmt 0 view .LVU798
3094 0018 2146 mov r1, r4
3095 001a 0DF10700 add r0, sp, #7
3096 .LVL379:
646:../libBME280/src/bme280.c ****
3097 .loc 1 646 16 view .LVU799
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 90
3098 001e FFF7FEFF bl bme280_get_sensor_mode
3099 .LVL380:
651:../libBME280/src/bme280.c **** {
3100 .loc 1 651 9 is_stmt 1 view .LVU800
651:../libBME280/src/bme280.c **** {
3101 .loc 1 651 12 is_stmt 0 view .LVU801
3102 0022 0346 mov r3, r0
3103 0024 10B9 cbnz r0, .L152
651:../libBME280/src/bme280.c **** {
3104 .loc 1 651 51 discriminator 1 view .LVU802
3105 0026 9DF80720 ldrb r2, [sp, #7] @ zero_extendqisi2
651:../libBME280/src/bme280.c **** {
3106 .loc 1 651 33 discriminator 1 view .LVU803
3107 002a 3AB9 cbnz r2, .L155
3108 .LVL381:
3109 .L152:
657:../libBME280/src/bme280.c **** {
3110 .loc 1 657 9 is_stmt 1 view .LVU804
657:../libBME280/src/bme280.c **** {
3111 .loc 1 657 12 is_stmt 0 view .LVU805
3112 002c 002B cmp r3, #0
3113 002e F0D1 bne .L151
659:../libBME280/src/bme280.c **** }
3114 .loc 1 659 13 is_stmt 1 view .LVU806
659:../libBME280/src/bme280.c **** }
3115 .loc 1 659 20 is_stmt 0 view .LVU807
3116 0030 2146 mov r1, r4
3117 0032 2846 mov r0, r5
3118 0034 FFF7FEFF bl write_power_mode
3119 .LVL382:
659:../libBME280/src/bme280.c **** }
3120 .loc 1 659 20 view .LVU808
3121 0038 0346 mov r3, r0
3122 .LVL383:
659:../libBME280/src/bme280.c **** }
3123 .loc 1 659 20 view .LVU809
3124 003a EAE7 b .L151
3125 .LVL384:
3126 .L155:
653:../libBME280/src/bme280.c **** }
3127 .loc 1 653 13 is_stmt 1 view .LVU810
653:../libBME280/src/bme280.c **** }
3128 .loc 1 653 20 is_stmt 0 view .LVU811
3129 003c 2046 mov r0, r4
3130 .LVL385:
653:../libBME280/src/bme280.c **** }
3131 .loc 1 653 20 view .LVU812
3132 003e FFF7FEFF bl put_device_to_sleep
3133 .LVL386:
3134 0042 0346 mov r3, r0
3135 .LVL387:
653:../libBME280/src/bme280.c **** }
3136 .loc 1 653 20 view .LVU813
3137 0044 F2E7 b .L152
3138 .cfi_endproc
3139 .LFE5:
3141 .section .text.bme280_parse_sensor_data,"ax",%progbits
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 91
3142 .align 1
3143 .global bme280_parse_sensor_data
3144 .syntax unified
3145 .thumb
3146 .thumb_func
3147 .fpu softvfp
3149 bme280_parse_sensor_data:
3150 .LVL388:
3151 .LFB9:
782:../libBME280/src/bme280.c **** /* Variables to store the sensor data */
3152 .loc 1 782 1 is_stmt 1 view -0
3153 .cfi_startproc
3154 @ args = 0, pretend = 0, frame = 0
3155 @ frame_needed = 0, uses_anonymous_args = 0
3156 @ link register save eliminated.
782:../libBME280/src/bme280.c **** /* Variables to store the sensor data */
3157 .loc 1 782 1 is_stmt 0 view .LVU815
3158 0000 10B4 push {r4}
3159 .LCFI59:
3160 .cfi_def_cfa_offset 4
3161 .cfi_offset 4, -4
784:../libBME280/src/bme280.c **** uint32_t data_lsb;
3162 .loc 1 784 5 is_stmt 1 view .LVU816
785:../libBME280/src/bme280.c **** uint32_t data_msb;
3163 .loc 1 785 5 view .LVU817
786:../libBME280/src/bme280.c ****
3164 .loc 1 786 5 view .LVU818
789:../libBME280/src/bme280.c **** data_lsb = (uint32_t)reg_data[1] << 4;
3165 .loc 1 789 5 view .LVU819
789:../libBME280/src/bme280.c **** data_lsb = (uint32_t)reg_data[1] << 4;
3166 .loc 1 789 34 is_stmt 0 view .LVU820
3167 0002 0478 ldrb r4, [r0] @ zero_extendqisi2
3168 .LVL389:
790:../libBME280/src/bme280.c **** data_xlsb = (uint32_t)reg_data[2] >> 4;
3169 .loc 1 790 5 is_stmt 1 view .LVU821
790:../libBME280/src/bme280.c **** data_xlsb = (uint32_t)reg_data[2] >> 4;
3170 .loc 1 790 34 is_stmt 0 view .LVU822
3171 0004 4378 ldrb r3, [r0, #1] @ zero_extendqisi2
790:../libBME280/src/bme280.c **** data_xlsb = (uint32_t)reg_data[2] >> 4;
3172 .loc 1 790 14 view .LVU823
3173 0006 1B01 lsls r3, r3, #4
3174 .LVL390:
791:../libBME280/src/bme280.c **** uncomp_data->pressure = data_msb | data_lsb | data_xlsb;
3175 .loc 1 791 5 is_stmt 1 view .LVU824
791:../libBME280/src/bme280.c **** uncomp_data->pressure = data_msb | data_lsb | data_xlsb;
3176 .loc 1 791 35 is_stmt 0 view .LVU825
3177 0008 8278 ldrb r2, [r0, #2] @ zero_extendqisi2
3178 .LVL391:
792:../libBME280/src/bme280.c ****
3179 .loc 1 792 5 is_stmt 1 view .LVU826
792:../libBME280/src/bme280.c ****
3180 .loc 1 792 38 is_stmt 0 view .LVU827
3181 000a 43EA0433 orr r3, r3, r4, lsl #12
3182 .LVL392:
792:../libBME280/src/bme280.c ****
3183 .loc 1 792 49 view .LVU828
3184 000e 43EA1213 orr r3, r3, r2, lsr #4
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 92
792:../libBME280/src/bme280.c ****
3185 .loc 1 792 27 view .LVU829
3186 0012 0B60 str r3, [r1]
3187 .LVL393:
795:../libBME280/src/bme280.c **** data_lsb = (uint32_t)reg_data[4] << 4;
3188 .loc 1 795 5 is_stmt 1 view .LVU830
795:../libBME280/src/bme280.c **** data_lsb = (uint32_t)reg_data[4] << 4;
3189 .loc 1 795 34 is_stmt 0 view .LVU831
3190 0014 C478 ldrb r4, [r0, #3] @ zero_extendqisi2
3191 .LVL394:
796:../libBME280/src/bme280.c **** data_xlsb = (uint32_t)reg_data[5] >> 4;
3192 .loc 1 796 5 is_stmt 1 view .LVU832
796:../libBME280/src/bme280.c **** data_xlsb = (uint32_t)reg_data[5] >> 4;
3193 .loc 1 796 34 is_stmt 0 view .LVU833
3194 0016 0379 ldrb r3, [r0, #4] @ zero_extendqisi2
796:../libBME280/src/bme280.c **** data_xlsb = (uint32_t)reg_data[5] >> 4;
3195 .loc 1 796 14 view .LVU834
3196 0018 1B01 lsls r3, r3, #4
3197 .LVL395:
797:../libBME280/src/bme280.c **** uncomp_data->temperature = data_msb | data_lsb | data_xlsb;
3198 .loc 1 797 5 is_stmt 1 view .LVU835
797:../libBME280/src/bme280.c **** uncomp_data->temperature = data_msb | data_lsb | data_xlsb;
3199 .loc 1 797 35 is_stmt 0 view .LVU836
3200 001a 4279 ldrb r2, [r0, #5] @ zero_extendqisi2
3201 .LVL396:
798:../libBME280/src/bme280.c ****
3202 .loc 1 798 5 is_stmt 1 view .LVU837
798:../libBME280/src/bme280.c ****
3203 .loc 1 798 41 is_stmt 0 view .LVU838
3204 001c 43EA0433 orr r3, r3, r4, lsl #12
3205 .LVL397:
798:../libBME280/src/bme280.c ****
3206 .loc 1 798 52 view .LVU839
3207 0020 43EA1213 orr r3, r3, r2, lsr #4
798:../libBME280/src/bme280.c ****
3208 .loc 1 798 30 view .LVU840
3209 0024 4B60 str r3, [r1, #4]
3210 .LVL398:
801:../libBME280/src/bme280.c **** data_lsb = (uint32_t)reg_data[7];
3211 .loc 1 801 5 is_stmt 1 view .LVU841
801:../libBME280/src/bme280.c **** data_lsb = (uint32_t)reg_data[7];
3212 .loc 1 801 34 is_stmt 0 view .LVU842
3213 0026 8279 ldrb r2, [r0, #6] @ zero_extendqisi2
3214 .LVL399:
802:../libBME280/src/bme280.c **** uncomp_data->humidity = data_msb | data_lsb;
3215 .loc 1 802 5 is_stmt 1 view .LVU843
802:../libBME280/src/bme280.c **** uncomp_data->humidity = data_msb | data_lsb;
3216 .loc 1 802 34 is_stmt 0 view .LVU844
3217 0028 C379 ldrb r3, [r0, #7] @ zero_extendqisi2
3218 .LVL400:
803:../libBME280/src/bme280.c **** }
3219 .loc 1 803 5 is_stmt 1 view .LVU845
803:../libBME280/src/bme280.c **** }
3220 .loc 1 803 38 is_stmt 0 view .LVU846
3221 002a 43EA0223 orr r3, r3, r2, lsl #8
3222 .LVL401:
803:../libBME280/src/bme280.c **** }
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 93
3223 .loc 1 803 27 view .LVU847
3224 002e 8B60 str r3, [r1, #8]
3225 .LVL402:
804:../libBME280/src/bme280.c ****
3226 .loc 1 804 1 view .LVU848
3227 0030 10BC pop {r4}
3228 .LCFI60:
3229 .cfi_restore 4
3230 .cfi_def_cfa_offset 0
3231 0032 7047 bx lr
3232 .cfi_endproc
3233 .LFE9:
3235 .section .text.bme280_compensate_data,"ax",%progbits
3236 .align 1
3237 .global bme280_compensate_data
3238 .syntax unified
3239 .thumb
3240 .thumb_func
3241 .fpu softvfp
3243 bme280_compensate_data:
3244 .LVL403:
3245 .LFB10:
815:../libBME280/src/bme280.c **** int8_t rslt = BME280_OK;
3246 .loc 1 815 1 is_stmt 1 view -0
3247 .cfi_startproc
3248 @ args = 0, pretend = 0, frame = 0
3249 @ frame_needed = 0, uses_anonymous_args = 0
816:../libBME280/src/bme280.c ****
3250 .loc 1 816 5 view .LVU850
818:../libBME280/src/bme280.c **** {
3251 .loc 1 818 5 view .LVU851
818:../libBME280/src/bme280.c **** {
3252 .loc 1 818 8 is_stmt 0 view .LVU852
3253 0000 61B3 cbz r1, .L162
815:../libBME280/src/bme280.c **** int8_t rslt = BME280_OK;
3254 .loc 1 815 1 discriminator 1 view .LVU853
3255 0002 F8B5 push {r3, r4, r5, r6, r7, lr}
3256 .LCFI61:
3257 .cfi_def_cfa_offset 24
3258 .cfi_offset 3, -24
3259 .cfi_offset 4, -20
3260 .cfi_offset 5, -16
3261 .cfi_offset 6, -12
3262 .cfi_offset 7, -8
3263 .cfi_offset 14, -4
3264 0004 0F46 mov r7, r1
818:../libBME280/src/bme280.c **** {
3265 .loc 1 818 31 discriminator 1 view .LVU854
3266 0006 62B3 cbz r2, .L163
818:../libBME280/src/bme280.c **** {
3267 .loc 1 818 54 discriminator 2 view .LVU855
3268 0008 73B3 cbz r3, .L164
3269 000a 1E46 mov r6, r3
3270 000c 1446 mov r4, r2
3271 000e 0546 mov r5, r0
821:../libBME280/src/bme280.c **** comp_data->pressure = 0;
3272 .loc 1 821 9 is_stmt 1 view .LVU856
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 94
821:../libBME280/src/bme280.c **** comp_data->pressure = 0;
3273 .loc 1 821 32 is_stmt 0 view .LVU857
3274 0010 0022 movs r2, #0
3275 .LVL404:
821:../libBME280/src/bme280.c **** comp_data->pressure = 0;
3276 .loc 1 821 32 view .LVU858
3277 0012 0023 movs r3, #0
3278 .LVL405:
821:../libBME280/src/bme280.c **** comp_data->pressure = 0;
3279 .loc 1 821 32 view .LVU859
3280 0014 C4E90223 strd r2, [r4, #8]
822:../libBME280/src/bme280.c **** comp_data->humidity = 0;
3281 .loc 1 822 9 is_stmt 1 view .LVU860
822:../libBME280/src/bme280.c **** comp_data->humidity = 0;
3282 .loc 1 822 29 is_stmt 0 view .LVU861
3283 0018 C4E90023 strd r2, [r4]
823:../libBME280/src/bme280.c ****
3284 .loc 1 823 9 is_stmt 1 view .LVU862
823:../libBME280/src/bme280.c ****
3285 .loc 1 823 29 is_stmt 0 view .LVU863
3286 001c C4E90423 strd r2, [r4, #16]
826:../libBME280/src/bme280.c **** {
3287 .loc 1 826 9 is_stmt 1 view .LVU864
826:../libBME280/src/bme280.c **** {
3288 .loc 1 826 12 is_stmt 0 view .LVU865
3289 0020 10F0070F tst r0, #7
3290 0024 13D1 bne .L170
3291 .LVL406:
3292 .L160:
832:../libBME280/src/bme280.c **** {
3293 .loc 1 832 9 is_stmt 1 view .LVU866
832:../libBME280/src/bme280.c **** {
3294 .loc 1 832 12 is_stmt 0 view .LVU867
3295 0026 15F0010F tst r5, #1
3296 002a 05D0 beq .L161
835:../libBME280/src/bme280.c **** }
3297 .loc 1 835 13 is_stmt 1 view .LVU868
835:../libBME280/src/bme280.c **** }
3298 .loc 1 835 35 is_stmt 0 view .LVU869
3299 002c 3146 mov r1, r6
3300 002e 3846 mov r0, r7
3301 0030 FFF7FEFF bl compensate_pressure
3302 .LVL407:
835:../libBME280/src/bme280.c **** }
3303 .loc 1 835 33 view .LVU870
3304 0034 C4E90001 strd r0, [r4]
3305 .L161:
838:../libBME280/src/bme280.c **** {
3306 .loc 1 838 9 is_stmt 1 view .LVU871
838:../libBME280/src/bme280.c **** {
3307 .loc 1 838 12 is_stmt 0 view .LVU872
3308 0038 15F0040F tst r5, #4
3309 003c 17D0 beq .L165
841:../libBME280/src/bme280.c **** }
3310 .loc 1 841 13 is_stmt 1 view .LVU873
841:../libBME280/src/bme280.c **** }
3311 .loc 1 841 35 is_stmt 0 view .LVU874
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 95
3312 003e 3146 mov r1, r6
3313 0040 3846 mov r0, r7
3314 0042 FFF7FEFF bl compensate_humidity
3315 .LVL408:
841:../libBME280/src/bme280.c **** }
3316 .loc 1 841 33 view .LVU875
3317 0046 C4E90401 strd r0, [r4, #16]
816:../libBME280/src/bme280.c ****
3318 .loc 1 816 12 view .LVU876
3319 004a 0020 movs r0, #0
3320 .LVL409:
3321 .L159:
849:../libBME280/src/bme280.c **** }
3322 .loc 1 849 5 is_stmt 1 view .LVU877
850:../libBME280/src/bme280.c ****
3323 .loc 1 850 1 is_stmt 0 view .LVU878
3324 004c F8BD pop {r3, r4, r5, r6, r7, pc}
3325 .LVL410:
3326 .L170:
829:../libBME280/src/bme280.c **** }
3327 .loc 1 829 13 is_stmt 1 view .LVU879
829:../libBME280/src/bme280.c **** }
3328 .loc 1 829 38 is_stmt 0 view .LVU880
3329 004e 3146 mov r1, r6
3330 .LVL411:
829:../libBME280/src/bme280.c **** }
3331 .loc 1 829 38 view .LVU881
3332 0050 3846 mov r0, r7
3333 .LVL412:
829:../libBME280/src/bme280.c **** }
3334 .loc 1 829 38 view .LVU882
3335 0052 FFF7FEFF bl compensate_temperature
3336 .LVL413:
829:../libBME280/src/bme280.c **** }
3337 .loc 1 829 36 view .LVU883
3338 0056 C4E90201 strd r0, [r4, #8]
3339 005a E4E7 b .L160
3340 .LVL414:
3341 .L162:
3342 .LCFI62:
3343 .cfi_def_cfa_offset 0
3344 .cfi_restore 3
3345 .cfi_restore 4
3346 .cfi_restore 5
3347 .cfi_restore 6
3348 .cfi_restore 7
3349 .cfi_restore 14
846:../libBME280/src/bme280.c **** }
3350 .loc 1 846 14 view .LVU884
3351 005c 4FF0FF30 mov r0, #-1
3352 .LVL415:
849:../libBME280/src/bme280.c **** }
3353 .loc 1 849 5 is_stmt 1 view .LVU885
850:../libBME280/src/bme280.c ****
3354 .loc 1 850 1 is_stmt 0 view .LVU886
3355 0060 7047 bx lr
3356 .LVL416:
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 96
3357 .L163:
3358 .LCFI63:
3359 .cfi_def_cfa_offset 24
3360 .cfi_offset 3, -24
3361 .cfi_offset 4, -20
3362 .cfi_offset 5, -16
3363 .cfi_offset 6, -12
3364 .cfi_offset 7, -8
3365 .cfi_offset 14, -4
846:../libBME280/src/bme280.c **** }
3366 .loc 1 846 14 view .LVU887
3367 0062 4FF0FF30 mov r0, #-1
3368 .LVL417:
846:../libBME280/src/bme280.c **** }
3369 .loc 1 846 14 view .LVU888
3370 0066 F1E7 b .L159
3371 .LVL418:
3372 .L164:
846:../libBME280/src/bme280.c **** }
3373 .loc 1 846 14 view .LVU889
3374 0068 4FF0FF30 mov r0, #-1
3375 .LVL419:
846:../libBME280/src/bme280.c **** }
3376 .loc 1 846 14 view .LVU890
3377 006c EEE7 b .L159
3378 .LVL420:
3379 .L165:
816:../libBME280/src/bme280.c ****
3380 .loc 1 816 12 view .LVU891
3381 006e 0020 movs r0, #0
3382 0070 ECE7 b .L159
3383 .cfi_endproc
3384 .LFE10:
3386 .section .text.bme280_get_sensor_data,"ax",%progbits
3387 .align 1
3388 .global bme280_get_sensor_data
3389 .syntax unified
3390 .thumb
3391 .thumb_func
3392 .fpu softvfp
3394 bme280_get_sensor_data:
3395 .LVL421:
3396 .LFB8:
741:../libBME280/src/bme280.c **** int8_t rslt;
3397 .loc 1 741 1 is_stmt 1 view -0
3398 .cfi_startproc
3399 @ args = 0, pretend = 0, frame = 24
3400 @ frame_needed = 0, uses_anonymous_args = 0
741:../libBME280/src/bme280.c **** int8_t rslt;
3401 .loc 1 741 1 is_stmt 0 view .LVU893
3402 0000 70B5 push {r4, r5, r6, lr}
3403 .LCFI64:
3404 .cfi_def_cfa_offset 16
3405 .cfi_offset 4, -16
3406 .cfi_offset 5, -12
3407 .cfi_offset 6, -8
3408 .cfi_offset 14, -4
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 97
3409 0002 86B0 sub sp, sp, #24
3410 .LCFI65:
3411 .cfi_def_cfa_offset 40
3412 0004 0646 mov r6, r0
3413 0006 0D46 mov r5, r1
3414 0008 1446 mov r4, r2
742:../libBME280/src/bme280.c ****
3415 .loc 1 742 5 is_stmt 1 view .LVU894
747:../libBME280/src/bme280.c **** struct bme280_uncomp_data uncomp_data = { 0 };
3416 .loc 1 747 5 view .LVU895
747:../libBME280/src/bme280.c **** struct bme280_uncomp_data uncomp_data = { 0 };
3417 .loc 1 747 13 is_stmt 0 view .LVU896
3418 000a 0023 movs r3, #0
3419 000c 0493 str r3, [sp, #16]
3420 000e 0593 str r3, [sp, #20]
748:../libBME280/src/bme280.c ****
3421 .loc 1 748 5 is_stmt 1 view .LVU897
748:../libBME280/src/bme280.c ****
3422 .loc 1 748 31 is_stmt 0 view .LVU898
3423 0010 0193 str r3, [sp, #4]
3424 0012 0293 str r3, [sp, #8]
3425 0014 0393 str r3, [sp, #12]
751:../libBME280/src/bme280.c ****
3426 .loc 1 751 5 is_stmt 1 view .LVU899
751:../libBME280/src/bme280.c ****
3427 .loc 1 751 12 is_stmt 0 view .LVU900
3428 0016 1046 mov r0, r2
3429 .LVL422:
751:../libBME280/src/bme280.c ****
3430 .loc 1 751 12 view .LVU901
3431 0018 FFF7FEFF bl null_ptr_check
3432 .LVL423:
753:../libBME280/src/bme280.c **** {
3433 .loc 1 753 5 is_stmt 1 view .LVU902
753:../libBME280/src/bme280.c **** {
3434 .loc 1 753 8 is_stmt 0 view .LVU903
3435 001c C0B9 cbnz r0, .L173
753:../libBME280/src/bme280.c **** {
3436 .loc 1 753 29 discriminator 1 view .LVU904
3437 001e D5B1 cbz r5, .L174
756:../libBME280/src/bme280.c ****
3438 .loc 1 756 9 is_stmt 1 view .LVU905
756:../libBME280/src/bme280.c ****
3439 .loc 1 756 16 is_stmt 0 view .LVU906
3440 0020 2346 mov r3, r4
3441 0022 0822 movs r2, #8
3442 0024 04A9 add r1, sp, #16
3443 0026 F720 movs r0, #247
3444 .LVL424:
756:../libBME280/src/bme280.c ****
3445 .loc 1 756 16 view .LVU907
3446 0028 FFF7FEFF bl bme280_get_regs
3447 .LVL425:
758:../libBME280/src/bme280.c **** {
3448 .loc 1 758 9 is_stmt 1 view .LVU908
758:../libBME280/src/bme280.c **** {
3449 .loc 1 758 12 is_stmt 0 view .LVU909
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 98
3450 002c 0346 mov r3, r0
3451 002e 10B1 cbz r0, .L176
3452 .LVL426:
3453 .L172:
774:../libBME280/src/bme280.c **** }
3454 .loc 1 774 5 is_stmt 1 view .LVU910
775:../libBME280/src/bme280.c ****
3455 .loc 1 775 1 is_stmt 0 view .LVU911
3456 0030 1846 mov r0, r3
3457 0032 06B0 add sp, sp, #24
3458 .LCFI66:
3459 .cfi_remember_state
3460 .cfi_def_cfa_offset 16
3461 @ sp needed
3462 0034 70BD pop {r4, r5, r6, pc}
3463 .LVL427:
3464 .L176:
3465 .LCFI67:
3466 .cfi_restore_state
761:../libBME280/src/bme280.c ****
3467 .loc 1 761 13 is_stmt 1 view .LVU912
3468 0036 01A9 add r1, sp, #4
3469 0038 04A8 add r0, sp, #16
3470 .LVL428:
761:../libBME280/src/bme280.c ****
3471 .loc 1 761 13 is_stmt 0 view .LVU913
3472 003a FFF7FEFF bl bme280_parse_sensor_data
3473 .LVL429:
766:../libBME280/src/bme280.c **** }
3474 .loc 1 766 13 is_stmt 1 view .LVU914
766:../libBME280/src/bme280.c **** }
3475 .loc 1 766 20 is_stmt 0 view .LVU915
3476 003e 04F11803 add r3, r4, #24
3477 0042 2A46 mov r2, r5
3478 0044 01A9 add r1, sp, #4
3479 0046 3046 mov r0, r6
3480 0048 FFF7FEFF bl bme280_compensate_data
3481 .LVL430:
3482 004c 0346 mov r3, r0
3483 .LVL431:
766:../libBME280/src/bme280.c **** }
3484 .loc 1 766 20 view .LVU916
3485 004e EFE7 b .L172
3486 .LVL432:
3487 .L173:
771:../libBME280/src/bme280.c **** }
3488 .loc 1 771 14 view .LVU917
3489 0050 4FF0FF33 mov r3, #-1
3490 0054 ECE7 b .L172
3491 .L174:
3492 0056 4FF0FF33 mov r3, #-1
3493 005a E9E7 b .L172
3494 .cfi_endproc
3495 .LFE8:
3497 .section .text.bme280_cal_meas_delay,"ax",%progbits
3498 .align 1
3499 .global bme280_cal_meas_delay
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 99
3500 .syntax unified
3501 .thumb
3502 .thumb_func
3503 .fpu softvfp
3505 bme280_cal_meas_delay:
3506 .LVL433:
3507 .LFB11:
857:../libBME280/src/bme280.c **** uint32_t max_delay;
3508 .loc 1 857 1 is_stmt 1 view -0
3509 .cfi_startproc
3510 @ args = 0, pretend = 0, frame = 8
3511 @ frame_needed = 0, uses_anonymous_args = 0
3512 @ link register save eliminated.
857:../libBME280/src/bme280.c **** uint32_t max_delay;
3513 .loc 1 857 1 is_stmt 0 view .LVU919
3514 0000 82B0 sub sp, sp, #8
3515 .LCFI68:
3516 .cfi_def_cfa_offset 8
3517 0002 0246 mov r2, r0
858:../libBME280/src/bme280.c **** uint8_t temp_osr;
3518 .loc 1 858 5 is_stmt 1 view .LVU920
859:../libBME280/src/bme280.c **** uint8_t pres_osr;
3519 .loc 1 859 5 view .LVU921
860:../libBME280/src/bme280.c **** uint8_t hum_osr;
3520 .loc 1 860 5 view .LVU922
861:../libBME280/src/bme280.c ****
3521 .loc 1 861 5 view .LVU923
864:../libBME280/src/bme280.c ****
3522 .loc 1 864 5 view .LVU924
864:../libBME280/src/bme280.c ****
3523 .loc 1 864 13 is_stmt 0 view .LVU925
3524 0004 1C4B ldr r3, .L185
3525 0006 93E80300 ldm r3, {r0, r1}
3526 .LVL434:
864:../libBME280/src/bme280.c ****
3527 .loc 1 864 13 view .LVU926
3528 000a 0090 str r0, [sp]
3529 000c ADF80410 strh r1, [sp, #4] @ movhi
867:../libBME280/src/bme280.c **** {
3530 .loc 1 867 5 is_stmt 1 view .LVU927
867:../libBME280/src/bme280.c **** {
3531 .loc 1 867 17 is_stmt 0 view .LVU928
3532 0010 5378 ldrb r3, [r2, #1] @ zero_extendqisi2
867:../libBME280/src/bme280.c **** {
3533 .loc 1 867 8 view .LVU929
3534 0012 052B cmp r3, #5
3535 0014 04D8 bhi .L181
869:../libBME280/src/bme280.c **** }
3536 .loc 1 869 9 is_stmt 1 view .LVU930
869:../libBME280/src/bme280.c **** }
3537 .loc 1 869 18 is_stmt 0 view .LVU931
3538 0016 02A9 add r1, sp, #8
3539 0018 0B44 add r3, r3, r1
3540 001a 13F8083C ldrb r3, [r3, #-8] @ zero_extendqisi2
3541 .LVL435:
869:../libBME280/src/bme280.c **** }
3542 .loc 1 869 18 view .LVU932
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 100
3543 001e 00E0 b .L178
3544 .LVL436:
3545 .L181:
873:../libBME280/src/bme280.c **** }
3546 .loc 1 873 18 view .LVU933
3547 0020 1023 movs r3, #16
3548 .L178:
3549 .LVL437:
876:../libBME280/src/bme280.c **** {
3550 .loc 1 876 5 is_stmt 1 view .LVU934
876:../libBME280/src/bme280.c **** {
3551 .loc 1 876 17 is_stmt 0 view .LVU935
3552 0022 1178 ldrb r1, [r2] @ zero_extendqisi2
876:../libBME280/src/bme280.c **** {
3553 .loc 1 876 8 view .LVU936
3554 0024 0529 cmp r1, #5
3555 0026 04D8 bhi .L182
878:../libBME280/src/bme280.c **** }
3556 .loc 1 878 9 is_stmt 1 view .LVU937
878:../libBME280/src/bme280.c **** }
3557 .loc 1 878 18 is_stmt 0 view .LVU938
3558 0028 02A8 add r0, sp, #8
3559 002a 0144 add r1, r1, r0
3560 002c 11F8081C ldrb r1, [r1, #-8] @ zero_extendqisi2
3561 .LVL438:
878:../libBME280/src/bme280.c **** }
3562 .loc 1 878 18 view .LVU939
3563 0030 00E0 b .L179
3564 .LVL439:
3565 .L182:
882:../libBME280/src/bme280.c **** }
3566 .loc 1 882 18 view .LVU940
3567 0032 1021 movs r1, #16
3568 .L179:
3569 .LVL440:
885:../libBME280/src/bme280.c **** {
3570 .loc 1 885 5 is_stmt 1 view .LVU941
885:../libBME280/src/bme280.c **** {
3571 .loc 1 885 17 is_stmt 0 view .LVU942
3572 0034 9278 ldrb r2, [r2, #2] @ zero_extendqisi2
3573 .LVL441:
885:../libBME280/src/bme280.c **** {
3574 .loc 1 885 8 view .LVU943
3575 0036 052A cmp r2, #5
3576 0038 04D8 bhi .L183
887:../libBME280/src/bme280.c **** }
3577 .loc 1 887 9 is_stmt 1 view .LVU944
887:../libBME280/src/bme280.c **** }
3578 .loc 1 887 17 is_stmt 0 view .LVU945
3579 003a 02A8 add r0, sp, #8
3580 003c 0244 add r2, r2, r0
3581 003e 12F8080C ldrb r0, [r2, #-8] @ zero_extendqisi2
3582 .LVL442:
887:../libBME280/src/bme280.c **** }
3583 .loc 1 887 17 view .LVU946
3584 0042 00E0 b .L180
3585 .LVL443:
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 101
3586 .L183:
891:../libBME280/src/bme280.c **** }
3587 .loc 1 891 17 view .LVU947
3588 0044 1020 movs r0, #16
3589 .L180:
3590 .LVL444:
894:../libBME280/src/bme280.c **** (uint32_t)((BME280_MEAS_OFFSET + (BME280_MEAS_DUR * temp_osr) +
3591 .loc 1 894 5 is_stmt 1 view .LVU948
895:../libBME280/src/bme280.c **** ((BME280_MEAS_DUR * pres_osr) + BME280_PRES_HUM_MEAS_OFFSET) +
3592 .loc 1 895 59 is_stmt 0 view .LVU949
3593 0046 40F6FC02 movw r2, #2300
3594 004a 02FB03F3 mul r3, r2, r3
3595 .LVL445:
895:../libBME280/src/bme280.c **** ((BME280_MEAS_DUR * pres_osr) + BME280_PRES_HUM_MEAS_OFFSET) +
3596 .loc 1 895 40 view .LVU950
3597 004e 03F2E243 addw r3, r3, #1250
896:../libBME280/src/bme280.c **** ((BME280_MEAS_DUR * hum_osr) + BME280_PRES_HUM_MEAS_OFFSET)) / BME280_MEAS_SCAL
3598 .loc 1 896 39 view .LVU951
3599 0052 02FB01F1 mul r1, r2, r1
3600 .LVL446:
896:../libBME280/src/bme280.c **** ((BME280_MEAS_DUR * hum_osr) + BME280_PRES_HUM_MEAS_OFFSET)) / BME280_MEAS_SCAL
3601 .loc 1 896 51 view .LVU952
3602 0056 01F23F21 addw r1, r1, #575
895:../libBME280/src/bme280.c **** ((BME280_MEAS_DUR * pres_osr) + BME280_PRES_HUM_MEAS_OFFSET) +
3603 .loc 1 895 71 view .LVU953
3604 005a 0B44 add r3, r3, r1
897:../libBME280/src/bme280.c ****
3605 .loc 1 897 39 view .LVU954
3606 005c 02FB00F2 mul r2, r2, r0
897:../libBME280/src/bme280.c ****
3607 .loc 1 897 50 view .LVU955
3608 0060 02F23F20 addw r0, r2, #575
3609 .LVL447:
896:../libBME280/src/bme280.c **** ((BME280_MEAS_DUR * hum_osr) + BME280_PRES_HUM_MEAS_OFFSET)) / BME280_MEAS_SCAL
3610 .loc 1 896 82 view .LVU956
3611 0064 0344 add r3, r3, r0
897:../libBME280/src/bme280.c ****
3612 .loc 1 897 82 view .LVU957
3613 0066 0548 ldr r0, .L185+4
3614 0068 80FB0320 smull r2, r0, r0, r3
3615 006c DB17 asrs r3, r3, #31
3616 .LVL448:
899:../libBME280/src/bme280.c **** }
3617 .loc 1 899 5 is_stmt 1 view .LVU958
900:../libBME280/src/bme280.c ****
3618 .loc 1 900 1 is_stmt 0 view .LVU959
3619 006e C3EBA010 rsb r0, r3, r0, asr #6
3620 .LVL449:
900:../libBME280/src/bme280.c ****
3621 .loc 1 900 1 view .LVU960
3622 0072 02B0 add sp, sp, #8
3623 .LCFI69:
3624 .cfi_def_cfa_offset 0
3625 @ sp needed
3626 0074 7047 bx lr
3627 .L186:
3628 0076 00BF .align 2
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 102
3629 .L185:
3630 0078 00000000 .word .LANCHOR0
3631 007c D34D6210 .word 274877907
3632 .cfi_endproc
3633 .LFE11:
3635 .section .rodata
3636 .align 2
3637 .set .LANCHOR0,. + 0
3638 .LC0:
3639 0000 00 .byte 0
3640 0001 01 .byte 1
3641 0002 02 .byte 2
3642 0003 04 .byte 4
3643 0004 08 .byte 8
3644 0005 10 .byte 16
3645 .text
3646 .Letext0:
3647 .file 2 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.7
3648 .file 3 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.7
3649 .file 4 "../libBME280/inc/libBME280/bme280_defs.h"
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 103
DEFINED SYMBOLS
*ABS*:0000000000000000 bme280.c
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:16 .text.fill_filter_settings:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:23 .text.fill_filter_settings:0000000000000000 fill_filter_settings
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:48 .text.fill_standby_settings:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:54 .text.fill_standby_settings:0000000000000000 fill_standby_settings
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:76 .text.fill_osr_press_settings:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:82 .text.fill_osr_press_settings:0000000000000000 fill_osr_press_settings
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:106 .text.fill_osr_temp_settings:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:112 .text.fill_osr_temp_settings:0000000000000000 fill_osr_temp_settings
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:134 .text.parse_device_settings:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:140 .text.parse_device_settings:0000000000000000 parse_device_settings
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:193 .text.compensate_temperature:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:199 .text.compensate_temperature:0000000000000000 compensate_temperature
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:396 .text.compensate_temperature:00000000000000ec $d
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:407 .text.compensate_pressure:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:413 .text.compensate_pressure:0000000000000000 compensate_pressure
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:788 .text.compensate_pressure:0000000000000218 $d
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:806 .text.compensate_humidity:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:812 .text.compensate_humidity:0000000000000000 compensate_humidity
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1089 .text.compensate_humidity:000000000000015c $d
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1100 .text.interleave_reg_addr:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1106 .text.interleave_reg_addr:0000000000000000 interleave_reg_addr
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1168 .text.parse_temp_press_calib_data:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1174 .text.parse_temp_press_calib_data:0000000000000000 parse_temp_press_calib_data
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1287 .text.parse_humidity_calib_data:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1293 .text.parse_humidity_calib_data:0000000000000000 parse_humidity_calib_data
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1371 .text.are_settings_changed:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1377 .text.are_settings_changed:0000000000000000 are_settings_changed
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1407 .text.null_ptr_check:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1413 .text.null_ptr_check:0000000000000000 null_ptr_check
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1475 .text.bme280_get_regs:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1482 .text.bme280_get_regs:0000000000000000 bme280_get_regs
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1570 .text.get_calib_data:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1576 .text.get_calib_data:0000000000000000 get_calib_data
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1669 .text.bme280_set_regs:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1676 .text.bme280_set_regs:0000000000000000 bme280_set_regs
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1847 .text.set_osr_humidity_settings:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1853 .text.set_osr_humidity_settings:0000000000000000 set_osr_humidity_settings
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1951 .text.set_osr_press_temp_settings:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:1957 .text.set_osr_press_temp_settings:0000000000000000 set_osr_press_temp_settings
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2055 .text.set_osr_settings:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2061 .text.set_osr_settings:0000000000000000 set_osr_settings
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2127 .text.set_filter_standby_settings:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2133 .text.set_filter_standby_settings:0000000000000000 set_filter_standby_settings
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2231 .text.reload_device_settings:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2237 .text.reload_device_settings:0000000000000000 reload_device_settings
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2295 .text.write_power_mode:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2301 .text.write_power_mode:0000000000000000 write_power_mode
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2383 .text.bme280_get_sensor_settings:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2390 .text.bme280_get_sensor_settings:0000000000000000 bme280_get_sensor_settings
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2460 .text.bme280_get_sensor_mode:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2467 .text.bme280_get_sensor_mode:0000000000000000 bme280_get_sensor_mode
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2536 .text.bme280_soft_reset:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2543 .text.bme280_soft_reset:0000000000000000 bme280_soft_reset
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2671 .text.bme280_init:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2678 .text.bme280_init:0000000000000000 bme280_init
ARM GAS C:\Users\mike\AppData\Local\Temp\cci3lQTU.s page 104
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2812 .text.put_device_to_sleep:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2818 .text.put_device_to_sleep:0000000000000000 put_device_to_sleep
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2900 .text.bme280_set_sensor_settings:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:2907 .text.bme280_set_sensor_settings:0000000000000000 bme280_set_sensor_settings
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:3038 .text.bme280_set_sensor_mode:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:3045 .text.bme280_set_sensor_mode:0000000000000000 bme280_set_sensor_mode
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:3142 .text.bme280_parse_sensor_data:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:3149 .text.bme280_parse_sensor_data:0000000000000000 bme280_parse_sensor_data
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:3236 .text.bme280_compensate_data:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:3243 .text.bme280_compensate_data:0000000000000000 bme280_compensate_data
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:3387 .text.bme280_get_sensor_data:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:3394 .text.bme280_get_sensor_data:0000000000000000 bme280_get_sensor_data
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:3498 .text.bme280_cal_meas_delay:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:3505 .text.bme280_cal_meas_delay:0000000000000000 bme280_cal_meas_delay
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:3630 .text.bme280_cal_meas_delay:0000000000000078 $d
C:\Users\mike\AppData\Local\Temp\cci3lQTU.s:3636 .rodata:0000000000000000 $d
UNDEFINED SYMBOLS
__aeabi_ui2d
__aeabi_dmul
__aeabi_dsub
__aeabi_i2d
__aeabi_dadd
__aeabi_d2iz
__aeabi_ddiv
__aeabi_dcmplt
__aeabi_dcmpgt