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