record(stringin, "$(P)$(R)$(HYB):FwVersion-R") {
    field(DESC, "Hybrid $(HYB) Firmware version")
    field(DTYP, "asynOctetRead")
    field(INP,  "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_$(HYB)_FW_VERSION")
    field(PINI, "YES")
    field(SCAN, "I/O Intr")
}

record(mbbo, "$(P)$(R)$(HYB):Skew-S"){
    field(DESC, "Hybrid's #$(HYB) Skew")
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_$(HYB)_SKEW")
    field(ZRST, "0 ns")
    field(ZRVL, "0")
    field(ONST, "2.83921 ns")
    field(ONVL, "1")
    field(TWST, "5.67842 ns")
    field(TWVL, "2")
    field(THST, "8.51764 ns")
    field(THVL, "3")
    field(FRST, "11.3568 ns")
    field(FRVL, "4")
    field(FVST, "14.1961 ns")
    field(FVVL, "5")
    field(SXST, "17.0353 ns")
    field(SXVL, "6")
    field(SVST, "19.8545 ns")
    field(SVVL, "7")
    field(EIST, "22.7137 ns")
    field(EIVL, "8")
    field(NIST, "25.5529 ns")
    field(NIVL, "9")
    field(TEST, "28.3921 ns")
    field(TEVL, "10")
    field(ELST, "31.2313 ns")
    field(ELVL, "11")
    field(TVST, "34.0705 ns")
    field(TVVL, "12")
    field(TTST, "36.9098 ns")
    field(TTVL, "13")
    field(FTST, "39.749 ns")
    field(FTVL, "14")
    field(FFST, "42.5882 ns")
    field(FFVL, "15")
    field(FLNK, "$(P)$(R)$(HYB):Skew-RB")
}

record(mbbi, "$(P)$(R)$(HYB):Skew-RB"){
    field(DESC, "Hybrid's #$(HYB) Skew")
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_$(HYB)_SKEW")
    field(ZRST, "0 ns")
    field(ZRVL, "0")
    field(ONST, "2.83921 ns")
    field(ONVL, "1")
    field(TWST, "5.67842 ns")
    field(TWVL, "2")
    field(THST, "8.51764 ns")
    field(THVL, "3")
    field(FRST, "11.3568 ns")
    field(FRVL, "4")
    field(FVST, "14.1961 ns")
    field(FVVL, "5")
    field(SXST, "17.0353 ns")
    field(SXVL, "6")
    field(SVST, "19.8545 ns")
    field(SVVL, "7")
    field(EIST, "22.7137 ns")
    field(EIVL, "8")
    field(NIST, "25.5529 ns")
    field(NIVL, "9")
    field(TEST, "28.3921 ns")
    field(TEVL, "10")
    field(ELST, "31.2313 ns")
    field(ELVL, "11")
    field(TVST, "34.0705 ns")
    field(TVVL, "12")
    field(TTST, "36.9098 ns")
    field(TTVL, "13")
    field(FTST, "39.749 ns")
    field(FTVL, "14")
    field(FFST, "42.5882 ns")
    field(FFVL, "15")
    field(SCAN, "I/O Intr")
    field(PINI, "YES")
}

record(mbbo, "$(P)$(R)$(HYB):Width-S"){
    field(DESC, "Hybrid's #$(HYB) Width")
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_$(HYB)_WIDTH")
    field(ZRST, "128 x 22.7137")
    field(ZRVL, "0")
    field(ONST, "64 x 22.7137")
    field(ONVL, "1")
    field(TWST, "32 x 22.7137")
    field(TWVL, "2")
    field(THST, "16 x 22.7137")
    field(THVL, "3")
    field(FRST, "8 x 22.7137")
    field(FRVL, "4")
    field(FVST, "4 x 22.7137")
    field(FVVL, "5")
    field(SXST, "2 x 22.7137")
    field(SXVL, "6")
    field(SVST, "1 x 22.7137")
    field(SVVL, "7") 
    field(FLNK, "$(P)$(R)$(HYB):Width-RB")
}

record(mbbi, "$(P)$(R)$(HYB):Width-RB"){
    field(DESC, "Hybrid's #$(HYB) Width")
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_$(HYB)_WIDTH")
    field(PINI, "YES")
    field(ZRST, "128 x 22.7137")
    field(ZRVL, "0")
    field(ONST, "64 x 22.7137")
    field(ONVL, "1")
    field(TWST, "32 x 22.7137")
    field(TWVL, "2")
    field(THST, "16 x 22.7137")
    field(THVL, "3")
    field(FRST, "8 x 22.7137")
    field(FRVL, "4")
    field(FVST, "4 x 22.7137")
    field(FVVL, "5")
    field(SXST, "2 x 22.7137")
    field(SXVL, "6")
    field(SVST, "1 x 22.7137")
    field(SVVL, "7")
    field(SCAN, "I/O Intr")
}

record(bo, "$(P)$(R)$(HYB):Pol-S") {
    field(DESC, "Hybrid's #$(HYB) Polarity")
    field(DTYP, "asynInt32")
    field(VAL,  "0")
    field(ZNAM, "positive")
    field(ONAM, "negative")
    field(OUT,  "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_$(HYB)_POLARITY")
}

record(bi, "$(P)$(R)$(HYB):Pol-RB") {
    field(DESC, "Hybrid's #$(HYB) Polarity")
    field(DTYP, "asynInt32")
    field(VAL,  "0")
    field(ZNAM, "positive")
    field(ONAM, "negative")
    field(INP,  "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_$(HYB)_POLARITY")
    field(SCAN, "I/O Intr")
    field(PINI, "YES")
}

record(stringin, "$(P)$(R)$(HYB):ID-R") {
    field(DESC, "Hybrid $(HYB) ID")
    field(DTYP, "asynOctetRead")
    field(PINI, "YES")
    field(INP,  "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_$(HYB)_ID")
    field(SCAN, "I/O Intr")
}

record(stringin, "$(P)$(R)$(HYB):GeoPos-R") {
    field(DESC, "Hybrid $(HYB) Geo Position")
    field(DTYP, "asynOctetRead")
    field(PINI, "YES")
    field(INP,  "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_$(HYB)_GEOPOS")
    field(SCAN, "I/O Intr")
}

record(mbbi, "$(P)$(R)$(HYB):LinkStatus-R") {
    field(DESC, "Hybrid $(HYB) Link Status")
    field(PINI, "YES")
    field(DTYP, "asynInt32")
    field(ZRST, "not connected")
    field(ZRVL, "0")
    field(ONST, "start alignment")
    field(ONVL, "1")
    field(TWST, "align")
    field(TWVL, "2")
    field(THST, "link")
    field(THVL, "3")
    field(FRST, "idle")
    field(FRVL, "4")
    field(FVST, "acq")
    field(FVVL, "5")
    field(SCAN, "I/O Intr")
    field(INP,  "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_$(HYB)_LINK_STATUS")
}