Taylor Street / AkmSensor

Fork of AkmSensor by AKM Development Platform

Revision:
9:6fa3e7b17c27
Parent:
7:e269411568c9
--- a/akmirsensor.cpp	Sat Jun 11 00:16:17 2016 +0000
+++ b/akmirsensor.cpp	Thu Jun 16 18:36:26 2016 +0000
@@ -286,8 +286,8 @@
         }
         case Message::CMD_IR_GET_OPERATION_MODE:
         {
-            AK9750::OperationMode mode;
-            AK9750::DigitalFilter filter;
+//            AK9750::OperationMode mode;
+//            AK9750::DigitalFilter filter;
             if(ak9750->getOperationMode(&mode, &filter) != AK9750::SUCCESS) {
                 status =  AkmSensor::ERROR;
                 MSG("#Error setOperationMode. AK9750.\n");
@@ -298,9 +298,9 @@
         }
         case Message::CMD_IR_SET_OPERATION_MODE:
         {
-            char mode = in->getArgument(0);
-            char filter = in->getArgument(1);
-            if(ak9750->setOperationMode((AK9750::OperationMode)mode, (AK9750::DigitalFilter)filter) != AK9750::SUCCESS) {
+            mode = (AK9750::OperationMode)in->getArgument(0);
+            filter = (AK9750::DigitalFilter)in->getArgument(1);
+            if(ak9750->setOperationMode(mode, filter) != AK9750::SUCCESS) {
                 status =  AkmSensor::ERROR;
                 MSG("#Error setOperationMode. AK9750.\n");
             }
@@ -386,8 +386,8 @@
         }
         case Message::CMD_IR_GET_OPERATION_MODE_EEPROM:
         {
-            AK9750::OperationMode mode;
-            AK9750::DigitalFilter filter;
+//            AK9750::OperationMode mode;
+//            AK9750::DigitalFilter filter;
             if(ak9750->getOperationModeFromEEPROM(&mode, &filter) != AK9750::SUCCESS) {
                 status =  AkmSensor::ERROR;
                 MSG("#Error getOperationMode. AK9750(EEPROM).\n");
@@ -398,15 +398,68 @@
         }
         case Message::CMD_IR_SET_OPERATION_MODE_EEPROM:
         {
-            char mode = in->getArgument(0);
-            char filter = in->getArgument(1);
-            if(ak9750->setOperationModeToEEPROM((AK9750::OperationMode)mode, (AK9750::DigitalFilter)filter) != AK9750::SUCCESS) {
+            mode = (AK9750::OperationMode)in->getArgument(0);
+            filter = (AK9750::DigitalFilter)in->getArgument(1);
+            if(ak9750->setOperationModeToEEPROM(mode, filter) != AK9750::SUCCESS) {
                 status =  AkmSensor::ERROR;
                 MSG("#Error setOperationMode. AK9750(EEPROM).\n");
             }
             out->setArgument(0,(char)status);
             break;
         }
+        case Message::CMD_REG_WRITE:
+        {
+            char address = in->getArgument(0);
+            int len = (int)in->getArgument(1);
+            const char data = in->getArgument(2);
+            if( ak9750->write(address, &data, len) != AK9750::SUCCESS) {
+                status =  AkmSensor::ERROR;
+                MSG("#Error register write.\n");
+            }
+            out->setArgument(0,(char)status);
+            break;
+        }        
+        case Message::CMD_REG_WRITEN:
+        {
+            char address = in->getArgument(0);
+            int len = (int)in->getArgument(1);
+            char data[len];
+            for(int i=0; i<len; i++){
+                data[i] = in->getArgument(i);    
+            }
+            if( ak9750->write(address, data, len) != AK9750::SUCCESS) {
+                status =  AkmSensor::ERROR;
+                MSG("#Error register write.\n");
+            }
+            out->setArgument(0,(char)status);
+            break;
+        }        
+        case Message::CMD_REG_READ:
+        {
+            char address = in->getArgument(0);
+            int len = (int)in->getArgument(1);
+            char data;
+            if( ak9750->read(address, &data, len) != AK9750::SUCCESS) {
+                status =  AkmSensor::ERROR;
+                MSG("#Error register read.\n");
+            }
+            out->setArgument(0,data);
+            break;
+        }
+        case Message::CMD_REG_READN:
+        {
+            char address = in->getArgument(0);
+            int len = (int)in->getArgument(1);
+            char data[len];
+            if( ak9750->read(address, data, len) != AK9750::SUCCESS) {
+                status =  AkmSensor::ERROR;
+                MSG("#Error register read.\n");
+            }
+            for(int i=0; i<len; i++){
+                out->setArgument(i, data[i]);
+            }
+            break;
+        }
         default:
         {
             MSG("#Error no command.\n");