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.
		
		
		
		
			
				
					25 lines
				
				701 B
			
		
		
			
		
	
	
					25 lines
				
				701 B
			| 
								 
											5 years ago
										 
									 | 
							
								#include <iostream>
							 | 
						||
| 
								 | 
							
								#include "i2c_sensor.hpp"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int16_t read_12_bit(uint8_t lsb, uint8_t msb){
							 | 
						||
| 
								 | 
							
								  uint16_t combined = (uint16_t(msb) << 8) | uint16_t(lsb & 0xF0);
							 | 
						||
| 
								 | 
							
								  return int16_t(combined) / (1 << 4);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int16_t read_16_bit(uint8_t lsb, uint8_t msb){
							 | 
						||
| 
								 | 
							
								  uint16_t combined = (uint16_t(msb) << 8) | uint16_t(lsb);
							 | 
						||
| 
								 | 
							
								  return int16_t(combined);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								I2CSensor::I2CSensor(I2CBus *bus) : bus(bus){
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int I2CSensor::read_register(uint register_address, uint8_t *buffer, uint8_t len){
							 | 
						||
| 
								 | 
							
								  return bus->read_register(get_device_address(), register_address, buffer, len);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int I2CSensor::set_register(uint register_address, uint8_t data){
							 | 
						||
| 
								 | 
							
								  return bus->set_register(get_device_address(), register_address, data);
							 | 
						||
| 
								 | 
							
								}
							 |