123

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
198:78dd6d14d108
Parent:
197:7a05523bf588
--- a/DeviceUserEncoder.c	Wed Oct 19 10:55:05 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,396 +0,0 @@
-#include "Device.h"
-
-extern Device device;
-extern HashParam hashParamTable[HASH_PARAM_COUNT];
-extern HashFunc  hashFuncTable[HASH_FUNC_COUNT];
-
-void InitUserEncoderDefaultSettings(void) {
-}
-
-void InitUserEncoderState(void) {
-  device.user.encoder.error = 0;
-  device.user.encoder.count = 0;
-  device.user.encoder.CRC = 0;
-}
-
-void DeviceStartUserEncoder(void) {
-}
-
-//Next to LineDecode(), PinDecode()
-void userEncodeResponse(void) {
-  if (device.user.response.enabled) {
-    if (device.user.response.type == RESPONSE_PERIODIC) {
-      if (device.user.response.triggered)
-        device.user.response.triggered = 0; //Clear trigger event. Here ok - encode response in one pass
-      else
-        return;
-    }
-
-    switch(device.user.response.code){ //TODO: switch(device.user.response.code & 0xff00) { case group: switch (device.user.response.code & 0x00ff) { case cmd: ...}...}
-      case DEV_MODE: EncodeDeviceMode(); break;
-      case DELTA_BINS: EncodeDeltaBINS(); break;
-      case DELTA_PS: EncodeDeltaPS(); break;
-      case DELTA_SF: EncodeDeltaSF(); break;
-      case BIT_MODE: EncodeDeviceMode(); break; //Same response as DEV_MODE
-      case MAINTENANCE: EncodeMainMode(); break;
-      case M0_RATE_1: EncodeMRate(); break;
-      case M0_PARAM_R: EncodeMParamR(); break;
-      case M0_PARAM_W: EncodeMParamW(); break;
-      case M0_CTL_R: EncodeMCtlR(); break;
-      case M0_CTL_A_M: EncodeMCtlAM(); break;
-      case M0_CTL_B_M: EncodeMCtlBM(); break;
-      case M0_CNT_R: EncodeMCntR(); break;
-      case M0_GPH_W: EncodeStart(); EncodeAddress(); Encode8(0xe6); Encode8(0); EncodeCRC(); break;
-      case H_PARAM8_W:
-      case H_PARAM8_R:
-      case H_PARAM16_W:
-      case H_PARAM16_R:
-      case H_PARAM32_W:
-      case H_PARAM32_R:
-      case H_BYTES_W:
-      case H_BYTES_R:
-      case FLASH_READ_ALL:
-      case FLASH_WRITE_ALL:
-        EncodeStart(); EncodeAddress(); Encode16(device.user.response.code); EncodeMessage(); if (device.user.response.message == 0) EncodeParameters(); EncodeCRC();
-      break;
-      default: EncodeFail();
-    }
-  }
-}
-
-void Encode8(uint8_t param){
-  device.user.response.buffer.data[device.user.response.buffer.count] = param;
-  device.user.response.buffer.count += 1;
-  
-  //sprintf(device.service.buffer,"- %2x\r\n", param); WriteConcole(); //Development message
-}
-
-void Encode16(uint16_t param) {
-  Encode8((param >> 8) & 0xff);
-  Encode8(param & 0xff);
-}
-
-void EncodeStart(void) {
-  device.user.response.ready = 0;        //Disable transmission
-  device.user.response.buffer.count = 0; //Clear buffer
-  Encode8(0xdd);                         //Write response header code
-}
-
-void EncodeEnd(void) {
-  #ifdef DEBUG_ENCODER_OUTPUT
-  static char h[16] = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66};//0123456789abcdef;
-  device.service.buffer[0] = 0x45; //E
-  uint8_t c;
-  for (uint8_t i = 0; i < device.user.response.buffer.count; i++) {
-    c = device.user.response.buffer.data[i];
-    device.service.buffer[i * 3 + 1] = 0x20;
-    device.service.buffer[i * 3 + 2] = h[c >> 4];
-    device.service.buffer[i * 3 + 3] = h[c & 0x0f];
-  }
-  device.service.buffer[device.user.response.buffer.count * 3 + 1] = 13;
-  device.service.buffer[device.user.response.buffer.count * 3 + 2] = 10;
-  device.service.buffer[device.user.response.buffer.count * 3 + 3] = 0;
-  WriteConcole(); //Development message
-  #endif
-  
-  device.user.response.enabled = 0;      //Disable response overwrite
-  device.user.response.ready = 1;        //Enable transmission
-  device.user.response.buffer.position = 0; //Reset transmitter
-}
-
-void EncodeFail(void) {
-  device.user.response.buffer.count = 0; //Clear buffer
-  device.user.response.enabled = 0;      //Disable response overwrite
-}
-
-void EncodeAddress(void) {
-  Encode8(device.user.address);
-}
-
-//TODO: EncodePacket(uint16_t length) - auto reset packet index
-void EncodePacket(void) {
-  Encode8(device.user.response.packet);
-  device.user.response.packet++;
-}
-
-void EncodeMessage(void) {
-  Encode16(device.user.response.message);
-}
-
-void EncodeParameters(void) {
-  for (uint8_t i = 0; i < device.user.response.parametersCount; i++){
-    uint8_t * b = (uint8_t *)device.user.response.parameters[i].ref;
-    for (uint8_t j = 0; j < device.user.response.parameters[i].size; j++){
-      Encode8(*b); b++;
-    }
-  }
-}
-
-void EncodeCRC(void) {
-  int16_t crc = 0;
-  for (int i = 2; i < device.user.response.buffer.count; i++) crc += device.user.response.buffer.data[i];
-  Encode16(crc);
-  EncodeEnd();
-}
-
-//Deprecated
-void EncodeDeviceMode(void) {
-  EncodeStart();
-  EncodeAddress();
-  Encode8(var_Device_Mode());
-  Encode8(var_SRgR());
-  EncodeCRC();
-}
-
-//Deprecated
-void EncodeDeltaPS(void) {
-  static uint16_t param16;
-  EncodeStart();
-  EncodeAddress();
-  //Encode angle counts
-  Encode16(var_PSdiff());
-  //Prepare parameter
-  uint8_t param;
-  switch (device.user.response.packet) {
-    case 0:
-      //Dither output frequency
-      param16 = var_F_ras();
-      //High byte of output frequency
-      param = (uint8_t)(param16 >> 8);
-      break;
-    case 1:
-      //Lo byte of output frequency
-      param = (uint8_t)param16;
-      break;
-    case 2:
-      //ISACS output
-      param16 = var_HF_reg();
-      //Hi byte of ISACS output
-      param = (uint8_t)(param16 >> 8);
-      break;
-    case 3:
-      //Lo byte of ISACS output
-      param = (uint8_t)param16;
-    break;
-    case 4:
-      //T_Vibro Dither drive period
-      param16 = var_T_Vibro();
-      //Hi byte of dither oscillation frequency divider
-      param = (uint8_t)(param16 >> 8);
-      break;
-    case 5:
-      //Lo byte of dither oscillation frequency divider
-      param = (uint8_t)param16;
-      break;
-    case 6:
-      //L_Vibro Dither pulse width
-      param16 = var_L_Vibro();
-      //Hi byte of dither pulse width
-      param = (uint8_t)(param16 >> 8);
-      break;
-    case 7:
-      //Lo byte of dither pulse width
-      param = (uint8_t)param16;
-      break;
-    case 8:
-      //PLCS output
-      param16 = var_WP_reg();
-      //Hi byte of PLCS output
-      param = (uint8_t)(param16 >> 8);
-      break;
-    //Lo byte of PLCS output
-    case 9:
-      param = (uint8_t)(param16 & 0xff);
-      break;
-    //Unused 
-    case 10: param = 0; break;
-    //Unused 
-    case 11: param = 0; break;
-    //Unused 
-    case 12: param = 0; break;
-    //Unused 
-    case 13: param = 0; break;
-    case 14:
-      param16 = (uint16_t)device.ccs.current[0].state.raw;
-      //Hi byte of CCS current[0]
-      param = (uint8_t)(param16 >> 8);
-      break;
-    case 15:
-      //Lo byte of CCS current[0]
-      param = (uint8_t)(param16 & 0xff);
-    break;
-    case 16:
-      param16 = (uint16_t)device.ccs.current[1].state.raw;
-      //Hi byte of CCS current[1]
-      param = (uint8_t)(param16 >> 8);
-      break;
-    case 17:
-      param = (uint8_t)(param16 & 0xff);
-      //Lo byte of CCS current[1]
-      break;
-    case 18:
-      param16 = (uint16_t)device.tss.gradient.state.raw;
-      //Hi byte of TSS gradient
-      param = (uint8_t)(param16 >> 8);
-      break;
-    case 19:
-      //Lo byte of TSS gradient
-      param = (uint8_t)(param16 & 0xff);
-      break;
-    case 20:
-      param16 = (uint16_t)device.tss.temperature.state.raw;
-      //Hi byte of TSS temperature
-      param = (uint8_t)(param16 >> 8);
-      break;
-    case 21:
-      //Lo byte of TSS temperature
-      param = (uint8_t)(param16 & 0xff);
-      break;
-  }
-  //Encode packet index
-  EncodePacket();
-  //Reset packet index
-  if (device.user.response.packet > 21) device.user.response.packet = 0;
-  //Encode parameter
-  Encode8(param);
-  //Finish encoding
-  EncodeCRC();
-}
-
-void EncodeDeltaBINS(void) {
-  EncodeStart();
-  EncodeAddress();
-  Encode16(0); Encode16(0); //TODO: BINSDiff_32
-  Encode8(0); //Data ok
-  EncodeCRC();
-}
-
-void EncodeDeltaSF(void) {
-//TODO
-}
-
-//Usage: Ask_Gld "Maintenance" button
-//Usage: Ask_Gld "x" button
-void EncodeMainMode(void) {
-  EncodeStart();
-  EncodeAddress();
-  Encode8(0);      //Version - 0: use extended command to get version
-  Encode8(0);      //Serial number - 0: use extended command to get serial number
-  EncodeMessage();
-  EncodeCRC();
-}
-
-//Deprecated
-void EncodeMCntR(void) {
-  EncodeStart();
-  EncodeAddress();
-  Encode16((int16_t)device.counters.meander.state.a);
-  Encode16((int16_t)device.counters.meander.state.b);
-  EncodeCRC();
-}
-
-//Deprecated
-void EncodeMRate(void) {
-  EncodeStart();
-  EncodeAddress();
-  //Encode positive meander latched counter data
-  Encode16((int16_t)device.counters.meander.state.a);
-  //Encode negative meander latched counter data
-  Encode16((int16_t)device.counters.meander.state.b);
-  //Encode accumulated meander latched counters difference
-  Encode16(var_Cnt_Dif());
-  //Encode output frequency
-  Encode16(var_F_ras());
-  //Encode ISACS output
-  Encode16(var_HF_reg());
-  //Encode ISACS error
-  Encode16(var_HF_dif());
-  //Encode dither divider
-  Encode16(var_T_Vibro());
-  //Encode dither phase detector output
-  Encode16(var_T_VB_pll());
-  //Encode dither pulse width
-  Encode16(var_L_Vibro());
-  //Encode unused
-  Encode16(0);
-  //Encode PLCS output
-  Encode16(var_WP_reg());
-  //Encode PLCS error
-  Encode16(var_WP_pll());
-  //Encode unused
-  Encode16(0); //T0
-  //Encode unused
-  Encode16(0); //T1
-  //Encode CCS data
-  Encode16((int16_t)device.ccs.current[0].state.raw); //T2
-  Encode16((int16_t)device.ccs.current[1].state.raw); //T3
-  //Encode TSS data
-  Encode16((int16_t)device.tss.gradient.state.raw);    //T4
-  Encode16((int16_t)device.tss.temperature.state.raw); //T5
-  //Encode unused
-  Encode16(0);
-  //Encode unused
-  Encode16(0);
-  //Finish encoding
-  EncodeCRC();
-}
-
-//Deprecated
-void EncodeMCtlR(void) {
-  EncodeStart();
-  EncodeAddress();
-  Encode8(device.user.response.code >> 8);
-  if (device.user.response.code & 0x10 == 0){
-    Encode8(0);      //Encode error status and RgConA attribute (clear register RgConB bit)
-    //Prepare RgConA
-    uint16_t param = 0;
-    if (device.dither.frequency.state.enabled) param |= 1 << 6;
-    if (device.dither.amplitude.state.enabled) param |= 1 << 5;
-    if (device.sequencer.sampler.state.enabled) param |= 1 << 4;
-    if (device.plcs.regulator.state.enabled) param |= 1 << 3;
-    if (device.isacs.regulator.state.enabled) param |= 1 << 1;
-    Encode16(param); //Encode RgConA
-  } else {
-    Encode8(0x10);   //Encode error status and RgConB attribute (set register RgConB bit)
-    Encode16(device.counters.rate.state.source); //Encode RgConB
-  }
-  //Finish encoding
-  EncodeCRC();
-}
-
-//Deprecated
-void EncodeMCtlAM(void) {
-  EncodeStart();
-  EncodeAddress();
-  Encode8(device.user.response.code >> 8);
-  //TODO:
-  Encode8(0x10); Encode8(0);Encode8(0); //Encode RgConA content
-  //Finish encoding
-  EncodeCRC();
-}
-
-//Deprecated
-void EncodeMCtlBM(void) {
-  EncodeStart();
-  EncodeAddress();
-  Encode16(device.user.response.code); //TODO: Embed error code
-  Encode16(device.counters.rate.state.source);
-  EncodeCRC();
-}
-
-//Deprecated
-void EncodeMParamR(void) {
-  EncodeStart();
-  EncodeAddress();
-  EncodeMessage();
-  EncodeCRC();
-}
-
-//Deprecated
-void EncodeMParamW(void) {
-  EncodeStart();
-  EncodeAddress();
-  Encode8(device.user.response.code >> 8);
-  Encode8(0); //TODO: Encode error code
-  EncodeCRC();
-}
\ No newline at end of file