]> sigrok.org Git - libsigrok.git/blame - 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
ed759a08
BV
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>
c1aae900 25#include <libsigrok/libsigrok.h>
ed759a08
BV
26#include "libsigrok-internal.h"
27
3544f848 28#define LOG_PREFIX "kecheng-kc-330b"
ed759a08 29
1a46cc62 30#define EP_IN (0x80 | 1)
bc7be4a9
BV
31#define EP_OUT 2
32
33/* 500ms */
df035528 34#define DEFAULT_SAMPLE_INTERVAL 0
bc7be4a9
BV
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
df035528
BV
42enum {
43 LIVE_SPL_IDLE,
44 LIVE_SPL_WAIT,
85ed4ab3
BV
45 LOG_DATA_IDLE,
46 LOG_DATA_WAIT,
df035528 47};
bc7be4a9
BV
48
49enum {
50 CMD_CONFIGURE = 0x01,
a8806f03 51 CMD_IDENTIFY = 0x02,
bc7be4a9 52 CMD_SET_DATE_TIME = 0x03,
f336618c 53 CMD_GET_STATUS = 0x04,
85ed4ab3
BV
54 CMD_GET_LOG_INFO = 0x05,
55 CMD_GET_LOG_DATA = 0x07,
bc7be4a9
BV
56 CMD_GET_LIVE_SPL = 0x08,
57};
58
59enum {
60 DATA_SOURCE_LIVE,
61 DATA_SOURCE_MEMORY,
a8806f03
BV
62};
63
f336618c
BV
64enum {
65 DEVICE_ACTIVE,
66 DEVICE_INACTIVE,
67};
68
ed759a08 69struct dev_context {
a8806f03 70 uint64_t limit_samples;
bc7be4a9
BV
71 int sample_interval;
72 int alarm_low;
73 int alarm_high;
2c911182 74 enum sr_mqflag mqflags;
bc7be4a9 75 int data_source;
ed759a08 76
df035528 77 int state;
85ed4ab3 78 gboolean config_dirty;
bc7be4a9 79 uint64_t num_samples;
85ed4ab3 80 uint64_t stored_samples;
df035528 81 struct libusb_transfer *xfer;
85ed4ab3 82 unsigned char buf[128];
ed759a08 83
df035528 84 gint64 last_live_request;
ed759a08
BV
85};
86
bc7be4a9 87SR_PRIV int kecheng_kc_330b_handle_events(int fd, int revents, void *cb_data);
55462b8b 88SR_PRIV void LIBUSB_CALL kecheng_kc_330b_receive_transfer(struct libusb_transfer *transfer);
bc7be4a9
BV
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);
f336618c
BV
93SR_PRIV int kecheng_kc_330b_status_get(const struct sr_dev_inst *sdi,
94 int *status);
85ed4ab3
BV
95SR_PRIV int kecheng_kc_330b_log_info_get(const struct sr_dev_inst *sdi,
96 unsigned char *buf);
ed759a08
BV
97
98#endif