From b6bad47c91a7cbc19571cbe49918a0612ad2babe Mon Sep 17 00:00:00 2001 From: Uwe Hermann Date: Wed, 1 May 2013 03:00:08 +0200 Subject: [PATCH] uni-t-dmm: Add Tecpel DMM-8061 support. --- hardware/uni-t-dmm/api.c | 9 +++++++++ hardware/uni-t-dmm/protocol.c | 3 +++ hardware/uni-t-dmm/protocol.h | 4 +++- hwdriver.c | 2 ++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/hardware/uni-t-dmm/api.c b/hardware/uni-t-dmm/api.c index 4e8fe349..7cc8ee8a 100644 --- a/hardware/uni-t-dmm/api.c +++ b/hardware/uni-t-dmm/api.c @@ -37,12 +37,20 @@ static const int32_t hwcaps[] = { SR_CONF_CONTINUOUS, }; +SR_PRIV struct sr_dev_driver tecpel_dmm_8061_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; SR_PRIV struct sr_dev_driver voltcraft_vc840_driver_info; SR_PRIV struct dmm_info udmms[] = { + { + "Tecpel", "DMM-8061", 2400, + FS9721_PACKET_SIZE, NULL, + sr_fs9721_packet_valid, sr_fs9721_parse, + sr_fs9721_00_temp_c, + &tecpel_dmm_8061_driver_info, receive_data_TECPEL_DMM_8061, + }, { "UNI-T", "UT61D", 2400, FS9922_PACKET_SIZE, NULL, @@ -324,6 +332,7 @@ SR_PRIV struct sr_dev_driver ID##_driver_info = { \ .priv = NULL, \ }; +DRV(tecpel_dmm_8061, TECPEL_DMM_8061, "tecpel-dmm-8061", "Tecpel DMM-8061") 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 d6cfcb87..d24b12c1 100644 --- a/hardware/uni-t-dmm/protocol.c +++ b/hardware/uni-t-dmm/protocol.c @@ -51,6 +51,8 @@ * f1 d1 00 00 00 00 00 00 (1 data byte, 0xd1) * * Chips and serial settings used in UNI-T DMMs (and rebranded ones): + * - Tecpel DMM-8060: ? (very likely Fortune Semiconductor FS9721_LP3) + * - Tecpel DMM-8061: ? (very likely Fortune Semiconductor FS9721_LP3) * - UNI-T UT108: ? * - UNI-T UT109: ? * - UNI-T UT30A: ? @@ -290,6 +292,7 @@ SR_PRIV int receive_data_##ID_UPPER(int fd, int revents, void *cb_data) { \ return receive_data(fd, revents, ID_UPPER, &info, cb_data); } /* Driver-specific receive_data() wrappers */ +RECEIVE_DATA(TECPEL_DMM_8061, 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 a367336a..51128f6d 100644 --- a/hardware/uni-t-dmm/protocol.h +++ b/hardware/uni-t-dmm/protocol.h @@ -38,13 +38,14 @@ /* Note: When adding entries here, don't forget to update DMM_COUNT. */ enum { + TECPEL_DMM_8061, UNI_T_UT61D, UNI_T_UT61E, VOLTCRAFT_VC820, VOLTCRAFT_VC840, }; -#define DMM_COUNT 4 +#define DMM_COUNT 5 struct dmm_info { char *vendor; @@ -87,6 +88,7 @@ struct dev_context { uint8_t buflen; }; +SR_PRIV int receive_data_TECPEL_DMM_8061(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 e9a15c1a..88b00060 100644 --- a/hwdriver.c +++ b/hwdriver.c @@ -164,6 +164,7 @@ 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_8061_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; @@ -249,6 +250,7 @@ static struct sr_dev_driver *drivers_list[] = { &uni_t_ut61e_ser_driver_info, #endif #ifdef HAVE_HW_UNI_T_DMM + &tecpel_dmm_8061_driver_info, &uni_t_ut61d_driver_info, &uni_t_ut61e_driver_info, &voltcraft_vc820_driver_info,