############################################# # Read the configuration ############################################### record (stringin, "PANDA:$(subsys):$(sector):USBCAN$(P):readConfig") { field(DESC, "Read configuration") field(DTYP, "stream") field(INP, "@USBCAN.proto ReadConfiguration USBCAN$(P)") field(PINI, "YES") field(FLNK, "PANDA:$(subsys):$(sector):USBCAN$(P):baudrate.PROC") field(SCAN, "Passive") } ################################################ # Read baud rate ################################################ record (scalcout, "PANDA:$(subsys):$(sector):USBCAN$(P):baudrate") { field(DESC, "Read Baud Rate") field(EGU, "kbaud/s") field(INPA, "10") field(INPB, "20") field(INPC, "50") field(INPD, "100") field(INPE, "125") field(INPF, "250") field(INPG, "500") field(INPH, "800") field(INPI, "1000") field(INPL, "PANDA:$(subsys):$(sector):USBCAN$(P):readConfig.VAL") field(CALC, "@(L[0,0])") field(FLNK, "PANDA:$(subsys):$(sector):USBCAN$(P):CANregister.PROC") } ################################################ # Read CAN register ################################################ record (scalcout, "PANDA:$(subsys):$(sector):USBCAN$(P):CANregister") { field(DESC, "Read CAN register") field(INPL, "PANDA:$(subsys):$(sector):USBCAN$(P):readConfig.VAL") field(CALC, "SSCANF(L[1,2], '%x')") field(FLNK, "PANDA:$(subsys):$(sector):USBCAN$(P):CANtransmiterror.PROC") } record(mbbiDirect, "PANDA:$(subsys):$(sector):USBCAN$(P):readCANregister") { field(INP, "PANDA:$(subsys):$(sector):USBCAN$(P):CANregister CPP") } record(bi, "PANDA:$(subsys):$(sector):USBCAN$(P):bus") { field(INP, "PANDA:$(subsys):$(sector):USBCAN$(P):readCANregister.B7 CP") field(ZNAM, "OK") field(ZSV, "NO_ALARM") field(ONAM, "Bus Off Mode") field(OSV, "NO_ALARM") } record(bi, "PANDA:$(subsys):$(sector):USBCAN$(P):errorPassive") { field(INP, "PANDA:$(subsys):$(sector):USBCAN$(P):readCANregister.B6 CP") field(ZNAM, "OK") field(ZSV, "NO_ALARM") field(ONAM, "Error Passive Mode") field(OSV, "NO_ALARM") } record(bi, "PANDA:$(subsys):$(sector):USBCAN$(P):overrun") { field(INP, "PANDA:$(subsys):$(sector):USBCAN$(P):readCANregister.B4 CP") field(ZNAM, "OK") field(ZSV, "NO_ALARM") field(ONAM, "Overrun Buffer") field(OSV, "NO_ALARM") } record(bi, "PANDA:$(subsys):$(sector):USBCAN$(P):stuffError") { field(INP, "PANDA:$(subsys):$(sector):USBCAN$(P):readCANregister.B3 CP") field(ZNAM, "OK") field(ZSV, "NO_ALARM") field(ONAM, "Stuff Error General") field(OSV, "NO_ALARM") } record(bi, "PANDA:$(subsys):$(sector):USBCAN$(P):crcError") { field(INP, "PANDA:$(subsys):$(sector):USBCAN$(P):readCANregister.B2 CP") field(ZNAM, "OK") field(ZSV, "NO_ALARM") field(ONAM, "CRC Error General") field(OSV, "NO_ALARM") } record(bi, "PANDA:$(subsys):$(sector):USBCAN$(P):formError") { field(INP, "PANDA:$(subsys):$(sector):USBCAN$(P):readCANregister.B1 CP") field(ZNAM, "OK") field(ZSV, "NO_ALARM") field(ONAM, "Form Error General") field(OSV, "NO_ALARM") } record(bi, "PANDA:$(subsys):$(sector):USBCAN$(P):acknowledgmentError") { field(INP, "PANDA:$(subsys):$(sector):USBCAN$(P):readCANregister.B0 CP") field(ZNAM, "OK") field(ZSV, "NO_ALARM") field(ONAM, "Acknowledgment") field(OSV, "NO_ALARM") } ############################################################# # Read CAN transmit error counter ############################################################ record (scalcout, "PANDA:$(subsys):$(sector):USBCAN$(P):CANtransmiterror") { field(DESC, "Read CAN transmit error") field(INPL, "PANDA:$(subsys):$(sector):USBCAN$(P):readConfig.VAL") field(CALC, "SSCANF(L[3,4], '%x')") field(FLNK, "PANDA:$(subsys):$(sector):USBCAN$(P):CANreceiveerror.PROC") } ############################################################# # Read CAN receive error counter ############################################################ record (scalcout, "PANDA:$(subsys):$(sector):USBCAN$(P):CANreceiveerror") { field(DESC, "Read CAN receive error") field(INPL, "PANDA:$(subsys):$(sector):USBCAN$(P):readConfig.VAL") field(CALC, "SSCANF(L[5,6], '%x')") field(FLNK, "PANDA:$(subsys):$(sector):USBCAN$(P):CANUSBoverflow.PROC") } ############################################################# # Read CAN/USB FIFO Overflow flag ############################################################ record (scalcout, "PANDA:$(subsys):$(sector):USBCAN$(P):CANUSBoverflow") { field(DESC, "Read CAN/USB FIFO Overflow flag") field(INPL, "PANDA:$(subsys):$(sector):USBCAN$(P):readConfig.VAL") field(CALC, "SSCANF(L[7,7], '%x')") } record(mbbiDirect, "PANDA:$(subsys):$(sector):USBCAN$(P):readCANUSBoverflow") { field(INP, "PANDA:$(subsys):$(sector):USBCAN$(P):CANUSBoverflow CPP") } record(bi, "PANDA:$(subsys):$(sector):USBCAN$(P):USB") { field(INP, "PANDA:$(subsys):$(sector):USBCAN$(P):readCANUSBoverflow.B1 CP") field(ZNAM, "OK") field(ZSV, "NO_ALARM") field(ONAM, "USB FIFO Overflow") field(OSV, "NO_ALARM") } record(bi, "PANDA:$(subsys):$(sector):USBCAN$(P):CAN") { field(INP, "PANDA:$(subsys):$(sector):USBCAN$(P):readCANUSBoverflow.B0 CP") field(ZNAM, "OK") field(ZSV, "NO_ALARM") field(ONAM, "CAN FIFO Overflow") field(OSV, "NO_ALARM") } ############################################################## # Clear the CAN/USB FIFO overflows error flag ############################################################## record (stringin, "PANDA:$(subsys):$(sector):USBCAN$(P):clearCANUSBoverflow") { field(DESC, "Clear the CANUSB FIFO") field(DTYP, "stream") field(INP, "@USBCAN.proto ClearCANUSBoverflow USBCAN$(P)") field(SCAN, "Passive") } ############################################################## # Change the USB configuration ############################################################## record(bi, "PANDA:$(subsys):$(sector):USBCAN$(P):USBchecksum") { field(ZNAM, "NO") field(ZSV, "NO_ALARM") field(ONAM, "YES") field(OSV, "MAJOR") } record(bi, "PANDA:$(subsys):$(sector):USBCAN$(P):USBerrorrespones") { field(ZNAM, "NO") field(ZSV, "NO_ALARM") field(ONAM, "YES") field(OSV, "NO_ALARM") } record (scalcout, "PANDA:$(subsys):$(sector):USBCAN$(P):changeUSBconfiguration") { field(DESC, "Send new USB configuration") field(DTYP, "stream") field(INPA, "PANDA:$(subsys):$(sector):USBCAN$(P):USBchecksum") field(INPB, "PANDA:$(subsys):$(sector):USBCAN$(P):USBerrorrespones") field(OUT, "@USBCAN.proto ChangeUSBconfigure USBCAN$(P)") field(SCAN, "Passive") } ############################################################## # Change CAN baud rate ############################################################## record (stringout, "PANDA:$(subsys):$(sector):USBCAN$(P):CANbaudrate") { field(DESC, "Read Soll baud rate") field(FLNK, "PANDA:$(subsys):$(sector):USBCAN$(P):calcCANbaudrate1.PROC") } record (scalcout, "PANDA:$(subsys):$(sector):USBCAN$(P):calcCANbaudrate1") { field(DESC, "Read Baud Rate") field(INPA, "10") field(INPB, "20") field(INPC, "50") field(INPD, "100") field(INPE, "125") field(INPF, "250") field(INPG, "500") field(INPH, "800") field(INPI, "1000") field(INPL, "PANDA:$(subsys):$(sector):USBCAN$(P):CANbaudrate.VAL") field(CALC, "L=A?0:L=B?1:L=C?2:L=D?3:L") field(FLNK, "PANDA:$(subsys):$(sector):USBCAN$(P):calcCANbaudrate2.PROC") } record (scalcout, "PANDA:$(subsys):$(sector):USBCAN$(P):calcCANbaudrate2") { field(DESC, "Read Baud Rate") field(INPA, "10") field(INPB, "20") field(INPC, "50") field(INPD, "100") field(INPE, "125") field(INPF, "250") field(INPG, "500") field(INPH, "800") field(INPI, "1000") field(INPL, "PANDA:$(subsys):$(sector):USBCAN$(P):calcCANbaudrate1.VAL") field(CALC, "L=E?4:L=F?5:L=G?6:L=H?7:L") field(FLNK, "PANDA:$(subsys):$(sector):USBCAN$(P):calcCANbaudrate3.PROC") } record (scalcout, "PANDA:$(subsys):$(sector):USBCAN$(P):calcCANbaudrate3") { field(DESC, "Read Baud Rate") field(INPA, "10") field(INPB, "20") field(INPC, "50") field(INPD, "100") field(INPE, "125") field(INPF, "250") field(INPG, "500") field(INPH, "800") field(INPI, "1000") field(INPL, "PANDA:$(subsys):$(sector):USBCAN$(P):calcCANbaudrate2.VAL") field(CALC, "L=I?8:L") field(FLNK, "PANDA:$(subsys):$(sector):USBCAN$(P):sendCANbaudrate.PROC") } record (scalcout, "PANDA:$(subsys):$(sector):USBCAN$(P):sendCANbaudrate") { field(DESC, "Send baud rate") field(DTYP, "stream") field(INPA, "PANDA:$(subsys):$(sector):USBCAN$(P):calcCANbaudrate3.VAL") field(OUT, "@USBCAN.proto ChangeBaudrate USBCAN$(P)") } ############################################################## # Reboot the I-7565 module ############################################################## record (stringin, "PANDA:$(subsys):$(sector):USBCAN$(P):reboot") { field(DESC, "Reboot the I-7565 module") field(DTYP, "stream") field(INP, "@USBCAN.proto Reboot USBCAN$(P)") #field(SCAN, "Passive") } ############################################################## # Test ############################################################## record (stringout, "PANDA:$(subsys):$(sector):USBCAN$(P):test") { field(DESC, "Test") field(DTYP, "stream") field(OUT, "@USBCAN.proto Test USBCAN$(P)") } record (stringin, "PANDA:$(subsys):$(sector):USBCAN$(P):input") { field(DESC, "Input") field(DTYP, "stream") field(SCAN, "I/O Intr") field(INP, "@USBCAN.proto Input USBCAN$(P)") }