1 /* 2 * This file is part of the libsigrok project. 3 * 4 * Copyright (C) 2012 Bert Vermeulen <bert@biot.com> 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #ifndef LIBSIGROK_HARDWARE_FLUKE_DMM_PROTOCOL_H 21 #define LIBSIGROK_HARDWARE_FLUKE_DMM_PROTOCOL_H 22 23 #define LOG_PREFIX "fluke-dmm" 24 25 #define FLUKEDMM_BUFSIZE 256 26 27 /* Always USB-serial, 1ms is plenty. */ 28 #define SERIAL_WRITE_TIMEOUT_MS 1 29 30 /* Supported models */ 31 enum { 32 FLUKE_187 = 1, 33 FLUKE_189, 34 FLUKE_287, 35 FLUKE_190, 36 FLUKE_289, 37 }; 38 39 /* Supported device profiles */ 40 struct flukedmm_profile { 41 int model; 42 const char *modelname; 43 /* How often to poll, in ms. */ 44 int poll_period; 45 /* If no response received, how long to wait before retrying. */ 46 int timeout; 47 }; 48 49 struct dev_context { 50 const struct flukedmm_profile *profile; 51 struct sr_sw_limits limits; 52 53 char buf[FLUKEDMM_BUFSIZE]; 54 int buflen; 55 int64_t cmd_sent_at; 56 int expect_response; 57 int meas_type; 58 int is_relative; 59 enum sr_mq mq; 60 enum sr_unit unit; 61 enum sr_mqflag mqflags; 62 }; 63 64 SR_PRIV int fluke_receive_data(int fd, int revents, void *cb_data); 65 66 #endif 67