Modified for compatibility with Rev.E. hardware

Fork of AkmSensor by AKM Development Platform

Revision:
31:8635be9b2e35
Parent:
26:4e436b0cbaf8
Child:
32:42c6b8fb1922
--- a/ap1017ctrl.cpp	Mon Apr 17 22:58:39 2017 +0000
+++ b/ap1017ctrl.cpp	Tue Apr 18 23:05:59 2017 +0000
@@ -41,14 +41,14 @@
 
 AkmSensor::Status Ap1017Ctrl::startSensor()
 {
-    ticker.attach(callback(this, &Ap1017Ctrl::eventCallback), interval);
+    ticker.attach(callback(this, &Ap1017Ctrl::timerCallback), interval);
     return AkmSensor::SUCCESS;
 }
 
 AkmSensor::Status Ap1017Ctrl::startSensor(const float sec)
 {
     interval = sec;
-    ticker.attach(callback(this, &Ap1017Ctrl::eventCallback), interval);
+    ticker.attach(callback(this, &Ap1017Ctrl::timerCallback), interval);
     return AkmSensor::SUCCESS;
 }
 
@@ -64,10 +64,62 @@
 
 AkmSensor::Status Ap1017Ctrl::requestCommand(Message* in, Message* out)
 {
-    return AkmSensor::SUCCESS;    
+    AkmSensor::Status status = AkmSensor::SUCCESS;
+    
+    Message::Command cmd = in->getCommand();        // Store command
+    out->setCommand(cmd);                           // Load command into output
+    
+    switch(cmd)
+    {
+        case Message::CMD_MOTOR_START_MOTOR:
+        {
+            if(ap1017->startMotor() != AP1017::SUCCESS)
+            {
+                MSG("#AP1017: Failed to start motor.\r\n");
+                return AkmSensor::ERROR;
+            }
+            break;
+        }
+        case Message::CMD_MOTOR_STOP_MOTOR:
+        {
+            if(ap1017->stopMotor() != AP1017::SUCCESS)
+            {
+                MSG("#AP1017: Failed to stop motor.\r\n");
+            }
+            break;
+        }
+        case Message::CMD_MOTOR_SET_DIRECTION:
+        {
+            if(ap1017->setDirection(in->getArgument(0)) != AP1017::SUCCESS)
+            {
+                MSG("#AP1017: Failed to set motor direction.\r\n");
+            }
+            break;
+        }
+        case Message::CMD_MOTOR_SET_DUTY_CYCLE:
+        {
+            if(ap1017->setDutyCycle(in->getArgument(0)) != AP1017::SUCCESS)
+            {
+                MSG("#AP1017: Failed to set the duty cycle.\r\n");
+            }
+            break;
+        }
+        default:
+        {
+            MSG("AP1017: Invalid or unimplemented command.\r\n");
+            status = AkmSensor::ERROR;
+        }
+    }
+        
+    return status;
 }
 
 char* Ap1017Ctrl::getSensorName()
 {
     return sensorName;
+}
+
+void Ap1017Ctrl::timerCallback()
+{
+    // Timer interrupt handling    
 }
\ No newline at end of file