Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Revision:
15:a6ee32969e8e
Parent:
9:ef0ca2f8a8a6
Child:
23:03bf3d549002
--- a/src/ModbusMaster/ModbusMaster.cpp	Wed Sep 07 14:51:00 2016 +0000
+++ b/src/ModbusMaster/ModbusMaster.cpp	Wed Sep 07 18:26:56 2016 +0000
@@ -22,6 +22,7 @@
 {
     printf("\r%s has started...\n", __func__);
     char scratch_buf[1024];
+    bool status;
     MbedJSONValue json_value;
 
     // configure modbus registers based in all files that start with "input"
@@ -49,8 +50,9 @@
             ModbusRegisterMap[id].reg = json_value["reg"].get<int>();
             ModbusRegisterMap[id].rtype = json_value["rtype"].get<int>();
             ModbusRegisterMap[id].type = json_value["type"].get<int>();
+            ModbusRegisterMap[id].size = json_value["size"].get<int>();
+            ModbusRegisterMap[id].order = json_value["order"].get<int>();
             ModbusRegisterMap[id].fmt = json_value["fmt"].get<std::string>().c_str();
-
         }
     }
 
@@ -59,7 +61,30 @@
 
         std::map<std::string, ModbusRegister>::iterator iter;
         for (iter = ModbusRegisterMap.begin(); iter != ModbusRegisterMap.end(); ++iter) {
-//            SendModbusCommand(iter->first.node,(uint16_t)iter->first.reg,13);
+            printf("\rReading node=%d, reg=%d, size=%d, order=%d\n", iter->second.node, iter->second.reg, iter->second.size, iter->second.order );
+            SendModbusCommand(iter->second.node, iter->second.reg, iter->second.size);
+            osDelay(30);
+
+            switch( iter->second.type ) {
+                case TYPE_32BIT_FLOAT:
+                    float float_value;
+                    status = ReadModbus_32bit_float( &float_value, iter->second.order );
+                    if( status == true )
+                    {
+                        ModbusRegisterMap[iter->first].float_value = float_value;
+                    }
+                    break;
+                case TYPE_32BIT_INT:
+                    break;
+                case TYPE_32BIT_UINT:
+                    break;
+                case TYPE_16BIT_INT:
+                    break;
+                case TYPE_16BIT_UINT:
+                    break;
+                default:
+                    break;
+            }
         }
     }
 }
@@ -157,159 +182,30 @@
     }
 }
 
