+ /* Serial-dmm items "with state" and variable length packets. */
+ void *dmm_state;
+ void *(*dmm_state_init)(void);
+ void (*dmm_state_free)(void *state);
+ int (*after_open)(struct sr_serial_dev_inst *serial);
+ int (*packet_valid_len)(void *state, const uint8_t *data, size_t dlen,
+ size_t *pkt_len);
+ int (*packet_parse_len)(void *state, const uint8_t *data, size_t dlen,
+ double *val, struct sr_datafeed_analog *analog, void *info);
+ int (*config_get)(void *state, uint32_t key, GVariant **data,
+ const struct sr_dev_inst *sdi, const struct sr_channel_group *cg);
+ int (*config_set)(void *state, uint32_t key, GVariant *data,
+ const struct sr_dev_inst *sdi, const struct sr_channel_group *cg);
+ int (*config_list)(void *state, uint32_t key, GVariant **data,
+ const struct sr_dev_inst *sdi, const struct sr_channel_group *cg);
+ /** Hook at acquisition start. Can re-route the receive routine. */
+ int (*acquire_start)(void *state, const struct sr_dev_inst *sdi,
+ sr_receive_data_callback *cb, void **cb_data);