Modified for compatibility with Rev.E. hardware
Fork of AkmSensor by
Diff: ap1017ctrl.cpp
- 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