BM220: Add string parser for upm parameters

Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
This commit is contained in:
Adelin Dobre 2018-07-16 15:11:17 +03:00 committed by Stefan Andritoiu
parent d3198ef0ca
commit 19dd909439
2 changed files with 40 additions and 19 deletions

View File

@ -87,15 +87,52 @@ BMA220::BMA220(std::string initStr) : mraaIo(new mraa::MraaIo(initStr))
": mraa_i2c_init() failed"); ": mraa_i2c_init() failed");
} }
// Init the accelerometer //Init the accelerometer
enableAxes(true, true, true); enableAxes(true, true, true);
// set scaling rate //set scaling rate
if (!setAccelerometerScale(FSL_RANGE_2G)) if (!setAccelerometerScale(FSL_RANGE_2G))
{ {
throw std::runtime_error(string(__FUNCTION__) + throw std::runtime_error(string(__FUNCTION__) +
": Unable to set accel scale"); ": Unable to set accel scale");
return; }
std::vector<std::string> upmTokens;
if(!mraaIo->getLeftoverStr().empty()) {
upmTokens = UpmStringParser::parse(mraaIo->getLeftoverStr());
}
std::string::size_type sz;
for(std::string tok :upmTokens)
{
if(tok.substr(0,9) == "writeReg:") {
uint8_t reg = std::stoi(tok.substr(9),&sz,0);
tok = tok.substr(9);
uint8_t val = std::stoi(tok.substr(sz+1),nullptr,0);
writeReg(reg, val);
}
if(tok.substr(0,22) == "setAccelerometerScale:") {
FSL_RANGE_T scale = (FSL_RANGE_T)std::stoi(tok.substr(22),nullptr,0);
setAccelerometerScale(scale);
}
if(tok.substr(0,16) == "setFilterConfig:") {
FILTER_CONFIG_T filter = (FILTER_CONFIG_T)std::stoi(tok.substr(16),nullptr,0);
setFilterConfig(filter);
}
if(tok.substr(0,16) == "setSerialHighBW:") {
bool high = std::stoi(tok.substr(16),nullptr,0);
setSerialHighBW(high);
}
if(tok.substr(0,16) == "setFilterConfig:") {
FILTER_CONFIG_T filter = (FILTER_CONFIG_T)std::stoi(tok.substr(16),nullptr,0);
setFilterConfig(filter);
}
if(tok.substr(0,16) == "setFilterConfig:") {
FILTER_CONFIG_T filter = (FILTER_CONFIG_T)std::stoi(tok.substr(16),nullptr,0);
setFilterConfig(filter);
}
} }
} }

View File

@ -179,22 +179,6 @@ namespace upm {
/** /**
* REG_TAP_CONFIG bits * REG_TAP_CONFIG bits
*/ */
typedef enum {
TAP_CONFIG_DUR0 = 0x01,
TAP_CONFIG_DUR1 = 0x02,
TAP_CONFIG_DUR2 = 0x04,
_TAP_CONFIG_DUR_MASK = 7,
_TAP_CONFIG_DUR_SHIFT = 0,
TAP_CONFIG_THRESH0 = 0x08,
TAP_CONFIG_THRESH1 = 0x10,
TAP_CONFIG_THRESH2 = 0x20,
TAP_CONFIG_THRESH3 = 0x40,
_TAP_CONFIG_THRESH_MASK = 15,
_TAP_CONFIG_THRESH_SHIFT = 3,
TAP_CONFIG_FILTER = 0x80
} TAP_CONFIG_BITS_T;
/** /**
* REG_SLOPE_CONFIG bits * REG_SLOPE_CONFIG bits