diff options
author | Vojtech Kral <vojtech@kral.hk> | 2018-07-27 12:55:11 +0300 |
---|---|---|
committer | bubnikv <bubnikv@gmail.com> | 2018-08-01 13:18:19 +0300 |
commit | b6d70f5fe8653297c6fa6f23019502101c6d655b (patch) | |
tree | 06dbdb6d6e74ec7be835c9541a8ded31eea45533 /xs/src/avrdude | |
parent | 14c9ff174d25c88fff9593b83e60cdd856ddbcd4 (diff) |
FirmwareDialog: UI improvements, bugfixes
Diffstat (limited to 'xs/src/avrdude')
-rw-r--r-- | xs/src/avrdude/avrdude-slic3r.cpp | 24 | ||||
-rw-r--r-- | xs/src/avrdude/avrdude-slic3r.hpp | 8 |
2 files changed, 26 insertions, 6 deletions
diff --git a/xs/src/avrdude/avrdude-slic3r.cpp b/xs/src/avrdude/avrdude-slic3r.cpp index 4a7f22d6e..0577fe6d0 100644 --- a/xs/src/avrdude/avrdude-slic3r.cpp +++ b/xs/src/avrdude/avrdude-slic3r.cpp @@ -35,8 +35,9 @@ struct AvrDude::priv { std::string sys_config; std::deque<std::vector<std::string>> args; - size_t current_args_set = 0; bool cancelled = false; + int exit_code = 0; + size_t current_args_set = 0; RunFn run_fn; MessageFn message_fn; ProgressFn progress_fn; @@ -146,15 +147,15 @@ AvrDude::Ptr AvrDude::run() int res = -1; if (self->p->run_fn) { - self->p->run_fn(*self); + self->p->run_fn(); } if (! self->p->cancelled) { - res = self->p->run(); + self->p->exit_code = self->p->run(); } if (self->p->complete_fn) { - self->p->complete_fn(res, self->p->current_args_set); + self->p->complete_fn(); } }); @@ -179,5 +180,20 @@ void AvrDude::join() } } +bool AvrDude::cancelled() +{ + return p ? p->cancelled : false; +} + +int AvrDude::exit_code() +{ + return p ? p->exit_code : 0; +} + +size_t AvrDude::last_args_set() +{ + return p ? p->current_args_set : 0; +} + } diff --git a/xs/src/avrdude/avrdude-slic3r.hpp b/xs/src/avrdude/avrdude-slic3r.hpp index 399df2358..86e097034 100644 --- a/xs/src/avrdude/avrdude-slic3r.hpp +++ b/xs/src/avrdude/avrdude-slic3r.hpp @@ -12,10 +12,10 @@ class AvrDude { public: typedef std::shared_ptr<AvrDude> Ptr; - typedef std::function<void(AvrDude&)> RunFn; + typedef std::function<void()> RunFn; typedef std::function<void(const char * /* msg */, unsigned /* size */)> MessageFn; typedef std::function<void(const char * /* task */, unsigned /* progress */)> ProgressFn; - typedef std::function<void(int /* exit status */, size_t /* args_id */)> CompleteFn; + typedef std::function<void()> CompleteFn; // Main c-tor, sys_config is the location of avrdude's main configuration file AvrDude(std::string sys_config); @@ -54,6 +54,10 @@ public: void cancel(); void join(); + + bool cancelled(); // Whether avrdude run was cancelled + int exit_code(); // The exit code of the last invocation + size_t last_args_set(); // Index of the last argument set that was processsed private: struct priv; std::unique_ptr<priv> p; |