X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fkecheng-kc-330b%2Fprotocol.h;h=eabda85b8554c476b530af268226c0920513fd6d;hb=61c39f54bbcae7bdde86ddb11b2fd0ff308d319b;hp=76e138915bf462e9dc84a2d74790bcf190e858ed;hpb=a8806f032cb0fe3d86d9c75ed7069d6bdf6c78ea;p=libsigrok.git diff --git a/hardware/kecheng-kc-330b/protocol.h b/hardware/kecheng-kc-330b/protocol.h index 76e13891..eabda85b 100644 --- a/hardware/kecheng-kc-330b/protocol.h +++ b/hardware/kecheng-kc-330b/protocol.h @@ -34,23 +34,78 @@ #define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) #define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) -SR_PRIV enum { +#define EP_IN 0x80 | 1 +#define EP_OUT 2 + +/* 500ms */ +#define DEFAULT_SAMPLE_INTERVAL 0 +#define DEFAULT_ALARM_LOW 40 +#define DEFAULT_ALARM_HIGH 120 +#define DEFAULT_WEIGHT_TIME SR_MQFLAG_SPL_TIME_WEIGHT_F +#define DEFAULT_WEIGHT_FREQ SR_MQFLAG_SPL_FREQ_WEIGHT_A +/* Live */ +#define DEFAULT_DATA_SOURCE DATA_SOURCE_LIVE + +enum { + LIVE_SPL_IDLE, + LIVE_SPL_WAIT, + LOG_DATA_IDLE, + LOG_DATA_WAIT, +}; + +enum { + CMD_CONFIGURE = 0x01, CMD_IDENTIFY = 0x02, + CMD_SET_DATE_TIME = 0x03, + CMD_GET_STATUS = 0x04, + CMD_GET_LOG_INFO = 0x05, + CMD_GET_LOG_DATA = 0x07, + CMD_GET_LIVE_SPL = 0x08, +}; + +enum { + DATA_SOURCE_LIVE, + DATA_SOURCE_MEMORY, +}; + +enum { + DEVICE_ACTIVE, + DEVICE_INACTIVE, }; /** Private, per-device-instance driver context. */ struct dev_context { - /* Model-specific information */ - /* Acquisition settings */ uint64_t limit_samples; + int sample_interval; + int alarm_low; + int alarm_high; + uint64_t mqflags; + int data_source; /* Operational state */ + int state; + gboolean config_dirty; + uint64_t num_samples; + uint64_t stored_samples; + void *cb_data; + struct libusb_transfer *xfer; + unsigned char buf[128]; /* Temporary state across callbacks */ + gint64 last_live_request; }; -SR_PRIV int kecheng_kc_330b_receive_data(int fd, int revents, void *cb_data); +SR_PRIV int kecheng_kc_330b_handle_events(int fd, int revents, void *cb_data); +SR_PRIV void kecheng_kc_330b_receive_transfer(struct libusb_transfer *transfer); +SR_PRIV int kecheng_kc_330b_configure(const struct sr_dev_inst *sdi); +SR_PRIV int kecheng_kc_330b_set_date_time(struct sr_dev_inst *sdi); +SR_PRIV int kecheng_kc_330b_recording_get(const struct sr_dev_inst *sdi, + gboolean *tmp); +SR_PRIV int kecheng_kc_330b_status_get(const struct sr_dev_inst *sdi, + int *status); +SR_PRIV int kecheng_kc_330b_log_info_get(const struct sr_dev_inst *sdi, + unsigned char *buf); #endif