/** Type of log callback */
typedef function<void(const LogLevel *, string message)> LogCallbackFunction;
+/** Resource reader delegate. */
+class SR_API ResourceReader
+{
+public:
+ ResourceReader() {}
+ virtual ~ResourceReader();
+private:
+ /** Resource open hook. */
+ virtual void open(struct sr_resource *res, string name) = 0;
+ /** Resource close hook. */
+ virtual void close(struct sr_resource *res) = 0;
+ /** Resource read hook. */
+ virtual size_t read(const struct sr_resource *res, void *buf, size_t count) = 0;
+
+ static SR_PRIV int open_callback(struct sr_resource *res,
+ const char *name, void *cb_data);
+ static SR_PRIV int close_callback(struct sr_resource *res,
+ void *cb_data);
+ static SR_PRIV ssize_t read_callback(const struct sr_resource *res,
+ void *buf, size_t count, void *cb_data);
+ friend class Context;
+};
+
/** The global libsigrok context */
class SR_API Context : public UserOwned<Context, struct sr_context>
{
void set_log_callback(LogCallbackFunction callback);
/** Set the log callback to the default handler. */
void set_log_callback_default();
+ /** Install a delegate for reading resource files.
+ * @param reader The resource reader delegate, or nullptr to unset. */
+ void set_resource_reader(ResourceReader *reader);
/** Create a new session. */
shared_ptr<Session> create_session();
/** Create a new user device. */
/** Begin saving session to a file.
* @param filename File name string. */
void begin_save(string filename);
- /** Append a packet to the session file being saved.
- * @param packet Packet to append. */
- void append(shared_ptr<Packet> packet);
- /** Append raw logic data to the session file being saved. */
- void append(void *data, size_t length, unsigned int unit_size);
/** Get current trigger setting. */
shared_ptr<Trigger> trigger();
/** Get the context. */
vector<DatafeedCallbackData *> _datafeed_callbacks;
map<shared_ptr<EventSource>, SourceCallbackData *> _source_callbacks;
string _filename;
- bool _saving;
- bool _save_initialized;
- string _save_filename;
- uint64_t _save_samplerate;
shared_ptr<Trigger> _trigger;
friend class Deleter;
friend class Context;