Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Revision:
162:5e8948b8044d
Parent:
151:9d47fe5ba805
Child:
169:c503848823aa
Child:
173:acfb464a4aec
--- a/src/ModbusMaster/ModbusMaster.cpp	Fri Sep 30 14:32:26 2016 +0000
+++ b/src/ModbusMaster/ModbusMaster.cpp	Fri Sep 30 20:10:50 2016 +0000
@@ -53,7 +53,7 @@
                 }
 
                 parse( json_value, ModbusMasterScratchBuf );
-                
+
                 std::string id = json_value["id"].get<std::string>().c_str();
                 VirtualCommandMap[id].constant = atof(json_value["constant"].get<std::string>().c_str());
                 VirtualCommandMap[id].opl = json_value["opl"].get<std::string>().c_str();
@@ -107,7 +107,7 @@
                 }
             }
         }
-        
+
         osSignalSet(mainThreadId, sig_output_continue);
 
         // read modbus registers that have been configured.
@@ -211,7 +211,30 @@
                                );
                         break;
                     case '*':
+                        ModbusRegisterMap[iter->first].float_value =
+                            ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opl].float_value *
+                            ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opr].float_value;
+                        logInfo("Setting tag=%s, equal to (%2.2f*%2.2f) = %2.2f", iter->first.c_str(),
+                                VirtualCommandMap[iter->second.vcmd].opl.c_str(),
+                                ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opl].float_value,
+                                ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opr].float_value,
+                                ModbusRegisterMap[iter->first].float_value
+                               );
                     case '/':
+                        if( ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opr].float_value != 0 ) {
+                            ModbusRegisterMap[iter->first].float_value =
+                                ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opl].float_value /
+                                ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opr].float_value;
+                            logInfo("Setting tag=%s, equal to (%2.2f/%2.2f) = %2.2f", iter->first.c_str(),
+                                    VirtualCommandMap[iter->second.vcmd].opl.c_str(),
+                                    ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opl].float_value,
+                                    ModbusRegisterMap[VirtualCommandMap[iter->second.vcmd].opr].float_value,
+                                    ModbusRegisterMap[iter->first].float_value
+                                   );
+                        } else {
+                            logInfo("NOT DOING DIVIDE BY ZERO");
+                        }
+                        break;
                     case '+':
                     case '-':
                     default: