123

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
183:c7a9c309086c
Parent:
182:2bd8ec44998f
--- a/DeviceUserDecoder.c	Sun Jul 10 05:35:08 2016 +0000
+++ b/DeviceUserDecoder.c	Sun Jul 31 06:19:02 2016 +0000
@@ -580,10 +580,12 @@
       //Reset device counters here
       device.counters.dither.state.angle = 0;
       device.counters.meander.state.angle[0] = 0;
+      device.counters.meander.state.angle[1] = 0;
       
       device.user.response.type = RESPONSE_PERIODIC; //Override default type
       device.user.response.trigger = 1000000; //1000000mks - 1Hz
-      device.user.response.counter = device.user.response.trigger; //Ask_Gld expect immediate answer?
+      //device.user.response.counter = device.user.response.trigger; //Ask_Gld expect immediate answer?
+      device.user.response.counter = 0; //No?
     }
   } else {
     DecodeFail();
@@ -836,12 +838,14 @@
 
 //Deprecated
 void DecodeMGphW(void) {
+  uint8_t reply = Decode8(); if (device.user.decoder.error) return;
   uint8_t gainA = Decode8(); if (device.user.decoder.error) return;
   uint8_t gainB = Decode8(); if (device.user.decoder.error) return;
   DecodeCRC(); if (device.user.decoder.error) return;
   device.isacs.potentiometers.state.a = gainA;
   device.isacs.potentiometers.state.b = gainB;
   DeviceISACSSetPotentiometers();
+  if (!reply) device.user.response.enabled = 0;
 }
 
 uint16_t GetCompatibilityValue(uint8_t index) {
@@ -854,8 +858,6 @@
   uint8_t index = Decode8(); if (device.user.decoder.error) return;
   DecodeCRC(); if (device.user.decoder.error) return;
   
-  //sprintf(device.service.buffer, "MParamR %02x\r\n", index); WriteConcole(); //Development message
-  
   uint32_t param32;
   switch (index){
     case 0:
@@ -866,25 +868,25 @@
     case 1:
       //HF_ref s16 value of the reference
       //int32_t device.isacs.regulator.settings.reference
-      device.user.response.message = 0; //TODO: Expected ADC code, currently [V]
+      device.user.response.message = param_HF_ref();
     break;
     
     case 2:
       //HF_scl s16 HFO gain factor
       //int32_t device.isacs.regulator.settings.scale
-      device.user.response.message = (device.isacs.regulator.state.scale >> 16); //TODO: Expected integer code, currently in 16.16
+      device.user.response.message = param_HF_scl();
     break;
     
     case 3:
       //HF_min dac ttf:minimum DAC code in HFO channel; value:maximal voltage of HFO; value=(ttf>>4)/2048*(-12)-1.3; Range -13.2V...10.7V
       //int32_t device.isacs.output.settings.max
-      device.user.response.message = 0; //TODO: Expected DAC code, currently [V] 16.16
+      device.user.response.message = param_HF_min();
     break;
     
     case 4:
       //HF_max dac ttf:maximum DAC code in HFO channel; value:minimal voltage of HFO; value=(ttf>>4)/2048*(-12)-1.3; Range -13.2V...10.7V
       //int32_t device.isacs.output.settings.min
-      device.user.response.message = 0; //TODO: Expected DAC code, currently [V] 16.16
+      device.user.response.message = param_HF_max();
     break;
     
     case 5:
@@ -900,31 +902,31 @@
     case 7:
       //WP_ref s16 PLCS reference
       //int32_t device.plcs.regulator.reference
-      device.user.response.message = 0;
+      device.user.response.message = param_WP_ref();
     break;
     
     case 8:
       //WP_scl s16 PLCS gain factor (1.15) 5..20
       //int32_t device.plcs.regulator.scale
-      device.user.response.message = 0;
+      device.user.response.message = param_WP_scl();
     break;
     
     case 9:
       //WP_mdy s16 PLCS reset delay in 10kHz cycles
-      //device.plcs.reset.settings.?
-      device.user.response.message = 0;
+      //device.plcs.reset.up/down.state.duration
+      device.user.response.message = param_WP_mdy();
     break;
     
     case 10:
       //WP_rup dac ttf:PLCS maximum DAC code in heater channel; value:minimal voltage on the heater; value=(ttf>>4)/2048*(-12)-1.3; Range -13.2V...10.7V
-      //?
-      device.user.response.message = 0;
+      //device.plcs.reset.up.state.trigger
+      device.user.response.message = param_WP_rup();
     break;
     
     case 11:
       //WP_rdw dac ttf:PLCS minimum DAC code in heater channel; value:maximal voltage on the heater; value=(ttf>>4)/2048*(-12)-1.3; Range -13.2V...10.7V
-      //?
-      device.user.response.message = 0;
+      //device.plcs.reset.down.state.trigger
+      device.user.response.message = param_WP_rdw();
     break;
     
     case 12:
@@ -974,7 +976,7 @@
       
     case 20:
       //VB_Tmin tau minimum pulse width of the dither drive; value=ttf/15360000 in seconds
-      device.user.response.message = param_VB_Tmax();
+      device.user.response.message = param_VB_Tmin();
     break;
       
     case 21:
@@ -990,19 +992,19 @@
     case 23:
       //VBN_Tzd s16 adjusted noise period
       //int32_t device.dither.noise.settings.period
-      device.user.response.message = 0;
+      device.user.response.message = param_VBN_Tzd();
     break;
       
     case 24:
       //VBN_Ran s16 range of the random component of noise
       //int32_t device.dither.noise.settings.range
-      device.user.response.message = 0;
+      device.user.response.message = param_VBN_Ran();
     break;
       
     case 25:
-      //VBN_k s16 adjusted noise constant
+      //VBN_k s16 adjusted noise constant: pulse width = VB_tau +/- VBN_k
       //int32_t device.dither.noise.settings.amplitude
-      device.user.response.message = 0;
+      device.user.response.message = param_VBN_k();
     break;
       
     case 26:
@@ -1027,81 +1029,31 @@
     break;
       
     case 43:
-      //Tmp_bias0[0] s16 Tmp_bias[6]: an array of shifts of the 0..5 temperature sensors
-      //?
-      device.user.response.message = 0;
-    break;
-      
     case 44:
-      //Tmp_bias0[1] s16
-      //?
-      device.user.response.message = 0;
-    break;
-      
     case 45:
-      //Tmp_bias0[2] s16
-      //?
-      device.user.response.message = 0;
-    break;
-      
     case 46:
-      //Tmp_bias0[3] s16
-      //?
-      device.user.response.message = 0;
-    break;
-      
     case 47:
-      //Tmp_bias0[4] s16
-      //?
-      device.user.response.message = 0;
-    break;
-      
     case 48:
-      //Tmp_bias0[5] s16
+      //Tmp_bias0[0] ... Tmp_bias0[5] s16 Tmp_bias[6]: an array of shifts of the 0..5 temperature sensors
       //?
       device.user.response.message = 0;
     break;
       
     case 49:
-      //Tmp_scal0[0] s16 Tmp_scal[6]: an array of the scale coefficients of the 0..5 temperature sensors
-      //?
-      device.user.response.message = 0;
-    break;
-      
     case 50:
-      //Tmp_scal0[1] s16
-      //?
-      device.user.response.message = 0;
-    break;
-      
     case 51:
-      //Tmp_scal0[2] s16
-      //?
-      device.user.response.message = 0;
-    break;
-      
     case 52:
-      //Tmp_scal0[3] s16
-      //?
-      device.user.response.message = 0;
-    break;
-      
     case 53:
-      //Tmp_scal0[4] s16
-      //?
-      device.user.response.message = 0;
-    break;
-      
     case 54:
-      //Tmp_scal0[5] s16
+      //Tmp_scal0[0] ... Tmp_scal0[5] s16 Tmp_scal[6]: an array of the scale coefficients of the 0..5 temperature sensors
       //?
       device.user.response.message = 0;
     break;
       
     case 55:
       //WP_reset dac ttf:PLCS DAC code after reset at heating; value:heater voltage after reset at heating; value=(ttf>>4)/2048*(-12)-1.3; Range -13.2V...10.7V
-      //int32_t device.plcs.reset.levels.upper
-      device.user.response.message = 0;
+      //int32_t device.plcs.reset.up.state.target
+      device.user.response.message = param_WP_reset();
     break;
       
     case 56:
@@ -1197,8 +1149,8 @@
       
     case 105:
       //WP_reset2 dac ttf:PLCS DAC code after reset at cooling; value:heater voltage after reset at cooling; value=(ttf>>4)/2048*(-12)-1.3
-      //int32_t device.plcs.reset.levels.lower
-      device.user.response.message = 0;
+      //int32_t device.plcs.reset.down.state.target
+      device.user.response.message = param_WP_reset2();
     break;
       
     case 106:
@@ -1250,8 +1202,8 @@
       
     case 116:
       //HF_scl_2 s16 HFO scale factor during PLCS reset 
-      //?
-      device.user.response.message = 0;
+      //Deprecated: always same as HF_scl
+      device.user.response.message = param_HF_scl();
     break;
       
     case 117: