You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							37 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
	
	
							37 lines
						
					
					
						
							1.0 KiB
						
					
					
				#pragma once
 | 
						|
 | 
						|
#include <vector>
 | 
						|
 | 
						|
#include "system/sensord/sensors/i2c_sensor.h"
 | 
						|
 | 
						|
// Address of the chip on the bus
 | 
						|
#define MMC5603NJ_I2C_ADDR       0x30
 | 
						|
 | 
						|
// Registers of the chip
 | 
						|
#define MMC5603NJ_I2C_REG_XOUT0       0x00
 | 
						|
#define MMC5603NJ_I2C_REG_ODR         0x1A
 | 
						|
#define MMC5603NJ_I2C_REG_INTERNAL_0  0x1B
 | 
						|
#define MMC5603NJ_I2C_REG_INTERNAL_1  0x1C
 | 
						|
#define MMC5603NJ_I2C_REG_INTERNAL_2  0x1D
 | 
						|
#define MMC5603NJ_I2C_REG_ID          0x39
 | 
						|
 | 
						|
// Constants
 | 
						|
#define MMC5603NJ_CHIP_ID        0x10
 | 
						|
#define MMC5603NJ_CMM_FREQ_EN    (1 << 7)
 | 
						|
#define MMC5603NJ_AUTO_SR_EN     (1 << 5)
 | 
						|
#define MMC5603NJ_CMM_EN         (1 << 4)
 | 
						|
#define MMC5603NJ_EN_PRD_SET     (1 << 3)
 | 
						|
#define MMC5603NJ_SET            (1 << 3)
 | 
						|
#define MMC5603NJ_RESET          (1 << 4)
 | 
						|
 | 
						|
class MMC5603NJ_Magn : public I2CSensor {
 | 
						|
private:
 | 
						|
  uint8_t get_device_address() {return MMC5603NJ_I2C_ADDR;}
 | 
						|
  void start_measurement();
 | 
						|
  std::vector<float> read_measurement();
 | 
						|
public:
 | 
						|
  MMC5603NJ_Magn(I2CBus *bus);
 | 
						|
  int init();
 | 
						|
  bool get_event(MessageBuilder &msg, uint64_t ts = 0);
 | 
						|
  int shutdown();
 | 
						|
};
 | 
						|
 |