#include "compass.h"
#include "error.h"
#include <windows.h>
Compass::Compass(Sensor_port port, Connection* connection, unsigned int wait_time, unsigned char i2c_address):I2c(port, connection, LOWSPEED, i2c_address, wait_time){}
Compass::~Compass(){}
void Compass::init(bool reply){
I2c::init(reply);
Sleep(500);
read();
read();
this->has_init=true;
}
int Compass::read(){
if(!this->has_init){
init();
}
unsigned char rx_buffer[I2C_BUFFER_SIZE];
unsigned char command[2];
command[0]= COMPASS_ADDRESS;
command[1]= DEGREE;
i2c_write(&command[0], 2, 2);
wait_for_bytes(2);
i2c_read(&rx_buffer[0], 2);
return (0xff & rx_buffer[1])*2 + rx_buffer[2];
}
Sensor_type Compass::get_type(){
return COMPASS;
}
std::string Compass::print(){
std::stringstream out;
out << read() << " degrees";
return out.str();
}