From: Jannik ZANDER Date: Sat, 25 Jun 2016 17:08:54 +0000 (+0200) Subject: Move genilog.py to separate repo X-Git-Url: https://git.zndr.dk/?a=commitdiff_plain;h=7f2cb77c1fdcad974664997cf1cae8a9557ac0aa;p=dotfiles.git Move genilog.py to separate repo --- diff --git a/work/geni/crc.py b/work/geni/crc.py deleted file mode 100755 index dd5187c..0000000 --- a/work/geni/crc.py +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env python3 - -Crc_Table16 = ( - 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, - 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, - 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, - 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, - 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, - 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, - 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, - 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, - 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, - 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, - 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, - 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, - 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, - 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, - 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, - 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, - 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, - 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, - 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, - 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, - 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, - 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, - 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, - 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, - 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, - 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, - 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, - 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, - 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, - 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, - 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, - 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0 -) - - -class Crc(object): - def __init__(self, data): - self.init(data) - - def update(self, data): - data &= 0xff - self._accum = (((self._accum << 8) & 0xffff) ^ Crc_Table16[((self._accum >> 8) ^ data) & 0xff]) & 0xffff - - def init(self, data): - self._accum = data - - def get(self): - return (self._accum ^ (0xffff)) & 0xffff - -def calcCrc(frame): - crc = Crc(0xffff) - for idx in range(1, len(frame)): - crc.update(frame[idx]) - return crc.get() - -def verifyCrc(frame): - recCrc = (frame[-2]<<8)+frame[-1] - calCrc = calcCrc(frame[:-2]) -# print("received",hex(recCrc>>8),hex(recCrc&0xff),"== calculated",hex(calCrc>>8),hex(calCrc&0xff)) - return recCrc == calCrc; - - -#data=b'\x27\x0D\x22\x20\x0B\x03\x34\x35\x70\x02\x04\xBE\x71\x72\x73' -#crc=b'\xE5\x5B' -#calccrc=calcCrc(data) -#print("calc crc",hex(crc[0]),hex(crc[1]), "==",hex(calccrc>>8),hex(calccrc&0xff)) -#checkcrc=verifyCrc(data+crc) -#print("check crc",hex(crc[0]),hex(crc[1]), "==",hex(checkcrc>>8),hex(checkcrc&0xff)) diff --git a/work/geni/geni.py b/work/geni/geni.py deleted file mode 100755 index d522cbd..0000000 --- a/work/geni/geni.py +++ /dev/null @@ -1,478 +0,0 @@ -#!/usr/bin/env python3 - -# section: environment {{{1 -######### -############################################ -import geni_config as gf -import crc -import serial -from serial.tools import list_ports -import fileinput -import matplotlib.pyplot as plt -from datetime import datetime,time -import string -#import ctype -#import logging - -# section: debugging {{{1 -###################################################### - -# global variable -cl=0 -td=[] -master=[] -speed=[] -speed.append([]) -speed.append([]) -speed.append([]) -speed.append([]) - -def dbg_speed(ids5,val5,ts,sa): - global td - global master - global speed - td=td+[ts.timestamp()] - master=master+[1+(sa-31)/10] - for i in range(len(ids5)): - if ids5[i] in range(67,71): - speed[ids5[i]-67]=speed[ids5[i]-67]+[val5[i]/254] - return td,master,speed - -# section: serial_ports {{{1 -###################################################### -def serial_ports(): - ports=list(list_ports.comports()) - # return the port if FTDI vendor - result=[] - print("Available ports:") - for p in ports: - print(repr(p.device),repr(p.description)) - if p.vid==0x403: # FTDI vendor - try: - s = serial.Serial(p.device) - s.close() - result.append(p) - except (OSError, serial.SerialException): - pass - return result - -# section: serial_open {{{1 -###################################################### -def serial_open( vid, pid ): -#vid=0x403 -#pid=0x6001 -#pid=0x6015 - ctx = usb1.USBContext() - logging.basicConfig(level=logging.DEBUG) - - for device in ctx.getDeviceList(skip_on_error=True): - print(device) - if device.getVendorID() == vid and device.getProductID() == pid: - device = device - break - else: - raise Exception( "ERROR: USB device %04x:%04x not found." % (vid, pid)) - - logging.info( "Found device : ID %04x:%04x -> %s Address %d" % (device.getVendorID(), device.getProductID(), '->'.join(str(x) for x in ['Bus %03i' % (device.getBusNumber(), )] + device.getPortNumberList()), device.getDeviceAddress() )) - - handle = device.open() - print(handle) - logging.info( "Device opened, got handle" ) - - endpoint = 0x85 - length = 65536 - timeout = 100 # ms - print("enter loop") - while True: - print("reading") - data = handle.bulkRead ( endpoint, length, timeout ) - # do something with data - -# section: checkcrc {{{1 -###################################################### -def checkcrc(line): - ok=False - if len(line)>16 and not "ERR" in line.upper(): - ok=True -# print("Ok:",ok) - return ok - -# section: checkglowpan {{{1 -###################################################### -def checkglowpan(line): - isgenidata=False - line=line[32:] - #print(repr(line)) - mac_hi,line=readbyte(line) - mac_lo,line=readbyte(line) - #print(mac_hi,mac_lo) - #print(repr(line)) - if mac_hi==8 and mac_lo==4: - isgenidata=True - #print(repr(line)) - #print(isgenidata) - return isgenidata,line -# section: readtimestamp {{{1 -###################################################### -def readtimestamp(line): - info=line.split(":") - try: - timestamp=int(info[1].strip())/1000 - except: - timestamp=0 - finally: - ts=datetime.fromtimestamp(timestamp) - - if timestamp>1e9: # 2001-09-09 - line=info[0] - else: - try: - h=int(info[0][-2:]) - m=int(info[1]) - s=int(info[2][:2]) - u=int(info[2][3:6])*1000 - ts=datetime.combine(date.today(),time(h,m,s,u)) - line=''.join(line.split(":")[2:])[7:] - except: - pass - print(ts) - return ts,line - - -# section: readbyte {{{1 -###################################################### -#def readbyte(line): -# byte=-1 -# line=line.strip() -# while byte==-1 and len(line)>0: -# try: -# byte=int(line[0:2],16) -# line=line[1:] -# except: -# pass -# finally: -# line=line[2:] -# return byte,line - -def readbyte(line): - byte=line[0] - line=line[1:] - return byte,line - - -# section: process_header {{{1 -###################################################### -def process_header(line): - sd,line=readbyte(line) - if sd==gf.DATA_REQUEST: - typ="DATA_REQUEST --->" - elif sd==gf.DATA_MESSAGE: - typ="DATA_MESSAGE --->" - elif sd==gf.DATA_REPLY: - typ="<--- DATA_REPLY" - else: - typ="**** DATA_ERROR ****" - print("Data Type:",typ,"Start Delimiter:",sd) - return typ,sd,0,0,0,line - le,line=readbyte(line) - da,line=readbyte(line) - sa,line=readbyte(line) - if sd==gf.DATA_REQUEST and da==gf.DA_BROADCAST_CONNECT: - typ="CONNECTION_REQUEST ===>" - if sd==gf.DATA_REQUEST and da==gf.DA_BROADCAST_REQUEST: - typ="DATA_REQUEST ===>" - if sd==gf.DATA_MESSAGE and da==gf.DA_BROADCAST_MESSAGE: - typ="DATA_MESSAGE ===>" - print(typ) - print("Length:",le,"Destination Addr:",da,"Source Addr:",sa) - return typ,sd,le,da,sa,line - -# section: process_apdu {{{1 -###################################################### -def process_apdu(line): - cl,line=readbyte(line) - cl=cl&0x1F - le,line=readbyte(line) - os=(le&0xC0)>>6 - le=le&0x3F - print(gf.operation[os],"Cl.",cl,"Len.",le) -# print(gf.operation[os],"Cl. {02}",cl) - return cl,os,le,line - -# section: process_data {{{1 -###################################################### -def process_data(line,le,size1,size2): - num=int(le/(size1+size2)) - ids=[0]*num - val=[0]*num - for i in range(0,num): - if size1>0: - ids[i],line=readbyte(line) - for j in range(0,size2): - tmp,line=readbyte(line) - val[i]=(val[i]<<8)+tmp - if size1>0 and size2>0: - print("Id:",ids[i],repr(gf.params[cl][ids[i]]),"=",val[i]) - elif size1>0: - print("Id:",ids[i],repr(gf.params[cl][ids[i]])) - elif size2>0: - print("=",val[i]) - return ids,val,line - -# section: process_string {{{1 -###################################################### -def process_string(line,le,size1,size2): - ids=[0]*size1 - val=[0]*size2 - if size1>0: - ids,line=readbyte(line) - for i in range(0,size2): - val[i],line=readbyte(line) - string=''.join(chr(i) for i in val) - string=string[:-1] - if size1>0 and size2>0: - print("Id:",ids,repr(gf.params[cl][ids]),"=",repr(string)) - elif size1>0: - print("Id:",ids,repr(gf.params[cl][ids])) - elif size2>0: - print("=",repr(string)) - return ids,val,line - -# section: process_object {{{1 -###################################################### -def process_object(line,le,size1,size2): - ids=[0]*size1 - val=[0]*size2 - if size1>0: - ids,line=readbyte(line) - for i in range(0,size2): - val[i],line=readbyte(line) - - if size1>0 and size2>0: - print("Id:",ids,repr(gf.params[cl][ids]),"=",val) - elif size1>0: - print("Id:",ids,repr(gf.params[cl][ids])) - elif size2>0: - print("=",val) - return ids,val,line - -# section: process_crc {{{1 -###################################################### -def process_crc(line): - crc1,line=readbyte(line) - crc2,line=readbyte(line) - crc1=format(crc1,'02X') - crc2=format(crc2,'02X') - crc=crc1+' '+crc2 - print("CRC:",crc) - return crc - -# section: process_telegram {{{1 -###################################################### -def process_telegram(line): - # section: headers {{{2 - global cl - # Check if timestamp exists -# ts,line=readtimestamp(line) - # Filter non geni data if glowpan frame -# isgenidata,line=checkglowpan(line) -# if not isgenidata: -# return - # Check if line is ok -# iscrcok=checkcrc(line) -# if not iscrcok: -# return - # Process geni data - typ,ds,le,da,sa,line=process_header(line) - numbytes=le-2 - while numbytes>0 and len(line)>=numbytes: - print("--------------------------------------------------------------------") - cl,os,ale,line=process_apdu(line) - numbytes=numbytes-2-ale - # section: classes {{{2 - if cl==2 and ds==gf.DATA_REQUEST and os==gf.OS_GET: - ids2,val2,line=process_data(line,ale,1,0) - elif cl==2 and ds==gf.DATA_REPLY and os==gf.OS_GET: - ids2,val2,line=process_data(line,ale,0,1) - elif cl==2 and ds==gf.DATA_REQUEST and os==gf.OS_INFO: - ids2,val2,line=process_data(line,ale,1,0) - elif cl==2 and ds==gf.DATA_REPLY and os==gf.OS_INFO: - ids2,val2,line=process_data(line,ale,0,4) - elif cl==3 and (ds==gf.DATA_REQUEST or ds==gf.DATA_MESSAGE) and os==gf.OS_SET: - ids3,val3,line=process_data(line,ale,1,0) - elif cl==3 and ds==gf.DATA_REQUEST and os==gf.OS_INFO: - ids3,val3,line=process_data(line,ale,1,0) - elif cl==3 and ds==gf.DATA_REPLY and os==gf.OS_INFO: - ids3,val3,line=process_data(line,ale,0,4) - elif cl==4 and ds==gf.DATA_REQUEST and os==gf.OS_GET: - ids4,val4,line=process_data(line,ale,1,0) - elif cl==4 and ds==gf.DATA_REPLY and os==gf.OS_GET: - ids4,val4,line=process_data(line,ale,0,1) - elif cl==4 and (ds==gf.DATA_REQUEST or ds==gf.DATA_MESSAGE) and os==gf.OS_SET: - ids4,val4,line=process_data(line,ale,1,1) - elif cl==4 and ds==gf.DATA_REQUEST and os==gf.OS_INFO: - ids4,val4,line=process_data(line,ale,1,0) - elif cl==4 and ds==gf.DATA_REPLY and os==gf.OS_INFO: - ids4,val4,line=process_data(line,ale,0,4) - elif cl==5 and ds==gf.DATA_REQUEST and os==gf.OS_GET: - ids5,val5,line=process_data(line,ale,1,0) - elif cl==5 and ds==gf.DATA_REPLY and os==gf.OS_GET: - ids5,val5,line=process_data(line,ale,0,1) - elif cl==5 and (ds==gf.DATA_REQUEST or ds==gf.DATA_MESSAGE) and os==gf.OS_SET: - ids5,val5,line=process_data(line,ale,1,1) - elif cl==5 and ds==gf.DATA_REQUEST and os==gf.OS_INFO: - ids5,val5,line=process_data(line,ale,1,0) - elif cl==5 and ds==gf.DATA_REPLY and os==gf.OS_INFO: - ids5,val5,line=process_data(line,ale,0,4) - elif cl==7 and ds==gf.DATA_REQUEST and os==gf.OS_GET: - ids7,val7,line=process_string(line,ale,1,0) - elif cl==7 and ds==gf.DATA_REPLY and os==gf.OS_GET: - ids7,val7,line=process_string(line,ale,0,ale) - elif cl==7 and (ds==gf.DATA_REQUEST or ds==gf.DATA_MESSAGE) and os==gf.OS_SET: - ids7,val7,line=process_string(line,ale,1,ale-1) - elif cl==10 and ds==gf.DATA_REQUEST and os==gf.OS_GET: - ids10,val10,line=process_object(line,ale,1,0) - elif cl==10 and ds==gf.DATA_REPLY and os==gf.OS_GET: - ids10,val10,line=process_object(line,ale,0,ale) - elif cl==10 and (ds==gf.DATA_REQUEST or ds==gf.DATA_MESSAGE) and os==gf.OS_SET: - ids10,val10,line=process_object(line,ale,1,ale-1) - elif cl==11 and ds==gf.DATA_REQUEST and os==gf.OS_GET: - ids11,val11,line=process_data(line,ale,1,0) - elif cl==11 and ds==gf.DATA_REPLY and os==gf.OS_GET: - ids11,val11,line=process_data(line,ale,0,2) - elif cl==11 and (ds==gf.DATA_REQUEST or ds==gf.DATA_MESSAGE) and os==gf.OS_SET: - ids11,val11,line=process_data(line,ale,1,2) - elif cl==11 and ds==gf.DATA_REQUEST and os==gf.OS_INFO: - ids11,val11,line=process_data(line,ale,1,0) - elif cl==11 and ds==gf.DATA_REPLY and os==gf.OS_INFO: - ids11,val11,line=process_data(line,ale,0,4) - elif cl==12 and ds==gf.DATA_REQUEST and os==gf.OS_GET: - ids12,val12,line=process_data(line,ale,1,0) - elif cl==12 and ds==gf.DATA_REPLY and os==gf.OS_GET: - ids12,val12,line=process_data(line,ale,0,2) - elif cl==12 and (ds==gf.DATA_REQUEST or ds==gf.DATA_MESSAGE) and os==gf.OS_SET: - ids12,val12,line=process_data(line,ale,1,2) - elif cl==12 and ds==gf.DATA_REQUEST and os==gf.OS_INFO: - ids12,val12,line=process_data(line,ale,1,0) - elif cl==12 and ds==gf.DATA_REPLY and os==gf.OS_INFO: - ids12,val12,line=process_data(line,ale,0,4) - elif cl==13 and ds==gf.DATA_REQUEST and os==gf.OS_GET: - ids13,val13,line=process_data(line,ale,1,0) - elif cl==13 and ds==gf.DATA_REPLY and os==gf.OS_GET: - ids13,val13,line=process_data(line,ale,0,2) - elif cl==13 and (ds==gf.DATA_REQUEST or ds==gf.DATA_MESSAGE) and os==gf.OS_SET: - ids13,val13,line=process_data(line,ale,1,2) - elif cl==13 and ds==gf.DATA_REQUEST and os==gf.OS_INFO: - ids13,val13,line=process_data(line,ale,1,0) - elif cl==13 and ds==gf.DATA_REPLY and os==gf.OS_INFO: - ids13,val13,line=process_data(line,ale,0,4) - elif cl==14 and ds==gf.DATA_REQUEST and os==gf.OS_GET: - ids14,val14,line=process_data(line,ale,1,0) - elif cl==14 and ds==gf.DATA_REPLY and os==gf.OS_GET: - ids14,val14,line=process_data(line,ale,0,3) - elif cl==14 and (ds==gf.DATA_REQUEST or ds==gf.DATA_MESSAGE) and os==gf.OS_SET: - ids14,val14,line=process_data(line,ale,1,3) - elif cl==14 and ds==gf.DATA_REQUEST and os==gf.OS_INFO: - ids14,val14,line=process_data(line,ale,1,0) - elif cl==14 and ds==gf.DATA_REPLY and os==gf.OS_INFO: - ids14,val14,line=process_data(line,ale,0,4) - elif cl==15 and ds==gf.DATA_REQUEST and os==gf.OS_GET: - ids15,val15,line=process_data(line,ale,1,0) - elif cl==15 and ds==gf.DATA_REPLY and os==gf.OS_GET: - ids15,val15,line=process_data(line,ale,0,3) - elif cl==15 and (ds==gf.DATA_REQUEST or ds==gf.DATA_MESSAGE) and os==gf.OS_SET: - ids15,val15,line=process_data(line,ale,1,3) - elif cl==15 and ds==gf.DATA_REQUEST and os==gf.OS_INFO: - ids15,val15,line=process_data(line,ale,1,0) - elif cl==15 and ds==gf.DATA_REPLY and os==gf.OS_INFO: - ids15,val15,line=process_data(line,ale,0,4) - elif cl==16 and ds==gf.DATA_REQUEST and os==gf.OS_GET: - ids16,val16,line=process_data(line,ale,1,0) - elif cl==16 and ds==gf.DATA_REPLY and os==gf.OS_GET: - ids16,val16,line=process_data(line,ale,0,3) - elif cl==16 and (ds==gf.DATA_REQUEST or ds==gf.DATA_MESSAGE) and os==gf.OS_SET: - ids16,val16,line=process_data(line,ale,1,3) - elif cl==16 and ds==gf.DATA_REQUEST and os==gf.OS_INFO: - ids16,val16,line=process_data(line,ale,1,0) - elif cl==16 and ds==gf.DATA_REPLY and os==gf.OS_INFO: - ids16,val16,line=process_data(line,ale,0,4) - else: - line=line[ale:] -# section: filtering {{{2 -# if cl==5: -# td,master,speed=dbg_speed(ids5,val5,ts,sa) -# crc=process_crc(line) - return - -# section: main {{{1 -###################################################### -# section: serial {{{2 -#lsser=serial_ports() -#ser=serial.Serial() -#try: -# ser.port=lsser[0].device -# ser.open() -# print("Connected to",repr(ser.portstr)) -# print("Press Ctrl-C to interrupt") -#except: -# print("Unable to connect to serial port") -# exit(0) - -telegram=b'\x10\x33\x27\x0D\x22\x20\x0B\x03\x34\x35\x70\x02\x04\xBE\x71\x72\x73\xE5\x5B' -frame=bytearray() -count=0 -index=0 -try: - while True: - byte=bytes([telegram[index]]) - index=index+1 -# byte=ser.read() -# print(byte) - if count==0: -# timestamp=time.timestamp.now() - if byte==b'\x27' or byte==b'\x26' or byte==b'\x24': - print("START") - frame.extend(byte) - count=count+1 - else: - print("FLUSHING") - else: # receiving - frame.extend(byte) - count=count+1 - if count == frame[1]+4: - if crc.verifyCrc(frame): - print("CRC OK") - process_telegram(frame[:-2]) - else: - print("CRC ERR") - frame=bytearray() - count=0 - index=0 -except KeyInterrupt: - print("Interrupted") - -ser.close() -print("Disconnected") - -# section: plot {{{2 -###################################################### - -# Calculate timedelta -#if len(td)==0: exit() -#t0=td[0] -#td[:]=[x-t0 for x in td] -# -## Make a plot -#fig=plt.figure() -#plt.xlabel('time/s') -#plt.ylabel('speed/upper') -#plt.plot(td,speed[0],'green') -#plt.plot(td,speed[1],'red') -#plt.plot(td,speed[2],'blue') -#plt.plot(td,speed[3],'magenta') -#plt.legend('1234') -#plt.plot(td,master,'black') -#plt.title('multipump') -#plt.show() -#plt.close(fig) -# diff --git a/work/geni/geni_config.py b/work/geni/geni_config.py deleted file mode 100644 index 6dcd853..0000000 --- a/work/geni/geni_config.py +++ /dev/null @@ -1,1038 +0,0 @@ -# config file for gf.py script - -# section: constants {{{1 - -DATA_REQUEST=0x27 -DATA_MESSAGE=0x26 -DATA_REPLY=0x24 - -DA_BROADCAST_CONNECT=0xFE -DA_BROADCAST_REQUEST=0xFF -DA_BROADCAST_MESSAGE=0xF7 - -OS_GET=0 -OS_SET=2 -OS_INFO=3 -operation=[""]*4 -operation[OS_GET]="GET" -operation[OS_SET]="SET" -operation[OS_INFO]="INFO" - -ACK_OK=0 -ACK_CL_UNKNOWN=1 -ACK_ID_UNKNOWN=2 -ACK_OP_UNKNOWN=3 -ack=[""]*4 -ack[ACK_OK]="ACK_OK" -ack[ACK_CL_UNKNOWN]="ACK_CLASS_UNKNOWN" -ack[ACK_ID_UNKNOWN]="ACK_ID_UNKNOWN" -ack[ACK_OP_UNKNOWN]="ACK_OPERATION_UNKNOWN" - -class0=[""]*4 -class1=[] -class2=[""]*256 -class3=[""]*256 -class4=[""]*256 -class5=[""]*256 -class6=[] -class7=[""]*256 -class8=[] -class9=[] -class10=[""]*256 -class11=[""]*256 -class12=[""]*256 -class13=[""]*3 -class14=[""]*256 -class15=[""]*256 -class16=[""]*3 - -params=[] -params.append(class0) -params.append(class1) -params.append(class2) -params.append(class3) -params.append(class4) -params.append(class5) -params.append(class6) -params.append(class7) -params.append(class8) -params.append(class9) -params.append(class10) -params.append(class11) -params.append(class12) -params.append(class13) -params.append(class14) -params.append(class15) -params.append(class16) - -# section: class 2 {{{2 -class2[18 ]="outlet_diff" -class2[19 ]="h_remote_diff" -class2[20 ]="t_remote_diff" -class2[21 ]="h_storage_tank" -class2[22 ]="temp_att" -class2[23 ]="h_diff" -class2[24 ]="t_2hour_hi" -class2[25 ]="t_2hour_lo" -class2[26 ]="i_dc" -class2[27 ]="v_dc" -class2[28 ]="t_e" -class2[30 ]="i_mo" -class2[31 ]="h_outlet" -class2[32 ]="f_act" -class2[33 ]="p_hi" -class2[34 ]="p_lo" -class2[35 ]="speed_hi" -class2[36 ]="speed_lo" -class2[37 ]="h" -class2[38 ]="h_inlet" -class2[39 ]="q" -class2[40 ]="ref_loc" -class2[41 ]="p_max" -class2[42 ]="q_kn1" -class2[43 ]="q_max" -class2[44 ]="h_max" -class2[45 ]="torque_hi" -class2[46 ]="torque_lo" -class2[47 ]="led_contr" -class2[48 ]="ref_act" -class2[49 ]="ref_norm" -class2[50 ]="q_remote" -class2[51 ]="v_mo" -class2[52 ]="v_line" -class2[53 ]="h_remote_1" -class2[54 ]="h_feed_tank" -class2[55 ]="ref_inf" -class2[56 ]="p2_hi" -class2[57 ]="p2_lo" -class2[58 ]="t_w" -class2[59 ]="t_ambient" -class2[60 ]="sys_fb" -class2[61 ]="ref_att" -class2[62 ]="sys_ref" -class2[63 ]="t_remote_1" -class2[64 ]="start_alarm1" -class2[66 ]="qsd_alarm1" -class2[68 ]="stop_alarm1" -class2[73 ]="h_remote_2" -class2[74 ]="ref_ctr" -class2[75 ]="f_pid" -class2[76 ]="r_min" -class2[77 ]="r_max" -class2[78 ]="f_mo" -class2[79 ]="ref_map" -class2[80 ]="f_cl" -class2[81 ]="act_mode1" -class2[82 ]="act_mode2" -class2[83 ]="act_mode3" -class2[84 ]="act_mode4" -class2[85 ]="loc_setup1" -class2[86 ]="t_remote_2" -class2[87 ]="rem_setup1" -class2[88 ]="prop_press_infl" -class2[89 ]="dig_in_ctr_sig" -class2[90 ]="contr_source" -class2[91 ]="pump_at_limit" -class2[92 ]="aux_sensor" -class2[94 ]="dyn_drive_state1" -class2[95 ]="drive_modes1" -class2[96 ]="q_low_flow_ind" -class2[97 ]="curve_no_ref" -class2[98 ]="dyn_drive_state2" -class2[99 ]="lfs_state" -class2[100]="liqtec_dryrun_status" -class2[101]="lfs_est_time" -class2[102]="t_2hour_on_hi" -class2[103]="t_2hour_on_lo" -class2[105]="load_pct" -class2[106]="power_up_cnt_hi" -class2[107]="power_up_cnt_lo1" -class2[108]="power_up_cnt_lo2" -class2[109]="lubric_cnt" -class2[110]="bear_change_cnt" -class2[111]="time_to_bear_service" -class2[112]="control_mode" -class2[113]="ana_in_1" -class2[114]="ana_in_2" -class2[115]="ana_in_3" -class2[116]="temp_in_1" -class2[117]="temp_in_2" -class2[119]="t_bear_de" -class2[120]="t_bear_nde" -class2[121]="volume_hi" -class2[122]="volume_lo1" -class2[123]="volume_lo2" -class2[124]="volume_lo3" -class2[125]="spec_energy_hi" -class2[126]="spec_energy_lo" -class2[127]="grf_sensor_press" -class2[128]="grf_sensor_temp" -class2[129]="liqtec_temp" -class2[148]="unit_family" -class2[149]="unit_type" -class2[150]="unit_version" -class2[151]="energy_hi" -class2[152]="energy_lo1" -class2[153]="energy_lo2" -class2[154]="alarm_code_pump" -class2[155]="alarm_code_disp" -class2[156]="warn_code" -class2[157]="warn_code_disp" -class2[158]="alarm_code" -class2[159]="warn_bits1" -class2[160]="warn_bits2" -class2[161]="warn_bits3" -class2[162]="warn_bits4" -class2[163]="alarm_log_1" -class2[164]="alarm_log_2" -class2[165]="alarm_log_3" -class2[166]="alarm_log_4" -class2[167]="alarm_log_5" -class2[168]="alarm_log_1_disp" -class2[169]="alarm_log_2_disp" -class2[170]="alarm_log_3_disp" -class2[171]="alarm_log_4_disp" -class2[172]="alarm_log_5_disp" -class2[173]="warn_log_1" -class2[174]="warn_log_2" -class2[175]="warn_log_3" -class2[176]="warn_log_4" -class2[177]="warn_log_5" -class2[178]="warn_log_1_disp" -class2[179]="warn_log_2_disp" -class2[180]="warn_log_3_disp" -class2[181]="warn_log_4_disp" -class2[182]="warn_log_5_disp" -class2[183]="alarm_log_change_cnt" -class2[184]="pumps_present" -class2[185]="pumps_running" -class2[186]="pumps_fault" -class2[187]="pumps_com_fault" -class2[188]="pumps_fb_sensor" -class2[189]="fb_sensor_status" -class2[190]="up_down_button" -class2[191]="off_button" -class2[192]="add_on_actual" -class2[193]="r100_menu_setup1_act" -class2[194]="dig_out" -class2[195]="dig_in" -class2[196]="ana_out" -class2[197]="i_mo_max" -class2[199]="t_mo" -class2[200]="t_w_3d" -class2[201]="q_3d" -class2[202]="h_3d" -class2[203]="p_3d" -class2[207]="functional_module" -class2[208]="hmi_module" -class2[209]="power_board" -class2[220]="tps_i_mo" -class2[221]="tps_t_2hour_hi" -class2[222]="tps_t_2hour_lo" -class2[223]="tps_t_w" -class2[224]="tps_start_cnt_hi" -class2[225]="tps_start_cnt_lo1" -class2[226]="tps_start_cnt_lo2" -class2[227]="tps_act_mode1" -class2[228]="tps_act_mode3" -class2[229]="tps_contr_source" -class2[230]="tps_dig_in" -class2[231]="tps_alarm_code" -class2[234]="soft_press_status" -class2[235]="varistor_wear_out" -class2[236]="glowpan_radio_status" -class2[237]="dyn_info_change_cnt" -class2[238]="actual_pwm_type" -# section: class 3 {{{2 -class3[1 ]="reset" -class3[2 ]="reset_alarm" -class3[3 ]="factory_boot" -class3[4 ]="user_boot" -class3[5 ]="stop" -class3[6 ]="start" -class3[7 ]="remote" -class3[8 ]="local" -class3[15 ]="forward" -class3[16 ]="reverse" -class3[20 ]="test" -class3[22 ]="const_freq" -class3[23 ]="prop_press" -class3[24 ]="const_press" -class3[25 ]="min" -class3[26 ]="max" -class3[30 ]="lock_keys" -class3[31 ]="unlock_keys" -class3[33 ]="ref_up" -class3[34 ]="ref_down" -class3[36 ]="reset_hist" -class3[40 ]="mp_master" -class3[41 ]="auto_restart_e" -class3[42 ]="auto_restart_d" -class3[47 ]="mcp_stop" -class3[48 ]="mcp_derate" -class3[49 ]="low_flow_stop_e" -class3[50 ]="low_flow_stop_d" -class3[51 ]="reset_alarm_log" -class3[52 ]="auto_adapt" -class3[59 ]="duty_standby_e" -class3[61 ]="const_temp" -class3[62 ]="cl_sensor_contr" -class3[63 ]="const_flow" -class3[64 ]="const_level" -class3[65 ]="flow_adapt" -class3[66 ]="night_reduct_e" -class3[67 ]="night_reduct_d" -class3[68 ]="forced_local" -class3[69 ]="release_forced_local" -class3[75 ]="hand" -class3[76 ]="ds_ref_up" -class3[77 ]="reset_auto_adapt" -class3[79 ]="relay_1_open" -class3[80 ]="relay_1_close" -class3[81 ]="relay_3_open" -class3[82 ]="relay_3_close" -class3[83 ]="relay_4_open" -class3[84 ]="relay_4_close" -class3[86 ]="reset_start_cnt" -class3[87 ]="mp_start_search" -class3[88 ]="mp_join_req_accepted" -class3[89 ]="mp_join_req_rejected" -class3[90 ]="reset_heat_energy_cnt" -class3[91 ]="reset_energy_cnt" -class3[92 ]="mp_start_multi_pump" -class3[93 ]="mp_end_multi_pump" -class3[94 ]="twin_pump_master" -class3[95 ]="twin_pump_slave" -class3[96 ]="const_diff_press" -class3[97 ]="const_diff_temp" -class3[98 ]="authen_req_accepted" -class3[99 ]="authen_req_rejected" -class3[103]="user_def" -class3[104]="wink_p1" -class3[105]="wink_p2" -class3[106]="wink_p3" -class3[107]="wink_p4" -class3[108]="wink_p5" -class3[109]="wink_p6" -class3[110]="lubrication_done" -class3[111]="bearing_changed" -class3[112]="varistor_changed" -class3[113]="relay_2_open" -class3[114]="relay_2_close" -class3[115]="debug" -class3[116]="update_h_max" -class3[118]="reset_corr_hist_log" -class3[119]="geniair_node_ping" -class3[120]="mp_start_wired_search" -class3[121]="wink_on" -class3[122]="wink_off" -# section: class 4 {{{2 -class4[0 ]="production_code_1" -class4[1 ]="production_code_2" -class4[2 ]="production_code_3" -class4[3 ]="production_code_4" -class4[4 ]="production_code_5" -class4[5 ]="production_code_6" -class4[6 ]="production_code_7" -class4[7 ]="production_code_8" -class4[8 ]="production_code_9" -class4[9 ]="production_code_10" -class4[10 ]="configuration_code_1" -class4[11 ]="configuration_code_2" -class4[12 ]="configuration_code_3" -class4[13 ]="configuration_code_4" -class4[14 ]="vir_conf_code_year" -class4[15 ]="vir_conf_code_week" -class4[16 ]="act_conf_code_year" -class4[17 ]="act_conf_code_week" -class4[18 ]="el_version_char_1" -class4[19 ]="el_version_char_2" -class4[20 ]="el_version_char_3" -class4[21 ]="t_min_delay" -class4[22 ]="t_standby" -class4[23 ]="t_ramp_up_1_hi" -class4[24 ]="t_ramp_up_1_lo" -class4[25 ]="t_ramp_down_1_hi" -class4[26 ]="t_ramp_down_1_lo" -class4[27 ]="local_mode_setup" -class4[28 ]="local_ref_setup" -class4[29 ]="f_lower" -class4[30 ]="f_upper" -class4[31 ]="f_nom" -class4[32 ]="f_min_stop" -class4[33 ]="f_night" -class4[34 ]="f_min" -class4[35 ]="f_max" -class4[36 ]="f_min_start" -class4[37 ]="user_curve" -class4[38 ]="r100_menu_setup_2" -class4[39 ]="auto_restarts_per_day" -class4[40 ]="motor_type" -class4[41 ]="h_max_limit" -class4[42 ]="h_max_limit_ed" -class4[43 ]="geniair_channel" -class4[44 ]="stator_heater_level" -class4[45 ]="mp_master_addr" -class4[46 ]="unit_addr" -class4[47 ]="group_addr" -class4[48 ]="event_action_setup1" -class4[49 ]="event_action_setup2" -class4[50 ]="event_action_setup3" -class4[51 ]="event_action_setup4" -class4[52 ]="event_action_setup5" -class4[55 ]="bear_superv_setup" -class4[56 ]="bear_superv_detect_del" -class4[57 ]="bear_superv_reset_hyst" -class4[58 ]="t_bear_de_warn_limit" -class4[59 ]="t_bear_de_alarm_limit" -class4[60 ]="t_bear_nde_warn_limit" -class4[61 ]="t_bear_nde_alarm_limit" -class4[62 ]="bear_lubric_setup" -class4[63 ]="bear_lubric_max" -class4[64 ]="r100_menu_setup_4" -class4[65 ]="p_max" -class4[66 ]="r100_menu_select" -class4[67 ]="limit_exc_1_setup" -class4[68 ]="limit_exc_2_setup" -class4[69 ]="limit_exc_1_source" -class4[70 ]="limit_exc_2_source" -class4[71 ]="limit_exc_1_action" -class4[72 ]="limit_exc_2_action" -class4[78 ]="min_reply_delay_default" -class4[79 ]="baud_rate_default" -class4[80 ]="temp_influence_setup" -class4[81 ]="geni_setup" -class4[82 ]="r100_menu_setup_1" -class4[83 ]="h_const_ref_min" -class4[84 ]="h_const_ref_max" -class4[85 ]="h_prop_ref_min" -class4[86 ]="h_prop_ref_max" -class4[87 ]="ref_steps" -class4[88 ]="h_max" -class4[89 ]="q_max" -class4[90 ]="q_bezier1" -class4[91 ]="h_bezier1" -class4[92 ]="q_bezier2" -class4[93 ]="h_bezier2" -class4[94 ]="liqtec_dryrun_det_delay" -class4[95 ]="liqtec_dryrun_limit" -class4[96 ]="h_auto_act" -class4[97 ]="application_type" -class4[98 ]="h_ref_min" -class4[99 ]="h_auto_ref_min" -class4[100]="q_low_meas_limit" -class4[101]="delta_h" -class4[102]="lfs_type_select" -class4[103]="h_max_hi" -class4[104]="h_max_lo" -class4[105]="q_max_hi" -class4[106]="q_max_lo" -class4[109]="def_direction" -class4[110]="ext_fault_quick_rst_tim" -class4[111]="ext_fault_quick_rst_max" -class4[112]="ext_fault_slow_rst_tim" -class4[113]="ext_fault_slow_rst_max" -class4[114]="external_fault_delay" -class4[115]="dry_run_f0" -class4[116]="dry_run_p0" -class4[117]="dry_run_f_min" -class4[118]="quick_restart_max" -class4[119]="quick_restart_time" -class4[120]="prop_curve_select" -class4[121]="prop_curve_reduc_pct" -class4[122]="h_auto_set" -class4[123]="h_auto_foot" -class4[124]="fac_restart_setup1" -class4[125]="fac_restart_setup2" -class4[126]="fac_restart_setup3" -class4[127]="dig_in_options" -class4[128]="t_ramp_up_2_hi" -class4[129]="t_ramp_up_2_lo" -class4[130]="t_ramp_down_2_hi" -class4[131]="t_ramp_down_2_lo" -class4[132]="procent_k" -class4[133]="h_max_def" -class4[134]="h_max_act" -class4[136]="prop_ctr_qmax_hi" -class4[137]="prop_ctr_qmax_lo" -class4[138]="ref_preset_1" -class4[139]="ref_preset_2" -class4[140]="ref_preset_3" -class4[141]="ref_preset_4" -class4[142]="ref_preset_5" -class4[143]="ref_preset_6" -class4[144]="ref_preset_7" -class4[145]="ref_preset_direction" -class4[147]="fs1_begin_hi" -class4[148]="fs1_begin_lo" -class4[149]="fs1_end_hi" -class4[150]="fs1_end_lo" -class4[151]="fs2_begin_hi" -class4[152]="fs2_begin_lo" -class4[153]="fs2_end_hi" -class4[154]="fs2_end_lo" -class4[155]="t_start_ramp" -class4[156]="t_stop_ramp" -class4[157]="t_skip_band_ramp" -class4[162]="t_power_up_delay" -class4[163]="t_fan_ctr_limit" -class4[164]="t_alternate" -class4[165]="alarm_setup1" -class4[166]="alarm_setup2" -class4[167]="restart_setup1" -class4[168]="restart_setup2" -class4[169]="application_setup1" -class4[170]="application_setup2" -class4[171]="cl_ctr_setup1" -class4[172]="application_setup3" -class4[173]="application_setup4" -class4[175]="ref_inf_source" -class4[176]="h_nom_hi" -class4[177]="h_nom_lo" -class4[178]="q_nom_hi" -class4[179]="q_nom_lo" -class4[180]="k_p" -class4[181]="t_i_hi" -class4[182]="t_i_lo" -class4[183]="t_d_hi" -class4[184]="t_d_lo" -class4[185]="f_pid_start" -class4[188]="pulse_cnt_setup_hi" -class4[189]="pulse_cnt_setup_lo1" -class4[190]="pulse_cnt_setup_lo2" -class4[191]="dig_io_direction" -class4[195]="dig_in_polarity" -class4[196]="dig_in_1_func" -class4[197]="dig_in_2_func" -class4[198]="dig_in_3_func" -class4[199]="dig_in_4_func" -class4[200]="dig_out_1_func" -class4[201]="dig_out_2_func" -class4[202]="dig_out_3_func" -class4[203]="dig_out_4_func" -class4[204]="dig_out_1_delay" -class4[205]="dig_out_2_delay" -class4[206]="dig_out_3_delay" -class4[207]="dig_out_4_delay" -class4[208]="ana_in_1_unit" -class4[209]="ana_in_1_min_hi" -class4[210]="ana_in_1_min_lo" -class4[211]="ana_in_1_max_hi" -class4[212]="ana_in_1_max_lo" -class4[213]="ana_in_2_unit" -class4[214]="ana_in_2_min_hi" -class4[215]="ana_in_2_min_lo" -class4[216]="ana_in_2_max_hi" -class4[217]="ana_in_2_max_lo" -class4[218]="ana_in_3_unit" -class4[219]="ana_in_3_min_hi" -class4[220]="ana_in_3_min_lo" -class4[221]="ana_in_3_max_hi" -class4[222]="ana_in_3_max_lo" -class4[223]="ana_in_1_sig_type" -class4[224]="ana_in_2_sig_type" -class4[225]="ana_in_3_sig_type" -class4[226]="ana_in_1_applic" -class4[227]="ana_in_2_applic" -class4[228]="ana_in_3_applic" -class4[229]="ana_in_1_func" -class4[230]="ana_in_2_func" -class4[231]="ana_in_3_func" -class4[232]="temp_in_1_applic" -class4[233]="temp_in_2_applic" -class4[234]="temp_in_3_applic" -class4[236]="temp_in_2_func" -class4[237]="temp_in_3_func" -class4[238]="grf_sensor_press_func" -class4[239]="grf_sensor_temp_func" -class4[240]="ana_out_parm" -class4[241]="tp_mode" -class4[242]="ana_out_sig_type" -class4[243]="liqtec_temp_func" -# section: class 5 {{{2 -class5[1 ]="ref_rem" -class5[2 ]="ref_ir" -class5[3 ]="sys_fb_rem" -class5[4 ]="ref_hand" -class5[5 ]="ref_led_indication" -class5[27 ]="duty_standby_func_ctr" -class5[30 ]="alarm_code_sim" -class5[31 ]="warn_code_sim" -class5[35 ]="alarm_sim_activate" -class5[38 ]="set_min_reply_delay" -class5[39 ]="set_baud_rate" -class5[40 ]="set_lubric_cnt" -class5[41 ]="set_bear_change_cnt" -class5[49 ]="sim_card_status" -class5[50 ]="signal_level_act" -class5[51 ]="signal_level_avg" -class5[55 ]="gsm_state" -class5[56 ]="cim_heartbeat" -class5[57 ]="cim_type" -class5[58 ]="network_heartbeat" -class5[65 ]="non_master_mode" -class5[66 ]="mp_master_ref" -class5[67 ]="mp_master_ref_p1" -class5[68 ]="mp_master_ref_p2" -class5[69 ]="mp_master_ref_p3" -class5[70 ]="mp_master_ref_p4" -class5[71 ]="mp_master_ref_p5" -class5[72 ]="mp_master_ref_p6" -# section: class 7 {{{2 -class7[1 ]="product_name" -class7[2 ]="project_name" -class7[3 ]="software_name1" -class7[4 ]="compile_date" -class7[5 ]="genipro_ver" -class7[6 ]="hex_file_prod_no" -class7[7 ]="developers" -class7[8 ]="device_prod_no" -class7[9 ]="serial_no" -class7[14 ]="software_name2" -class7[16 ]="data_log_ver" -class7[17 ]="user_string1" -class7[18 ]="user_string2" -class7[19 ]="gsc_file_description" -class7[20 ]="gsc_file_version" -class7[21 ]="gsc_file_id" -class7[50 ]="fe_sw_ver_str" -class7[51 ]="be_sw_ver_string" -class7[52 ]="gpds_lib_sw_ver_string" -class7[53 ]="pdm_sw_ver_string" -class7[54 ]="pdm_fe_sw_ver_string" -class7[55 ]="cim_sw_ver_string" -class7[56 ]="sensor_sw_string" -class7[70 ]="geniair_node_name_1" -class7[71 ]="geniair_node_name_2" -class7[72 ]="geniair_group_name_1" -class7[73 ]="geniair_group_name_2" -class7[74 ]="pump_1_name_str_1" -class7[75 ]="pump_1_name_str_2" -class7[76 ]="pump_2_name_str_1" -class7[77 ]="pump_2_name_str_2" -class7[78 ]="pump_3_name_str_1" -class7[79 ]="pump_3_name_str_2" -class7[80 ]="pump_4_name_str_1" -class7[81 ]="pump_4_name_str_2" -class7[82 ]="pump_5_name_str_1" -class7[83 ]="pump_5_name_str_2" -class7[84 ]="pump_6_name_str_1" -class7[85 ]="pump_6_name_str_2" -# section: class 10 {{{2 -class10[0 ]="contents_obj" -class10[53]="corr_hist_obj" -class10[55]="event_back_log" -class10[56]="mge_event_log_obj" -class10[57]="event_connect_obj" -class10[71]="geniair_appl_bind_tab" -class10[72]="geniair_nwk_status_obj" -class10[73]="twin_pump_data_exch_obj" -class10[74]="max_power_log_records_obj" -class10[76]="pump_setup_options_obj" -class10[77]="multi_pump_sync_obj" -# section: class 11 {{{2 -class11[0 ]="gpds_eeprom_alarm_cnt" -class11[1 ]="gpds_inrush_alarm_cnt" -class11[2 ]="gpds_dpfc_hsd_alarm_cnt" -class11[3 ]="gpds_u_dc_max_alarm_cnt" -class11[4 ]="gpds_low_power_alarm_cnt" -class11[5 ]="gpds_motor_con_alarm_cnt" -class11[6 ]="gpds_turbine_alarm_cnt" -class11[7 ]="gpds_derate_max_alarm_cnt" -class11[8 ]="gpds_blocked_alarm_cnt" -class11[9 ]="gpds_hsd_in_cl_alarm_cnt" -class11[10 ]="gpds_lost_rotor_alarm_cnt" -class11[11 ]="gpds_supply_low_alarm_cnt" -class11[12 ]="gpds_temp_alarm_cnt" -class11[14 ]="gpds_adc_mux_alarm_cnt" -class11[16 ]="gpds_api_fuffer_fault_cnt" -class11[17 ]="gpds_api_com_fault_cnt" -class11[18 ]="gpds_api_id_fault_cnt" -class11[19 ]="gpds_api_obj_fault_cnt" -class11[20 ]="gpds_api_state_fault_cnt" -class11[21 ]="gpds_api_version_fault_cnt" -class11[22 ]="power_24v_fault_cnt" -class11[23 ]="power_4v75_fault_cnt" -class11[24 ]="power_5v2_fault_cnt" -class11[25 ]="grf_sens_nack_fault_cnt" -class11[26 ]="grf_sens_sum_fault_cnt" -class11[27 ]="grf_sens_timeout_1_fault_cnt" -class11[28 ]="grf_sens_timeout_2_fault_cnt" -class11[29 ]="grf_sens_low_press_fault_cnt" -class11[30 ]="ana_in_1_16bits" -class11[31 ]="ana_in_2_16bits" -class11[32 ]="ana_in_3_16bits" -class11[33 ]="grf_sensor_press_16bits" -class11[34 ]="grf_sensor_temp_16bits" -class11[35 ]="geniair_ping_result" -class11[36 ]="geniair_signal_quality" -class11[37 ]="mp_no_of_pumps" -class11[38 ]="mp_pump_search_status" -class11[39 ]="mp_search_timeout" -class11[40 ]="ref_act_16" -class11[41 ]="ref_loc_16" -class11[42 ]="ref_norm_16" -class11[43 ]="ref_ctr_16" -class11[44 ]="sys_ref_16" -class11[45 ]="sys_fb_16" -class11[46 ]="r_max_abs" -class11[47 ]="r_min_abs" -class11[50 ]="power_16" -class11[51 ]="t_w_16" -class11[52 ]="diff_press_16" -class11[53 ]="flow_16" -class11[80 ]="tps_power_16" -class11[81 ]="tps_ana_in_1_16bits" -class11[82 ]="tps_ana_in_2_16bits" -class11[83 ]="tps_ana_in_3_16bits" -class11[101]="p0_act_mode1" -class11[102]="p0_contr_source" -class11[103]="p0_start_cnt_hi" -class11[104]="p0_start_cnt_lo" -class11[105]="p0_opr_time_hi" -class11[106]="p0_opr_time_lo" -class11[107]="p0_energy_hi" -class11[108]="p0_energy_lo" -class11[109]="p0_power" -class11[110]="p0_i_mo" -class11[111]="p0_speed" -class11[112]="p0_speed_pct" -class11[113]="p0_t_mo" -class11[114]="p0_alarm_code" -class11[115]="p0_warn_code" -class11[121]="p1_act_mode1" -class11[141]="p2_act_mode1" -class11[161]="p3_act_mode1" -class11[181]="p4_act_mode1" -class11[201]="p5_act_mode1" -class11[221]="p6_act_mode1" -# section: class 12 {{{2 -class12[0 ]="ref_inf_setup" -class12[1 ]="no_of_table_points" -class12[2 ]="ref_inf_pct_value_1" -class12[3 ]="ref_inf_pct_value_2" -class12[4 ]="ref_inf_pct_value_3" -class12[5 ]="ref_inf_pct_value_4" -class12[6 ]="ref_inf_pct_value_5" -class12[7 ]="ref_inf_pct_value_6" -class12[8 ]="ref_inf_pct_value_7" -class12[9 ]="ref_inf_pct_value_8" -class12[10 ]="ref_inf_item_value_1" -class12[11 ]="ref_inf_item_value_2" -class12[12 ]="ref_inf_item_value_3" -class12[13 ]="ref_inf_item_value_4" -class12[14 ]="ref_inf_item_value_5" -class12[15 ]="ref_inf_item_value_6" -class12[16 ]="ref_inf_item_value_7" -class12[17 ]="ref_inf_item_value_8" -class12[18 ]="ref_inf_filter_time" -class12[19 ]="ref_att_mode" -class12[21 ]="lfs_boost_band_scale" -class12[22 ]="lfs_t_boost_max" -class12[23 ]="lfs_t_boost_min" -class12[24 ]="lfs_tank_volume" -class12[25 ]="lfs_estim_interval" -class12[26 ]="lfs_q_lim_opt" -class12[27 ]="lfs_max_press_drop_opt" -class12[28 ]="lfs_q_lim_comf" -class12[29 ]="lfs_max_press_drop_comf" -class12[30 ]="lfs_q_lim_cust" -class12[31 ]="lfs_max_press_drop_cust" -class12[32 ]="lfs_feed_forward_gain" -class12[33 ]="lfs_settling_time" -class12[34 ]="lfs_setpoint_band" -class12[35 ]="lfs_gradient_est_limit" -class12[36 ]="lfs_hyst_band" -class12[37 ]="extra_boost" -class12[38 ]="lfs_flow_test_limit" -class12[40 ]="dig_in_1_delay" -class12[41 ]="dig_in_1_dur_tim" -class12[42 ]="dig_in_1_dur_tim_mode" -class12[43 ]="dig_in_2_delay" -class12[44 ]="dig_in_2_dur_tim" -class12[45 ]="dig_in_2_dur_tim_mode" -class12[46 ]="dig_in_3_delay" -class12[47 ]="dig_in_3_dur_tim" -class12[48 ]="dig_in_3_dur_tim_mode" -class12[49 ]="dig_in_4_delay" -class12[50 ]="dig_in_4_dur_tim" -class12[51 ]="dig_in_4_dur_tim_mode" -class12[65 ]="relub_interval" -class12[67 ]="setpoint_reduction_k1" -class12[68 ]="setpoint_reduction_k2" -class12[69 ]="pdc_ref_max" -class12[70 ]="iq_ref_max" -class12[71 ]="mot_contr_bits" -class12[72 ]="hi_f6_on" -class12[73 ]="hi_f6_off" -class12[74 ]="hi_f12_on" -class12[75 ]="hi_f12_off" -class12[76 ]="hi_f24_on" -class12[77 ]="hi_f24_off" -class12[78 ]="hi_fx_on" -class12[79 ]="hi_fx_off" -class12[80 ]="hi_amp6_g" -class12[81 ]="hi_amp6_o" -class12[82 ]="hi_amp12" -class12[83 ]="hi_amp24" -class12[84 ]="hi_ampx" -class12[85 ]="hi_ang6_g" -class12[86 ]="hi_ang6_o" -class12[87 ]="hi_ang12" -class12[88 ]="hi_ang24" -class12[89 ]="hi_angx" -class12[90 ]="hi_hx" -class12[171]="inlet_diameter" -class12[172]="outlet_diameter" -class12[173]="in_out_hight_diff" -class12[175]="bearing_temp_nom" -class12[176]="bearing_speed_nom" -class12[180]="disp_misch_setup" -class12[181]="disp_language" -class12[183]="disp_quant_setup_1" -class12[184]="disp_quant_setup_2" -class12[185]="disp_quant_setup_3" -class12[186]="disp_home_screen_parm_1" -class12[187]="disp_home_screen_parm_2" -class12[188]="disp_home_screen_parm_3" -class12[189]="disp_home_screen_parm_4" -class12[190]="spb_setup" -class12[191]="spb_ol_max_pump_speed" -class12[192]="spb_speed_ctr_pumps" -class12[193]="spb_ramp" -class12[194]="spb_ol_press_timeout" -class12[195]="spb_release_press" -class12[197]="t_fc_max" -class12[198]="t_fc_max_hys" -class12[201]="q_max_limit" -class12[202]="local_ref_setup" -class12[203]="q_max_limit_upper" -class12[205]="limit_exc_1_limit" -class12[206]="limit_exc_2_limit" -class12[207]="limit_exc_1_reset_hyst" -class12[208]="limit_exc_2_reset_hyst" -class12[209]="limit_exc_1_detect_del" -class12[210]="limit_exc_2_detect_del" -class12[211]="limit_exc_1_reset_del" -class12[212]="limit_exc_2_reset_del" -class12[214]="pump_stop_speed" -class12[215]="pump_start_speed" -class12[216]="pump_stop_delay" -class12[217]="ramp_up_time" -class12[218]="ramp_down_time" -class12[219]="cas_ctr_cut_out_hys" -class12[220]="max_cut_in_delay" -class12[221]="max_cut_in_delay_dev" -class12[222]="calc_cut_in_speed_offset" -class12[223]="pump_switch_off_period" -class12[224]="cas_ctr_pid_preset_time" -class12[225]="cas_ctr_cut_in_speed_2" -class12[226]="cas_ctr_cut_out_speed_1" -class12[227]="cas_ctr_min_speed" -class12[228]="cas_ctr_min_no_of_pumps" -class12[229]="cas_ctr_protect_ramp" -class12[230]="cut_in_first_e_pump" -class12[231]="max_starts_per_hour" -class12[232]="pump_min_switch_delay" -class12[233]="p1_prio" -class12[234]="p2_prio" -class12[235]="p3_prio" -class12[236]="p4_prio" -class12[237]="p5_prio" -class12[238]="p6_prio" -class12[239]="standby_pumps" -class12[240]="time_based_alter" -class12[241]="energy_based_alter" -class12[242]="f_lower_16" -class12[243]="f_upper_16" -class12[244]="f_nom_16" -# section: class 13 {{{2 -class13[1]="ref_rem_16" -class13[2]="ref_ir_16" -# section: class 14 {{{2 -class14[0 ]="geniair_trans_cnt" -class14[1 ]="geniair_rec_cnt" -class14[2 ]="geniair_trans_and_ack_cnt" -class14[3 ]="geni_profile_version" -class14[6 ]="disp_event_ctr" -class14[9 ]="power_on_time" -class14[10 ]="alarm_log_1_app_time" -class14[11 ]="alarm_log_2_app_time" -class14[12 ]="alarm_log_3_app_time" -class14[13 ]="alarm_log_4_app_time" -class14[14 ]="alarm_log_5_app_time" -class14[15 ]="warn_log_1_app_time" -class14[16 ]="warn_log_2_app_time" -class14[17 ]="warn_log_3_app_time" -class14[18 ]="warn_log_4_app_time" -class14[19 ]="warn_log_5_app_time" -class14[20 ]="alarm_log_1_dis_time" -class14[21 ]="alarm_log_2_dis_time" -class14[22 ]="alarm_log_3_dis_time" -class14[23 ]="alarm_log_4_dis_time" -class14[24 ]="alarm_log_5_dis_time" -class14[25 ]="warn_log_1_dis_time" -class14[26 ]="warn_log_2_dis_time" -class14[27 ]="warn_log_3_dis_time" -class14[28 ]="warn_log_4_dis_time" -class14[29 ]="warn_log_5_dis_time" -class14[30 ]="unix_rtc" -class14[31 ]="volume_cnt1" -class14[32 ]="volume_cnt1_year" -class14[33 ]="heat_energy_cnt1" -class14[34 ]="heat_energy_cnt1_year" -class14[35 ]="heat_power" -class14[36 ]="heat_temp_diff" -class14[37 ]="power_32" -class14[38 ]="energy_32" -class14[40 ]="opr_time" -class14[41 ]="mp_power" -class14[42 ]="mp_energy" -class14[43 ]="mp_pressure" -class14[44 ]="mp_flow" -class14[45 ]="mp_speed" -class14[46 ]="mp_speed_pct" -class14[47 ]="mp_media_temp" -class14[51 ]="volume_cnt2" -class14[52 ]="volume_cnt2_year" -class14[53 ]="heat_energy_cnt2" -class14[54 ]="heat_energy_cnt2_year" -class14[55 ]="last_time_stamp_cnt1" -class14[56 ]="last_time_stamp_cnt2" -class14[57 ]="counter_status" -class14[60 ]="flow_below_range_cnt" -class14[61 ]="flow_above_range_cnt" -class14[80 ]="tps_head" -class14[81 ]="tps_flow" -class14[82 ]="tps_energy" -class14[83 ]="tps_speed" -class14[84 ]="tau_est" -class14[85 ]="dp_est" -class14[86 ]="p_shaft" -class14[87 ]="pm_loss" -class14[88 ]="q_est" -class14[89 ]="i_mo_32" -class14[238]="sector_1_writes" -class14[239]="sector_2_writes" -class14[240]="sector_3_writes" -class14[241]="sector_4_writes" -class14[242]="sector_5_writes" -class14[243]="sector_6_writes" -class14[244]="sector_7_writes" -class14[245]="sector_8_writes" -class14[246]="sector_1_account" -class14[247]="sector_2_account" -class14[248]="sector_3_account" -class14[249]="sector_4_account" -class14[250]="sector_5_account" -class14[251]="sector_6_account" -class14[252]="sector_7_account" -class14[253]="sector_8_account" -class14[254]="persistence_lock" -class14[255]="persistence_lock_cnt" -# section: class 15 {{{2 -class15[0 ]="flow_est_coeff_g0" -class15[1 ]="flow_est_coeff_g1" -class15[2 ]="flow_est_coeff_g2" -class15[3 ]="flow_est_coeff_g3" -class15[4 ]="flow_est_coeff_g4" -class15[5 ]="flow_est_coeff_g5" -class15[6 ]="flow_est_coeff_kp" -class15[7 ]="flow_est_coeff_kh" -class15[8 ]="flow_est_coeff_k0" -class15[9 ]="flow_est_q_min" -class15[15 ]="control_mode_mask" -class15[20 ]="geniair_mac_addr_hi" -class15[21 ]="geniair_mac_addr_lo" -class15[22 ]="geniair_pan_id_nwk_addr" -class15[23 ]="geniair_nwk_key_hi" -class15[24 ]="geniair_nwk_key_lo1" -class15[25 ]="geniair_nwk_key_lo2" -class15[26 ]="geniair_nwk_key_lo3" -class15[27 ]="geniair_mode_and_mask" -class15[28 ]="geniair_radio_ed" -class15[29 ]="pulse_cnt_setup" -class15[40 ]="a0m" -class15[41 ]="a1m" -class15[42 ]="a2m" -class15[43 ]="a3m" -class15[44 ]="a4m" -class15[45 ]="a5m" -class15[46 ]="a6m" -class15[47 ]="k1" -class15[48 ]="aqdp0m" -class15[49 ]="aqdp1m" -class15[50 ]="aqdp2m" -class15[51 ]="aqdp3m" -class15[52 ]="aqdp4m" -class15[53 ]="aqdp5m" -class15[54 ]="aqdp6m" -class15[55 ]="aqdp7m" -class15[56 ]="at0m" -class15[57 ]="at1m" -class15[58 ]="at2m" -class15[59 ]="at3m" -class15[60 ]="at4m" -class15[61 ]="at5m" -class15[62 ]="at6m" -class15[63 ]="at7m" -class15[64 ]="at8m" -class15[65 ]="scale1_a" -class15[66 ]="scale1_b" -class15[67 ]="scale2_a" -class15[68 ]="scale2_b" -class15[69 ]="scale_max" -class15[70 ]="scale_min" -class15[71 ]="aqh0" -class15[72 ]="aqh1" -class15[73 ]="aqh2" -class15[74 ]="aqh3" -class15[75 ]="aqh4" -class15[76 ]="aqh5" -class15[77 ]="dp_scale" -class15[78 ]="t_scale" -class15[79 ]="max_curve_qh_0" -class15[80 ]="max_curve_qh_1" -class15[81 ]="max_curve_qh_2" -class15[82 ]="qp_max_curve_0" -class15[83 ]="qp_max_curve_1" -class15[84 ]="qp_max_curve_2" -class15[85 ]="qp_max_curve_3" -class15[86 ]="qp_max_curve_4" -class15[87 ]="qp_max_curve_5" -class15[88 ]="qh_max_curve_0" -class15[89 ]="qh_max_curve_1" -class15[90 ]="qh_max_curve_2" -class15[91 ]="qh_max_curve_3" -class15[92 ]="qh_max_curve_4" -class15[93 ]="qh_max_curve_5" -class15[94 ]="flow_limit_kp" -class15[95 ]="flow_limit_ti" -class15[96 ]="pressure_limit_kp" -class15[97 ]="pressure_limit_ti" -class15[98 ]="kq_max" -class15[99 ]="kq_min" -class15[100]="pwm_1" -class15[101]="pwm_2" -class15[102]="n_alpha" -class15[103]="pp_filter_const" -class15[104]="h_max_est" -class15[105]="tp_test_run_time" -class15[106]="tp_switch_time" -class15[107]="tp_switch_interval" -class15[108]="a1" -class15[109]="a2" -class15[110]="b1" -class15[111]="b2" -class15[112]="q_const_ref_min" -class15[113]="q_const_ref_max" -class15[114]="t_const_ref_min" -class15[115]="t_const_ref_max" -class15[116]="level_const_ref_min" -class15[117]="level_const_ref_max" -class15[118]="p_max_32" -class15[120]="kq_max2" -# section: class 16 {{{2 -class16[0]="set_unix_rtc" -class16[1]="disp_event_ctr_ack" -class16[2]="disp_data_to_applic"