From 71cb3606ee66496597e64733d8d06a593a39ed88 Mon Sep 17 00:00:00 2001 From: Adelin Dobre Date: Mon, 16 Jul 2018 15:11:17 +0300 Subject: [PATCH] BM220: Add string parser for upm parameters Signed-off-by: Adelin Dobre Signed-off-by: Mihai Tudor Panu --- src/bma220/bma220.cxx | 43 ++++++++++++++++++++++++++++++++++++++++--- src/bma220/bma220.hpp | 16 ---------------- 2 files changed, 40 insertions(+), 19 deletions(-) diff --git a/src/bma220/bma220.cxx b/src/bma220/bma220.cxx index 7b9379dc..47e827ba 100644 --- a/src/bma220/bma220.cxx +++ b/src/bma220/bma220.cxx @@ -87,15 +87,52 @@ BMA220::BMA220(std::string initStr) : mraaIo(new mraa::MraaIo(initStr)) ": mraa_i2c_init() failed"); } - // Init the accelerometer + //Init the accelerometer enableAxes(true, true, true); - // set scaling rate + //set scaling rate if (!setAccelerometerScale(FSL_RANGE_2G)) { throw std::runtime_error(string(__FUNCTION__) + ": Unable to set accel scale"); - return; + } + + std::vector 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); + } } } diff --git a/src/bma220/bma220.hpp b/src/bma220/bma220.hpp index a90de98d..34f793a5 100644 --- a/src/bma220/bma220.hpp +++ b/src/bma220/bma220.hpp @@ -181,22 +181,6 @@ namespace upm { /** * 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