typedef struct {
unsigned char RecordType;
unsigned char DataLength;
unsigned char DataType;
unsigned char DataDir;
float ParmMin;
float ParmMax;
short ParmAddr;
char UnitString[HM2_SSERIAL_MAX_STRING_LENGTH+1];
char NameString[HM2_SSERIAL_MAX_STRING_LENGTH+1];
}hm2_sserial_data_t;
static const hm2_sserial_data_t hm2_8i20_0 = {0xA0,0x10,0x02,0x80,1.0,0,0,"degrees","angle"};
static const hm2_sserial_data_t hm2_8i20_1 = {0xA0,0x10,0x03,0x80,10,-10,0,"amps","current"};
static const hm2_sserial_data_t hm2_8i20_11 = {0xA0,0x10,0x03,0x80,10,-10,2280,"amps","nvmaxcurrent"};
static const hm2_sserial_data_t hm2_8i20_12 = {0xA0,0x10,0x03,0x80,10,-10,2150,"volts","nvbusundervmax"};
static const hm2_sserial_data_t hm2_8i20_13 = {0xA0,0x10,0x03,0x80,10,-10,2148,"volts","nvbusundervmin"};
static const hm2_sserial_data_t hm2_8i20_14 = {0xA0,0x10,0x03,0x80,10,-10,2152,"volts","nvbusoverv"};
static const hm2_sserial_data_t hm2_8i20_15 = {0xA0,0x10,0x03,0x80,10,-10,2154,"volts","nvbrakeonv"};
static const hm2_sserial_data_t hm2_8i20_16 = {0xA0,0x10,0x03,0x80,10,-10,2156,"volts","nvbrakeoffv"};
static const hm2_sserial_data_t hm2_8i20_17 = {0xA0,0x10,0x03,0x80,10,-10,6,"bps","nvrembaudrate"};
static const hm2_sserial_data_t hm2_8i20_18 = {0xA0,0x10,0x03,0x80,10,-10,2066,"none","nvkqp"};
static const hm2_sserial_data_t hm2_8i20_19 = {0xA0,0x10,0x03,0x80,10,-10,2068,"none","nvkqi"};
static const hm2_sserial_data_t hm2_8i20_20 = {0xA0,0x10,0x03,0x80,10,-10,2072,"none","nvkqil"};
static const hm2_sserial_data_t hm2_8i20_21 = {0xA0,0x10,0x03,0x80,10,-10,2074,"none","nvkdp"};
static const hm2_sserial_data_t hm2_8i20_22 = {0xA0,0x10,0x03,0x80,10,-10,2076,"none","nvkdi"};
static const hm2_sserial_data_t hm2_8i20_23 = {0xA0,0x10,0x03,0x80,10,-10,2080,"none","nvkdil"};
static const hm2_sserial_data_t hm2_7i64_0 = {0xA0,0x18,0x01,0x80,1.0,0,0,"none","digout"};
static const hm2_sserial_data_t hm2_7i64_1 = {0xA0,0x18,0x01,0x00,10,-10,0,"none","digin"};
static const hm2_sserial_data_t hm2_7i64_2 = {0xA0,0x08,0x00,0x00,0,0,0,"pad","pad"};
static const hm2_sserial_data_t hm2_7i64_3 = {0xA0,0x10,0x03,0x00,3.3,0,0,"volts","adcin.00"};
static const hm2_sserial_data_t hm2_7i64_4 = {0xA0,0x10,0x03,0x00,3.3,0,0,"volts","adcin.01"};
void config_8i20(hostmot2_t *hm2, hm2_sserial_remote_t *chan){
u32 buff;
chan->num_confs = 2;
chan->confs = (hm2_sserial_data_t *)kzalloc(2 * sizeof(hm2_sserial_data_t),
GFP_KERNEL);
chan->num_modes=0;
chan->confs[0] = hm2_8i20_0;
chan->confs[1] = hm2_8i20_1;
//8i20 has reprogrammable current scaling:
buff = 0;
hm2_sserial_get_bytes(hm2, chan, &buff, 0x8E8, 2);
chan->confs[1].ParmMax = buff * 0.01;
chan->confs[1].ParmMin = buff * -0.01;
chan->num_globals = 13;
chan->globals = (hm2_sserial_data_t *)kzalloc(13 * sizeof(hm2_sserial_data_t),
GFP_KERNEL);
chan->globals[0] = hm2_8i20_11;
chan->globals[1] = hm2_8i20_12;
chan->globals[2] = hm2_8i20_13;
chan->globals[3] = hm2_8i20_14;
chan->globals[4] = hm2_8i20_15;
chan->globals[5] = hm2_8i20_16;
chan->globals[6] = hm2_8i20_17;
chan->globals[7] = hm2_8i20_18;
chan->globals[8] = hm2_8i20_19;
chan->globals[9] = hm2_8i20_20;
chan->globals[10] = hm2_8i20_21;
chan->globals[11] = hm2_8i20_22;
chan->globals[12] = hm2_8i20_23;
}