Modified for compatibility with Rev.E. hardware
Fork of AkmSensor by
Diff: akmakd.cpp
- Revision:
- 39:3821886c902e
- Parent:
- 38:e865dadfe54d
- Child:
- 40:42e48427e4b7
diff -r e865dadfe54d -r 3821886c902e akmakd.cpp --- a/akmakd.cpp Thu Jun 08 19:09:18 2017 +0000 +++ b/akmakd.cpp Tue Jul 18 23:20:26 2017 +0000 @@ -9,7 +9,6 @@ */ AkmAkd::AkmAkd() : AkmSensor(){ compass = NULL; -// drdy = NULL; } /** @@ -17,9 +16,7 @@ * */ AkmAkd::~AkmAkd(){ -// drdy->rise(0); if (compass) delete compass; -// if (drdy) delete drdy; } AkmSensor::Status AkmAkd::checkSensor( const uint8_t primaryid, const uint8_t subid, AkmECompass::DeviceId* devid){ @@ -110,9 +107,6 @@ if(primaryId == AKM_PRIMARY_ID_AKD_I2C){ -// drdy = new InterruptIn(I2C_DRDY); -// drdy->rise(0); - I2C* i2c = new I2C(I2C_SDA,I2C_SCL); i2c->frequency(I2C_SPEED_100KHZ); @@ -137,9 +131,6 @@ } }else if(primaryId == AKM_PRIMARY_ID_AKD_SPI){ -// drdy = new InterruptIn(SPI_DRDY); -// drdy->rise(0); - SPI* spi = new SPI(SPI_MOSI, SPI_MISO, SPI_SCK); spi->format(8,3); // 8bit, Mode=3 spi->frequency(1000000); @@ -195,17 +186,8 @@ compass->getMagneticVector(&mag); AkmAkd::InterruptMode int_mode = getInterrupt(primaryId,subId); - // enable interrupt - if( int_mode == AkmAkd::INTERRUPT_ENABLED_PP ){ - // Push-Pull DRDY -// drdy->rise(callback(this, &AkmAkd::detectDRDY)); - } - else if( int_mode == AkmAkd::INTERRUPT_ENABLED_OD ){ - // Open Drain DRDY -// drdy->fall(callback(this, &AkmAkd::detectDRDY)); - } - else{ - // No DRDY + if( int_mode == AkmAkd::INTERRUPT_DISABLED ){ + // No DRDY, attach timer and start ticker.attach(callback(this, &AkmAkd::setEvent), 1.0/AKDP_POLLING_FREQUENCY); } @@ -214,19 +196,19 @@ subId == AkmAkd::SUB_ID_AK09915D || subId == AkmAkd::SUB_ID_AK09917 ){ if(compass->setOperationMode(mode,nsf,sdr) != AkmECompass::SUCCESS) { - MSG("#Start sensor failed %s\r\n", sensorName); + MSG("#Error: Start sensor failed %s\r\n", sensorName); return AkmSensor::ERROR; } } else if( subId == AkmAkd::SUB_ID_AK09912C ){ if(compass->setOperationMode(mode,nsf) != AkmECompass::SUCCESS) { - MSG("#Start sensor failed %s\r\n", sensorName); + MSG("#Error: Start sensor failed %s\r\n", sensorName); return AkmSensor::ERROR; } } else{ if(compass->setOperationMode(mode) != AkmECompass::SUCCESS) { - MSG("#Start sensor failed %s\r\n", sensorName); + MSG("#Error: Start sensor failed %s\r\n", sensorName); return AkmSensor::ERROR; } } @@ -243,19 +225,6 @@ ticker.detach(); AkmSensor::clearEvent(); - AkmAkd::InterruptMode int_mode = getInterrupt(primaryId,subId); - if( int_mode == AkmAkd::INTERRUPT_ENABLED_PP ){ - // Push-Pull DRDY -// drdy->rise(NULL); - } - else if( int_mode == AkmAkd::INTERRUPT_ENABLED_OD ){ - // Open Drain DRDY -// drdy->fall(NULL); - } - else{ - // No DRDY - } - // Puts the device into power down mode. if( subId == AkmAkd::SUB_ID_AK09915C || subId == AkmAkd::SUB_ID_AK09915D || @@ -308,7 +277,7 @@ subId == AkmAkd::SUB_ID_AK09917 ){ if(compass->getOperationMode(&mode, &nsf, &sdr) != AkmECompass::SUCCESS) { status = AkmSensor::ERROR; - MSG("#Error set operation mode.\r\n"); + MSG("#Error: set operation mode.\r\n"); }else{ out->setArgument(0,mode); out->setArgument(1,nsf); @@ -318,7 +287,7 @@ }else if(subId == AkmAkd::SUB_ID_AK09912C){ if(compass->getOperationMode(&mode, &nsf) != AkmECompass::SUCCESS) { status = AkmSensor::ERROR; - MSG("#Error set operation mode.\r\n"); + MSG("#Error: set operation mode.\r\n"); }else{ out->setArgument(0,mode); out->setArgument(1,nsf); @@ -326,7 +295,7 @@ }else{ if(compass->getOperationMode(&mode) != AkmECompass::SUCCESS) { status = AkmSensor::ERROR; - MSG("#Error set operation mode.\r\n"); + MSG("#Error: set operation mode.\r\n"); }else{ out->setArgument(0,mode); } @@ -344,20 +313,20 @@ sdr = (AkmECompass::Sdr)in->getArgument(2); if(compass->setOperationMode(mode,nsf,sdr) != AkmECompass::SUCCESS) { status = AkmSensor::ERROR; - MSG("#Error set operation mode.\r\n"); + MSG("#Error: set operation mode.\r\n"); } } else if(subId == AkmAkd::SUB_ID_AK09912C){ nsf = (AkmECompass::Nsf)in->getArgument(1); if(compass->setOperationMode(mode,(AkmECompass::Nsf)nsf) != AkmECompass::SUCCESS) { status = AkmSensor::ERROR; - MSG("#Error set operation mode.\r\n"); + MSG("#Error: set operation mode.\r\n"); } } else{ if(compass->setOperationMode(mode) != AkmECompass::SUCCESS) { status = AkmSensor::ERROR; - MSG("#Error set operation mode.\r\n"); + MSG("#Error: set operation mode.\r\n"); } } out->setArgument(0,(char)status); @@ -369,7 +338,7 @@ char address = in->getArgument(0); int len = (int)in->getArgument(1); if(in->getArgNum() != len+2){ - MSG("#Error argument num. Args=%d\r\n",in->getArgNum()); + MSG("#Error: argument num. Args=%d\r\n",in->getArgNum()); status = AkmSensor::ERROR; out->setArgument(0,(char)status); return status; @@ -381,7 +350,7 @@ } if( compass->write(address, data, len) != AkmECompass::SUCCESS) { status = AkmSensor::ERROR; - MSG("#Error register write.\r\n"); + MSG("#Error: register write.\r\n"); } out->setArgument(0,(char)status); break; @@ -390,7 +359,7 @@ case Message::CMD_REG_READN: { if(in->getArgNum() != 2){ - MSG("#Error argument num. Args=%d\r\n",in->getArgNum()); + MSG("#Error: argument num. Args=%d\r\n",in->getArgNum()); status = AkmSensor::ERROR; return status; } @@ -400,7 +369,7 @@ char data[len]; if( compass->read(address, data, len) != AkmECompass::SUCCESS) { status = AkmSensor::ERROR; - MSG("#Error register read.\r\n"); + MSG("#Error: register read.\r\n"); } for(int i=0; i<len; i++){ out->setArgument(i, data[i]); @@ -409,7 +378,7 @@ } default: { - MSG("#Error no command.\r\n"); + MSG("#Error: no command.\r\n"); status = AkmSensor::ERROR; break; }