36 #include <arpa/inet.h>
37 #include <asm/ioctls.h>
38 #include <linux/rtc.h>
39 #include <netinet/in.h>
41 #include <semaphore.h>
44 #include <sys/socket.h>
46 #include <sys/ioctl.h>
47 #include <sys/types.h>
65 #define USB_VID_MOXA 0x110a //Moxa
68 #define USB_PID_RTU_85M_1602 0x5200 //16ch, DI
69 #define USB_PID_RTU_85M_2600 0x5240 //16ch, DO
70 #define USB_PID_RTU_85M_3800 0x52c0 //8ch, 4-20mA
71 #define USB_PID_RTU_85M_3810 0x52c1 //8ch, 0-10V
72 #define USB_PID_RTU_85M_3801 0x5300 //8ch, 5KHz 4-2-mA
73 #define USB_PID_RTU_85M_3811 0x5301 //8ch, 5KHz 0-10V
74 #define USB_PID_RTU_85M_6810 0x5340 //8ch, TC
75 #define USB_PID_RTU_85M_6600 0x5380 //6ch, RTD
76 #define USB_PID_RTU_AIO_8di_8dio_8ai 0x50e0 //all-in-one module
79 #define USB_PID_RTU_85M_5401 0x53e0 //Serial
80 #define USB_PID_RTU_85M_5220 0x53e1 //IBIS
81 #define USB_PID_RTU_85M_5142 0x53e2 //HSPA
82 #define USB_PID_RTU_85M_5130 0x53e3 //WIFI
85 #define MAX_CHANNEL 24
212 #define ETHERNET_ADAPTER_RJ45 0
213 #define ETHERNET_ADAPTER_M12 1
219 #define SRAM_START_ADDRESS 0x0
220 #define SRAM_END_ADDRESS 0x20000 //128KB
288 #define IO_EVENT_QUEUE_MAX 100
294 #define DI_EVENT_TOGGLE_L2H 0
295 #define DI_EVENT_TOGGLE_H2L 1
296 #define DI_EVENT_TOGGLE_BOTH 2
303 #define AI_TC_RTD_EVENT_GREATER 0
304 #define AI_TC_RTD_EVENT_SMALLER 1
305 #define AI_TC_RTD_EVENT_EQUAL 2
519 #define DI_MODE_COUNTER 1
527 #define DI_TOGGLE_L2H 0
528 #define DI_TOGGLE_H2L 1
529 #define DI_TOGGLE_BOTH 2
670 #define DO_MODE_PWM 1
822 #define RELAY_MODE_RELAY 0
823 #define RELAY_MODE_PWM 1
1131 #define AI_RANGE_10V 1
1132 #define AI_RANGE_0_10V 2
1133 #define AI_RANGE_0_20mA 3
1134 #define AI_RANGE_4_20mA 4
1142 #define AI_STATUS_BURNOUT 0
1143 #define AI_STATUS_UNDER_RANGE 1
1144 #define AI_STATUS_NORMAL_RANGE 2
1145 #define AI_STATUS_OVER_RANGE 3
1315 #define FAST_AI_BATCH_DATA_SIZE 60*1000
1518 #define TC_TYPE_J 0 //(0 to 750¢XC)
1519 #define TC_TYPE_K 1 //(-200 to 1250¢XC)
1520 #define TC_TYPE_T 2 //(-200 to 350¢XC)
1521 #define TC_TYPE_E 3 //(-200 to 900¢XC)
1522 #define TC_TYPE_R 4 //(-50 to 1600¢XC)
1523 #define TC_TYPE_S 5 //(-50 to 1760¢XC)
1524 #define TC_TYPE_B 6 //(600 to 1700¢XC)
1525 #define TC_TYPE_N 7 //(-200 to 1300¢XC)
1545 #define RTD_TYPE_PT50 0 //(-200 to 850¢XC)
1546 #define RTD_TYPE_PT100 1 //(-200 to 850¢XC)
1547 #define RTD_TYPE_PT200 2 //(-200 to 850¢XC)
1548 #define RTD_TYPE_PT500 3 //(-200 to 850¢XC)
1549 #define RTD_TYPE_PT1000 4 //(-200 to 350¢XC)
1550 #define RTD_TYPE_JPT100 5 //(-200 to 640¢XC)
1551 #define RTD_TYPE_JPT200 6 //(-200 to 640¢XC)
1552 #define RTD_TYPE_JPT500 7 //(-200 to 640¢XC)
1553 #define RTD_TYPE_JPT1000 8 //(-200 to 350¢XC)
1554 #define RTD_TYPE_NI100 9 //(-60 to 250¢XC)
1555 #define RTD_TYPE_NI200 10 //(-60 to 250¢XC)
1556 #define RTD_TYPE_NI500 11 //(-60 to 250¢XC)
1557 #define RTD_TYPE_NI1000 12 //(-60 to 150¢XC)
1558 #define RTD_TYPE_NI120 13 //(-80 to 260¢XC)
1605 #define SOFTWARE_WATCHDOG_MIN_TIME 50 // 50 msec
1606 #define SOFTWARE_WATCHDOG_MAX_TIME (60*1000) // 60 seconds
1803 #define RS232_MODE 0
1804 #define RS485_2WIRE_MODE 1
1805 #define RS422_MODE 2
1806 #define RS485_4WIRE_MODE 3
1814 #define BAUD_RATE_921600 921600
1815 #define BAUD_RATE_460800 460800
1816 #define BAUD_RATE_230400 230400
1817 #define BAUD_RATE_115200 115200
1818 #define BAUD_RATE_57600 57600
1819 #define BAUD_RATE_38400 38400
1820 #define BAUD_RATE_19200 19200
1821 #define BAUD_RATE_9600 9600
1822 #define BAUD_RATE_4800 4800
1823 #define BAUD_RATE_2400 2400
1824 #define BAUD_RATE_1800 1800
1825 #define BAUD_RATE_1200 1200
1826 #define BAUD_RATE_600 600
1827 #define BAUD_RATE_300 300
1835 #define SERIAL_DATA_BITS_5 5
1836 #define SERIAL_DATA_BITS_6 6
1837 #define SERIAL_DATA_BITS_7 7
1838 #define SERIAL_DATA_BITS_8 8
1846 #define SERIAL_PARITY_NONE 0
1847 #define SERIAL_PARITY_ODD 1
1848 #define SERIAL_PARITY_EVEN 2
1856 #define SERIAL_STOP_BIT_1 1
1857 #define SERIAL_STOP_BIT_2 2
1865 #define NO_FLOW_CONTROL 0
1866 #define HW_FLOW_CONTROL 1
1867 #define SW_FLOW_CONTROL 2
1870 #define MX_RTU_SerialRead MX_RTU_SerialBlockRead
1872 #define SERIAL_MAX_OQUEUE_LENGTH 4095
2058 #define MODEM_BRAND_PH8 1
2062 #define SIZE_USERNAME 128
2063 #define SIZE_PASSWORD 128
2064 #define SIZE_HOSTNAME 128
2065 #define SIZE_IMEI 17
2068 #define MODEM_BAND_PH8_GSM900 1
2069 #define MODEM_BAND_PH8_GSM1800 2
2070 #define MODEM_BAND_PH8_GSM850 4
2071 #define MODEM_BAND_PH8_GSM1900 8
2072 #define MODEM_BAND_PH8_WCDMA2100 16
2073 #define MODEM_BAND_PH8_WCDMA1900 32
2074 #define MODEM_BAND_PH8_WCDMA850 64
2075 #define MODEM_BAND_PH8_WCDMA800 256
2076 #define MODEM_BAND_PH8_WCDMA1700 512
2077 #define MODEM_BAND_PH8_AUTO 895
2080 #define MODEM_STATE_INIT 0
2081 #define MODEM_STATE_READY 1
2082 #define MODEM_STATE_CONNECTING 2
2083 #define MODEM_STATE_CONNECTED 3
2084 #define MODEM_STATE_DISCONNECT 4
2615 #define MAKE_WORD(a,b) (((UINT16)a<<8) +(UINT16)b)
2617 #define pfnModbusRead int (*pfnModRead)(UINT8 *pData, UINT16 nth, void *pUserData)
2618 #define pfnModbusWrite int (*pfnModWrite)(UINT8 *pData, UINT16 nth, void *pUserData)
2620 #define MODBUS_LISTEN_PORTS 1 //Only one port can be registered
2621 #define MODBUS_MAX_CONNECTION 10 //Maximum connections for each port
2623 #define MODBUS_MAX_MAP_SIZE 500 //Maximum entries for each Map Type
2624 #define MODBUS_MIN_IDLE_TIMEOUT_SECOND 10
2631 #define ILLEGAL_FUNCTION 0x01
2632 #define ILLEGAL_DATA_ADDRESS 0x02
2633 #define ILLEGAL_DATA_VALUE 0x03
2634 #define SLAVE_DEVICE_FAILURE 0x04
2635 #define SLAVE_DEVICE_BUSY 0x06
2644 #define RETURN_ERROR_ADDRESS 1
2645 #define RETURN_ERROR_FUNCTION 2
2646 #define RETURN_ERROR_VALUE 3
2654 #define MODBUS_READ_COILS 0x01 //COIL
2655 #define MODBUS_READ_DISCRETE 0x02 //INPUT COIL
2656 #define MODBUS_READ_HOLDINGREGISTERS 0x03 //HOLDING REGISTER
2657 #define MODBUS_READ_INPUTREGISTERS 0x04 //INPUT REGISTER
2658 #define MODBUS_WRITE_COIL 0x05 //COIL
2659 #define MODBUS_WRITE_REGISTER 0x06 //HOLDING REGISTER
2660 #define MODBUS_WRITE_COILS 0x0F //COIL
2661 #define MODBUS_WRITE_REGISTERS 0x10 //HOLDING REGISTER
2669 #define MODBUS_COIL 0x01
2670 #define MODBUS_INPUT_COIL 0x02
2671 #define MODBUS_HOLDING_REGISTER 0x03
2672 #define MODBUS_INPUT_REGISTER 0x04
2812 #define AOPC_DEFAULT_PORT 9900
2815 #define AOPC_MAX_DEV_NAME 59
2816 #define AOPC_MAX_TAG_NAME 30
2817 #define AOPC_MAX_TAG_DESC 16
2818 #define AOPC_MAX_TAG_UNIT 16
2825 #define TAG_TYPE_BOOL 1
2826 #define TAG_TYPE_WORD 2
2827 #define TAG_TYPE_INT 3
2828 #define TAG_TYPE_DWORD 4
2829 #define TAG_TYPE_FLOAT 5
2830 #define TAG_TYPE_STRING 6
2831 #define TAG_TYPE_SHORT 7
2839 #define TAG_ACC_READ 0 //read only
2841 #define TAG_ACC_READ_WRITE 2 //read/writable
2849 #define TAG_QUALITY_GOOD 0x0000
2850 #define TAG_QUALITY_BAD 0x8000
2999 #define TAG_MAX_NAME_SIZE 64
3005 #define TAG_DATA_TYPE_COIL 0
3006 #define TAG_DATA_TYPE_INT8 1
3007 #define TAG_DATA_TYPE_INT16 2
3008 #define TAG_DATA_TYPE_INT32 3
3009 #define TAG_DATA_TYPE_UINT8 4
3010 #define TAG_DATA_TYPE_UINT16 5
3011 #define TAG_DATA_TYPE_UINT32 6
3012 #define TAG_DATA_TYPE_FLOAT 7
3013 #define TAG_DATA_TYPE_STR 8
3020 #define TAG_EVENT_CONDITION_CHANGE 0
3021 #define TAG_EVENT_CONDITION_EDGE 1
3022 #define TAG_EVENT_CONDITION_RAISING_EDGE 2
3023 #define TAG_EVENT_CONDITION_FALLING_EDGE 3
3024 #define TAG_EVENT_CONDITION_GREATER 4
3025 #define TAG_EVENT_CONDITION_SMALLER 5