LibDriver QMC5883L
Loading...
Searching...
No Matches
driver_qmc5883l.h
Go to the documentation of this file.
1
36
37#ifndef DRIVER_QMC5883L_H
38#define DRIVER_QMC5883L_H
39
40#include <stdio.h>
41#include <stdint.h>
42#include <string.h>
43
44#ifdef __cplusplus
45extern "C"{
46#endif
47
53
58
62typedef enum
63{
67
71typedef enum
72{
77
86
97
106
117
121typedef struct qmc5883l_handle_s
122{
123 uint8_t (*iic_init)(void);
124 uint8_t (*iic_deinit)(void);
125 uint8_t (*iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
126 uint8_t (*iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
127 void (*delay_ms)(uint32_t ms);
128 void (*debug_print)(const char *const fmt, ...);
129 uint8_t inited;
131
147
151
158
165#define DRIVER_QMC5883L_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
166
173#define DRIVER_QMC5883L_LINK_IIC_INIT(HANDLE, FUC) (HANDLE)->iic_init = FUC
174
181#define DRIVER_QMC5883L_LINK_IIC_DEINIT(HANDLE, FUC) (HANDLE)->iic_deinit = FUC
182
189#define DRIVER_QMC5883L_LINK_IIC_READ(HANDLE, FUC) (HANDLE)->iic_read = FUC
190
197#define DRIVER_QMC5883L_LINK_IIC_WRITE(HANDLE, FUC) (HANDLE)->iic_write = FUC
198
205#define DRIVER_QMC5883L_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
206
213#define DRIVER_QMC5883L_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
214
218
225
234uint8_t qmc5883l_info(qmc5883l_info_t *info);
235
248uint8_t qmc5883l_init(qmc5883l_handle_t *handle);
249
261uint8_t qmc5883l_deinit(qmc5883l_handle_t *handle);
262
275uint8_t qmc5883l_read(qmc5883l_handle_t *handle, int16_t raw[3], float m_gauss[3]);
276
291uint8_t qmc5883l_read_temperature(qmc5883l_handle_t *handle, int16_t *raw, float *deg);
292
304uint8_t qmc5883l_get_status(qmc5883l_handle_t *handle, uint8_t *status);
305
318
331
344
357
370
383
396
409
422
435
448
461
473
485uint8_t qmc5883l_set_period(qmc5883l_handle_t *handle, uint8_t fbr);
486
498uint8_t qmc5883l_get_period(qmc5883l_handle_t *handle, uint8_t *fbr);
499
503
510
524uint8_t qmc5883l_set_reg(qmc5883l_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len);
525
539uint8_t qmc5883l_get_reg(qmc5883l_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len);
540
544
548
549#ifdef __cplusplus
550}
551#endif
552
553#endif
uint8_t qmc5883l_set_full_scale(qmc5883l_handle_t *handle, qmc5883l_full_scale_t scale)
set the full scale
uint8_t qmc5883l_read(qmc5883l_handle_t *handle, int16_t raw[3], float m_gauss[3])
read data
qmc5883l_status_t
qmc5883l status enumeration definition
uint8_t qmc5883l_get_pointer_roll_over(qmc5883l_handle_t *handle, qmc5883l_bool_t *enable)
get pointer roll over status
uint8_t qmc5883l_get_over_sample(qmc5883l_handle_t *handle, qmc5883l_over_sample_t *sample)
get the over sample
uint8_t qmc5883l_get_full_scale(qmc5883l_handle_t *handle, qmc5883l_full_scale_t *scale)
get the full scale
uint8_t qmc5883l_get_period(qmc5883l_handle_t *handle, uint8_t *fbr)
get period
uint8_t qmc5883l_set_over_sample(qmc5883l_handle_t *handle, qmc5883l_over_sample_t sample)
set the over sample
uint8_t qmc5883l_get_interrupt(qmc5883l_handle_t *handle, qmc5883l_bool_t *enable)
get interrupt status
uint8_t qmc5883l_init(qmc5883l_handle_t *handle)
initialize the chip
qmc5883l_full_scale_t
qmc5883l full scale enumeration definition
uint8_t qmc5883l_set_pointer_roll_over(qmc5883l_handle_t *handle, qmc5883l_bool_t enable)
enable or disable pointer roll over
struct qmc5883l_handle_s qmc5883l_handle_t
qmc5883l handle structure definition
uint8_t qmc5883l_get_status(qmc5883l_handle_t *handle, uint8_t *status)
get status
uint8_t qmc5883l_set_interrupt(qmc5883l_handle_t *handle, qmc5883l_bool_t enable)
enable or disable interrupt
uint8_t qmc5883l_info(qmc5883l_info_t *info)
get chip's information
uint8_t qmc5883l_set_period(qmc5883l_handle_t *handle, uint8_t fbr)
set period
uint8_t qmc5883l_get_output_rate(qmc5883l_handle_t *handle, qmc5883l_output_rate_t *rate)
get the output rate
uint8_t qmc5883l_read_temperature(qmc5883l_handle_t *handle, int16_t *raw, float *deg)
read temperature
uint8_t qmc5883l_deinit(qmc5883l_handle_t *handle)
close the chip
uint8_t qmc5883l_set_output_rate(qmc5883l_handle_t *handle, qmc5883l_output_rate_t rate)
set the output rate
qmc5883l_bool_t
qmc5883l bool enumeration definition
struct qmc5883l_info_s qmc5883l_info_t
qmc5883l information structure definition
qmc5883l_output_rate_t
qmc5883l output rate enumeration definition
qmc5883l_mode_t
qmc5883l mode enumeration definition
qmc5883l_over_sample_t
qmc5883l over sample enumeration definition
uint8_t qmc5883l_soft_reset(qmc5883l_handle_t *handle)
soft reset
uint8_t qmc5883l_get_mode(qmc5883l_handle_t *handle, qmc5883l_mode_t *mode)
get the chip mode
uint8_t qmc5883l_set_mode(qmc5883l_handle_t *handle, qmc5883l_mode_t mode)
set the chip mode
@ QMC5883L_STATUS_DOR
@ QMC5883L_STATUS_OVL
@ QMC5883L_STATUS_DRDY
@ QMC5883L_FULL_SCALE_8GAUSS
@ QMC5883L_FULL_SCALE_2GAUSS
@ QMC5883L_BOOL_TRUE
@ QMC5883L_BOOL_FALSE
@ QMC5883L_OUTPUT_RATE_50HZ
@ QMC5883L_OUTPUT_RATE_200HZ
@ QMC5883L_OUTPUT_RATE_100HZ
@ QMC5883L_OUTPUT_RATE_10HZ
@ QMC5883L_MODE_CONTINUOUS
@ QMC5883L_MODE_STANDBY
@ QMC5883L_OVER_SAMPLE_64
@ QMC5883L_OVER_SAMPLE_512
@ QMC5883L_OVER_SAMPLE_128
@ QMC5883L_OVER_SAMPLE_256
uint8_t qmc5883l_set_reg(qmc5883l_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
set the chip register
uint8_t qmc5883l_get_reg(qmc5883l_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
get the chip register
qmc5883l 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)
qmc5883l information structure definition
char manufacturer_name[32]