]> sigrok.org Git - libsigrok.git/blame_incremental - src/hardware/kecheng-kc-330b/protocol.h
output/csv: use intermediate time_t var, silence compiler warning
[libsigrok.git] / src / hardware / kecheng-kc-330b / protocol.h
... / ...
CommitLineData
1/*
2 * This file is part of the libsigrok project.
3 *
4 * Copyright (C) 2013 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_KECHENG_KC_330B_PROTOCOL_H
21#define LIBSIGROK_HARDWARE_KECHENG_KC_330B_PROTOCOL_H
22
23#include <stdint.h>
24#include <glib.h>
25#include <libsigrok/libsigrok.h>
26#include "libsigrok-internal.h"
27
28#define LOG_PREFIX "kecheng-kc-330b"
29
30#define EP_IN (0x80 | 1)
31#define EP_OUT 2
32
33/* 500ms */
34#define DEFAULT_SAMPLE_INTERVAL 0
35#define DEFAULT_ALARM_LOW 40
36#define DEFAULT_ALARM_HIGH 120
37#define DEFAULT_WEIGHT_TIME SR_MQFLAG_SPL_TIME_WEIGHT_F
38#define DEFAULT_WEIGHT_FREQ SR_MQFLAG_SPL_FREQ_WEIGHT_A
39/* Live */
40#define DEFAULT_DATA_SOURCE DATA_SOURCE_LIVE
41
42enum {
43 LIVE_SPL_IDLE,
44 LIVE_SPL_WAIT,
45 LOG_DATA_IDLE,
46 LOG_DATA_WAIT,
47};
48
49enum {
50 CMD_CONFIGURE = 0x01,
51 CMD_IDENTIFY = 0x02,
52 CMD_SET_DATE_TIME = 0x03,
53 CMD_GET_STATUS = 0x04,
54 CMD_GET_LOG_INFO = 0x05,
55 CMD_GET_LOG_DATA = 0x07,
56 CMD_GET_LIVE_SPL = 0x08,
57};
58
59enum {
60 DATA_SOURCE_LIVE,
61 DATA_SOURCE_MEMORY,
62};
63
64enum {
65 DEVICE_ACTIVE,
66 DEVICE_INACTIVE,
67};
68
69struct dev_context {
70 uint64_t limit_samples;
71 int sample_interval;
72 int alarm_low;
73 int alarm_high;
74 enum sr_mqflag mqflags;
75 int data_source;
76
77 int state;
78 gboolean config_dirty;
79 uint64_t num_samples;
80 uint64_t stored_samples;
81 struct libusb_transfer *xfer;
82 unsigned char buf[128];
83
84 gint64 last_live_request;
85};
86
87SR_PRIV int kecheng_kc_330b_handle_events(int fd, int revents, void *cb_data);
88SR_PRIV void LIBUSB_CALL kecheng_kc_330b_receive_transfer(struct libusb_transfer *transfer);
89SR_PRIV int kecheng_kc_330b_configure(const struct sr_dev_inst *sdi);
90SR_PRIV int kecheng_kc_330b_set_date_time(struct sr_dev_inst *sdi);
91SR_PRIV int kecheng_kc_330b_recording_get(const struct sr_dev_inst *sdi,
92 gboolean *tmp);
93SR_PRIV int kecheng_kc_330b_status_get(const struct sr_dev_inst *sdi,
94 int *status);
95SR_PRIV int kecheng_kc_330b_log_info_get(const struct sr_dev_inst *sdi,
96 unsigned char *buf);
97
98#endif