Modified for compatibility with Rev.E. hardware

Fork of AkmSensor by AKM Development Platform

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;
         }