LibDriver STTS22H
Loading...
Searching...
No Matches
driver_stts22h_interrupt.c
Go to the documentation of this file.
1
36
38
39static stts22h_handle_t gs_handle;
40
49{
50 if (stts22h_irq_handler(&gs_handle) != 0)
51 {
52 return 1;
53 }
54
55 return 0;
56}
57
69uint8_t stts22h_interrupt_init(stts22h_address_t addr_pin, float low_celsius_deg,
70 float high_celsius_deg, void (*callback)(uint8_t type))
71{
72 uint8_t res;
73 uint8_t reg;
74
75 /* link interface function */
83 DRIVER_STTS22H_LINK_RECEIVE_CALLBACK(&gs_handle, callback);
84
85 /* set addr pin */
86 res = stts22h_set_addr_pin(&gs_handle, addr_pin);
87 if (res != 0)
88 {
89 stts22h_interface_debug_print("stts22h: set addr pin failed.\n");
90
91 return 1;
92 }
93
94 /* stts22h init */
95 res = stts22h_init(&gs_handle);
96 if (res != 0)
97 {
98 stts22h_interface_debug_print("stts22h: init failed.\n");
99
100 return 1;
101 }
102
103 /* set default smbus timeout */
105 if (res != 0)
106 {
107 stts22h_interface_debug_print("stts22h: set disable smbus timeout failed.\n");
108 (void)stts22h_deinit(&gs_handle);
109
110 return 1;
111 }
112
113 /* set default block data update */
115 if (res != 0)
116 {
117 stts22h_interface_debug_print("stts22h: set block data update failed.\n");
118 (void)stts22h_deinit(&gs_handle);
119
120 return 1;
121 }
122
123 /* set default iic address auto increment */
125 if (res != 0)
126 {
127 stts22h_interface_debug_print("stts22h: set iic address auto increment failed.\n");
128 (void)stts22h_deinit(&gs_handle);
129
130 return 1;
131 }
132
133 /* set default output data rate */
135 if (res != 0)
136 {
137 stts22h_interface_debug_print("stts22h: set output data rate failed.\n");
138 (void)stts22h_deinit(&gs_handle);
139
140 return 1;
141 }
142
143 /* temperature convert to register */
144 res = stts22h_temperature_convert_to_register(&gs_handle, low_celsius_deg, &reg);
145 if (res != 0)
146 {
147 stts22h_interface_debug_print("stts22h: temperature convert to register failed.\n");
148 (void)stts22h_deinit(&gs_handle);
149
150 return 1;
151 }
152
153 /* set temperature low limit */
154 res = stts22h_set_temperature_low_limit(&gs_handle, reg);
155 if (res != 0)
156 {
157 stts22h_interface_debug_print("stts22h: set temperature low limit failed.\n");
158 (void)stts22h_deinit(&gs_handle);
159
160 return 1;
161 }
162
163 /* temperature convert to register */
164 res = stts22h_temperature_convert_to_register(&gs_handle, high_celsius_deg, &reg);
165 if (res != 0)
166 {
167 stts22h_interface_debug_print("stts22h: temperature convert to register failed.\n");
168 (void)stts22h_deinit(&gs_handle);
169
170 return 1;
171 }
172
173 /* set temperature high limit */
174 res = stts22h_set_temperature_high_limit(&gs_handle, reg);
175 if (res != 0)
176 {
177 stts22h_interface_debug_print("stts22h: set temperature high limit failed.\n");
178 (void)stts22h_deinit(&gs_handle);
179
180 return 1;
181 }
182
183 /* start continuous read */
184 res = stts22h_start_continuous_read(&gs_handle);
185 if (res != 0)
186 {
187 stts22h_interface_debug_print("stts22h: start continuous read failed.\n");
188 (void)stts22h_deinit(&gs_handle);
189
190 return 1;
191 }
192
193 return 0;
194}
195
204uint8_t stts22h_interrupt_read(float *celsius_deg)
205{
206 int16_t raw;
207
208 /* read data */
209 if (stts22h_continuous_read(&gs_handle, &raw, celsius_deg) != 0)
210 {
211 return 1;
212 }
213
214 return 0;
215}
216
225{
226 uint8_t res;
227
228 /* stop continuous read*/
229 res = stts22h_stop_continuous_read(&gs_handle);
230 if (res != 0)
231 {
232 return 1;
233 }
234
235 /* close stts22h */
236 if (stts22h_deinit(&gs_handle) != 0)
237 {
238 return 1;
239 }
240
241 return 0;
242}
driver stts22h interrupt header file
uint8_t stts22h_init(stts22h_handle_t *handle)
initialize the chip
uint8_t stts22h_set_temperature_low_limit(stts22h_handle_t *handle, uint8_t raw)
set temperature low limit
uint8_t stts22h_stop_continuous_read(stts22h_handle_t *handle)
stop the chip reading
uint8_t stts22h_set_iic_address_auto_increment(stts22h_handle_t *handle, stts22h_bool_t enable)
enable or disable iic address auto increment
uint8_t stts22h_set_temperature_high_limit(stts22h_handle_t *handle, uint8_t raw)
set temperature high limit
struct stts22h_handle_s stts22h_handle_t
stts22h handle structure definition
uint8_t stts22h_set_addr_pin(stts22h_handle_t *handle, stts22h_address_t addr_pin)
set the iic address pin
uint8_t stts22h_set_output_data_rate(stts22h_handle_t *handle, stts22h_output_data_rate_t rate)
set output data rate
uint8_t stts22h_deinit(stts22h_handle_t *handle)
close the chip
uint8_t stts22h_set_block_data_update(stts22h_handle_t *handle, stts22h_bool_t enable)
enable or disable block data update
uint8_t stts22h_irq_handler(stts22h_handle_t *handle)
irq handler
uint8_t stts22h_set_disable_smbus_timeout(stts22h_handle_t *handle, stts22h_bool_t enable)
enable or disable disable smbus timeout
uint8_t stts22h_continuous_read(stts22h_handle_t *handle, int16_t *raw, float *celsius_deg)
read data from the chip continuously
uint8_t stts22h_temperature_convert_to_register(stts22h_handle_t *handle, float celsius_deg, uint8_t *reg)
convert the temperature to the register raw data
stts22h_address_t
stts22h address enumeration definition
uint8_t stts22h_start_continuous_read(stts22h_handle_t *handle)
start the chip reading
uint8_t stts22h_interrupt_read(float *celsius_deg)
interrupt example read
#define STTS22H_INTERRUPT_DEFAULT_BLOCK_DATA_UPDATE
#define STTS22H_INTERRUPT_DEFAULT_DISABLE_SMBUS_TIMEOUT
stts22h interrupt example default definition
#define STTS22H_INTERRUPT_DEFAULT_IIC_ADDRESS_AUTO_INCREMENT
uint8_t stts22h_interrupt_init(stts22h_address_t addr_pin, float low_celsius_deg, float high_celsius_deg, void(*callback)(uint8_t type))
interrupt example init
uint8_t stts22h_interrupt_deinit(void)
interrupt example deinit
#define STTS22H_INTERRUPT_DEFAULT_OUTPUT_DATA_RATE
uint8_t stts22h_interrupt_irq_handler(void)
interrupt irq
uint8_t stts22h_interface_iic_deinit(void)
interface iic bus deinit
void stts22h_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t stts22h_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
void stts22h_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t stts22h_interface_iic_init(void)
interface iic bus init
uint8_t stts22h_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read