123

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Kovalev_D
Date:
Wed Oct 19 10:55:05 2016 +0000
Revision:
197:7a05523bf588
Parent:
183:c7a9c309086c
modul

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Diletant 161:efd949e8d536 1 #include "Device.h"
Diletant 161:efd949e8d536 2
Diletant 161:efd949e8d536 3 extern Device device;
Diletant 161:efd949e8d536 4 extern HashParam hashParamTable[HASH_PARAM_COUNT];
Diletant 161:efd949e8d536 5 extern HashFunc hashFuncTable[HASH_FUNC_COUNT];
Diletant 161:efd949e8d536 6
Diletant 182:2bd8ec44998f 7 void InitUserDecoderDefaultSettings(void) {
Diletant 167:bedc0a9d559a 8 }
Diletant 167:bedc0a9d559a 9
Diletant 182:2bd8ec44998f 10 void InitUserDecoderState(void) {
Diletant 161:efd949e8d536 11 device.user.decoder.error = 0;
Diletant 161:efd949e8d536 12 device.user.decoder.count = 0;
Diletant 161:efd949e8d536 13 device.user.decoder.canceled = 1;
Diletant 161:efd949e8d536 14 device.user.decoder.address = 0;
Diletant 161:efd949e8d536 15 device.user.decoder.version = 0;
Diletant 161:efd949e8d536 16 device.user.decoder.code = 0;
Diletant 161:efd949e8d536 17 device.user.decoder.position = 0;
Diletant 161:efd949e8d536 18 device.user.decoder.CRC = 0;
Diletant 161:efd949e8d536 19 }
Diletant 161:efd949e8d536 20
Diletant 182:2bd8ec44998f 21 void DeviceStartUserDecoder(void) {
Diletant 167:bedc0a9d559a 22 }
Diletant 167:bedc0a9d559a 23
Diletant 177:672ef279c8e0 24 void userDecodeRequests(void) {
Diletant 161:efd949e8d536 25 do {
Diletant 161:efd949e8d536 26 DecodeStart(); if (device.user.decoder.error) continue;
Diletant 161:efd949e8d536 27 DecodeAddress(); if (device.user.decoder.error) continue;
Diletant 161:efd949e8d536 28 DecodeCode(); if (device.user.decoder.error) continue;
Diletant 161:efd949e8d536 29 switch(device.user.decoder.code){
Diletant 161:efd949e8d536 30 case FACTORY_ACCESS: DecodeFactory(); break;
Diletant 161:efd949e8d536 31 case DEV_MODE: DecodeDeviceMode(); break;
Diletant 161:efd949e8d536 32 case DELTA_BINS: DecodeDelta(); break;
Diletant 161:efd949e8d536 33 case DELTA_PS: DecodeDelta(); break;
Diletant 161:efd949e8d536 34 case DELTA_SF: DecodeDelta(); break;
Diletant 161:efd949e8d536 35 case BIT_MODE: DecodeBITMode(); break;
Diletant 161:efd949e8d536 36 case MAINTENANCE: DecodeMaintenanceMode(); break;
Diletant 161:efd949e8d536 37 case M0_BASIC: DecodeMBasic(); break;
Diletant 161:efd949e8d536 38 case M0_RATE: DecodeMRate(); break;
Diletant 161:efd949e8d536 39 case M0_STIMUL: DecodeMStymul(); break;
Diletant 161:efd949e8d536 40 case M0_RESET: DecodeMReset(); break;
Diletant 177:672ef279c8e0 41 case M0_CTL_R: DecodeMCtlR(); break;
Diletant 177:672ef279c8e0 42 case M0_CTL_M: DecodeMCtlM(); break;
Diletant 161:efd949e8d536 43 case M0_TMP_W: DecodeMTmpW(); break;
Diletant 161:efd949e8d536 44 case M0_TMP_R: DecodeMTmpR(); break;
Diletant 161:efd949e8d536 45 //case M0_E5R_W: break;
Diletant 161:efd949e8d536 46 //case M0_ADC_R: break;
Diletant 161:efd949e8d536 47 //case M0_VIB_W: break;
Diletant 177:672ef279c8e0 48 case M0_CNT_R: DecodeMCntR(); break;
Diletant 161:efd949e8d536 49 case M0_GPH_W: DecodeMGphW(); break;
Diletant 161:efd949e8d536 50 //case M0_FLG_R: break;
Diletant 161:efd949e8d536 51 case M0_PARAM_W: DecodeMParamW(); break;
Diletant 161:efd949e8d536 52 case M0_PARAM_R: DecodeMParamR(); break;
Diletant 161:efd949e8d536 53 //case M0_E5RA_W: break;
Diletant 161:efd949e8d536 54 default: DecodeFail();
Diletant 161:efd949e8d536 55 }
Diletant 161:efd949e8d536 56 } while (device.user.decoder.count > 0);
Diletant 161:efd949e8d536 57 }
Diletant 161:efd949e8d536 58
Diletant 161:efd949e8d536 59 uint8_t Decode8(void) {
Diletant 161:efd949e8d536 60 if (device.user.decoder.position != device.user.request.buffer.end) {
Diletant 161:efd949e8d536 61 uint8_t param = device.user.request.buffer.data[device.user.decoder.position];
Diletant 161:efd949e8d536 62
Diletant 177:672ef279c8e0 63 //sprintf(device.service.buffer, "Decode8(): %02x %04d %04d %04d\r\n", param, device.user.decoder.position, device.user.request.buffer.start, device.user.request.buffer.end); WriteConcole(); //Development message
Diletant 161:efd949e8d536 64
Diletant 161:efd949e8d536 65 device.user.decoder.position = (device.user.decoder.position + 1) % InputBufferSize;
Diletant 161:efd949e8d536 66 device.user.decoder.count++;
Diletant 161:efd949e8d536 67 device.user.decoder.CRC += param;
Diletant 161:efd949e8d536 68 return param;
Diletant 161:efd949e8d536 69 } else {
Diletant 161:efd949e8d536 70 DecodeCancel();
Diletant 161:efd949e8d536 71 return 0;
Diletant 161:efd949e8d536 72 }
Diletant 161:efd949e8d536 73 }
Diletant 161:efd949e8d536 74
Diletant 161:efd949e8d536 75 uint16_t Decode16(void) {
Diletant 161:efd949e8d536 76 uint8_t hi = Decode8(); if (device.user.decoder.error) return 0;
Diletant 161:efd949e8d536 77 uint8_t lo = Decode8(); if (device.user.decoder.error) return 0;
Diletant 161:efd949e8d536 78 return (hi << 8) | lo;
Diletant 161:efd949e8d536 79 }
Diletant 161:efd949e8d536 80
Diletant 161:efd949e8d536 81 uint32_t Decode32(void) {
Diletant 161:efd949e8d536 82 uint32_t b3 = Decode8(); if (device.user.decoder.error) return 0;
Diletant 161:efd949e8d536 83 uint32_t b2 = Decode8(); if (device.user.decoder.error) return 0;
Diletant 161:efd949e8d536 84 uint32_t b1 = Decode8(); if (device.user.decoder.error) return 0;
Diletant 161:efd949e8d536 85 uint32_t b0 = Decode8(); if (device.user.decoder.error) return 0;
Diletant 161:efd949e8d536 86 return (b3 << 24) | (b2 << 16) | (b1 << 8) | b0;
Diletant 161:efd949e8d536 87 }
Diletant 161:efd949e8d536 88
Diletant 161:efd949e8d536 89 void DecodeStart(void) {
Diletant 161:efd949e8d536 90 if (device.user.decoder.canceled){
Diletant 161:efd949e8d536 91 DecodeCancel(); //Prevent next decode attempts until more data arrive
Diletant 161:efd949e8d536 92 } else {
Diletant 182:2bd8ec44998f 93 //Reset answer
Diletant 182:2bd8ec44998f 94 //device.user.response.ready = 0;
Diletant 182:2bd8ec44998f 95 //device.user.response.enabled = 0;
Diletant 182:2bd8ec44998f 96 //device.user.response.trigger = 0x7fffffff;
Diletant 182:2bd8ec44998f 97 //device.user.response.triggered = 0;
Diletant 182:2bd8ec44998f 98 //device.user.response.counter = 0;
Diletant 182:2bd8ec44998f 99 //Reset decoder
Diletant 161:efd949e8d536 100 device.user.decoder.error = 0;
Diletant 161:efd949e8d536 101 device.user.decoder.count = 0;
Diletant 161:efd949e8d536 102 device.user.decoder.position = device.user.request.buffer.start;
Diletant 182:2bd8ec44998f 103
Diletant 161:efd949e8d536 104 uint8_t param = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 105
Diletant 161:efd949e8d536 106 //sprintf(tmp,"DecodeStart()\r\n"); WriteConcole(tmp); //Development message
Diletant 161:efd949e8d536 107
Diletant 161:efd949e8d536 108 if (param != 0xcc) DecodeFail();
Diletant 161:efd949e8d536 109
Diletant 161:efd949e8d536 110 device.user.response.type = RESPONSE_IMMEDIATE; //Default type
Diletant 177:672ef279c8e0 111 device.user.response.packet = 0;
Diletant 161:efd949e8d536 112 }
Diletant 161:efd949e8d536 113 }
Diletant 161:efd949e8d536 114
Diletant 161:efd949e8d536 115 void DecodeAddress(void) {
Diletant 161:efd949e8d536 116 uint8_t address = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 117 device.user.decoder.CRC = 0;
Diletant 161:efd949e8d536 118 if ((address == device.user.address) || (address == BROADCAST_ADDRESS)) {
Diletant 161:efd949e8d536 119 device.user.decoder.address = address;
Diletant 161:efd949e8d536 120 } else {
Diletant 161:efd949e8d536 121 DecodeFail();
Diletant 161:efd949e8d536 122 }
Diletant 161:efd949e8d536 123 //sprintf(tmp,"DecodeAddress()\r\n"); WriteConcole(tmp); //Development message
Diletant 161:efd949e8d536 124 }
Diletant 161:efd949e8d536 125
Diletant 161:efd949e8d536 126 void DecodeCode(void) {
Diletant 161:efd949e8d536 127 uint8_t code = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 128 device.user.decoder.code = code << 8;
Diletant 161:efd949e8d536 129 //sprintf(tmp,"DecodeCode()\r\n"); WriteConcole(tmp); //Development message
Diletant 161:efd949e8d536 130 }
Diletant 161:efd949e8d536 131
Diletant 161:efd949e8d536 132 void DecodeExtentionCode(void) {
Diletant 161:efd949e8d536 133 uint8_t ext = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 134 device.user.decoder.code |= ext;
Diletant 161:efd949e8d536 135 //sprintf(tmp,"DecodeExtensionCode()\r\n"); WriteConcole(tmp); //Development message
Diletant 161:efd949e8d536 136 }
Diletant 161:efd949e8d536 137
Diletant 161:efd949e8d536 138 void DecodeEnd(void) {
Diletant 182:2bd8ec44998f 139 #ifdef DEBUG_DECODER_INPUT
Diletant 182:2bd8ec44998f 140 static char h[16] = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66};//0123456789abcdef;
Diletant 182:2bd8ec44998f 141 device.service.buffer[0] = 0x44; //D
Diletant 182:2bd8ec44998f 142 uint8_t c;
Diletant 182:2bd8ec44998f 143 for (uint8_t i = 0; i < device.user.decoder.count; i++) {
Diletant 182:2bd8ec44998f 144 c = device.user.request.buffer.data[(device.user.request.buffer.start + i) % InputBufferSize];
Diletant 182:2bd8ec44998f 145 device.service.buffer[i * 3 + 1] = 0x20;
Diletant 182:2bd8ec44998f 146 device.service.buffer[i * 3 + 2] = h[c >> 4];
Diletant 182:2bd8ec44998f 147 device.service.buffer[i * 3 + 3] = h[c & 0x0f];
Diletant 182:2bd8ec44998f 148 }
Diletant 182:2bd8ec44998f 149 device.service.buffer[device.user.decoder.count * 3 + 1] = 13;
Diletant 182:2bd8ec44998f 150 device.service.buffer[device.user.decoder.count * 3 + 2] = 10;
Diletant 182:2bd8ec44998f 151 device.service.buffer[device.user.decoder.count * 3 + 3] = 0;
Diletant 182:2bd8ec44998f 152 WriteConcole(); //Development message
Diletant 182:2bd8ec44998f 153 #endif
Diletant 161:efd949e8d536 154
Diletant 161:efd949e8d536 155 device.user.request.buffer.start = (device.user.request.buffer.start + device.user.decoder.count) % InputBufferSize;
Diletant 161:efd949e8d536 156 if (device.user.request.buffer.start == device.user.request.buffer.end) device.user.request.buffer.empty = 1;
Diletant 161:efd949e8d536 157
Diletant 161:efd949e8d536 158 device.user.decoder.count = 0;
Diletant 161:efd949e8d536 159 if (device.user.decoder.error == 0) {
Diletant 161:efd949e8d536 160 device.user.response.code = device.user.decoder.code;
Diletant 161:efd949e8d536 161
Diletant 161:efd949e8d536 162 if (device.user.decoder.address == BROADCAST_ADDRESS) {
Diletant 161:efd949e8d536 163 device.user.response.type = RESPONSE_DELAYED;
Diletant 161:efd949e8d536 164 device.user.response.counter = 0;
Diletant 161:efd949e8d536 165 device.user.response.trigger = BROADCAST_FRAME * device.user.address; //0/100/200 mks
Diletant 161:efd949e8d536 166 }
Diletant 161:efd949e8d536 167
Diletant 161:efd949e8d536 168 device.user.response.enabled = 1;
Diletant 161:efd949e8d536 169 }
Diletant 161:efd949e8d536 170 }
Diletant 161:efd949e8d536 171
Diletant 161:efd949e8d536 172 void DecodeCancel(void) {
Diletant 161:efd949e8d536 173 device.user.decoder.error = 1;
Diletant 161:efd949e8d536 174 device.user.decoder.canceled = 1; //Set canceled flag: do not try to decode until new data arrive
Diletant 161:efd949e8d536 175 device.user.decoder.count = 0;
Diletant 161:efd949e8d536 176 }
Diletant 161:efd949e8d536 177
Diletant 161:efd949e8d536 178 void DecodeFail(void) {
Diletant 161:efd949e8d536 179 //sprintf(tmp,"DecodeFail()\r\n"); WriteConcole(tmp); //Development message
Diletant 161:efd949e8d536 180
Diletant 161:efd949e8d536 181 device.user.decoder.error = 2;
Diletant 161:efd949e8d536 182 device.user.decoder.count = 1;
Diletant 161:efd949e8d536 183 DecodeEnd();
Diletant 161:efd949e8d536 184 }
Diletant 161:efd949e8d536 185
Diletant 161:efd949e8d536 186 void DecodeCRC(void) {
Diletant 161:efd949e8d536 187 uint16_t CRC = device.user.decoder.CRC;
Diletant 161:efd949e8d536 188 //sprintf(tmp,"CS1 %4x\r\n", device.host.decoder.CRC); WriteConcole(tmp); //Development message
Diletant 161:efd949e8d536 189
Diletant 161:efd949e8d536 190 device.user.decoder.CRC = Decode16(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 191 //sprintf(tmp,"CS2 %4x\r\n", device.host.decoder.CRC); WriteConcole(tmp); //Development message
Diletant 161:efd949e8d536 192
Diletant 161:efd949e8d536 193 if (CRC == device.user.decoder.CRC)
Diletant 161:efd949e8d536 194 DecodeEnd();
Diletant 161:efd949e8d536 195 else
Diletant 161:efd949e8d536 196 DecodeFail();
Diletant 161:efd949e8d536 197 }
Diletant 161:efd949e8d536 198
Diletant 161:efd949e8d536 199 void DecodeHashParam(uint32_t * size, void ** ref) {
Diletant 161:efd949e8d536 200 uint32_t hash = Decode32(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 201 for (uint32_t i = 0; i < HASH_PARAM_COUNT; i++){
Diletant 161:efd949e8d536 202 if (hashParamTable[i].hash == hash){
Diletant 161:efd949e8d536 203 *ref = hashParamTable[i].ref;
Diletant 161:efd949e8d536 204 *size = hashParamTable[i].size;
Diletant 161:efd949e8d536 205 return;
Diletant 161:efd949e8d536 206 }
Diletant 161:efd949e8d536 207 }
Diletant 161:efd949e8d536 208 DecodeFail();
Diletant 161:efd949e8d536 209 }
Diletant 161:efd949e8d536 210
Diletant 161:efd949e8d536 211 void DecodeFactoryReadParam(void) {
Diletant 161:efd949e8d536 212 void * ref;
Diletant 161:efd949e8d536 213 uint32_t size;
Diletant 161:efd949e8d536 214
Diletant 161:efd949e8d536 215 DecodeHashParam(&size, &ref); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 216 switch (device.user.decoder.code & 0x0f) {
Diletant 161:efd949e8d536 217 //Read 8 bit
Diletant 161:efd949e8d536 218 case 0x00:
Diletant 161:efd949e8d536 219 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 220 device.user.response.parametersCount = 1;
Diletant 161:efd949e8d536 221 device.user.response.parameters[0].ref = ref;
Diletant 161:efd949e8d536 222 device.user.response.parameters[0].size = size;
Diletant 161:efd949e8d536 223 device.user.response.message = MESSAGE_OK;
Diletant 161:efd949e8d536 224 break;
Diletant 161:efd949e8d536 225 //Read 16 bit
Diletant 161:efd949e8d536 226 case 0x01:
Diletant 161:efd949e8d536 227 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 228 device.user.response.parametersCount = 1;
Diletant 161:efd949e8d536 229 device.user.response.parameters[0].ref = ref;
Diletant 161:efd949e8d536 230 device.user.response.parameters[0].size = size;
Diletant 161:efd949e8d536 231 device.user.response.message = MESSAGE_OK;
Diletant 161:efd949e8d536 232 break;
Diletant 161:efd949e8d536 233 //Read 32 bit
Diletant 161:efd949e8d536 234 case 0x03:
Diletant 161:efd949e8d536 235 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 236 device.user.response.parametersCount = 1;
Diletant 161:efd949e8d536 237 device.user.response.parameters[0].ref = ref;
Diletant 161:efd949e8d536 238 device.user.response.parameters[0].size = size;
Diletant 161:efd949e8d536 239 device.user.response.message = MESSAGE_OK;
Diletant 161:efd949e8d536 240 break;
Diletant 161:efd949e8d536 241 //Read array
Diletant 161:efd949e8d536 242 case 0x0f:
Diletant 161:efd949e8d536 243 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 244 device.user.response.parametersCount = 1;
Diletant 161:efd949e8d536 245 device.user.response.parameters[0].ref = ref;
Diletant 161:efd949e8d536 246 device.user.response.parameters[0].size = size;
Diletant 161:efd949e8d536 247 device.user.response.message = MESSAGE_OK;
Diletant 161:efd949e8d536 248 break;
Diletant 161:efd949e8d536 249 default:
Diletant 161:efd949e8d536 250 DecodeFail();
Diletant 161:efd949e8d536 251 device.user.response.message = MESSAGE_UNKNOWN_REQUEST_CODE;
Diletant 161:efd949e8d536 252 device.user.response.parametersCount = 0;
Diletant 161:efd949e8d536 253 }
Diletant 161:efd949e8d536 254 }
Diletant 161:efd949e8d536 255
Diletant 161:efd949e8d536 256 void DecodeFactoryWriteParam(void) {
Diletant 161:efd949e8d536 257 void * ref;
Diletant 161:efd949e8d536 258 uint32_t size;
Diletant 161:efd949e8d536 259 uint8_t param8;
Diletant 161:efd949e8d536 260 uint16_t param16;
Diletant 161:efd949e8d536 261 uint32_t param32;
Diletant 161:efd949e8d536 262
Diletant 161:efd949e8d536 263 DecodeHashParam(&size, &ref); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 264 switch (device.user.decoder.code & 0x0f) {
Diletant 161:efd949e8d536 265 //Write 8 bit
Diletant 161:efd949e8d536 266 case 0x00:
Diletant 161:efd949e8d536 267 param8 = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 268 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 269 *((uint8_t *)ref) = param8;
Diletant 161:efd949e8d536 270 device.user.response.message = MESSAGE_OK;
Diletant 161:efd949e8d536 271 device.user.response.parametersCount = 0;
Diletant 161:efd949e8d536 272 break;
Diletant 161:efd949e8d536 273 //Write 16 bit
Diletant 161:efd949e8d536 274 case 0x01:
Diletant 161:efd949e8d536 275 param16 = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 276 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 277 *((uint16_t *)ref) = param16;
Diletant 161:efd949e8d536 278 device.user.response.message = MESSAGE_OK;
Diletant 161:efd949e8d536 279 device.user.response.parametersCount = 0;
Diletant 161:efd949e8d536 280 break;
Diletant 161:efd949e8d536 281 //Write 32 bit
Diletant 161:efd949e8d536 282 case 0x03:
Diletant 161:efd949e8d536 283 param32 = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 284 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 285 *((uint32_t *)ref) = param32;
Diletant 161:efd949e8d536 286 device.user.response.message = MESSAGE_OK;
Diletant 161:efd949e8d536 287 device.user.response.parametersCount = 0;
Diletant 161:efd949e8d536 288 break;
Diletant 161:efd949e8d536 289 //Write array
Diletant 161:efd949e8d536 290 case 0x0f:
Diletant 161:efd949e8d536 291 param16 = Decode16(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 292 for (uint16_t i = 0; i < param16; i++){
Diletant 161:efd949e8d536 293 param8 = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 294 *(((uint8_t *)ref + i)) = param8;
Diletant 161:efd949e8d536 295 }
Diletant 161:efd949e8d536 296 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 297 device.user.response.message = MESSAGE_OK;
Diletant 161:efd949e8d536 298 device.user.response.parametersCount = 0;
Diletant 161:efd949e8d536 299 break;
Diletant 161:efd949e8d536 300 default:
Diletant 161:efd949e8d536 301 DecodeFail();
Diletant 161:efd949e8d536 302 device.user.response.message = MESSAGE_UNKNOWN_REQUEST_CODE;
Diletant 161:efd949e8d536 303 device.user.response.parametersCount = 0;
Diletant 161:efd949e8d536 304 }
Diletant 161:efd949e8d536 305 }
Diletant 161:efd949e8d536 306
Diletant 161:efd949e8d536 307 void DecodeFactoryFunctionCall(uint16_t parametersLength) {
Diletant 161:efd949e8d536 308 uint32_t hash = Decode32(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 309 for (uint32_t i = 0; i < HASH_FUNC_COUNT; i++){
Diletant 161:efd949e8d536 310 if (hashFuncTable[i].hash == hash){
Diletant 161:efd949e8d536 311 void * ref = hashFuncTable[i].ref;
Diletant 161:efd949e8d536 312 uint32_t resultSize = hashFuncTable[i].resultSize;
Diletant 161:efd949e8d536 313 uint32_t paramCount = hashFuncTable[i].paramCount;
Diletant 161:efd949e8d536 314 if (paramCount == parametersLength){
Diletant 161:efd949e8d536 315 if (paramCount == 0){
Diletant 161:efd949e8d536 316 //FunctionCall(ref);
Diletant 161:efd949e8d536 317 ((void (*)())ref)();
Diletant 161:efd949e8d536 318 return;
Diletant 161:efd949e8d536 319 } else if (paramCount == 1){
Diletant 161:efd949e8d536 320 ((void (*)())ref)(device.user.decoder.param0);
Diletant 161:efd949e8d536 321 return;
Diletant 161:efd949e8d536 322 } else if (paramCount == 2){
Diletant 161:efd949e8d536 323 ((void (*)())ref)(device.user.decoder.param0, device.user.decoder.param1);
Diletant 161:efd949e8d536 324 return;
Diletant 161:efd949e8d536 325 } else if (paramCount == 3){
Diletant 161:efd949e8d536 326 ((void (*)())ref)(device.user.decoder.param0, device.user.decoder.param1, device.user.decoder.param2);
Diletant 161:efd949e8d536 327 return;
Diletant 161:efd949e8d536 328 } else if (paramCount == 4){
Diletant 161:efd949e8d536 329 ((void (*)())ref)(device.user.decoder.param0, device.user.decoder.param1, device.user.decoder.param2, device.user.decoder.param3);
Diletant 161:efd949e8d536 330 return;
Diletant 161:efd949e8d536 331 }
Diletant 161:efd949e8d536 332 }
Diletant 161:efd949e8d536 333 }
Diletant 161:efd949e8d536 334 }
Diletant 161:efd949e8d536 335 DecodeFail();
Diletant 161:efd949e8d536 336 }
Diletant 161:efd949e8d536 337
Diletant 161:efd949e8d536 338 void DecodeFactory(void) {
Diletant 161:efd949e8d536 339 //sprintf(tmp," DecodeFactory()\r\n"); WriteConcole(tmp); //Development message
Diletant 161:efd949e8d536 340 DecodeExtentionCode(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 341
Diletant 161:efd949e8d536 342 switch (device.user.decoder.code & 0xf0) {
Diletant 161:efd949e8d536 343 //Read param
Diletant 161:efd949e8d536 344 case 0x00:
Diletant 161:efd949e8d536 345 DecodeFactoryReadParam();
Diletant 161:efd949e8d536 346 break;
Diletant 161:efd949e8d536 347 //Write param
Diletant 161:efd949e8d536 348 case 0x10:
Diletant 161:efd949e8d536 349 DecodeFactoryWriteParam();
Diletant 161:efd949e8d536 350 break;
Diletant 161:efd949e8d536 351 //Set function parameter by immediate value
Diletant 161:efd949e8d536 352 case 0x20:
Diletant 161:efd949e8d536 353 break;
Diletant 161:efd949e8d536 354 //Set function parameter by variable value
Diletant 161:efd949e8d536 355 case 0x30:
Diletant 161:efd949e8d536 356 break;
Diletant 161:efd949e8d536 357 //Set function parameter by variable reference
Diletant 161:efd949e8d536 358 case 0x40:
Diletant 161:efd949e8d536 359 break;
Diletant 161:efd949e8d536 360 //Call function - no parameters
Diletant 161:efd949e8d536 361 case 0x50:
Diletant 161:efd949e8d536 362 case 0x51:
Diletant 161:efd949e8d536 363 case 0x52:
Diletant 161:efd949e8d536 364 case 0x53:
Diletant 161:efd949e8d536 365 case 0x54:
Diletant 161:efd949e8d536 366 DecodeFactoryFunctionCall(device.user.decoder.code & 0x0f);
Diletant 161:efd949e8d536 367 break;
Diletant 161:efd949e8d536 368 //Read flash
Diletant 161:efd949e8d536 369 case 0x60:
Diletant 161:efd949e8d536 370 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 371 DeviceFlashReadAll();
Diletant 161:efd949e8d536 372 device.user.response.message = MESSAGE_OK;
Diletant 161:efd949e8d536 373 device.user.response.parametersCount = 0;
Diletant 161:efd949e8d536 374 break;
Diletant 161:efd949e8d536 375 //Write flash
Diletant 161:efd949e8d536 376 case 0x70:
Diletant 161:efd949e8d536 377 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 378 DeviceFlashWriteAll();
Diletant 161:efd949e8d536 379 device.user.response.message = MESSAGE_OK;
Diletant 161:efd949e8d536 380 device.user.response.parametersCount = 0;
Diletant 161:efd949e8d536 381 break;
Diletant 161:efd949e8d536 382 default:
Diletant 161:efd949e8d536 383 DecodeFail();
Diletant 161:efd949e8d536 384 device.user.response.message = MESSAGE_UNKNOWN_REQUEST_CODE;
Diletant 161:efd949e8d536 385 }
Diletant 161:efd949e8d536 386 }
Diletant 161:efd949e8d536 387
Diletant 161:efd949e8d536 388 void DecodeDeviceMode(void) {
Diletant 161:efd949e8d536 389 uint8_t mode = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 390 if ((mode > 0) && (mode < 7)){
Diletant 161:efd949e8d536 391 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 177:672ef279c8e0 392
Diletant 182:2bd8ec44998f 393 //sprintf(device.service.buffer, "Dev_Mode %02x\r\n", mode); WriteConcole(); //Development message
Diletant 177:672ef279c8e0 394
Diletant 161:efd949e8d536 395 switch (mode) {
Diletant 177:672ef279c8e0 396 case 1:
Diletant 177:672ef279c8e0 397 //DM_INT_10KHZ_LATCH: latch by pulses 10 kHz (power on default mode)
Diletant 177:672ef279c8e0 398 device.counters.latch.state.enabled = 0;//Internal latch
Diletant 177:672ef279c8e0 399 //TODO: should switch meander/dither latched counters here or ignore command and continue to use use RgConB setting instead?
Diletant 177:672ef279c8e0 400 break;
Diletant 177:672ef279c8e0 401 case 2:
Diletant 177:672ef279c8e0 402 //DM_INT_SIGN_MEANDER_LATCH: latch by signed meander pulses
Diletant 177:672ef279c8e0 403 device.counters.latch.state.enabled = 0;//Internal latch
Diletant 177:672ef279c8e0 404 //TODO: should switch meander/dither latched counters here or ignore command and continue to use use RgConB setting instead?
Diletant 177:672ef279c8e0 405 break;
Diletant 177:672ef279c8e0 406 case 3:
Diletant 177:672ef279c8e0 407 //DM_EXT_LATCH_DELTA_PS_LINE: external latch mode with B_Delta_PS format data and RS422 request by command B_Delta_PS
Diletant 177:672ef279c8e0 408 device.counters.latch.state.enabled = 1;//External latch
Diletant 177:672ef279c8e0 409 device.counters.latch.state.signal = 0; //RS422 latch signal
Diletant 177:672ef279c8e0 410 device.counters.latch.state.format = 0; //DeltaPS output format
Diletant 177:672ef279c8e0 411 break;
Diletant 177:672ef279c8e0 412 case 4:
Diletant 177:672ef279c8e0 413 //DM_EXT_LATCH_DELTA_PS_PULSE: external latch mode with B_Delta_PS format data and latch pulse request
Diletant 177:672ef279c8e0 414 device.counters.latch.state.enabled = 1;//External latch
Diletant 177:672ef279c8e0 415 device.counters.latch.state.signal = 1; //Wire latch signal
Diletant 177:672ef279c8e0 416 device.counters.latch.state.format = 0; //DeltaPS output format
Diletant 177:672ef279c8e0 417 break;
Diletant 177:672ef279c8e0 418 case 5:
Diletant 177:672ef279c8e0 419 //DM_EXT_LATCH_DELTA_BINS_LINE: external latch mode with B_Delta_BINS format data and RS422 request by command B_Delta_BINS
Diletant 177:672ef279c8e0 420 device.counters.latch.state.enabled = 1;//External latch
Diletant 177:672ef279c8e0 421 device.counters.latch.state.signal = 0; //RS422 latch signal
Diletant 177:672ef279c8e0 422 device.counters.latch.state.format = 1; //DeltaBINS output format
Diletant 177:672ef279c8e0 423 break;
Diletant 177:672ef279c8e0 424 case 6:
Diletant 177:672ef279c8e0 425 //DM_EXT_LATCH_DELTA_BINS_PULSE: external latch mode with B_Delta_BINS format data and latch pulse request
Diletant 177:672ef279c8e0 426 device.counters.latch.state.enabled = 1;//External latch
Diletant 177:672ef279c8e0 427 device.counters.latch.state.signal = 1; //Wire latch signal
Diletant 177:672ef279c8e0 428 device.counters.latch.state.format = 1; //DeltaBINS output format
Diletant 177:672ef279c8e0 429 break;
Diletant 161:efd949e8d536 430 }
Diletant 161:efd949e8d536 431 } else {
Diletant 161:efd949e8d536 432 DecodeFail();
Diletant 161:efd949e8d536 433 }
Diletant 161:efd949e8d536 434 }
Diletant 161:efd949e8d536 435
Diletant 161:efd949e8d536 436 void DecodeBITMode(void) {
Diletant 161:efd949e8d536 437 //In commandset.c - look as useless: set not used Is_BIT and BIT_Number variables
Diletant 161:efd949e8d536 438 //Consume required amount of input:
Diletant 161:efd949e8d536 439 Decode8(); if (device.user.decoder.error) return; //Is_BIT = 1/0;
Diletant 161:efd949e8d536 440 Decode8(); if (device.user.decoder.error) return; //BIT_number = (long)(rcv_buf[4] & 0x00FF) << 24;
Diletant 161:efd949e8d536 441 Decode8(); if (device.user.decoder.error) return; //BIT_number |= (long)(rcv_buf[5] & 0x00FF) << 16;
Diletant 161:efd949e8d536 442 Decode8(); if (device.user.decoder.error) return; //BIT_number |= (long)(rcv_buf[6] & 0x00FF) << 8;
Diletant 161:efd949e8d536 443 Decode8(); if (device.user.decoder.error) return; //BIT_number |= (long)(rcv_buf[7] & 0x00FF);
Diletant 161:efd949e8d536 444 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 445 }
Diletant 161:efd949e8d536 446
Diletant 161:efd949e8d536 447 void DecodeDelta(void) {
Diletant 161:efd949e8d536 448 //Same for DELTA_PS,DELTA_BINS,DELTA_SF - only code different and it processed already
Diletant 161:efd949e8d536 449 uint8_t mode = Decode8(); if (device.user.decoder.error) return;
Diletant 177:672ef279c8e0 450
Diletant 182:2bd8ec44998f 451 //sprintf(device.service.buffer, "Delta %02x\r\n", mode); WriteConcole(); //Development message
Diletant 177:672ef279c8e0 452
Diletant 182:2bd8ec44998f 453 //if ((mode & 0x0f) == 0){ //DELTA_PS,DELTA_BINS
Diletant 182:2bd8ec44998f 454 if ((mode & 0x0e) == 0){ //DELTA_PS,DELTA_BINS,DELTA_SF
Diletant 161:efd949e8d536 455 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 456 //SRgR bits 4-5 - reponse rate
Diletant 182:2bd8ec44998f 457 uint32_t baud;
Diletant 161:efd949e8d536 458 switch ((mode >> 5) & 0x03){
Diletant 182:2bd8ec44998f 459 case 0: baud = 38400; break;
Diletant 182:2bd8ec44998f 460 case 1: baud = 115200; break;
Diletant 182:2bd8ec44998f 461 case 2: baud = 460800; break;
Diletant 182:2bd8ec44998f 462 case 3: baud = 921600; break;
Diletant 182:2bd8ec44998f 463 default: baud = 38400;
Diletant 161:efd949e8d536 464 }
Diletant 182:2bd8ec44998f 465 userSetBaudRate(baud);
Diletant 182:2bd8ec44998f 466 //Not supported
Diletant 182:2bd8ec44998f 467 //if (mode & 0x04) {
Diletant 182:2bd8ec44998f 468 // device.user.request.rate = device.user.response.rate;
Diletant 182:2bd8ec44998f 469 //} else {
Diletant 182:2bd8ec44998f 470 // device.user.request.rate = 38400;
Diletant 182:2bd8ec44998f 471 //}
Diletant 161:efd949e8d536 472 if (mode & 0x01) { //DELTA_SF
Diletant 177:672ef279c8e0 473 device.counters.latch.state.reset = 0;
Diletant 161:efd949e8d536 474 } else {
Diletant 177:672ef279c8e0 475 device.counters.latch.state.reset = 1;
Diletant 161:efd949e8d536 476 }
Diletant 177:672ef279c8e0 477
Diletant 161:efd949e8d536 478 if (device.user.decoder.address == device.user.address) {
Diletant 161:efd949e8d536 479 if (mode & 0x80) {
Diletant 177:672ef279c8e0 480 //Reset device counters here
Diletant 177:672ef279c8e0 481 device.counters.dither.state.angle = 0;
Diletant 177:672ef279c8e0 482
Diletant 161:efd949e8d536 483 device.user.response.counter = 0;
Diletant 161:efd949e8d536 484 device.user.response.trigger = 2000; //2000 mks - 500Hz
Diletant 161:efd949e8d536 485 device.user.response.type = RESPONSE_PERIODIC; //Override default type
Diletant 161:efd949e8d536 486 device.user.response.packet = 0;
Diletant 161:efd949e8d536 487 }
Diletant 161:efd949e8d536 488 }
Diletant 161:efd949e8d536 489 } else {
Diletant 161:efd949e8d536 490 DecodeFail();
Diletant 161:efd949e8d536 491 }
Diletant 161:efd949e8d536 492 }
Diletant 161:efd949e8d536 493
Diletant 161:efd949e8d536 494 void DecodeMaintenanceMode(void) {
Diletant 161:efd949e8d536 495 uint8_t version = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 496 if (version == 0x99) {
Diletant 161:efd949e8d536 497 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 498 device.user.decoder.version = 0;
Diletant 177:672ef279c8e0 499
Diletant 182:2bd8ec44998f 500 userSetBaudRate(38400);
Diletant 182:2bd8ec44998f 501
Diletant 182:2bd8ec44998f 502 //sprintf(device.service.buffer, "MaintenanceMode()\r\n"); WriteConcole(); //Development message
Diletant 161:efd949e8d536 503 } else {
Diletant 161:efd949e8d536 504 DecodeFail();
Diletant 161:efd949e8d536 505 }
Diletant 161:efd949e8d536 506 }
Diletant 161:efd949e8d536 507
Diletant 161:efd949e8d536 508 void DecodeMBasic(void) {
Diletant 161:efd949e8d536 509 DecodeExtentionCode(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 510 switch (device.user.decoder.code) {
Diletant 161:efd949e8d536 511 case M0_CLEAR:
Diletant 161:efd949e8d536 512 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 513 DoMaintenanceClear();
Diletant 161:efd949e8d536 514 break;
Diletant 161:efd949e8d536 515 case M0_MIRROR:
Diletant 161:efd949e8d536 516 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 517 DoMaintenanceMirror();
Diletant 161:efd949e8d536 518 break;
Diletant 161:efd949e8d536 519 case M0_LDPAR_F:
Diletant 161:efd949e8d536 520 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 521 DeviceFlashReadAll();
Diletant 167:bedc0a9d559a 522 DeviceInitState();
Diletant 161:efd949e8d536 523 break;
Diletant 161:efd949e8d536 524 case M0_LDPAR_D:
Diletant 161:efd949e8d536 525 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 167:bedc0a9d559a 526 DeviceInitDefaultSettings();
Diletant 167:bedc0a9d559a 527 DeviceInitState();
Diletant 161:efd949e8d536 528 break;
Diletant 161:efd949e8d536 529 case M0_START:
Diletant 161:efd949e8d536 530 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 531 DoMaintenanceStart();
Diletant 161:efd949e8d536 532 break;
Diletant 161:efd949e8d536 533 case M0_STOP:
Diletant 161:efd949e8d536 534 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 535 DoMaintenanceStop();
Diletant 161:efd949e8d536 536 break;
Diletant 161:efd949e8d536 537 case M0_PULSE:
Diletant 161:efd949e8d536 538 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 539 DeviceStartLightUp();
Diletant 161:efd949e8d536 540 break;
Diletant 161:efd949e8d536 541 default: DecodeFail();
Diletant 161:efd949e8d536 542 }
Diletant 161:efd949e8d536 543 }
Diletant 161:efd949e8d536 544
Diletant 161:efd949e8d536 545 void DoMaintenanceClear(void) {
Diletant 161:efd949e8d536 546 //TODO
Diletant 161:efd949e8d536 547 }
Diletant 161:efd949e8d536 548
Diletant 161:efd949e8d536 549 void DoMaintenanceMirror(void) {
Diletant 161:efd949e8d536 550 //TODO
Diletant 161:efd949e8d536 551 }
Diletant 161:efd949e8d536 552
Diletant 161:efd949e8d536 553 void DoMaintenanceStart(void) {
Diletant 161:efd949e8d536 554 //TODO
Diletant 161:efd949e8d536 555 }
Diletant 161:efd949e8d536 556
Diletant 161:efd949e8d536 557 void DoMaintenanceStop(void) {
Diletant 161:efd949e8d536 558 //TODO
Diletant 161:efd949e8d536 559 }
Diletant 161:efd949e8d536 560
Diletant 182:2bd8ec44998f 561 //Deprecated
Diletant 161:efd949e8d536 562 void DecodeMRate(void) {
Diletant 161:efd949e8d536 563 uint8_t mode = Decode8(); if (device.user.decoder.error) return;
Diletant 177:672ef279c8e0 564 if ((mode & 0x1f) == 1){
Diletant 161:efd949e8d536 565 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 566
Diletant 182:2bd8ec44998f 567 //sprintf(device.service.buffer, "MRate %02x\r\n", mode); WriteConcole(); //Development message
Diletant 177:672ef279c8e0 568
Diletant 177:672ef279c8e0 569 device.user.response.code |= mode & 0x1f;
Diletant 177:672ef279c8e0 570
Diletant 182:2bd8ec44998f 571 uint32_t baud;
Diletant 177:672ef279c8e0 572 switch ((mode>>5) & 0x03) {
Diletant 182:2bd8ec44998f 573 case 0: baud = 38400; break;
Diletant 182:2bd8ec44998f 574 case 1: baud = 115200; break;
Diletant 182:2bd8ec44998f 575 default: baud = 38400;
Diletant 177:672ef279c8e0 576 }
Diletant 182:2bd8ec44998f 577 userSetBaudRate(baud);
Diletant 177:672ef279c8e0 578
Diletant 177:672ef279c8e0 579 if (mode & 0x80) {
Diletant 177:672ef279c8e0 580 //Reset device counters here
Diletant 177:672ef279c8e0 581 device.counters.dither.state.angle = 0;
Diletant 177:672ef279c8e0 582 device.counters.meander.state.angle[0] = 0;
Diletant 183:c7a9c309086c 583 device.counters.meander.state.angle[1] = 0;
Diletant 177:672ef279c8e0 584
Diletant 177:672ef279c8e0 585 device.user.response.type = RESPONSE_PERIODIC; //Override default type
Diletant 177:672ef279c8e0 586 device.user.response.trigger = 1000000; //1000000mks - 1Hz
Diletant 183:c7a9c309086c 587 //device.user.response.counter = device.user.response.trigger; //Ask_Gld expect immediate answer?
Diletant 183:c7a9c309086c 588 device.user.response.counter = 0; //No?
Diletant 177:672ef279c8e0 589 }
Diletant 177:672ef279c8e0 590 } else {
Diletant 177:672ef279c8e0 591 DecodeFail();
Diletant 177:672ef279c8e0 592 }
Diletant 177:672ef279c8e0 593 }
Diletant 177:672ef279c8e0 594
Diletant 177:672ef279c8e0 595 /* Template for MRate2,...
Diletant 177:672ef279c8e0 596 void DecodeMRate(void) {
Diletant 177:672ef279c8e0 597 uint8_t mode = Decode8(); if (device.user.decoder.error) return;
Diletant 182:2bd8ec44998f 598 if ((mode & 0x1f) == 0){
Diletant 177:672ef279c8e0 599 //MRate
Diletant 177:672ef279c8e0 600 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 177:672ef279c8e0 601
Diletant 177:672ef279c8e0 602 device.user.response.code |= mode & 0x1f;
Diletant 161:efd949e8d536 603
Diletant 161:efd949e8d536 604 switch ((mode>>5) & 0x03) {
Diletant 161:efd949e8d536 605 case 0: device.user.response.rate = 38400; break;
Diletant 161:efd949e8d536 606 case 1: device.user.response.rate = 115200; break;
Diletant 161:efd949e8d536 607 case 2: device.user.response.rate = 460800; break;
Diletant 161:efd949e8d536 608 case 3: device.user.response.rate = 921600; break;
Diletant 161:efd949e8d536 609 }
Diletant 161:efd949e8d536 610
Diletant 161:efd949e8d536 611 if (mode & 0x80) {
Diletant 161:efd949e8d536 612 //TODO: reset device.counters here
Diletant 161:efd949e8d536 613 device.user.response.counter = 0;
Diletant 161:efd949e8d536 614 switch (mode & 0x03) {
Diletant 161:efd949e8d536 615 case 1: device.user.response.trigger = 1000000; break; //1 000 000 mks - 1Hz
Diletant 161:efd949e8d536 616 case 2: device.user.response.trigger = 3276700; break; //???
Diletant 161:efd949e8d536 617 case 3: device.user.response.trigger = 100; break; //100 mks - 10000Hz
Diletant 161:efd949e8d536 618 case 4: device.user.response.trigger = 800; break; //800 mks - 1250Hz
Diletant 161:efd949e8d536 619 case 7: device.user.response.trigger = 800; break; //800 mks - 1250Hz
Diletant 161:efd949e8d536 620 }
Diletant 161:efd949e8d536 621 device.user.response.type = RESPONSE_PERIODIC; //Override default type
Diletant 161:efd949e8d536 622 }
Diletant 161:efd949e8d536 623 } else {
Diletant 161:efd949e8d536 624 DecodeFail();
Diletant 161:efd949e8d536 625 }
Diletant 177:672ef279c8e0 626 }*/
Diletant 161:efd949e8d536 627
Diletant 161:efd949e8d536 628 void DecodeMStymul(void) {
Diletant 161:efd949e8d536 629 uint8_t param = Decode8(); if (device.user.decoder.error) return;
Diletant 182:2bd8ec44998f 630 if ((param & 0x18) == 0){
Diletant 161:efd949e8d536 631 uint8_t hi = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 632 uint8_t lo = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 633 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 634
Diletant 182:2bd8ec44998f 635 //sprintf(device.service.buffer, "MStymul %02x %02x %02x\r\n", param, hi, lo); WriteConcole(); //Development message
Diletant 177:672ef279c8e0 636
Diletant 161:efd949e8d536 637 device.user.decoder.code |= param & 0x04;
Diletant 182:2bd8ec44998f 638 userSetBaudRate(38400);
Diletant 161:efd949e8d536 639
Diletant 161:efd949e8d536 640 device.user.response.enabled = (param & 0x80) >> 7;
Diletant 161:efd949e8d536 641
Diletant 161:efd949e8d536 642 uint8_t channel = param & 0x03;
Diletant 161:efd949e8d536 643 if (param & 0x04) {
Diletant 161:efd949e8d536 644 uint32_t flags = (hi << 8) | lo;
Diletant 161:efd949e8d536 645 //TODO: write flags - only flag register 0 defined
Diletant 161:efd949e8d536 646 if (channel == 0){
Diletant 161:efd949e8d536 647 //Potentiometers data
Diletant 161:efd949e8d536 648 if (flags & 0x01){
Diletant 161:efd949e8d536 649 } else {
Diletant 161:efd949e8d536 650 }
Diletant 161:efd949e8d536 651 //Potentiometers data input enable/disable flag
Diletant 161:efd949e8d536 652 if (flags & 0x02){
Diletant 161:efd949e8d536 653 } else {
Diletant 161:efd949e8d536 654 }
Diletant 161:efd949e8d536 655 //Laser Up
Diletant 161:efd949e8d536 656 if (flags & 0x03){
Diletant 161:efd949e8d536 657 } else {
Diletant 161:efd949e8d536 658 }
Diletant 161:efd949e8d536 659 //Software reper
Diletant 161:efd949e8d536 660 if (flags & 0x04){
Diletant 161:efd949e8d536 661 } else {
Diletant 161:efd949e8d536 662 }
Diletant 161:efd949e8d536 663 }
Diletant 161:efd949e8d536 664 } else {
Diletant 161:efd949e8d536 665 uint32_t voltage = ((hi << 4) | (lo >> 4)); //TODO: do correct transformations
Diletant 161:efd949e8d536 666 //TODO: write DAC
Diletant 161:efd949e8d536 667 switch (channel){
Diletant 161:efd949e8d536 668 case 0://PLC regulator
Diletant 161:efd949e8d536 669 break;
Diletant 161:efd949e8d536 670 case 1://PLC modulator
Diletant 161:efd949e8d536 671 break;
Diletant 161:efd949e8d536 672 case 2://laser power regulator
Diletant 161:efd949e8d536 673 break;
Diletant 161:efd949e8d536 674 case 3://worms
Diletant 161:efd949e8d536 675 break;
Diletant 161:efd949e8d536 676 }
Diletant 161:efd949e8d536 677 }
Diletant 161:efd949e8d536 678 } else {
Diletant 161:efd949e8d536 679 DecodeFail();
Diletant 161:efd949e8d536 680 }
Diletant 161:efd949e8d536 681 }
Diletant 161:efd949e8d536 682
Diletant 161:efd949e8d536 683 void DecodeMReset(void) {
Diletant 161:efd949e8d536 684 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 685
Diletant 161:efd949e8d536 686 while (1); //Wait watch dog reset
Diletant 161:efd949e8d536 687 }
Diletant 161:efd949e8d536 688
Diletant 182:2bd8ec44998f 689 //Deprecated
Diletant 177:672ef279c8e0 690 void DecodeMCtlR(void) {
Diletant 161:efd949e8d536 691 uint8_t param = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 692 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 177:672ef279c8e0 693
Diletant 182:2bd8ec44998f 694 //sprintf(device.service.buffer, "MCtlR %02x\r\n", param); WriteConcole(); //Development message
Diletant 177:672ef279c8e0 695
Diletant 182:2bd8ec44998f 696 if ((param & 0x60) == 0)
Diletant 182:2bd8ec44998f 697 userSetBaudRate(38400);
Diletant 161:efd949e8d536 698 else
Diletant 182:2bd8ec44998f 699 userSetBaudRate(115200);
Diletant 182:2bd8ec44998f 700
Diletant 161:efd949e8d536 701 device.user.response.code |= param & 0x10;
Diletant 161:efd949e8d536 702 }
Diletant 161:efd949e8d536 703
Diletant 182:2bd8ec44998f 704 //Deprecated
Diletant 177:672ef279c8e0 705 void DecodeMCtlM(void) {
Diletant 161:efd949e8d536 706 uint8_t param = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 707 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 177:672ef279c8e0 708
Diletant 182:2bd8ec44998f 709 //sprintf(device.service.buffer, "MCtlM %02x\r\n", param); WriteConcole(); //Development message
Diletant 161:efd949e8d536 710
Diletant 182:2bd8ec44998f 711 if ((param & 0x60) == 0)
Diletant 182:2bd8ec44998f 712 userSetBaudRate(38400);
Diletant 161:efd949e8d536 713 else
Diletant 182:2bd8ec44998f 714 userSetBaudRate(115200);
Diletant 161:efd949e8d536 715
Diletant 161:efd949e8d536 716 uint8_t bit = param & 0x0f;
Diletant 182:2bd8ec44998f 717 uint8_t value = (param & 0x80) >> 7;
Diletant 182:2bd8ec44998f 718 if ((param & 0x10) == 0) {
Diletant 161:efd949e8d536 719 //RgConA - flags of regulator loops
Diletant 161:efd949e8d536 720 switch (bit){
Diletant 161:efd949e8d536 721 case 0://Laser switch
Diletant 161:efd949e8d536 722 //TODO
Diletant 161:efd949e8d536 723 break;
Diletant 161:efd949e8d536 724
Diletant 161:efd949e8d536 725 case 1://HFO loop switch
Diletant 161:efd949e8d536 726 device.isacs.regulator.state.enabled = value;
Diletant 161:efd949e8d536 727 break;
Diletant 161:efd949e8d536 728
Diletant 161:efd949e8d536 729 case 3://PLC loop switch
Diletant 161:efd949e8d536 730 device.plcs.regulator.state.enabled = value;
Diletant 161:efd949e8d536 731 break;
Diletant 161:efd949e8d536 732
Diletant 161:efd949e8d536 733 case 4://Modulator switch
Diletant 166:c3c0b8a90d81 734 //device.plcs.modulator.state.enabled = value;
Diletant 173:7f938afb0447 735 device.sequencer.output.analog.state.enabled = value;
Diletant 161:efd949e8d536 736 break;
Diletant 161:efd949e8d536 737
Diletant 161:efd949e8d536 738 case 5://Dither drive pulse width/output frequency loop switch
Diletant 173:7f938afb0447 739 device.dither.amplitude.state.enabled = value;
Diletant 161:efd949e8d536 740 break;
Diletant 161:efd949e8d536 741
Diletant 161:efd949e8d536 742 case 6://Dither drive oscillation frequency loop switch
Diletant 173:7f938afb0447 743 device.dither.frequency.state.enabled = value;
Diletant 161:efd949e8d536 744 break;
Diletant 161:efd949e8d536 745
Diletant 161:efd949e8d536 746 case 7: //All loops switch
Diletant 161:efd949e8d536 747 device.isacs.regulator.state.enabled = value;
Diletant 161:efd949e8d536 748 device.plcs.regulator.state.enabled = value;
Diletant 173:7f938afb0447 749 device.sequencer.output.analog.state.enabled = value;
Diletant 173:7f938afb0447 750 device.dither.amplitude.state.enabled = value;
Diletant 173:7f938afb0447 751 device.dither.frequency.state.enabled = value;
Diletant 161:efd949e8d536 752 break;
Diletant 161:efd949e8d536 753 }
Diletant 161:efd949e8d536 754 } else {
Diletant 161:efd949e8d536 755 //RgConB - counting mode: 00 - reference counters, 01 - dither counters and moving average filter
Diletant 161:efd949e8d536 756 switch (bit){
Diletant 161:efd949e8d536 757 case 0://Moving average filter
Diletant 182:2bd8ec44998f 758 device.counters.rate.state.source = value;
Diletant 182:2bd8ec44998f 759 #ifdef DEBUG_DECODER_INPUT
Diletant 182:2bd8ec44998f 760 if (value == 0)
Diletant 182:2bd8ec44998f 761 sprintf(device.service.buffer, "RgConB reset bit %1d\r\n", bit);
Diletant 182:2bd8ec44998f 762 else
Diletant 182:2bd8ec44998f 763 sprintf(device.service.buffer, "RgConB set bit %1d\r\n", bit);
Diletant 182:2bd8ec44998f 764 WriteConcole();
Diletant 182:2bd8ec44998f 765 #endif
Diletant 182:2bd8ec44998f 766 break;
Diletant 182:2bd8ec44998f 767
Diletant 182:2bd8ec44998f 768 case 1://Not used
Diletant 161:efd949e8d536 769 //TODO
Diletant 161:efd949e8d536 770 break;
Diletant 161:efd949e8d536 771
Diletant 182:2bd8ec44998f 772 case 2://Not used
Diletant 161:efd949e8d536 773 //TODO
Diletant 161:efd949e8d536 774 break;
Diletant 161:efd949e8d536 775 }
Diletant 161:efd949e8d536 776 }
Diletant 161:efd949e8d536 777
Diletant 161:efd949e8d536 778 device.user.response.code |= param & 0x10;
Diletant 161:efd949e8d536 779 }
Diletant 161:efd949e8d536 780
Diletant 182:2bd8ec44998f 781 //Deprecated
Diletant 161:efd949e8d536 782 void DecodeMADCR(void) {
Diletant 161:efd949e8d536 783 //TODO
Diletant 161:efd949e8d536 784 }
Diletant 161:efd949e8d536 785
Diletant 182:2bd8ec44998f 786 //Deprecated
Diletant 161:efd949e8d536 787 void DecodeMTmpW(void) {
Diletant 161:efd949e8d536 788 //Not compatible with new ADC
Diletant 161:efd949e8d536 789 //Just consume required amount of input:
Diletant 161:efd949e8d536 790 Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 791 Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 792 Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 793 Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 794 Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 795 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 796 }
Diletant 161:efd949e8d536 797
Diletant 182:2bd8ec44998f 798 //Deprecated
Diletant 161:efd949e8d536 799 void DecodeMTmpR(void) {
Diletant 161:efd949e8d536 800 //Not compatible with new ADC
Diletant 161:efd949e8d536 801 //Just consume required amount of input:
Diletant 161:efd949e8d536 802 Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 803 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 804 }
Diletant 161:efd949e8d536 805
Diletant 182:2bd8ec44998f 806 //Deprecated
Diletant 161:efd949e8d536 807 void DecodeMe5rW(void) {
Diletant 161:efd949e8d536 808 //TODO
Diletant 161:efd949e8d536 809 }
Diletant 161:efd949e8d536 810
Diletant 161:efd949e8d536 811 void DecodeMCntR(void) {
Diletant 177:672ef279c8e0 812 uint8_t param = Decode8(); if (device.user.decoder.error) return;
Diletant 177:672ef279c8e0 813 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 177:672ef279c8e0 814
Diletant 182:2bd8ec44998f 815 //sprintf(device.service.buffer, "MCntR %02x\r\n", param); WriteConcole(); //Development message
Diletant 177:672ef279c8e0 816
Diletant 182:2bd8ec44998f 817 if ((param & 0x60) == 0)
Diletant 182:2bd8ec44998f 818 userSetBaudRate(38400);
Diletant 177:672ef279c8e0 819 else
Diletant 182:2bd8ec44998f 820 userSetBaudRate(115200);
Diletant 182:2bd8ec44998f 821
Diletant 177:672ef279c8e0 822 if (param & 0x80) {
Diletant 177:672ef279c8e0 823 device.user.response.counter = 0;
Diletant 177:672ef279c8e0 824 device.user.response.trigger = 200; //200 mks - 500Hz
Diletant 177:672ef279c8e0 825 device.user.response.type = RESPONSE_PERIODIC; //Override default type
Diletant 177:672ef279c8e0 826 }
Diletant 161:efd949e8d536 827 }
Diletant 161:efd949e8d536 828
Diletant 182:2bd8ec44998f 829 //Deprecated
Diletant 161:efd949e8d536 830 void DecodeMFlgR(void) {
Diletant 161:efd949e8d536 831 //TODO
Diletant 161:efd949e8d536 832 }
Diletant 161:efd949e8d536 833
Diletant 182:2bd8ec44998f 834 //Deprecated
Diletant 161:efd949e8d536 835 void DecodeMVibW(void) {
Diletant 161:efd949e8d536 836 //TODO
Diletant 161:efd949e8d536 837 }
Diletant 161:efd949e8d536 838
Diletant 182:2bd8ec44998f 839 //Deprecated
Diletant 161:efd949e8d536 840 void DecodeMGphW(void) {
Diletant 183:c7a9c309086c 841 uint8_t reply = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 842 uint8_t gainA = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 843 uint8_t gainB = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 844 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 845 device.isacs.potentiometers.state.a = gainA;
Diletant 161:efd949e8d536 846 device.isacs.potentiometers.state.b = gainB;
Diletant 161:efd949e8d536 847 DeviceISACSSetPotentiometers();
Diletant 183:c7a9c309086c 848 if (!reply) device.user.response.enabled = 0;
Diletant 161:efd949e8d536 849 }
Diletant 161:efd949e8d536 850
Diletant 161:efd949e8d536 851 uint16_t GetCompatibilityValue(uint8_t index) {
Diletant 161:efd949e8d536 852
Diletant 161:efd949e8d536 853 return 0;
Diletant 161:efd949e8d536 854 }
Diletant 161:efd949e8d536 855
Diletant 182:2bd8ec44998f 856 //Deprecated
Diletant 161:efd949e8d536 857 void DecodeMParamR(void) {
Diletant 161:efd949e8d536 858 uint8_t index = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 859 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 860
Diletant 182:2bd8ec44998f 861 uint32_t param32;
Diletant 161:efd949e8d536 862 switch (index){
Diletant 161:efd949e8d536 863 case 0:
Diletant 177:672ef279c8e0 864 //My_Address s16 device address
Diletant 177:672ef279c8e0 865 device.user.response.message = device.user.address;
Diletant 177:672ef279c8e0 866 break;
Diletant 177:672ef279c8e0 867
Diletant 177:672ef279c8e0 868 case 1:
Diletant 177:672ef279c8e0 869 //HF_ref s16 value of the reference
Diletant 182:2bd8ec44998f 870 //int32_t device.isacs.regulator.settings.reference
Diletant 183:c7a9c309086c 871 device.user.response.message = param_HF_ref();
Diletant 177:672ef279c8e0 872 break;
Diletant 177:672ef279c8e0 873
Diletant 177:672ef279c8e0 874 case 2:
Diletant 177:672ef279c8e0 875 //HF_scl s16 HFO gain factor
Diletant 182:2bd8ec44998f 876 //int32_t device.isacs.regulator.settings.scale
Diletant 183:c7a9c309086c 877 device.user.response.message = param_HF_scl();
Diletant 177:672ef279c8e0 878 break;
Diletant 177:672ef279c8e0 879
Diletant 177:672ef279c8e0 880 case 3:
Diletant 177:672ef279c8e0 881 //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
Diletant 182:2bd8ec44998f 882 //int32_t device.isacs.output.settings.max
Diletant 183:c7a9c309086c 883 device.user.response.message = param_HF_min();
Diletant 177:672ef279c8e0 884 break;
Diletant 177:672ef279c8e0 885
Diletant 177:672ef279c8e0 886 case 4:
Diletant 177:672ef279c8e0 887 //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
Diletant 182:2bd8ec44998f 888 //int32_t device.isacs.output.settings.min
Diletant 183:c7a9c309086c 889 device.user.response.message = param_HF_max();
Diletant 177:672ef279c8e0 890 break;
Diletant 177:672ef279c8e0 891
Diletant 177:672ef279c8e0 892 case 5:
Diletant 177:672ef279c8e0 893 //RI_ref s16 not used (DS reference)
Diletant 177:672ef279c8e0 894 device.user.response.message = 0;
Diletant 177:672ef279c8e0 895 break;
Diletant 177:672ef279c8e0 896
Diletant 177:672ef279c8e0 897 case 6:
Diletant 177:672ef279c8e0 898 //RI_scl s16 not used (DS gain factor)
Diletant 177:672ef279c8e0 899 device.user.response.message = 0;
Diletant 177:672ef279c8e0 900 break;
Diletant 177:672ef279c8e0 901
Diletant 177:672ef279c8e0 902 case 7:
Diletant 177:672ef279c8e0 903 //WP_ref s16 PLCS reference
Diletant 177:672ef279c8e0 904 //int32_t device.plcs.regulator.reference
Diletant 183:c7a9c309086c 905 device.user.response.message = param_WP_ref();
Diletant 177:672ef279c8e0 906 break;
Diletant 177:672ef279c8e0 907
Diletant 177:672ef279c8e0 908 case 8:
Diletant 177:672ef279c8e0 909 //WP_scl s16 PLCS gain factor (1.15) 5..20
Diletant 177:672ef279c8e0 910 //int32_t device.plcs.regulator.scale
Diletant 183:c7a9c309086c 911 device.user.response.message = param_WP_scl();
Diletant 177:672ef279c8e0 912 break;
Diletant 177:672ef279c8e0 913
Diletant 177:672ef279c8e0 914 case 9:
Diletant 177:672ef279c8e0 915 //WP_mdy s16 PLCS reset delay in 10kHz cycles
Diletant 183:c7a9c309086c 916 //device.plcs.reset.up/down.state.duration
Diletant 183:c7a9c309086c 917 device.user.response.message = param_WP_mdy();
Diletant 177:672ef279c8e0 918 break;
Diletant 177:672ef279c8e0 919
Diletant 177:672ef279c8e0 920 case 10:
Diletant 177:672ef279c8e0 921 //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
Diletant 183:c7a9c309086c 922 //device.plcs.reset.up.state.trigger
Diletant 183:c7a9c309086c 923 device.user.response.message = param_WP_rup();
Diletant 177:672ef279c8e0 924 break;
Diletant 177:672ef279c8e0 925
Diletant 177:672ef279c8e0 926 case 11:
Diletant 177:672ef279c8e0 927 //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
Diletant 183:c7a9c309086c 928 //device.plcs.reset.down.state.trigger
Diletant 183:c7a9c309086c 929 device.user.response.message = param_WP_rdw();
Diletant 177:672ef279c8e0 930 break;
Diletant 177:672ef279c8e0 931
Diletant 177:672ef279c8e0 932 case 12:
Diletant 177:672ef279c8e0 933 //VB_phs s16 the phase delay parameter of the dither drive PLL
Diletant 182:2bd8ec44998f 934 //0
Diletant 177:672ef279c8e0 935 device.user.response.message = 0;
Diletant 177:672ef279c8e0 936 break;
Diletant 177:672ef279c8e0 937
Diletant 177:672ef279c8e0 938 case 13:
Diletant 177:672ef279c8e0 939 //VB_scl s16 the gain factor (1.15) of the dither drive PLL
Diletant 182:2bd8ec44998f 940 param32 = device.dither.frequency.settings.scale >> 16;
Diletant 182:2bd8ec44998f 941 device.user.response.message = (uint16_t)param32;
Diletant 177:672ef279c8e0 942 break;
Diletant 177:672ef279c8e0 943
Diletant 177:672ef279c8e0 944 case 14:
Diletant 177:672ef279c8e0 945 //VB_N vbd ttf:dither drive oscillation central frequency divider 7680000/F; value:dither drive central oscillation frequency
Diletant 182:2bd8ec44998f 946 device.user.response.message = param_VB_N();
Diletant 177:672ef279c8e0 947 break;
Diletant 177:672ef279c8e0 948
Diletant 177:672ef279c8e0 949 case 15:
Diletant 177:672ef279c8e0 950 //VB_Nmin vbd ttf:minimum dither drive oscillation frequency divider 7680000/F; value:maximum dither drive oscillation frequency
Diletant 182:2bd8ec44998f 951 device.user.response.message = param_VB_Nmin();
Diletant 177:672ef279c8e0 952 break;
Diletant 177:672ef279c8e0 953
Diletant 177:672ef279c8e0 954 case 16:
Diletant 177:672ef279c8e0 955 //VB_Nmax vbd ttf:maximum dither drive oscillation frequency divider 7680000/F; value:minimum dither drive oscillation frequency
Diletant 182:2bd8ec44998f 956 device.user.response.message = param_VB_Nmax();
Diletant 177:672ef279c8e0 957 break;
Diletant 177:672ef279c8e0 958
Diletant 177:672ef279c8e0 959 case 17:
Diletant 177:672ef279c8e0 960 //VB_Fdf s32 double output frequency (Hi)
Diletant 182:2bd8ec44998f 961 param32 = param_VB_Fdf() >> 16;
Diletant 182:2bd8ec44998f 962 device.user.response.message = (uint16_t)param32;
Diletant 177:672ef279c8e0 963 break;
Diletant 177:672ef279c8e0 964
Diletant 177:672ef279c8e0 965 case 18:
Diletant 177:672ef279c8e0 966 //VB_Fdf s32 double output frequency (Lo)
Diletant 182:2bd8ec44998f 967 param32 = param_VB_Fdf() & 0xffff;
Diletant 182:2bd8ec44998f 968 device.user.response.message = (uint16_t)param32;
Diletant 177:672ef279c8e0 969 break;
Diletant 177:672ef279c8e0 970
Diletant 177:672ef279c8e0 971 case 19:
Diletant 177:672ef279c8e0 972 //VB_Fsc s16 the gain factor of the frequency regulator
Diletant 182:2bd8ec44998f 973 param32 = device.dither.amplitude.settings.scale >> 16;
Diletant 182:2bd8ec44998f 974 device.user.response.message = (uint16_t)param32;
Diletant 177:672ef279c8e0 975 break;
Diletant 177:672ef279c8e0 976
Diletant 177:672ef279c8e0 977 case 20:
Diletant 177:672ef279c8e0 978 //VB_Tmin tau minimum pulse width of the dither drive; value=ttf/15360000 in seconds
Diletant 183:c7a9c309086c 979 device.user.response.message = param_VB_Tmin();
Diletant 177:672ef279c8e0 980 break;
Diletant 177:672ef279c8e0 981
Diletant 177:672ef279c8e0 982 case 21:
Diletant 177:672ef279c8e0 983 //VB_Tmax tau maximum pulse width of the dither drive; value=ttf/15360000 in seconds
Diletant 182:2bd8ec44998f 984 device.user.response.message = param_VB_Tmax();
Diletant 177:672ef279c8e0 985 break;
Diletant 177:672ef279c8e0 986
Diletant 177:672ef279c8e0 987 case 22:
Diletant 177:672ef279c8e0 988 //VB_tau tau pulse width of the dither drive without noise or current pulse width of the dither drive with noise; value=ttf/15360000 in seconds
Diletant 182:2bd8ec44998f 989 device.user.response.message = param_VB_tau();
Diletant 177:672ef279c8e0 990 break;
Diletant 177:672ef279c8e0 991
Diletant 177:672ef279c8e0 992 case 23:
Diletant 177:672ef279c8e0 993 //VBN_Tzd s16 adjusted noise period
Diletant 182:2bd8ec44998f 994 //int32_t device.dither.noise.settings.period
Diletant 183:c7a9c309086c 995 device.user.response.message = param_VBN_Tzd();
Diletant 177:672ef279c8e0 996 break;
Diletant 177:672ef279c8e0 997
Diletant 177:672ef279c8e0 998 case 24:
Diletant 177:672ef279c8e0 999 //VBN_Ran s16 range of the random component of noise
Diletant 182:2bd8ec44998f 1000 //int32_t device.dither.noise.settings.range
Diletant 183:c7a9c309086c 1001 device.user.response.message = param_VBN_Ran();
Diletant 177:672ef279c8e0 1002 break;
Diletant 177:672ef279c8e0 1003
Diletant 177:672ef279c8e0 1004 case 25:
Diletant 183:c7a9c309086c 1005 //VBN_k s16 adjusted noise constant: pulse width = VB_tau +/- VBN_k
Diletant 182:2bd8ec44998f 1006 //int32_t device.dither.noise.settings.amplitude
Diletant 183:c7a9c309086c 1007 device.user.response.message = param_VBN_k();
Diletant 177:672ef279c8e0 1008 break;
Diletant 177:672ef279c8e0 1009
Diletant 177:672ef279c8e0 1010 case 26:
Diletant 177:672ef279c8e0 1011 case 27:
Diletant 177:672ef279c8e0 1012 case 28:
Diletant 177:672ef279c8e0 1013 case 29:
Diletant 177:672ef279c8e0 1014 case 30:
Diletant 177:672ef279c8e0 1015 case 31:
Diletant 177:672ef279c8e0 1016 case 32:
Diletant 177:672ef279c8e0 1017 case 33:
Diletant 177:672ef279c8e0 1018 case 34:
Diletant 177:672ef279c8e0 1019 case 35:
Diletant 177:672ef279c8e0 1020 case 36:
Diletant 177:672ef279c8e0 1021 case 37:
Diletant 177:672ef279c8e0 1022 case 38:
Diletant 177:672ef279c8e0 1023 case 39:
Diletant 177:672ef279c8e0 1024 case 40:
Diletant 177:672ef279c8e0 1025 case 41:
Diletant 177:672ef279c8e0 1026 case 42:
Diletant 177:672ef279c8e0 1027 //Reserved s16 not used
Diletant 177:672ef279c8e0 1028 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1029 break;
Diletant 177:672ef279c8e0 1030
Diletant 177:672ef279c8e0 1031 case 43:
Diletant 177:672ef279c8e0 1032 case 44:
Diletant 177:672ef279c8e0 1033 case 45:
Diletant 177:672ef279c8e0 1034 case 46:
Diletant 177:672ef279c8e0 1035 case 47:
Diletant 177:672ef279c8e0 1036 case 48:
Diletant 183:c7a9c309086c 1037 //Tmp_bias0[0] ... Tmp_bias0[5] s16 Tmp_bias[6]: an array of shifts of the 0..5 temperature sensors
Diletant 177:672ef279c8e0 1038 //?
Diletant 177:672ef279c8e0 1039 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1040 break;
Diletant 177:672ef279c8e0 1041
Diletant 177:672ef279c8e0 1042 case 49:
Diletant 177:672ef279c8e0 1043 case 50:
Diletant 177:672ef279c8e0 1044 case 51:
Diletant 177:672ef279c8e0 1045 case 52:
Diletant 177:672ef279c8e0 1046 case 53:
Diletant 177:672ef279c8e0 1047 case 54:
Diletant 183:c7a9c309086c 1048 //Tmp_scal0[0] ... Tmp_scal0[5] s16 Tmp_scal[6]: an array of the scale coefficients of the 0..5 temperature sensors
Diletant 177:672ef279c8e0 1049 //?
Diletant 177:672ef279c8e0 1050 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1051 break;
Diletant 177:672ef279c8e0 1052
Diletant 177:672ef279c8e0 1053 case 55:
Diletant 177:672ef279c8e0 1054 //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
Diletant 183:c7a9c309086c 1055 //int32_t device.plcs.reset.up.state.target
Diletant 183:c7a9c309086c 1056 device.user.response.message = param_WP_reset();
Diletant 177:672ef279c8e0 1057 break;
Diletant 177:672ef279c8e0 1058
Diletant 177:672ef279c8e0 1059 case 56:
Diletant 177:672ef279c8e0 1060 //KSin s16 Gain_Ph_A: initial gain factor of the A channel of photodetector
Diletant 182:2bd8ec44998f 1061 //uint32_t device.isacs.potentiometers.settings.a
Diletant 177:672ef279c8e0 1062 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1063 break;
Diletant 177:672ef279c8e0 1064
Diletant 177:672ef279c8e0 1065 case 57:
Diletant 177:672ef279c8e0 1066 //KCos s16 Gain_Ph_B: initial gain factor of the B channel of photodetector
Diletant 182:2bd8ec44998f 1067 //uint32_t device.isacs.potentiometers.settings.b
Diletant 177:672ef279c8e0 1068 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1069 break;
Diletant 177:672ef279c8e0 1070
Diletant 177:672ef279c8e0 1071 case 58:
Diletant 177:672ef279c8e0 1072 //Header s16 flash memory load validity control value: should be 0x55AA
Diletant 177:672ef279c8e0 1073 device.user.response.message = 0x55AA;
Diletant 177:672ef279c8e0 1074 break;
Diletant 177:672ef279c8e0 1075
Diletant 177:672ef279c8e0 1076 case 59:
Diletant 177:672ef279c8e0 1077 //LoadFlash_Enable s16 parameters load switch: 1 - load from the flash 0 - load default parameters (factory)
Diletant 177:672ef279c8e0 1078 //?
Diletant 177:672ef279c8e0 1079 device.user.response.message = 1;
Diletant 177:672ef279c8e0 1080 break;
Diletant 177:672ef279c8e0 1081
Diletant 177:672ef279c8e0 1082 case 60:
Diletant 177:672ef279c8e0 1083 //SerialNumber u16 serial number of device
Diletant 177:672ef279c8e0 1084 //
Diletant 177:672ef279c8e0 1085 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1086 break;
Diletant 177:672ef279c8e0 1087
Diletant 177:672ef279c8e0 1088 case 61:
Diletant 177:672ef279c8e0 1089 //WP_start dac not used (ttf:PLCS initial DAC code after switch-on; value:heater voltage after switch-on; value=(ttf>>4)/2048*(-12))-1.3; Range -13.2V...10.7V
Diletant 177:672ef279c8e0 1090 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1091 break;
Diletant 177:672ef279c8e0 1092
Diletant 177:672ef279c8e0 1093 case 62:
Diletant 177:672ef279c8e0 1094 //TermoMode u16 device operation mode switch: 0-raw output, 1-thermocompensated output, 2-thermocompensation value only for debug purposes
Diletant 177:672ef279c8e0 1095 //?
Diletant 177:672ef279c8e0 1096 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1097 break;
Diletant 177:672ef279c8e0 1098
Diletant 177:672ef279c8e0 1099 case 63:
Diletant 177:672ef279c8e0 1100 case 64:
Diletant 177:672ef279c8e0 1101 case 65:
Diletant 177:672ef279c8e0 1102 case 66:
Diletant 177:672ef279c8e0 1103 case 67:
Diletant 177:672ef279c8e0 1104 case 68:
Diletant 177:672ef279c8e0 1105 case 69:
Diletant 177:672ef279c8e0 1106 case 70:
Diletant 177:672ef279c8e0 1107 case 71:
Diletant 177:672ef279c8e0 1108 case 72:
Diletant 177:672ef279c8e0 1109 case 73:
Diletant 177:672ef279c8e0 1110 case 74:
Diletant 177:672ef279c8e0 1111 case 75:
Diletant 177:672ef279c8e0 1112 case 76:
Diletant 177:672ef279c8e0 1113 //TemperInt[0] ... TemperInt[13] s16 reserved: should be zero!
Diletant 177:672ef279c8e0 1114 //
Diletant 177:672ef279c8e0 1115 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1116 break;
Diletant 177:672ef279c8e0 1117
Diletant 177:672ef279c8e0 1118 case 77:
Diletant 177:672ef279c8e0 1119 case 78:
Diletant 177:672ef279c8e0 1120 case 79:
Diletant 177:672ef279c8e0 1121 case 80:
Diletant 177:672ef279c8e0 1122 case 81:
Diletant 177:672ef279c8e0 1123 case 82:
Diletant 177:672ef279c8e0 1124 case 83:
Diletant 177:672ef279c8e0 1125 case 84:
Diletant 177:672ef279c8e0 1126 case 85:
Diletant 177:672ef279c8e0 1127 case 86:
Diletant 177:672ef279c8e0 1128 case 87:
Diletant 177:672ef279c8e0 1129 case 88:
Diletant 177:672ef279c8e0 1130 case 89:
Diletant 177:672ef279c8e0 1131 case 90:
Diletant 177:672ef279c8e0 1132 case 91:
Diletant 177:672ef279c8e0 1133 case 92:
Diletant 177:672ef279c8e0 1134 case 93:
Diletant 177:672ef279c8e0 1135 case 94:
Diletant 177:672ef279c8e0 1136 case 95:
Diletant 177:672ef279c8e0 1137 case 96:
Diletant 177:672ef279c8e0 1138 case 97:
Diletant 177:672ef279c8e0 1139 case 98:
Diletant 177:672ef279c8e0 1140 case 99:
Diletant 177:672ef279c8e0 1141 case 100:
Diletant 177:672ef279c8e0 1142 case 101:
Diletant 177:672ef279c8e0 1143 case 102:
Diletant 177:672ef279c8e0 1144 case 103:
Diletant 177:672ef279c8e0 1145 case 104:
Diletant 177:672ef279c8e0 1146 //TermoFunc[0]...TermoFunc[13] f32 reserved: should be zero! (Hi)/(Lo)
Diletant 177:672ef279c8e0 1147 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1148 break;
Diletant 177:672ef279c8e0 1149
Diletant 177:672ef279c8e0 1150 case 105:
Diletant 177:672ef279c8e0 1151 //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
Diletant 183:c7a9c309086c 1152 //int32_t device.plcs.reset.down.state.target
Diletant 183:c7a9c309086c 1153 device.user.response.message = param_WP_reset2();
Diletant 177:672ef279c8e0 1154 break;
Diletant 177:672ef279c8e0 1155
Diletant 177:672ef279c8e0 1156 case 106:
Diletant 177:672ef279c8e0 1157 case 107:
Diletant 177:672ef279c8e0 1158 //TermoHeatDelta f32 reserved: should be zero! (Lo)
Diletant 177:672ef279c8e0 1159 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1160 break;
Diletant 177:672ef279c8e0 1161
Diletant 177:672ef279c8e0 1162 case 108:
Diletant 177:672ef279c8e0 1163 case 109:
Diletant 177:672ef279c8e0 1164 //TermoCoolDelta f32 reserved: should be zero! (Lo)
Diletant 177:672ef279c8e0 1165 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1166 break;
Diletant 177:672ef279c8e0 1167
Diletant 177:672ef279c8e0 1168 case 110:
Diletant 177:672ef279c8e0 1169 //K_vb_tu s16 slope of dependence of the VB_N division factor from temperature (as though Hz/degree, but in c.u.)
Diletant 177:672ef279c8e0 1170 //?
Diletant 177:672ef279c8e0 1171 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1172 break;
Diletant 177:672ef279c8e0 1173
Diletant 177:672ef279c8e0 1174 case 111:
Diletant 177:672ef279c8e0 1175 //TemperNormal s16 temperature for which the VB_N division factor of the dither drive is set
Diletant 177:672ef279c8e0 1176 //?
Diletant 177:672ef279c8e0 1177 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1178 break;
Diletant 177:672ef279c8e0 1179
Diletant 177:672ef279c8e0 1180 case 112:
Diletant 177:672ef279c8e0 1181 //K_WP_rst_heating s16
Diletant 177:672ef279c8e0 1182 //?
Diletant 177:672ef279c8e0 1183 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1184 break;
Diletant 177:672ef279c8e0 1185
Diletant 177:672ef279c8e0 1186 case 113:
Diletant 177:672ef279c8e0 1187 //K_WP_rst_cooling s16 slope of dependence of a reset voltage at cooling from temperature (as though Volt/degree, but in c.u. of DAC and temperature sensors)
Diletant 177:672ef279c8e0 1188 //?
Diletant 177:672ef279c8e0 1189 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1190 break;
Diletant 177:672ef279c8e0 1191
Diletant 177:672ef279c8e0 1192 case 114:
Diletant 177:672ef279c8e0 1193 //WP_transition_step s16 step of change of a heater voltage at resetting
Diletant 177:672ef279c8e0 1194 //?
Diletant 177:672ef279c8e0 1195 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1196 break;
Diletant 177:672ef279c8e0 1197
Diletant 177:672ef279c8e0 1198 case 115:
Diletant 177:672ef279c8e0 1199 //Reserved s16 not used
Diletant 177:672ef279c8e0 1200 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1201 break;
Diletant 177:672ef279c8e0 1202
Diletant 177:672ef279c8e0 1203 case 116:
Diletant 177:672ef279c8e0 1204 //HF_scl_2 s16 HFO scale factor during PLCS reset
Diletant 183:c7a9c309086c 1205 //Deprecated: always same as HF_scl
Diletant 183:c7a9c309086c 1206 device.user.response.message = param_HF_scl();
Diletant 177:672ef279c8e0 1207 break;
Diletant 177:672ef279c8e0 1208
Diletant 177:672ef279c8e0 1209 case 117:
Diletant 177:672ef279c8e0 1210 //TemperIntDyn[0] s16 thermal sensor value for first point of thermo error interpolation at heating
Diletant 177:672ef279c8e0 1211 //?
Diletant 177:672ef279c8e0 1212 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1213 break;
Diletant 177:672ef279c8e0 1214
Diletant 177:672ef279c8e0 1215 case 118:
Diletant 177:672ef279c8e0 1216 //TemperIntDyn[1] s16 thermal sensor value for interim point of thermo error interpolation at heating
Diletant 177:672ef279c8e0 1217 //?
Diletant 177:672ef279c8e0 1218 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1219 break;
Diletant 177:672ef279c8e0 1220
Diletant 177:672ef279c8e0 1221 case 119:
Diletant 177:672ef279c8e0 1222 //TemperIntDyn[2] s16 thermal sensor value for interim point of thermo error interpolation at heating
Diletant 177:672ef279c8e0 1223 //?
Diletant 177:672ef279c8e0 1224 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1225 break;
Diletant 177:672ef279c8e0 1226
Diletant 177:672ef279c8e0 1227 case 120:
Diletant 177:672ef279c8e0 1228 //TemperIntDyn[3] s16 thermal sensor value for interim point of thermo error interpolation at heating
Diletant 177:672ef279c8e0 1229 //?
Diletant 177:672ef279c8e0 1230 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1231 break;
Diletant 177:672ef279c8e0 1232
Diletant 177:672ef279c8e0 1233 case 121:
Diletant 177:672ef279c8e0 1234 //TemperIntDyn[4] s16 thermal sensor value for interim point of thermo error interpolation at heating
Diletant 177:672ef279c8e0 1235 //?
Diletant 177:672ef279c8e0 1236 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1237 break;
Diletant 177:672ef279c8e0 1238
Diletant 177:672ef279c8e0 1239 case 122:
Diletant 177:672ef279c8e0 1240 //TemperIntDyn[5] s16 thermal sensor value for interim point of thermo error interpolation at heating
Diletant 177:672ef279c8e0 1241 //?
Diletant 177:672ef279c8e0 1242 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1243 break;
Diletant 177:672ef279c8e0 1244
Diletant 177:672ef279c8e0 1245 case 123:
Diletant 177:672ef279c8e0 1246 //TemperIntDyn[6] s16 thermal sensor value for interim point of thermo error interpolation at heating
Diletant 177:672ef279c8e0 1247 //?
Diletant 177:672ef279c8e0 1248 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1249 break;
Diletant 177:672ef279c8e0 1250
Diletant 177:672ef279c8e0 1251 case 124:
Diletant 177:672ef279c8e0 1252 //TemperIntDyn[7] s16 thermal sensor value for interim point of thermo error interpolation at heating
Diletant 177:672ef279c8e0 1253 //?
Diletant 177:672ef279c8e0 1254 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1255 break;
Diletant 177:672ef279c8e0 1256
Diletant 177:672ef279c8e0 1257 case 125:
Diletant 177:672ef279c8e0 1258 //TemperIntDyn[8] s16 thermal sensor value for interim point of thermo error interpolation at heating
Diletant 177:672ef279c8e0 1259 //?
Diletant 177:672ef279c8e0 1260 device.user.response.message = 0;
Diletant 161:efd949e8d536 1261 break;
Diletant 177:672ef279c8e0 1262
Diletant 177:672ef279c8e0 1263 case 126:
Diletant 177:672ef279c8e0 1264 //TemperIntDyn[9] s16 thermal sensor value for interim point of thermo error interpolation at heating
Diletant 177:672ef279c8e0 1265 //?
Diletant 177:672ef279c8e0 1266 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1267 break;
Diletant 177:672ef279c8e0 1268
Diletant 177:672ef279c8e0 1269 case 127:
Diletant 177:672ef279c8e0 1270 //TemperIntDyn[10] s16 thermal sensor value for interim point of thermo error interpolation at heating
Diletant 177:672ef279c8e0 1271 //?
Diletant 177:672ef279c8e0 1272 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1273 break;
Diletant 177:672ef279c8e0 1274
Diletant 177:672ef279c8e0 1275 case 128:
Diletant 177:672ef279c8e0 1276 //TemperIntDyn[11] s16 thermal sensor value for interim point of thermo error interpolation at heating
Diletant 177:672ef279c8e0 1277 //?
Diletant 177:672ef279c8e0 1278 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1279 break;
Diletant 177:672ef279c8e0 1280
Diletant 177:672ef279c8e0 1281 case 129:
Diletant 177:672ef279c8e0 1282 //TemperIntDyn[12] s16 thermal sensor value for interim point of thermo error interpolation at heating
Diletant 177:672ef279c8e0 1283 //?
Diletant 177:672ef279c8e0 1284 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1285 break;
Diletant 177:672ef279c8e0 1286
Diletant 177:672ef279c8e0 1287 case 130:
Diletant 177:672ef279c8e0 1288 //TemperIntDyn[13] s16 thermal sensor value for last point of thermo error interpolation at heating
Diletant 177:672ef279c8e0 1289 //?
Diletant 177:672ef279c8e0 1290 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1291 break;
Diletant 177:672ef279c8e0 1292
Diletant 177:672ef279c8e0 1293 case 131:
Diletant 177:672ef279c8e0 1294 //ThermoHeatDelta[0] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1295 //?
Diletant 177:672ef279c8e0 1296 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1297 break;
Diletant 177:672ef279c8e0 1298
Diletant 177:672ef279c8e0 1299 case 132:
Diletant 177:672ef279c8e0 1300 //ThermoHeatDelta[0] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1301 //?
Diletant 177:672ef279c8e0 1302 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1303 break;
Diletant 177:672ef279c8e0 1304
Diletant 177:672ef279c8e0 1305 case 133:
Diletant 177:672ef279c8e0 1306 //ThermoHeatDelta[1] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1307 //?
Diletant 177:672ef279c8e0 1308 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1309 break;
Diletant 177:672ef279c8e0 1310
Diletant 177:672ef279c8e0 1311 case 134:
Diletant 177:672ef279c8e0 1312 //ThermoHeatDelta[1] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1313 //?
Diletant 177:672ef279c8e0 1314 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1315 break;
Diletant 177:672ef279c8e0 1316
Diletant 177:672ef279c8e0 1317 case 135:
Diletant 177:672ef279c8e0 1318 //ThermoHeatDelta[2] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1319 //?
Diletant 177:672ef279c8e0 1320 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1321 break;
Diletant 177:672ef279c8e0 1322
Diletant 177:672ef279c8e0 1323 case 136:
Diletant 177:672ef279c8e0 1324 //ThermoHeatDelta[2] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1325 //?
Diletant 177:672ef279c8e0 1326 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1327 break;
Diletant 177:672ef279c8e0 1328
Diletant 177:672ef279c8e0 1329 case 137:
Diletant 177:672ef279c8e0 1330 //ThermoHeatDelta[3] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1331 //?
Diletant 177:672ef279c8e0 1332 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1333 break;
Diletant 177:672ef279c8e0 1334
Diletant 177:672ef279c8e0 1335 case 138:
Diletant 177:672ef279c8e0 1336 //ThermoHeatDelta[3] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1337 //?
Diletant 177:672ef279c8e0 1338 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1339 break;
Diletant 177:672ef279c8e0 1340
Diletant 177:672ef279c8e0 1341 case 139:
Diletant 177:672ef279c8e0 1342 //ThermoHeatDelta[4] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1343 //?
Diletant 177:672ef279c8e0 1344 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1345 break;
Diletant 177:672ef279c8e0 1346
Diletant 177:672ef279c8e0 1347 case 140:
Diletant 177:672ef279c8e0 1348 //ThermoHeatDelta[4] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1349 //?
Diletant 177:672ef279c8e0 1350 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1351 break;
Diletant 177:672ef279c8e0 1352
Diletant 177:672ef279c8e0 1353 case 141:
Diletant 177:672ef279c8e0 1354 //ThermoHeatDelta[5] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1355 //?
Diletant 177:672ef279c8e0 1356 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1357 break;
Diletant 177:672ef279c8e0 1358
Diletant 177:672ef279c8e0 1359 case 142:
Diletant 177:672ef279c8e0 1360 //ThermoHeatDelta[5] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1361 //?
Diletant 177:672ef279c8e0 1362 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1363 break;
Diletant 177:672ef279c8e0 1364
Diletant 177:672ef279c8e0 1365 case 143:
Diletant 177:672ef279c8e0 1366 //ThermoHeatDelta[6] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1367 //?
Diletant 177:672ef279c8e0 1368 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1369 break;
Diletant 177:672ef279c8e0 1370
Diletant 177:672ef279c8e0 1371 case 144:
Diletant 177:672ef279c8e0 1372 //ThermoHeatDelta[6] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1373 //?
Diletant 177:672ef279c8e0 1374 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1375 break;
Diletant 177:672ef279c8e0 1376
Diletant 177:672ef279c8e0 1377 case 145:
Diletant 177:672ef279c8e0 1378 //ThermoHeatDelta[7] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1379 //?
Diletant 177:672ef279c8e0 1380 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1381 break;
Diletant 177:672ef279c8e0 1382
Diletant 177:672ef279c8e0 1383 case 146:
Diletant 177:672ef279c8e0 1384 //ThermoHeatDelta[7] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1385 //?
Diletant 177:672ef279c8e0 1386 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1387 break;
Diletant 177:672ef279c8e0 1388
Diletant 177:672ef279c8e0 1389 case 147:
Diletant 177:672ef279c8e0 1390 //ThermoHeatDelta[8] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1391 //?
Diletant 177:672ef279c8e0 1392 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1393 break;
Diletant 177:672ef279c8e0 1394
Diletant 177:672ef279c8e0 1395 case 148:
Diletant 177:672ef279c8e0 1396 //ThermoHeatDelta[8] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1397 //?
Diletant 177:672ef279c8e0 1398 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1399 break;
Diletant 177:672ef279c8e0 1400
Diletant 177:672ef279c8e0 1401 case 149:
Diletant 177:672ef279c8e0 1402 //ThermoHeatDelta[9] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1403 //?
Diletant 177:672ef279c8e0 1404 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1405 break;
Diletant 177:672ef279c8e0 1406
Diletant 177:672ef279c8e0 1407 case 150:
Diletant 177:672ef279c8e0 1408 //ThermoHeatDelta[9] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1409 //?
Diletant 177:672ef279c8e0 1410 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1411 break;
Diletant 177:672ef279c8e0 1412
Diletant 177:672ef279c8e0 1413 case 151:
Diletant 177:672ef279c8e0 1414 //ThermoHeatDelta[10] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1415 //?
Diletant 177:672ef279c8e0 1416 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1417 break;
Diletant 177:672ef279c8e0 1418
Diletant 177:672ef279c8e0 1419 case 152:
Diletant 177:672ef279c8e0 1420 //ThermoHeatDelta[10] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1421 //?
Diletant 177:672ef279c8e0 1422 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1423 break;
Diletant 177:672ef279c8e0 1424
Diletant 177:672ef279c8e0 1425 case 153:
Diletant 177:672ef279c8e0 1426 //ThermoHeatDelta[11] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1427 //?
Diletant 177:672ef279c8e0 1428 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1429 break;
Diletant 177:672ef279c8e0 1430
Diletant 177:672ef279c8e0 1431 case 154:
Diletant 177:672ef279c8e0 1432 //ThermoHeatDelta[11] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1433 //?
Diletant 177:672ef279c8e0 1434 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1435 break;
Diletant 177:672ef279c8e0 1436
Diletant 177:672ef279c8e0 1437 case 155:
Diletant 177:672ef279c8e0 1438 //ThermoHeatDelta[12] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1439 //?
Diletant 177:672ef279c8e0 1440 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1441 break;
Diletant 177:672ef279c8e0 1442
Diletant 177:672ef279c8e0 1443 case 156:
Diletant 177:672ef279c8e0 1444 //ThermoHeatDelta[12] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1445 //?
Diletant 177:672ef279c8e0 1446 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1447 break;
Diletant 177:672ef279c8e0 1448
Diletant 177:672ef279c8e0 1449 case 157:
Diletant 177:672ef279c8e0 1450 //ThermoHeatDelta[13] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1451 //?
Diletant 177:672ef279c8e0 1452 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1453 break;
Diletant 177:672ef279c8e0 1454
Diletant 177:672ef279c8e0 1455 case 158:
Diletant 177:672ef279c8e0 1456 //ThermoHeatDelta[13] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1457 //?
Diletant 177:672ef279c8e0 1458 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1459 break;
Diletant 177:672ef279c8e0 1460
Diletant 177:672ef279c8e0 1461 case 159:
Diletant 177:672ef279c8e0 1462 //DeltaTempRecalc s16
Diletant 177:672ef279c8e0 1463 //?
Diletant 177:672ef279c8e0 1464 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1465 break;
Diletant 177:672ef279c8e0 1466
Diletant 177:672ef279c8e0 1467 case 160:
Diletant 177:672ef279c8e0 1468 //TemperCoolIntDyn[0] s16 thermal sensor value for first point of thermo error interpolation at cooling
Diletant 177:672ef279c8e0 1469 //?
Diletant 177:672ef279c8e0 1470 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1471 break;
Diletant 177:672ef279c8e0 1472
Diletant 177:672ef279c8e0 1473 case 161:
Diletant 177:672ef279c8e0 1474 //TemperCoolIntDyn[1] s16 thermal sensor value for interim point of thermo error interpolation at cooling
Diletant 177:672ef279c8e0 1475 //?
Diletant 177:672ef279c8e0 1476 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1477 break;
Diletant 177:672ef279c8e0 1478
Diletant 177:672ef279c8e0 1479 case 162:
Diletant 177:672ef279c8e0 1480 //TemperCoolIntDyn[2] s16 thermal sensor value for interim point of thermo error interpolation at cooling
Diletant 177:672ef279c8e0 1481 //?
Diletant 177:672ef279c8e0 1482 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1483 break;
Diletant 177:672ef279c8e0 1484
Diletant 177:672ef279c8e0 1485 case 163:
Diletant 177:672ef279c8e0 1486 //TemperCoolIntDyn[3] s16 thermal sensor value for interim point of thermo error interpolation at cooling
Diletant 177:672ef279c8e0 1487 //?
Diletant 177:672ef279c8e0 1488 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1489 break;
Diletant 177:672ef279c8e0 1490
Diletant 177:672ef279c8e0 1491 case 164:
Diletant 177:672ef279c8e0 1492 //TemperCoolIntDyn[4] s16 thermal sensor value for interim point of thermo error interpolation at cooling
Diletant 177:672ef279c8e0 1493 //?
Diletant 177:672ef279c8e0 1494 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1495 break;
Diletant 177:672ef279c8e0 1496
Diletant 177:672ef279c8e0 1497 case 165:
Diletant 177:672ef279c8e0 1498 //TemperCoolIntDyn[5] s16 thermal sensor value for interim point of thermo error interpolation at cooling
Diletant 177:672ef279c8e0 1499 //?
Diletant 177:672ef279c8e0 1500 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1501 break;
Diletant 177:672ef279c8e0 1502
Diletant 177:672ef279c8e0 1503 case 166:
Diletant 177:672ef279c8e0 1504 //TemperCoolIntDyn[6] s16 thermal sensor value for interim point of thermo error interpolation at cooling
Diletant 177:672ef279c8e0 1505 //?
Diletant 177:672ef279c8e0 1506 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1507 break;
Diletant 177:672ef279c8e0 1508
Diletant 177:672ef279c8e0 1509 case 167:
Diletant 177:672ef279c8e0 1510 //TemperCoolIntDyn[7] s16 thermal sensor value for interim point of thermo error interpolation at cooling
Diletant 177:672ef279c8e0 1511 //?
Diletant 177:672ef279c8e0 1512 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1513 break;
Diletant 177:672ef279c8e0 1514
Diletant 177:672ef279c8e0 1515 case 168:
Diletant 177:672ef279c8e0 1516 //TemperCoolIntDyn[8] s16 thermal sensor value for interim point of thermo error interpolation at cooling
Diletant 177:672ef279c8e0 1517 //?
Diletant 177:672ef279c8e0 1518 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1519 break;
Diletant 177:672ef279c8e0 1520
Diletant 177:672ef279c8e0 1521 case 169:
Diletant 177:672ef279c8e0 1522 //TemperCoolIntDyn[9] s16 thermal sensor value for interim point of thermo error interpolation at cooling
Diletant 177:672ef279c8e0 1523 //?
Diletant 177:672ef279c8e0 1524 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1525 break;
Diletant 177:672ef279c8e0 1526
Diletant 177:672ef279c8e0 1527 case 170:
Diletant 177:672ef279c8e0 1528 //TemperCoolIntDyn[10] s16 thermal sensor value for interim point of thermo error interpolation at cooling
Diletant 177:672ef279c8e0 1529 //?
Diletant 177:672ef279c8e0 1530 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1531 break;
Diletant 177:672ef279c8e0 1532
Diletant 177:672ef279c8e0 1533 case 171:
Diletant 177:672ef279c8e0 1534 //TemperCoolIntDyn[11] s16 thermal sensor value for interim point of thermo error interpolation at cooling
Diletant 177:672ef279c8e0 1535 //?
Diletant 177:672ef279c8e0 1536 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1537 break;
Diletant 177:672ef279c8e0 1538
Diletant 177:672ef279c8e0 1539 case 172:
Diletant 177:672ef279c8e0 1540 //TemperCoolIntDyn[12] s16 thermal sensor value for interim point of thermo error interpolation at cooling
Diletant 177:672ef279c8e0 1541 //?
Diletant 177:672ef279c8e0 1542 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1543 break;
Diletant 177:672ef279c8e0 1544
Diletant 177:672ef279c8e0 1545 case 173:
Diletant 177:672ef279c8e0 1546 //TemperCoolIntDyn[13] s16 thermal sensor value for last point of thermo error interpolation at cooling
Diletant 177:672ef279c8e0 1547 //?
Diletant 177:672ef279c8e0 1548 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1549 break;
Diletant 177:672ef279c8e0 1550
Diletant 177:672ef279c8e0 1551 case 174:
Diletant 177:672ef279c8e0 1552 //ThermoCoolDelta[0] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1553 //?
Diletant 177:672ef279c8e0 1554 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1555 break;
Diletant 177:672ef279c8e0 1556
Diletant 177:672ef279c8e0 1557 case 175:
Diletant 177:672ef279c8e0 1558 //ThermoCoolDelta[0] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1559 //?
Diletant 177:672ef279c8e0 1560 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1561 break;
Diletant 177:672ef279c8e0 1562
Diletant 177:672ef279c8e0 1563 case 176:
Diletant 177:672ef279c8e0 1564 //ThermoCoolDelta[1] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1565 //?
Diletant 177:672ef279c8e0 1566 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1567 break;
Diletant 177:672ef279c8e0 1568
Diletant 177:672ef279c8e0 1569 case 177:
Diletant 177:672ef279c8e0 1570 //ThermoCoolDelta[1] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1571 //?
Diletant 177:672ef279c8e0 1572 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1573 break;
Diletant 177:672ef279c8e0 1574
Diletant 177:672ef279c8e0 1575 case 178:
Diletant 177:672ef279c8e0 1576 //ThermoCoolDelta[2] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1577 //?
Diletant 177:672ef279c8e0 1578 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1579 break;
Diletant 177:672ef279c8e0 1580
Diletant 177:672ef279c8e0 1581 case 179:
Diletant 177:672ef279c8e0 1582 //ThermoCoolDelta[2] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1583 //?
Diletant 177:672ef279c8e0 1584 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1585 break;
Diletant 177:672ef279c8e0 1586
Diletant 177:672ef279c8e0 1587 case 180:
Diletant 177:672ef279c8e0 1588 //ThermoCoolDelta[3] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1589 //?
Diletant 177:672ef279c8e0 1590 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1591 break;
Diletant 177:672ef279c8e0 1592
Diletant 177:672ef279c8e0 1593 case 181:
Diletant 177:672ef279c8e0 1594 //ThermoCoolDelta[3] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1595 //?
Diletant 177:672ef279c8e0 1596 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1597 break;
Diletant 177:672ef279c8e0 1598
Diletant 177:672ef279c8e0 1599 case 182:
Diletant 177:672ef279c8e0 1600 //ThermoCoolDelta[4] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1601 //?
Diletant 177:672ef279c8e0 1602 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1603 break;
Diletant 177:672ef279c8e0 1604
Diletant 177:672ef279c8e0 1605 case 183:
Diletant 177:672ef279c8e0 1606 //ThermoCoolDelta[4] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1607 //?
Diletant 177:672ef279c8e0 1608 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1609 break;
Diletant 177:672ef279c8e0 1610
Diletant 177:672ef279c8e0 1611 case 184:
Diletant 177:672ef279c8e0 1612 //ThermoCoolDelta[5] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1613 //?
Diletant 177:672ef279c8e0 1614 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1615 break;
Diletant 177:672ef279c8e0 1616
Diletant 177:672ef279c8e0 1617 case 185:
Diletant 177:672ef279c8e0 1618 //ThermoCoolDelta[5] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1619 //?
Diletant 177:672ef279c8e0 1620 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1621 break;
Diletant 177:672ef279c8e0 1622
Diletant 177:672ef279c8e0 1623 case 186:
Diletant 177:672ef279c8e0 1624 //ThermoCoolDelta[6] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1625 //?
Diletant 177:672ef279c8e0 1626 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1627 break;
Diletant 177:672ef279c8e0 1628
Diletant 177:672ef279c8e0 1629 case 187:
Diletant 177:672ef279c8e0 1630 //ThermoCoolDelta[6] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1631 //?
Diletant 177:672ef279c8e0 1632 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1633 break;
Diletant 177:672ef279c8e0 1634
Diletant 177:672ef279c8e0 1635 case 188:
Diletant 177:672ef279c8e0 1636 //ThermoCoolDelta[7] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1637 //?
Diletant 177:672ef279c8e0 1638 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1639 break;
Diletant 177:672ef279c8e0 1640
Diletant 177:672ef279c8e0 1641 case 189:
Diletant 177:672ef279c8e0 1642 //ThermoCoolDelta[7] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1643 //?
Diletant 177:672ef279c8e0 1644 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1645 break;
Diletant 177:672ef279c8e0 1646
Diletant 177:672ef279c8e0 1647 case 190:
Diletant 177:672ef279c8e0 1648 //ThermoCoolDelta[8] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1649 //?
Diletant 177:672ef279c8e0 1650 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1651 break;
Diletant 177:672ef279c8e0 1652
Diletant 177:672ef279c8e0 1653 case 191:
Diletant 177:672ef279c8e0 1654 //ThermoCoolDelta[8] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1655 //?
Diletant 177:672ef279c8e0 1656 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1657 break;
Diletant 177:672ef279c8e0 1658
Diletant 177:672ef279c8e0 1659 case 192:
Diletant 177:672ef279c8e0 1660 //ThermoCoolDelta[9] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1661 //?
Diletant 177:672ef279c8e0 1662 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1663 break;
Diletant 177:672ef279c8e0 1664
Diletant 177:672ef279c8e0 1665 case 193:
Diletant 177:672ef279c8e0 1666 //ThermoCoolDelta[9] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1667 //?
Diletant 177:672ef279c8e0 1668 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1669 break;
Diletant 177:672ef279c8e0 1670
Diletant 177:672ef279c8e0 1671 case 194:
Diletant 177:672ef279c8e0 1672 //ThermoCoolDelta[10] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1673 //?
Diletant 177:672ef279c8e0 1674 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1675 break;
Diletant 177:672ef279c8e0 1676
Diletant 177:672ef279c8e0 1677 case 195:
Diletant 177:672ef279c8e0 1678 //ThermoCoolDelta[10] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1679 //?
Diletant 177:672ef279c8e0 1680 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1681 break;
Diletant 177:672ef279c8e0 1682
Diletant 177:672ef279c8e0 1683 case 196:
Diletant 177:672ef279c8e0 1684 //ThermoCoolDelta[11] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1685 //?
Diletant 177:672ef279c8e0 1686 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1687 break;
Diletant 177:672ef279c8e0 1688
Diletant 177:672ef279c8e0 1689 case 197:
Diletant 177:672ef279c8e0 1690 //ThermoCoolDelta[11] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1691 //?
Diletant 177:672ef279c8e0 1692 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1693 break;
Diletant 177:672ef279c8e0 1694
Diletant 177:672ef279c8e0 1695 case 198:
Diletant 177:672ef279c8e0 1696 //ThermoCoolDelta[12] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1697 //?
Diletant 177:672ef279c8e0 1698 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1699 break;
Diletant 177:672ef279c8e0 1700
Diletant 177:672ef279c8e0 1701 case 199:
Diletant 177:672ef279c8e0 1702 //ThermoCoolDelta[12] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1703 //?
Diletant 177:672ef279c8e0 1704 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1705 break;
Diletant 177:672ef279c8e0 1706
Diletant 177:672ef279c8e0 1707 case 200:
Diletant 177:672ef279c8e0 1708 //ThermoCoolDelta[13] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Hi)
Diletant 177:672ef279c8e0 1709 //?
Diletant 177:672ef279c8e0 1710 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1711 break;
Diletant 177:672ef279c8e0 1712
Diletant 177:672ef279c8e0 1713 case 201:
Diletant 177:672ef279c8e0 1714 //ThermoCoolDelta[13] tc ttf:value of thermo error per 10kHz cycle; value:value of thermo error for 100 second accumulation (Lo)
Diletant 177:672ef279c8e0 1715 //?
Diletant 177:672ef279c8e0 1716 device.user.response.message = 0;
Diletant 177:672ef279c8e0 1717 break;
Diletant 177:672ef279c8e0 1718 /*
Diletant 161:efd949e8d536 1719 case 27:
Diletant 161:efd949e8d536 1720 case 28:
Diletant 161:efd949e8d536 1721 case 29:
Diletant 161:efd949e8d536 1722 case 30:
Diletant 161:efd949e8d536 1723 case 31:
Diletant 161:efd949e8d536 1724 case 32:
Diletant 161:efd949e8d536 1725 case 33:
Diletant 161:efd949e8d536 1726 case 34:
Diletant 161:efd949e8d536 1727 case 35:
Diletant 161:efd949e8d536 1728 case 36:
Diletant 161:efd949e8d536 1729 case 37:
Diletant 161:efd949e8d536 1730 case 38:
Diletant 161:efd949e8d536 1731 case 39:
Diletant 161:efd949e8d536 1732 case 40:
Diletant 161:efd949e8d536 1733 case 41:
Diletant 161:efd949e8d536 1734 case 42:
Diletant 161:efd949e8d536 1735 case 43:
Diletant 161:efd949e8d536 1736 break;
Diletant 161:efd949e8d536 1737
Diletant 161:efd949e8d536 1738 case 61:
Diletant 161:efd949e8d536 1739 param16 = device.sensor.settings.id;
Diletant 161:efd949e8d536 1740 break;
Diletant 161:efd949e8d536 1741
Diletant 161:efd949e8d536 1742 case 64:
Diletant 161:efd949e8d536 1743 case 65:
Diletant 161:efd949e8d536 1744 case 66:
Diletant 161:efd949e8d536 1745 case 67:
Diletant 161:efd949e8d536 1746 case 68:
Diletant 161:efd949e8d536 1747 case 69:
Diletant 161:efd949e8d536 1748 case 70:
Diletant 161:efd949e8d536 1749 case 71:
Diletant 161:efd949e8d536 1750 case 72:
Diletant 161:efd949e8d536 1751 case 73:
Diletant 161:efd949e8d536 1752 case 74:
Diletant 161:efd949e8d536 1753 case 75:
Diletant 161:efd949e8d536 1754 case 76:
Diletant 161:efd949e8d536 1755 case 77:
Diletant 161:efd949e8d536 1756 case 78:
Diletant 161:efd949e8d536 1757 case 79:
Diletant 161:efd949e8d536 1758 case 81:
Diletant 161:efd949e8d536 1759 case 82:
Diletant 161:efd949e8d536 1760 case 84:
Diletant 161:efd949e8d536 1761 case 85:
Diletant 161:efd949e8d536 1762 case 87:
Diletant 161:efd949e8d536 1763 case 88:
Diletant 161:efd949e8d536 1764 case 90:
Diletant 161:efd949e8d536 1765 case 91:
Diletant 161:efd949e8d536 1766 case 93:
Diletant 161:efd949e8d536 1767 case 94:
Diletant 161:efd949e8d536 1768 case 96:
Diletant 161:efd949e8d536 1769 case 97:
Diletant 161:efd949e8d536 1770 case 99:
Diletant 161:efd949e8d536 1771 case 100:
Diletant 161:efd949e8d536 1772 case 102:
Diletant 161:efd949e8d536 1773 case 103:
Diletant 161:efd949e8d536 1774 case 105:
Diletant 161:efd949e8d536 1775 case 106:
Diletant 161:efd949e8d536 1776 case 108:
Diletant 161:efd949e8d536 1777 case 109:
Diletant 161:efd949e8d536 1778 case 111:
Diletant 161:efd949e8d536 1779 case 112:
Diletant 161:efd949e8d536 1780 case 114:
Diletant 161:efd949e8d536 1781 case 115:
Diletant 161:efd949e8d536 1782 case 117:
Diletant 161:efd949e8d536 1783 case 118:
Diletant 161:efd949e8d536 1784 case 121:
Diletant 161:efd949e8d536 1785 case 122:
Diletant 161:efd949e8d536 1786 case 124:
Diletant 161:efd949e8d536 1787 case 125:
Diletant 177:672ef279c8e0 1788 //reserved
Diletant 161:efd949e8d536 1789 break;
Diletant 177:672ef279c8e0 1790 */
Diletant 161:efd949e8d536 1791 default: DecodeFail();
Diletant 161:efd949e8d536 1792 }
Diletant 161:efd949e8d536 1793 }
Diletant 161:efd949e8d536 1794
Diletant 161:efd949e8d536 1795 void DecodeMParamW(void) {
Diletant 161:efd949e8d536 1796 uint8_t index = Decode8(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 1797 uint8_t param = Decode16(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 1798 DecodeCRC(); if (device.user.decoder.error) return;
Diletant 161:efd949e8d536 1799
Diletant 161:efd949e8d536 1800 switch (index){
Diletant 161:efd949e8d536 1801 case 0:
Diletant 161:efd949e8d536 1802 device.user.address = param;
Diletant 161:efd949e8d536 1803 break;
Diletant 161:efd949e8d536 1804
Diletant 161:efd949e8d536 1805 case 27:
Diletant 161:efd949e8d536 1806 case 28:
Diletant 161:efd949e8d536 1807 case 29:
Diletant 161:efd949e8d536 1808 case 30:
Diletant 161:efd949e8d536 1809 case 31:
Diletant 161:efd949e8d536 1810 case 32:
Diletant 161:efd949e8d536 1811 case 33:
Diletant 161:efd949e8d536 1812 case 34:
Diletant 161:efd949e8d536 1813 case 35:
Diletant 161:efd949e8d536 1814 case 36:
Diletant 161:efd949e8d536 1815 case 37:
Diletant 161:efd949e8d536 1816 case 38:
Diletant 161:efd949e8d536 1817 case 39:
Diletant 161:efd949e8d536 1818 case 40:
Diletant 161:efd949e8d536 1819 case 41:
Diletant 161:efd949e8d536 1820 case 42:
Diletant 161:efd949e8d536 1821 case 43:
Diletant 161:efd949e8d536 1822 break;
Diletant 161:efd949e8d536 1823
Diletant 161:efd949e8d536 1824 case 61:
Diletant 161:efd949e8d536 1825 device.sensor.settings.id = param;
Diletant 161:efd949e8d536 1826 break;
Diletant 161:efd949e8d536 1827
Diletant 161:efd949e8d536 1828 case 64:
Diletant 161:efd949e8d536 1829 case 65:
Diletant 161:efd949e8d536 1830 case 66:
Diletant 161:efd949e8d536 1831 case 67:
Diletant 161:efd949e8d536 1832 case 68:
Diletant 161:efd949e8d536 1833 case 69:
Diletant 161:efd949e8d536 1834 case 70:
Diletant 161:efd949e8d536 1835 case 71:
Diletant 161:efd949e8d536 1836 case 72:
Diletant 161:efd949e8d536 1837 case 73:
Diletant 161:efd949e8d536 1838 case 74:
Diletant 161:efd949e8d536 1839 case 75:
Diletant 161:efd949e8d536 1840 case 76:
Diletant 161:efd949e8d536 1841 case 77:
Diletant 161:efd949e8d536 1842 case 78:
Diletant 161:efd949e8d536 1843 case 79:
Diletant 161:efd949e8d536 1844 case 81:
Diletant 161:efd949e8d536 1845 case 82:
Diletant 161:efd949e8d536 1846 case 84:
Diletant 161:efd949e8d536 1847 case 85:
Diletant 161:efd949e8d536 1848 case 87:
Diletant 161:efd949e8d536 1849 case 88:
Diletant 161:efd949e8d536 1850 case 90:
Diletant 161:efd949e8d536 1851 case 91:
Diletant 161:efd949e8d536 1852 case 93:
Diletant 161:efd949e8d536 1853 case 94:
Diletant 161:efd949e8d536 1854 case 96:
Diletant 161:efd949e8d536 1855 case 97:
Diletant 161:efd949e8d536 1856 case 99:
Diletant 161:efd949e8d536 1857 case 100:
Diletant 161:efd949e8d536 1858 case 102:
Diletant 161:efd949e8d536 1859 case 103:
Diletant 161:efd949e8d536 1860 case 105:
Diletant 161:efd949e8d536 1861 case 106:
Diletant 161:efd949e8d536 1862 case 108:
Diletant 161:efd949e8d536 1863 case 109:
Diletant 161:efd949e8d536 1864 case 111:
Diletant 161:efd949e8d536 1865 case 112:
Diletant 161:efd949e8d536 1866 case 114:
Diletant 161:efd949e8d536 1867 case 115:
Diletant 161:efd949e8d536 1868 case 117:
Diletant 161:efd949e8d536 1869 case 118:
Diletant 161:efd949e8d536 1870 case 121:
Diletant 161:efd949e8d536 1871 case 122:
Diletant 161:efd949e8d536 1872 case 124:
Diletant 161:efd949e8d536 1873 case 125:
Diletant 161:efd949e8d536 1874 /*reserved*/
Diletant 161:efd949e8d536 1875 break;
Diletant 161:efd949e8d536 1876
Diletant 161:efd949e8d536 1877 default: DecodeFail();
Diletant 161:efd949e8d536 1878 }
Diletant 161:efd949e8d536 1879 }
Diletant 161:efd949e8d536 1880
Diletant 161:efd949e8d536 1881 void DecodeMRate2(void) {
Diletant 161:efd949e8d536 1882 //TODO
Diletant 161:efd949e8d536 1883 }
Diletant 161:efd949e8d536 1884
Diletant 161:efd949e8d536 1885 void DecodeMRate3(void) {
Diletant 161:efd949e8d536 1886 //TODO
Diletant 161:efd949e8d536 1887 }
Diletant 161:efd949e8d536 1888
Diletant 182:2bd8ec44998f 1889 //Deprecated
Diletant 161:efd949e8d536 1890 void DecodeMe5raW(void) {
Diletant 161:efd949e8d536 1891 //TODO
Diletant 161:efd949e8d536 1892 }