-bool mbFluGetData( MB_FLU_VALUES *flu_values )
+bool ReadModbus_32bit_float( float *float_value, int order )
 {
-    MR_REGISTER_FLOAT trasar;
-    MR_REGISTER_FLOAT tag;
-    MR_REGISTER_FLOAT rz;
-    MR_REGISTER_FLOAT rs;
-    MR_REGISTER_FLOAT tra_back;
-    MR_REGISTER_FLOAT turb;
-    MR_REGISTER_WORD cf;
-//    MR_REGISTER_WORD crc;
-
+    MR_REGISTER_32_BIT_FLOAT value;
+    
     if (mbInterruptComplete() != true ) {
         return false;
     }
 
-//    printf("Address: %d, Function: %d, No Regs: %d, \r\n",modbus_input_buffer[0],modbus_input_buffer[1],modbus_input_buffer[2]/2);
-//
-//    printf("Data: %x%x,%x%x,%x%x,%x%x,%x%x,%x%x,\r\n%x%x,%x%x,%x%x,%x%x,%x%x,%x%x,\r\n%x%x\r\n",
-//            modbus_input_buffer[3],modbus_input_buffer[4], modbus_input_buffer[5],modbus_input_buffer[6],       // Trasar
-//            modbus_input_buffer[7],modbus_input_buffer[8], modbus_input_buffer[9],modbus_input_buffer[10],      // Tag
-//            modbus_input_buffer[11],modbus_input_buffer[12], modbus_input_buffer[13],modbus_input_buffer[14],   // Rz
-//            modbus_input_buffer[15],modbus_input_buffer[16], modbus_input_buffer[17],modbus_input_buffer[18],   // Rs
-//            modbus_input_buffer[19],modbus_input_buffer[20], modbus_input_buffer[21],modbus_input_buffer[22],   // TraBack
-//            modbus_input_buffer[23],modbus_input_buffer[24], modbus_input_buffer[25],modbus_input_buffer[26],   // TraBack
-//            modbus_input_buffer[27],modbus_input_buffer[28]);                                                   // Cf
-//    printf("CRC: %x%x\r\n",modbus_input_buffer[29], modbus_input_buffer[30]);
-
-    trasar.b.lo_lo = modbus_input_buffer[4];
-    trasar.b.lo_hi = modbus_input_buffer[3];
-    trasar.b.hi_lo = modbus_input_buffer[6];
-    trasar.b.hi_hi = modbus_input_buffer[5];
-//    printf("Trasar=%2.2f, 0x%x, 0x%x\r\n",trasar.f, trasar.w.lo, trasar.w.hi);
-    flu_values->trasar = trasar.f;
-
-    tag.b.lo_lo = modbus_input_buffer[8];
-    tag.b.lo_hi = modbus_input_buffer[7];
-    tag.b.hi_lo = modbus_input_buffer[10];
-    tag.b.hi_hi = modbus_input_buffer[9];
-//    printf("tag=%2.2f, 0x%x, 0x%x\r\n",tag.f, tag.w.lo, tag.w.hi);
-    flu_values->tag = tag.f;
-
-    rz.b.lo_lo = modbus_input_buffer[12];
-    rz.b.lo_hi = modbus_input_buffer[11];
-    rz.b.hi_lo = modbus_input_buffer[14];
-    rz.b.hi_hi = modbus_input_buffer[13];
-//    printf("rz=%2.2f, 0x%x, 0x%x\r\n",rz.f, rz.w.lo, rz.w.hi);
-    flu_values->rz = rz.f;
-
-    rs.b.lo_lo = modbus_input_buffer[16];
-    rs.b.lo_hi = modbus_input_buffer[15];
-    rs.b.hi_lo = modbus_input_buffer[18];
-    rs.b.hi_hi = modbus_input_buffer[17];
-//    printf("rs=%2.2f, 0x%x, 0x%x\r\n",rs.f, rs.w.lo, rs.w.hi);
-    flu_values->rs = rs.f;
-
-    tra_back.b.lo_lo = modbus_input_buffer[20];
-    tra_back.b.lo_hi = modbus_input_buffer[19];
-    tra_back.b.hi_lo = modbus_input_buffer[22];
-    tra_back.b.hi_hi = modbus_input_buffer[21];
-//    printf("tra_back=%2.2f, 0x%x, 0x%x\r\n",tra_back.f, tra_back.w.lo, tra_back.w.hi);
-    flu_values->tra_back = tra_back.f;
-
-    turb.b.lo_lo = modbus_input_buffer[24];
-    turb.b.lo_hi = modbus_input_buffer[23];
-    turb.b.hi_lo = modbus_input_buffer[26];
-    turb.b.hi_hi = modbus_input_buffer[25];
-//    printf("turb=%2.2f, 0x%x, 0x%x\r\n",turb.f, turb.w.lo, turb.w.hi);
-    flu_values->turb = turb.f;
-
-    cf.b.lo = modbus_input_buffer[28];
-    cf.b.hi = modbus_input_buffer[27];
-//    printf("cf=%d, 0x%x,\r\n",cf.w, cf.w);
-    flu_values->cf = cf.w;
-
-//    crc.b.lo = modbus_input_buffer[30]; crc.b.hi = modbus_input_buffer[29];
-//    printf("crc=%d, 0x%x,\r\n",crc.w, crc.w);
-
+    switch( order ) {
+            case BigEndian:
+            value.b.lo_lo = modbus_input_buffer[6];
+            value.b.lo_hi = modbus_input_buffer[5];
+            value.b.hi_lo = modbus_input_buffer[4];
+            value.b.hi_hi = modbus_input_buffer[3];
+            break;
+        case BigEndianReverseWord:
+            value.b.lo_lo = modbus_input_buffer[4];
+            value.b.lo_hi = modbus_input_buffer[3];
+            value.b.hi_lo = modbus_input_buffer[6];
+            value.b.hi_hi = modbus_input_buffer[5];
+            break;
+        default:
+            return false;
+    }
+    *float_value = value.f;
     return true;
 }
