123

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Diletant
Date:
Sun Jul 03 13:40:48 2016 +0000
Revision:
177:672ef279c8e0
Parent:
173:7f938afb0447
Device&... update. Some Ask_Gld functionality. Not final!!!

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