From: Uwe Hermann Date: Sun, 29 Dec 2013 16:35:51 +0000 (+0100) Subject: Add support for the UNI-T UT61C multimeter. X-Git-Tag: libsigrok-0.3.0~369 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=5f985df23cb2a15d498d60fec8a4e5d14e38a7c0;p=libsigrok.git Add support for the UNI-T UT61C multimeter. --- diff --git a/README.devices b/README.devices index a99fc7e2..368d2d79 100644 --- a/README.devices +++ b/README.devices @@ -268,6 +268,7 @@ a short list for convenience: - PCE PCE-DM32: Briefly press the "RS232" button. - RadioShack 22-812: Press and hold "SELECT" and "RANGE" together. - TekPower TP4000ZC: Briefly press the "RS232" button. + - UNI-T UT61C: Press the "REL/RS232/USB" button for roughly 1 second. - UNI-T UT61D: Press the "REL/RS232/USB" button for roughly 1 second. - UNI-T UT325: Briefly press the "SEND" button (as per manual). However, it appears that in practice you don't have to press the button (at least on diff --git a/hardware/serial-dmm/api.c b/hardware/serial-dmm/api.c index 57bca222..7a03ba32 100644 --- a/hardware/serial-dmm/api.c +++ b/hardware/serial-dmm/api.c @@ -63,6 +63,7 @@ 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_ut61c_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; SR_PRIV struct sr_dev_driver iso_tech_idm103n_driver_info; @@ -233,6 +234,12 @@ SR_PRIV struct dmm_info dmms[] = { &uni_t_ut60e_ser_driver_info, receive_data_UNI_T_UT60E_SER, }, + { + "UNI-T", "UT61C (UT-D02 cable)", "2400/8n1/rts=0/dtr=1", + 2400, FS9922_PACKET_SIZE, NULL, + sr_fs9922_packet_valid, sr_fs9922_parse, NULL, + &uni_t_ut61c_ser_driver_info, receive_data_UNI_T_UT61C_SER, + }, { "UNI-T", "UT61D (UT-D02 cable)", "2400/8n1/rts=0/dtr=1", 2400, FS9922_PACKET_SIZE, NULL, @@ -553,6 +560,7 @@ DRV(voltcraft_vc830_ser, VOLTCRAFT_VC830_SER, "voltcraft-vc830-ser", "Voltcraft 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_ut61c_ser, UNI_T_UT61C_SER, "uni-t-ut61c-ser", "UNI-T UT61C (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)") DRV(iso_tech_idm103n, ISO_TECH_IDM103N, "iso-tech-idm103n", "ISO-TECH IDM103N") diff --git a/hardware/serial-dmm/protocol.c b/hardware/serial-dmm/protocol.c index 06e0acd0..b08bd301 100644 --- a/hardware/serial-dmm/protocol.c +++ b/hardware/serial-dmm/protocol.c @@ -182,6 +182,7 @@ 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_UT61C_SER, fs9922) RECEIVE_DATA(UNI_T_UT61D_SER, fs9922) RECEIVE_DATA(UNI_T_UT61E_SER, es51922) RECEIVE_DATA(ISO_TECH_IDM103N, es519xx) diff --git a/hardware/serial-dmm/protocol.h b/hardware/serial-dmm/protocol.h index 22264573..733e5ce1 100644 --- a/hardware/serial-dmm/protocol.h +++ b/hardware/serial-dmm/protocol.h @@ -46,12 +46,13 @@ enum { VOLTCRAFT_VC840_SER, UNI_T_UT60A_SER, UNI_T_UT60E_SER, + UNI_T_UT61C_SER, UNI_T_UT61D_SER, UNI_T_UT61E_SER, ISO_TECH_IDM103N, }; -#define DMM_COUNT 25 +#define DMM_COUNT 26 struct dmm_info { /** Manufacturer/brand. */ @@ -126,6 +127,7 @@ 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_UT61C_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); SR_PRIV int receive_data_ISO_TECH_IDM103N(int fd, int revents, void *cb_data); diff --git a/hardware/uni-t-dmm/api.c b/hardware/uni-t-dmm/api.c index e6239a1a..8292dfb0 100644 --- a/hardware/uni-t-dmm/api.c +++ b/hardware/uni-t-dmm/api.c @@ -40,6 +40,7 @@ static const int32_t hwcaps[] = { 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_ut61c_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; @@ -69,6 +70,13 @@ SR_PRIV struct dmm_info udmms[] = { sr_fs9721_00_temp_c, &uni_t_ut60e_driver_info, receive_data_UNI_T_UT60E, }, + { + "UNI-T", "UT61C", 2400, + FS9922_PACKET_SIZE, + sr_fs9922_packet_valid, sr_fs9922_parse, + NULL, + &uni_t_ut61c_driver_info, receive_data_UNI_T_UT61C, + }, { "UNI-T", "UT61D", 2400, FS9922_PACKET_SIZE, @@ -383,6 +391,7 @@ SR_PRIV struct sr_dev_driver ID##_driver_info = { \ 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_ut61c, UNI_T_UT61C, "uni-t-ut61c", "UNI-T UT61C") 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 8b7bb9b2..3158e0fa 100644 --- a/hardware/uni-t-dmm/protocol.c +++ b/hardware/uni-t-dmm/protocol.c @@ -303,6 +303,7 @@ SR_PRIV int receive_data_##ID_UPPER(int fd, int revents, void *cb_data) { \ RECEIVE_DATA(TECPEL_DMM_8061, fs9721) RECEIVE_DATA(UNI_T_UT60A, fs9721) RECEIVE_DATA(UNI_T_UT60E, fs9721) +RECEIVE_DATA(UNI_T_UT61C, fs9922) 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 a6a8f718..baf90166 100644 --- a/hardware/uni-t-dmm/protocol.h +++ b/hardware/uni-t-dmm/protocol.h @@ -33,6 +33,7 @@ enum { TECPEL_DMM_8061, UNI_T_UT60A, UNI_T_UT60E, + UNI_T_UT61C, UNI_T_UT61D, UNI_T_UT61E, VOLTCRAFT_VC820, @@ -84,6 +85,7 @@ struct dev_context { 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_UT61C(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 b1d94ccd..3db22a7b 100644 --- a/hwdriver.c +++ b/hwdriver.c @@ -219,6 +219,7 @@ 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_ut61c_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; extern SR_PRIV struct sr_dev_driver iso_tech_idm103n_driver_info; @@ -227,6 +228,7 @@ extern SR_PRIV struct sr_dev_driver iso_tech_idm103n_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_ut61c_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; @@ -352,6 +354,7 @@ static struct sr_dev_driver *drivers_list[] = { &voltcraft_vc840_ser_driver_info, &uni_t_ut60a_ser_driver_info, &uni_t_ut60e_ser_driver_info, + &uni_t_ut61c_ser_driver_info, &uni_t_ut61d_ser_driver_info, &uni_t_ut61e_ser_driver_info, &iso_tech_idm103n_driver_info, @@ -360,6 +363,7 @@ static struct sr_dev_driver *drivers_list[] = { &tecpel_dmm_8061_driver_info, &uni_t_ut60a_driver_info, &uni_t_ut60e_driver_info, + &uni_t_ut61c_driver_info, &uni_t_ut61d_driver_info, &uni_t_ut61e_driver_info, &voltcraft_vc820_driver_info,