LibDriver MAX30205
Loading...
Searching...
No Matches
driver_max30205.h
Go to the documentation of this file.
1
37
38#ifndef DRIVER_MAX30205_H
39#define DRIVER_MAX30205_H
40
41#include <stdio.h>
42#include <stdint.h>
43#include <string.h>
44
45#ifdef __cplusplus
46extern "C"{
47#endif
48
54
59
63typedef enum
64{
65 MAX30205_ADDRESS_0 = (uint8_t)(0x90),
66 MAX30205_ADDRESS_1 = (uint8_t)(0x92),
67 MAX30205_ADDRESS_2 = (uint8_t)(0x82),
68 MAX30205_ADDRESS_3 = (uint8_t)(0x80),
69 MAX30205_ADDRESS_4 = (uint8_t)(0x94),
70 MAX30205_ADDRESS_5 = (uint8_t)(0x96),
71 MAX30205_ADDRESS_6 = (uint8_t)(0x86),
72 MAX30205_ADDRESS_7 = (uint8_t)(0x84),
73 MAX30205_ADDRESS_8 = (uint8_t)(0xB4),
74 MAX30205_ADDRESS_9 = (uint8_t)(0xB6),
75 MAX30205_ADDRESS_A = (uint8_t)(0xA6),
76 MAX30205_ADDRESS_B = (uint8_t)(0xA4),
77 MAX30205_ADDRESS_C = (uint8_t)(0xB0),
78 MAX30205_ADDRESS_D = (uint8_t)(0xB2),
79 MAX30205_ADDRESS_E = (uint8_t)(0xA2),
80 MAX30205_ADDRESS_F = (uint8_t)(0xA0),
81 MAX30205_ADDRESS_10 = (uint8_t)(0x98),
82 MAX30205_ADDRESS_11 = (uint8_t)(0x9A),
83 MAX30205_ADDRESS_12 = (uint8_t)(0x8A),
84 MAX30205_ADDRESS_13 = (uint8_t)(0x88),
85 MAX30205_ADDRESS_14 = (uint8_t)(0x9C),
86 MAX30205_ADDRESS_15 = (uint8_t)(0x9E),
87 MAX30205_ADDRESS_16 = (uint8_t)(0x8E),
88 MAX30205_ADDRESS_17 = (uint8_t)(0x8C),
89 MAX30205_ADDRESS_18 = (uint8_t)(0xBC),
90 MAX30205_ADDRESS_19 = (uint8_t)(0xBE),
91 MAX30205_ADDRESS_1A = (uint8_t)(0xAE),
92 MAX30205_ADDRESS_1B = (uint8_t)(0xAC),
93 MAX30205_ADDRESS_1C = (uint8_t)(0xB8),
94 MAX30205_ADDRESS_1D = (uint8_t)(0xBA),
95 MAX30205_ADDRESS_1E = (uint8_t)(0xAA),
96 MAX30205_ADDRESS_1F = (uint8_t)(0xA8),
98
107
116
120
125
134
145
154
158
163
167typedef struct max30205_handle_s
168{
169 uint8_t iic_addr;
170 uint8_t (*iic_init)(void);
171 uint8_t (*iic_deinit)(void);
172 uint8_t (*iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
173 uint8_t (*iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
174 void (*delay_ms)(uint32_t ms);
175 void (*debug_print)(const char *const fmt, ...);
176 uint8_t inited;
177 uint8_t reg;
179
195
199
206
213#define DRIVER_MAX30205_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
214
221#define DRIVER_MAX30205_LINK_IIC_INIT(HANDLE, FUC) (HANDLE)->iic_init = FUC
222
229#define DRIVER_MAX30205_LINK_IIC_DEINIT(HANDLE, FUC) (HANDLE)->iic_deinit = FUC
230
237#define DRIVER_MAX30205_LINK_IIC_READ(HANDLE, FUC) (HANDLE)->iic_read = FUC
238
245#define DRIVER_MAX30205_LINK_IIC_WRITE(HANDLE, FUC) (HANDLE)->iic_write = FUC
246
253#define DRIVER_MAX30205_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
254
261#define DRIVER_MAX30205_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
262
266
273
282uint8_t max30205_info(max30205_info_t *info);
283
294
305
316uint8_t max30205_init(max30205_handle_t *handle);
317
328uint8_t max30205_deinit(max30205_handle_t *handle);
329
341
353
367uint8_t max30205_continuous_read(max30205_handle_t *handle, int16_t *raw, float *s);
368
381uint8_t max30205_single_read(max30205_handle_t *handle, int16_t *raw, float *s);
382
394
406
418
430
442
446
453
465
477
489
501
513
525
537uint8_t max30205_set_interrupt_low_threshold(max30205_handle_t *handle, int16_t threshold);
538
550uint8_t max30205_get_interrupt_low_threshold(max30205_handle_t *handle, int16_t *threshold);
551
563uint8_t max30205_set_interrupt_high_threshold(max30205_handle_t *handle, int16_t threshold);
564
576uint8_t max30205_get_interrupt_high_threshold(max30205_handle_t *handle, int16_t *threshold);
577
589uint8_t max30205_convert_to_register(max30205_handle_t *handle, float s, int16_t *reg);
590
603uint8_t max30205_convert_to_data(max30205_handle_t *handle, int16_t reg, float *s);
604
608
615
629uint8_t max30205_set_reg(max30205_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len);
630
644uint8_t max30205_get_reg(max30205_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len);
645
649
653
654#ifdef __cplusplus
655}
656#endif
657
658#endif
max30205_bus_timeout_t
max30205 bus timeout enumeration definition
struct max30205_handle_s max30205_handle_t
max30205 handle structure definition
uint8_t max30205_set_data_format(max30205_handle_t *handle, max30205_data_format_t format)
set the chip data format
uint8_t max30205_get_addr_pin(max30205_handle_t *handle, max30205_address_t *addr_pin)
get the iic address pin
uint8_t max30205_get_bus_timeout(max30205_handle_t *handle, max30205_bus_timeout_t *bus_timeout)
get the iic bus timeout
uint8_t max30205_start_continuous_read(max30205_handle_t *handle)
start reading data
struct max30205_info_s max30205_info_t
max30205 information structure definition
uint8_t max30205_get_data_format(max30205_handle_t *handle, max30205_data_format_t *format)
get the chip data format
uint8_t max30205_set_addr_pin(max30205_handle_t *handle, max30205_address_t addr_pin)
set the iic address pin
uint8_t max30205_info(max30205_info_t *info)
get chip's information
max30205_address_t
max30205 address enumeration definition
max30205_data_format_t
max30205 data format enumeration definition
uint8_t max30205_deinit(max30205_handle_t *handle)
close the chip
uint8_t max30205_set_bus_timeout(max30205_handle_t *handle, max30205_bus_timeout_t bus_timeout)
set the iic bus timeout
uint8_t max30205_continuous_read(max30205_handle_t *handle, int16_t *raw, float *s)
read data continuously
uint8_t max30205_power_down(max30205_handle_t *handle)
chip powers down
uint8_t max30205_single_read(max30205_handle_t *handle, int16_t *raw, float *s)
read data once
uint8_t max30205_init(max30205_handle_t *handle)
initialize the chip
uint8_t max30205_stop_continuous_read(max30205_handle_t *handle)
stop reading data
@ MAX30205_BUS_TIMEOUT_DISABLE
@ MAX30205_BUS_TIMEOUT_ENABLE
@ MAX30205_ADDRESS_18
@ MAX30205_ADDRESS_15
@ MAX30205_ADDRESS_D
@ MAX30205_ADDRESS_2
@ MAX30205_ADDRESS_A
@ MAX30205_ADDRESS_C
@ MAX30205_ADDRESS_14
@ MAX30205_ADDRESS_10
@ MAX30205_ADDRESS_F
@ MAX30205_ADDRESS_5
@ MAX30205_ADDRESS_7
@ MAX30205_ADDRESS_B
@ MAX30205_ADDRESS_1B
@ MAX30205_ADDRESS_1C
@ MAX30205_ADDRESS_3
@ MAX30205_ADDRESS_16
@ MAX30205_ADDRESS_11
@ MAX30205_ADDRESS_12
@ MAX30205_ADDRESS_1A
@ MAX30205_ADDRESS_6
@ MAX30205_ADDRESS_1
@ MAX30205_ADDRESS_1E
@ MAX30205_ADDRESS_8
@ MAX30205_ADDRESS_4
@ MAX30205_ADDRESS_9
@ MAX30205_ADDRESS_13
@ MAX30205_ADDRESS_19
@ MAX30205_ADDRESS_0
@ MAX30205_ADDRESS_1F
@ MAX30205_ADDRESS_17
@ MAX30205_ADDRESS_E
@ MAX30205_ADDRESS_1D
@ MAX30205_DATA_FORMAT_NORMAL
@ MAX30205_DATA_FORMAT_EXTENDED
uint8_t max30205_get_reg(max30205_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
get the chip register
uint8_t max30205_set_reg(max30205_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
set the chip register
max30205_interrupt_mode_t
max30205 interrupt mode enumeration definition
uint8_t max30205_set_fault_queue(max30205_handle_t *handle, max30205_fault_queue_t fault_queue)
set the chip fault queue
uint8_t max30205_get_interrupt_mode(max30205_handle_t *handle, max30205_interrupt_mode_t *mode)
get the chip interrupt mode
uint8_t max30205_set_interrupt_mode(max30205_handle_t *handle, max30205_interrupt_mode_t mode)
set the chip interrupt mode
uint8_t max30205_get_pin_polarity(max30205_handle_t *handle, max30205_pin_polarity_t *polarity)
get the interrupt pin polarity
uint8_t max30205_get_interrupt_low_threshold(max30205_handle_t *handle, int16_t *threshold)
get the chip interrupt low threshold
uint8_t max30205_set_interrupt_low_threshold(max30205_handle_t *handle, int16_t threshold)
set the chip interrupt low threshold
uint8_t max30205_convert_to_data(max30205_handle_t *handle, int16_t reg, float *s)
convert a register raw data to a converted temperature data
max30205_fault_queue_t
max30205 fault queue enumeration definition
uint8_t max30205_set_pin_polarity(max30205_handle_t *handle, max30205_pin_polarity_t polarity)
set the interrupt pin polarity
uint8_t max30205_convert_to_register(max30205_handle_t *handle, float s, int16_t *reg)
convert a temperature value to a register raw data
max30205_pin_polarity_t
max30205 pin enumeration definition
uint8_t max30205_set_interrupt_high_threshold(max30205_handle_t *handle, int16_t threshold)
set the chip interrupt high threshold
uint8_t max30205_get_interrupt_high_threshold(max30205_handle_t *handle, int16_t *threshold)
get the chip interrupt high threshold
uint8_t max30205_get_fault_queue(max30205_handle_t *handle, max30205_fault_queue_t *fault_queue)
get the chip fault queue
@ MAX30205_INTERRUPT_MODE_INTERRUPT
@ MAX30205_INTERRUPT_MODE_COMPARATOR
@ MAX30205_FAULT_QUEUE_1
@ MAX30205_FAULT_QUEUE_2
@ MAX30205_FAULT_QUEUE_6
@ MAX30205_FAULT_QUEUE_4
@ MAX30205_PIN_POLARITY_LOW
@ MAX30205_PIN_POLARITY_HIGH
max30205 handle structure definition
void(* delay_ms)(uint32_t ms)
void(* debug_print)(const char *const fmt,...)
uint8_t(* iic_init)(void)
uint8_t(* iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* iic_deinit)(void)
max30205 information structure definition
char manufacturer_name[32]