Modified for compatibility with Rev.E. hardware

Fork of AkmSensor by AKM Development Platform

Revision:
45:6af8fdde0ef3
Parent:
44:0e251c736282
Child:
49:c8f8946129b6
--- a/akmanalogsensor.cpp	Wed Nov 08 23:34:15 2017 +0000
+++ b/akmanalogsensor.cpp	Tue Dec 05 23:27:20 2017 +0000
@@ -21,6 +21,7 @@
 }
 
 AkmSensor::Status AkmAnalogSensor::init(const uint8_t id, const uint8_t subid){
+    VERBOSE("#AkmAnalogSensor init()\r\n");
     primaryId = id;
     subId = subid;
     
@@ -54,19 +55,22 @@
     else return AkmSensor::ERROR;
 
     MCP342X::AdcChannel channel = MCP342X::ADC_CH3;    // 0-5.0V out as default
-    if( (primaryId == AKM_PRIMARY_ID_MISC_ANALOG) && (subId < 0x08) || primaryId == AKM_PRIMARY_ID_CURRENT_SENSOR_3V){
+    if( ((primaryId == AKM_PRIMARY_ID_MISC_ANALOG) && (subId <= AKM_PRIMARY_ID_CURRENT_SENSOR_3V))
+       || primaryId == AKM_PRIMARY_ID_CURRENT_SENSOR_3V){
         channel = MCP342X::ADC_CH4;    // 0-3.0V out
     }
     
     // 16bit ADC
     I2C* i2c = new I2C(I2C_SDA,I2C_SCL);
     i2c->frequency(I2C_SPEED);
+    VERBOSE("#AkmAnalogSensor::init: I2C created at %d Hz\r\n", I2C_SPEED);
     
     // ADC setting
     mcp3428 = new MCP342X(i2c, MCP342X::SLAVE_ADDRESS_6EH);
     mcp3428->setChannel(channel);
     mcp3428->setSampleSetting(MCP342X::SAMPLE_15HZ_16BIT);
     mcp3428->setConversionMode(MCP342X::CONTINUOUS); 
+    VERBOSE("#AkmAnalogSensor::init: MPC342X ADC created\r\n");
     
     interval = SENSOR_SAMPLING_RATE; // 10Hz
 
@@ -75,13 +79,14 @@
 
 AkmSensor::Status AkmAnalogSensor::startSensor(){
     ticker.attach(callback(this, &AkmSensor::setEvent), interval);
-    MSG("#Start sensor %s.\r\n",sensorName);
+    MSG("#Start sensor: %s.\r\n",sensorName);
     return AkmSensor::SUCCESS;
 }
 
 AkmSensor::Status AkmAnalogSensor::startSensor(const float sec){
     interval = sec;
-    AkmAnalogSensor::startSensor();
+    ticker.attach(callback(this, &AkmSensor::setEvent), interval);
+    MSG("#Start sensor %s. Interval = %.2f\r\n", sensorName, interval);
     return AkmSensor::SUCCESS;
 }
 
@@ -92,6 +97,7 @@
 }
 
 AkmSensor::Status AkmAnalogSensor::readSensorData(Message* msg){
+    VERBOSE("#AkmAnalogSensor: Reading sensor data\r\n");
     AkmSensor::clearEvent();
     
     msg->setCommand(Message::CMD_START_MEASUREMENT);
@@ -102,6 +108,7 @@
             primaryId == AKM_PRIMARY_ID_CURRENT_SENSOR_5V ){
         MCP342X::Data data;
         do {
+            VERBOSE("#Waiting..\r\n");
             mcp3428->getData(&data);
             wait_ms(WAIT_ADC_MS);
         } while(data.st == MCP342X::DATA_NOT_UPDATED);
@@ -111,11 +118,13 @@
     }else{
         msg->setArgument( 0, 0);
         msg->setArgument( 1, 0);
+        MSG("readSensorData Error\r\n");
         return AkmSensor::ERROR;
     }
     return AkmSensor::SUCCESS;
 }
 
 AkmSensor::Status AkmAnalogSensor::requestCommand(Message* in, Message* out){
+    VERBOSE("#AkmAnalogSensor: requestCommand error\r\n");
     return AkmSensor::ERROR;
 }