Modified for compatibility with Rev.E. hardware

Fork of AkmSensor by AKM Development Platform

Revision:
32:42c6b8fb1922
Parent:
31:8635be9b2e35
Child:
33:d3e1e9eb2ef9
--- a/ap1017ctrl.cpp	Tue Apr 18 23:05:59 2017 +0000
+++ b/ap1017ctrl.cpp	Wed Apr 19 23:14:04 2017 +0000
@@ -7,6 +7,7 @@
     event = false;
     ticker = NULL;
     sensorName = "";
+    interval = 0;
 }
 
 Ap1017Ctrl::~Ap1017Ctrl()
@@ -19,17 +20,20 @@
 {
     primaryId = id;
     subId = subid;
+    interval = 1;                   // Set timer interrupt interval to 1s
 
     switch (subId) {                // template for multiple drivers
         case SUB_ID_AP1017:
-            ap1017 = new AP1017();
+            ap1017 = new AP1017();  // Instantiate AP1017
             sensorName = "AP1017";
             break;
         default:
             return AkmSensor::ERROR;
     }
     
-    // TODO: Initialize ap1017
+    // Default settings
+    ap1017->setDirection(AP1017::DIRECTION_CW);
+    ap1017->setSpeed(50.0);                         
 
     return AkmSensor::SUCCESS;
 }
@@ -47,18 +51,25 @@
 
 AkmSensor::Status Ap1017Ctrl::startSensor(const float sec)
 {
+    // Initialize timer interrupt
     interval = sec;
     ticker.attach(callback(this, &Ap1017Ctrl::timerCallback), interval);
+    
+    ap1017->start();        // Start motor
+    
     return AkmSensor::SUCCESS;
 }
 
 AkmSensor::Status Ap1017Ctrl::stopSensor()
 {
+    ap1017->stop();         // Stop motor
+    
     return AkmSensor::SUCCESS;
 }
 
 AkmSensor::Status Ap1017Ctrl::readSensorData(Message* msg)
 {
+    // No sensors to read data from
     return AkmSensor::SUCCESS;    
 }
 
@@ -73,7 +84,7 @@
     {
         case Message::CMD_MOTOR_START_MOTOR:
         {
-            if(ap1017->startMotor() != AP1017::SUCCESS)
+            if(ap1017->start() != AP1017::SUCCESS)
             {
                 MSG("#AP1017: Failed to start motor.\r\n");
                 return AkmSensor::ERROR;
@@ -82,7 +93,7 @@
         }
         case Message::CMD_MOTOR_STOP_MOTOR:
         {
-            if(ap1017->stopMotor() != AP1017::SUCCESS)
+            if(ap1017->stop() != AP1017::SUCCESS)
             {
                 MSG("#AP1017: Failed to stop motor.\r\n");
             }
@@ -90,7 +101,7 @@
         }
         case Message::CMD_MOTOR_SET_DIRECTION:
         {
-            if(ap1017->setDirection(in->getArgument(0)) != AP1017::SUCCESS)
+            if(ap1017->setDirection((AP1017::Rotation)(in->getArgument(0))) != AP1017::SUCCESS)
             {
                 MSG("#AP1017: Failed to set motor direction.\r\n");
             }
@@ -98,7 +109,7 @@
         }
         case Message::CMD_MOTOR_SET_DUTY_CYCLE:
         {
-            if(ap1017->setDutyCycle(in->getArgument(0)) != AP1017::SUCCESS)
+            if(ap1017->setSpeed((AP1017::Rotation)(in->getArgument(0))) != AP1017::SUCCESS)
             {
                 MSG("#AP1017: Failed to set the duty cycle.\r\n");
             }
@@ -121,5 +132,6 @@
 
 void Ap1017Ctrl::timerCallback()
 {
-    // Timer interrupt handling    
+    ap1017->setDirection(ap1017->getDirection());
+    ap1017->setSpeed(ap1017->getSpeed());
 }
\ No newline at end of file