53 lines
1.4 KiB
C++
53 lines
1.4 KiB
C++
#include "mgmLis3Helpers.h"
|
|
|
|
uint8_t mgmLis3::readCommand(uint8_t command, bool continuousCom) {
|
|
command |= (1 << mgmLis3::RW_BIT);
|
|
if (continuousCom == true) {
|
|
command |= (1 << mgmLis3::MS_BIT);
|
|
}
|
|
return command;
|
|
}
|
|
|
|
uint8_t mgmLis3::writeCommand(uint8_t command, bool continuousCom) {
|
|
command &= ~(1 << mgmLis3::RW_BIT);
|
|
if (continuousCom == true) {
|
|
command |= (1 << mgmLis3::MS_BIT);
|
|
}
|
|
return command;
|
|
}
|
|
|
|
mgmLis3::Sensitivies mgmLis3::getSensitivity(uint8_t ctrlRegister2) {
|
|
bool fs0Set = ctrlRegister2 & (1 << mgmLis3::FSO); // Checks if FS0 bit is set
|
|
bool fs1Set = ctrlRegister2 & (1 << mgmLis3::FS1); // Checks if FS1 bit is set
|
|
|
|
if (fs0Set && fs1Set)
|
|
return mgmLis3::Sensitivies::GAUSS_16;
|
|
else if (!fs0Set && fs1Set)
|
|
return mgmLis3::Sensitivies::GAUSS_12;
|
|
else if (fs0Set && !fs1Set)
|
|
return mgmLis3::Sensitivies::GAUSS_8;
|
|
else
|
|
return mgmLis3::Sensitivies::GAUSS_4;
|
|
}
|
|
|
|
float mgmLis3::getSensitivityFactor(mgmLis3::Sensitivies sens) {
|
|
switch (sens) {
|
|
case (mgmLis3::GAUSS_4): {
|
|
return mgmLis3::FIELD_LSB_PER_GAUSS_4_SENS;
|
|
}
|
|
case (mgmLis3::GAUSS_8): {
|
|
return mgmLis3::FIELD_LSB_PER_GAUSS_8_SENS;
|
|
}
|
|
case (mgmLis3::GAUSS_12): {
|
|
return mgmLis3::FIELD_LSB_PER_GAUSS_12_SENS;
|
|
}
|
|
case (mgmLis3::GAUSS_16): {
|
|
return mgmLis3::FIELD_LSB_PER_GAUSS_16_SENS;
|
|
}
|
|
default: {
|
|
// Should never happen
|
|
return mgmLis3::FIELD_LSB_PER_GAUSS_4_SENS;
|
|
}
|
|
}
|
|
}
|