From: Florian Knodt Date: Fri, 5 Jul 2013 12:02:50 +0000 (+0200) Subject: Support for UNI-T UT60A/E multimeters via RS232 or USB X-Git-Tag: libsigrok-0.2.1~38 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=a7a163a795c9ad8cb06b5fe5458d7c98c405bf5a;p=libsigrok.git Support for UNI-T UT60A/E multimeters via RS232 or USB --- diff --git a/hardware/serial-dmm/api.c b/hardware/serial-dmm/api.c index 1c5272d4..5871e71f 100644 --- a/hardware/serial-dmm/api.c +++ b/hardware/serial-dmm/api.c @@ -59,6 +59,8 @@ SR_PRIV struct sr_dev_driver voltcraft_m3650d_driver_info; SR_PRIV struct sr_dev_driver voltcraft_vc820_ser_driver_info; SR_PRIV struct sr_dev_driver voltcraft_vc830_ser_driver_info; SR_PRIV struct sr_dev_driver voltcraft_vc840_ser_driver_info; +SR_PRIV struct sr_dev_driver uni_t_ut60a_ser_driver_info; +SR_PRIV struct sr_dev_driver uni_t_ut60e_ser_driver_info; SR_PRIV struct sr_dev_driver uni_t_ut61d_ser_driver_info; SR_PRIV struct sr_dev_driver uni_t_ut61e_ser_driver_info; @@ -194,6 +196,22 @@ SR_PRIV struct dmm_info dmms[] = { &voltcraft_vc840_ser_driver_info, receive_data_VOLTCRAFT_VC840_SER, }, + { + "UNI-T", "UT60A (UT-D02 cable)", "2400/8n1/rts=0/dtr=1", + 2400, FS9721_PACKET_SIZE, NULL, + sr_fs9721_packet_valid, sr_fs9721_parse, + NULL, + &uni_t_ut60a_ser_driver_info, + receive_data_UNI_T_UT60A_SER, + }, + { + "UNI-T", "UT60E (UT-D02 cable)", "2400/8n1/rts=0/dtr=1", + 2400, FS9721_PACKET_SIZE, NULL, + sr_fs9721_packet_valid, sr_fs9721_parse, + sr_fs9721_00_temp_c, + &uni_t_ut60e_ser_driver_info, + receive_data_UNI_T_UT60E_SER, + }, { "UNI-T", "UT61D (UT-D02 cable)", "2400/8n1/rts=0/dtr=1", 2400, FS9922_PACKET_SIZE, NULL, @@ -526,5 +544,7 @@ DRV(voltcraft_m3650d, VOLTCRAFT_M3650D, "voltcraft-m3650d", "Voltcraft M-3650D") DRV(voltcraft_vc820_ser, VOLTCRAFT_VC820_SER, "voltcraft-vc820-ser", "Voltcraft VC-820 (UT-D02 cable)") DRV(voltcraft_vc830_ser, VOLTCRAFT_VC830_SER, "voltcraft-vc830-ser", "Voltcraft VC-830 (UT-D02 cable)") DRV(voltcraft_vc840_ser, VOLTCRAFT_VC840_SER, "voltcraft-vc840-ser", "Voltcraft VC-840 (UT-D02 cable)") +DRV(uni_t_ut60a_ser, UNI_T_UT60A_SER, "uni-t-ut60a-ser", "UNI-T UT60A (UT-D02 cable)") +DRV(uni_t_ut60e_ser, UNI_T_UT60E_SER, "uni-t-ut60e-ser", "UNI-T UT60E (UT-D02 cable)") DRV(uni_t_ut61d_ser, UNI_T_UT61D_SER, "uni-t-ut61d-ser", "UNI-T UT61D (UT-D02 cable)") DRV(uni_t_ut61e_ser, UNI_T_UT61E_SER, "uni-t-ut61e-ser", "UNI-T UT61E (UT-D02 cable)") diff --git a/hardware/serial-dmm/protocol.c b/hardware/serial-dmm/protocol.c index 3f180270..b5a4843e 100644 --- a/hardware/serial-dmm/protocol.c +++ b/hardware/serial-dmm/protocol.c @@ -176,5 +176,7 @@ RECEIVE_DATA(VOLTCRAFT_M3650D, metex14) RECEIVE_DATA(VOLTCRAFT_VC820_SER, fs9721) RECEIVE_DATA(VOLTCRAFT_VC830_SER, fs9922) RECEIVE_DATA(VOLTCRAFT_VC840_SER, fs9721) +RECEIVE_DATA(UNI_T_UT60A_SER, fs9721) +RECEIVE_DATA(UNI_T_UT60E_SER, fs9721) RECEIVE_DATA(UNI_T_UT61D_SER, fs9922) RECEIVE_DATA(UNI_T_UT61E_SER, es51922) diff --git a/hardware/serial-dmm/protocol.h b/hardware/serial-dmm/protocol.h index 51cdc043..88c3da88 100644 --- a/hardware/serial-dmm/protocol.h +++ b/hardware/serial-dmm/protocol.h @@ -49,11 +49,13 @@ enum { VOLTCRAFT_VC820_SER, VOLTCRAFT_VC830_SER, VOLTCRAFT_VC840_SER, + UNI_T_UT60A_SER, + UNI_T_UT60E_SER, UNI_T_UT61D_SER, UNI_T_UT61E_SER, }; -#define DMM_COUNT 20 +#define DMM_COUNT 22 struct dmm_info { char *vendor; @@ -113,6 +115,8 @@ SR_PRIV int receive_data_VOLTCRAFT_M3650D(int fd, int revents, void *cb_data); SR_PRIV int receive_data_VOLTCRAFT_VC820_SER(int fd, int revents, void *cb_data); SR_PRIV int receive_data_VOLTCRAFT_VC830_SER(int fd, int revents, void *cb_data); SR_PRIV int receive_data_VOLTCRAFT_VC840_SER(int fd, int revents, void *cb_data); +SR_PRIV int receive_data_UNI_T_UT60A_SER(int fd, int revents, void *cb_data); +SR_PRIV int receive_data_UNI_T_UT60E_SER(int fd, int revents, void *cb_data); SR_PRIV int receive_data_UNI_T_UT61D_SER(int fd, int revents, void *cb_data); SR_PRIV int receive_data_UNI_T_UT61E_SER(int fd, int revents, void *cb_data); diff --git a/hardware/uni-t-dmm/api.c b/hardware/uni-t-dmm/api.c index 8968d876..4e97336c 100644 --- a/hardware/uni-t-dmm/api.c +++ b/hardware/uni-t-dmm/api.c @@ -39,6 +39,8 @@ static const int32_t hwcaps[] = { SR_PRIV struct sr_dev_driver tecpel_dmm_8060_driver_info; SR_PRIV struct sr_dev_driver tecpel_dmm_8061_driver_info; +SR_PRIV struct sr_dev_driver uni_t_ut60a_driver_info; +SR_PRIV struct sr_dev_driver uni_t_ut60e_driver_info; SR_PRIV struct sr_dev_driver uni_t_ut61d_driver_info; SR_PRIV struct sr_dev_driver uni_t_ut61e_driver_info; SR_PRIV struct sr_dev_driver voltcraft_vc820_driver_info; @@ -60,6 +62,20 @@ SR_PRIV struct dmm_info udmms[] = { sr_fs9721_00_temp_c, &tecpel_dmm_8061_driver_info, receive_data_TECPEL_DMM_8061, }, + { + "UNI-T", "UT60A", 2400, + FS9721_PACKET_SIZE, NULL, + sr_fs9721_packet_valid, sr_fs9721_parse, + NULL, + &uni_t_ut60a_driver_info, receive_data_UNI_T_UT60A, + }, + { + "UNI-T", "UT60E", 2400, + FS9721_PACKET_SIZE, NULL, + sr_fs9721_packet_valid, sr_fs9721_parse, + sr_fs9721_00_temp_c, + &uni_t_ut60e_driver_info, receive_data_UNI_T_UT60E, + }, { "UNI-T", "UT61D", 2400, FS9922_PACKET_SIZE, NULL, @@ -345,6 +361,8 @@ SR_PRIV struct sr_dev_driver ID##_driver_info = { \ DRV(tecpel_dmm_8060, TECPEL_DMM_8060, "tecpel-dmm-8060", "Tecpel DMM-8060") DRV(tecpel_dmm_8061, TECPEL_DMM_8061, "tecpel-dmm-8061", "Tecpel DMM-8061") +DRV(uni_t_ut60a, UNI_T_UT60A, "uni-t-ut60a", "UNI-T UT60A") +DRV(uni_t_ut60e, UNI_T_UT60E, "uni-t-ut60e", "UNI-T UT60E") DRV(uni_t_ut61d, UNI_T_UT61D, "uni-t-ut61d", "UNI-T UT61D") DRV(uni_t_ut61e, UNI_T_UT61E, "uni-t-ut61e", "UNI-T UT61E") DRV(voltcraft_vc820, VOLTCRAFT_VC820, "voltcraft-vc820", "Voltcraft VC-820") diff --git a/hardware/uni-t-dmm/protocol.c b/hardware/uni-t-dmm/protocol.c index 1344948c..66f0f3b7 100644 --- a/hardware/uni-t-dmm/protocol.c +++ b/hardware/uni-t-dmm/protocol.c @@ -57,7 +57,8 @@ * - UNI-T UT109: ? * - UNI-T UT30A: ? * - UNI-T UT30E: ? - * - UNI-T UT60E: Fortune Semiconductor FS9721_LP3 + * - UNI-T UT60A: Fortune Semiconductor FS9721_LP3 (?) + * - UNI-T UT60E: Fortune Semiconductor FS9721_LP3 (?) * - UNI-T UT60G: ? * - UNI-T UT61B: ? * - UNI-T UT61C: ? @@ -305,6 +306,8 @@ SR_PRIV int receive_data_##ID_UPPER(int fd, int revents, void *cb_data) { \ /* Driver-specific receive_data() wrappers */ RECEIVE_DATA(TECPEL_DMM_8060, fs9721) RECEIVE_DATA(TECPEL_DMM_8061, fs9721) +RECEIVE_DATA(UNI_T_UT60A, fs9721) +RECEIVE_DATA(UNI_T_UT60E, fs9721) RECEIVE_DATA(UNI_T_UT61D, fs9922) RECEIVE_DATA(UNI_T_UT61E, es51922) RECEIVE_DATA(VOLTCRAFT_VC820, fs9721) diff --git a/hardware/uni-t-dmm/protocol.h b/hardware/uni-t-dmm/protocol.h index 709ca20e..1f9b169a 100644 --- a/hardware/uni-t-dmm/protocol.h +++ b/hardware/uni-t-dmm/protocol.h @@ -40,6 +40,8 @@ enum { TECPEL_DMM_8060, TECPEL_DMM_8061, + UNI_T_UT60A, + UNI_T_UT60E, UNI_T_UT61D, UNI_T_UT61E, VOLTCRAFT_VC820, @@ -47,7 +49,7 @@ enum { VOLTCRAFT_VC840, }; -#define DMM_COUNT 7 +#define DMM_COUNT 9 struct dmm_info { char *vendor; @@ -94,6 +96,8 @@ struct dev_context { SR_PRIV int receive_data_TECPEL_DMM_8060(int fd, int revents, void *cb_data); SR_PRIV int receive_data_TECPEL_DMM_8061(int fd, int revents, void *cb_data); +SR_PRIV int receive_data_UNI_T_UT60A(int fd, int revents, void *cb_data); +SR_PRIV int receive_data_UNI_T_UT60E(int fd, int revents, void *cb_data); SR_PRIV int receive_data_UNI_T_UT61D(int fd, int revents, void *cb_data); SR_PRIV int receive_data_UNI_T_UT61E(int fd, int revents, void *cb_data); SR_PRIV int receive_data_VOLTCRAFT_VC820(int fd, int revents, void *cb_data); diff --git a/hwdriver.c b/hwdriver.c index 3ef19a2e..08383e97 100644 --- a/hwdriver.c +++ b/hwdriver.c @@ -184,12 +184,16 @@ extern SR_PRIV struct sr_dev_driver voltcraft_m3650d_driver_info; extern SR_PRIV struct sr_dev_driver voltcraft_vc820_ser_driver_info; extern SR_PRIV struct sr_dev_driver voltcraft_vc830_ser_driver_info; extern SR_PRIV struct sr_dev_driver voltcraft_vc840_ser_driver_info; +extern SR_PRIV struct sr_dev_driver uni_t_ut60a_ser_driver_info; +extern SR_PRIV struct sr_dev_driver uni_t_ut60e_ser_driver_info; extern SR_PRIV struct sr_dev_driver uni_t_ut61d_ser_driver_info; extern SR_PRIV struct sr_dev_driver uni_t_ut61e_ser_driver_info; #endif #ifdef HAVE_HW_UNI_T_DMM extern SR_PRIV struct sr_dev_driver tecpel_dmm_8060_driver_info; extern SR_PRIV struct sr_dev_driver tecpel_dmm_8061_driver_info; +extern SR_PRIV struct sr_dev_driver uni_t_ut60a_driver_info; +extern SR_PRIV struct sr_dev_driver uni_t_ut60e_driver_info; extern SR_PRIV struct sr_dev_driver uni_t_ut61d_driver_info; extern SR_PRIV struct sr_dev_driver uni_t_ut61e_driver_info; extern SR_PRIV struct sr_dev_driver voltcraft_vc820_driver_info; @@ -282,12 +286,16 @@ static struct sr_dev_driver *drivers_list[] = { &voltcraft_vc820_ser_driver_info, &voltcraft_vc830_ser_driver_info, &voltcraft_vc840_ser_driver_info, + &uni_t_ut60a_ser_driver_info, + &uni_t_ut60e_ser_driver_info, &uni_t_ut61d_ser_driver_info, &uni_t_ut61e_ser_driver_info, #endif #ifdef HAVE_HW_UNI_T_DMM &tecpel_dmm_8060_driver_info, &tecpel_dmm_8061_driver_info, + &uni_t_ut60a_driver_info, + &uni_t_ut60e_driver_info, &uni_t_ut61d_driver_info, &uni_t_ut61e_driver_info, &voltcraft_vc820_driver_info,