-
-bool mbTconGetData( MB_TCON_VALUES *tcon_values )
-{
-    MR_REGISTER_INT tcon_cal;
-    MR_REGISTER_INT tcon_cmp;
-    MR_REGISTER_INT tcon_2pt;
-    MR_REGISTER_INT tcon_freq;
-    MR_REGISTER_INT rtd_degC;
-    MR_REGISTER_INT rtd_cal;
-    MR_REGISTER_INT rtd_raw;
-
-    if (mbInterruptComplete() != true ) {
-        return false;
-    }
-
-//    printf("Address: %d, Function: %d, No Regs: %d, \r\n",modbus_input_buffer[0],modbus_input_buffer[1],modbus_input_buffer[2]/2);
-//
-//    printf("Data: %x%x,%x%x,    %x%x,%x%x,    %x%x,%x%x,\r\n%x%x,%x%x,    %x%x,%x%x,    %x%x,%x%x\r\n",
-//            modbus_input_buffer[3],modbus_input_buffer[4], modbus_input_buffer[5],modbus_input_buffer[6],       // tcon_cal
-//            modbus_input_buffer[7],modbus_input_buffer[8], modbus_input_buffer[9],modbus_input_buffer[10],      // tcon_cmp
-//            modbus_input_buffer[11],modbus_input_buffer[12], modbus_input_buffer[13],modbus_input_buffer[14],   // tcon_2pt
-//            modbus_input_buffer[15],modbus_input_buffer[16], modbus_input_buffer[17],modbus_input_buffer[18],   // rtd_degC
-//            modbus_input_buffer[19],modbus_input_buffer[20], modbus_input_buffer[21],modbus_input_buffer[22],   // rtd_cal
-//            modbus_input_buffer[23],modbus_input_buffer[24], modbus_input_buffer[25],modbus_input_buffer[26]);  // rtd_raw
-//    printf("CRC: %x%x\r\n",modbus_input_buffer[27], modbus_input_buffer[28]);
-
-    rtd_raw.b.lo_lo = modbus_input_buffer[4];
-    rtd_raw.b.lo_hi = modbus_input_buffer[3];
-    rtd_raw.b.hi_lo = modbus_input_buffer[6];
-    rtd_raw.b.hi_hi = modbus_input_buffer[5];
-//    printf("rtd_raw=%d M Ohm, 0x%x, 0x%x\r\n",rtd_raw.i, rtd_raw.w.lo, rtd_raw.w.hi);
-    tcon_values->rtd_raw = rtd_raw.i;
-
-    rtd_cal.b.lo_lo = modbus_input_buffer[8];
-    rtd_cal.b.lo_hi = modbus_input_buffer[7];
-    rtd_cal.b.hi_lo = modbus_input_buffer[10];
-    rtd_cal.b.hi_hi = modbus_input_buffer[9];
-//    printf("rtd_cal=%d M Ohm, 0x%x, 0x%x\r\n",rtd_cal.i, rtd_cal.w.lo, rtd_cal.w.hi);
-    tcon_values->rtd_cal = rtd_cal.i;
-
-    rtd_degC.b.lo_lo = modbus_input_buffer[12];
-    rtd_degC.b.lo_hi = modbus_input_buffer[11];
-    rtd_degC.b.hi_lo = modbus_input_buffer[14];
-    rtd_degC.b.hi_hi = modbus_input_buffer[13];
-//    printf("rtd_degC=%2.2f C, 0x%x, 0x%x\r\n",(rtd_degC.i/1000.0), rtd_degC.w.lo, rtd_degC.w.hi);
-    tcon_values->rtd_degC = (rtd_degC.i/1000.0);
-
-    tcon_freq.b.lo_lo = modbus_input_buffer[16];
-    tcon_freq.b.lo_hi = modbus_input_buffer[15];
-    tcon_freq.b.hi_lo = modbus_input_buffer[18];
-    tcon_freq.b.hi_hi = modbus_input_buffer[17];
-//    printf("tcon_freq=%d Hz, 0x%x, 0x%x\r\n",tcon_freq.i, tcon_freq.w.lo, tcon_freq.w.hi);
-    tcon_values->tcon_freq = tcon_freq.i;
-
-    tcon_2pt.b.lo_lo = modbus_input_buffer[20];
-    tcon_2pt.b.lo_hi = modbus_input_buffer[19];
-    tcon_2pt.b.hi_lo = modbus_input_buffer[22];
-    tcon_2pt.b.hi_hi = modbus_input_buffer[21];
-//    printf("tcon_2pt=%d uS, 0x%x, 0x%x\r\n",tcon_2pt.i, tcon_2pt.w.lo, tcon_2pt.w.hi);
-    tcon_values->tcon_2pt = tcon_2pt.i;
-
-    tcon_cmp.b.lo_lo = modbus_input_buffer[20];
-    tcon_cmp.b.lo_hi = modbus_input_buffer[19];
-    tcon_cmp.b.hi_lo = modbus_input_buffer[22];
-    tcon_cmp.b.hi_hi = modbus_input_buffer[21];
-//    printf("tcon_cmp=%d uS, 0x%x, 0x%x\r\n",tcon_cmp.i, tcon_cmp.w.lo, tcon_cmp.w.hi);
-    tcon_values->tcon_cmp = tcon_cmp.i;
-
-    tcon_cal.b.lo_lo = modbus_input_buffer[20];
-    tcon_cal.b.lo_hi = modbus_input_buffer[19];
-    tcon_cal.b.hi_lo = modbus_input_buffer[22];
-    tcon_cal.b.hi_hi = modbus_input_buffer[21];
-//    printf("tcon_cal=%d, 0x%x, 0x%x\r\n",tcon_cal.i, tcon_cal.w.lo, tcon_cal.w.hi);
-    tcon_values->tcon_cal = tcon_cal.i;
-
-    return true;
-}
\ No newline at end of file