Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
Slic3r::AvrDude Class Reference

#include <src/avrdude/avrdude-slic3r.hpp>

+ Collaboration diagram for Slic3r::AvrDude:

Classes

struct  priv
 

Public Types

enum  { EXIT_SUCCEESS = 0 , EXIT_EXCEPTION = -1000 }
 
typedef std::shared_ptr< AvrDudePtr
 
typedef std::function< void(Ptr)> RunFn
 
typedef std::function< void(const char *, unsigned)> MessageFn
 
typedef std::function< void(const char *, unsigned)> ProgressFn
 
typedef std::function< void()> CompleteFn
 

Public Member Functions

 AvrDude ()
 
 AvrDude (AvrDude &&)
 
 AvrDude (const AvrDude &)=delete
 
AvrDudeoperator= (AvrDude &&)=delete
 
AvrDudeoperator= (const AvrDude &)=delete
 
 ~AvrDude ()
 
AvrDudepush_args (std::vector< std::string > args)
 
AvrDudeon_run (RunFn fn)
 
AvrDudeon_message (MessageFn fn)
 
AvrDudeon_progress (ProgressFn fn)
 
AvrDudeon_complete (CompleteFn fn)
 
int run_sync ()
 
Ptr run ()
 
void cancel ()
 
void join ()
 
bool cancelled ()
 
int exit_code ()
 
size_t last_args_set ()
 

Private Attributes

std::unique_ptr< privp
 

Detailed Description

Member Typedef Documentation

◆ CompleteFn

typedef std::function<void()> Slic3r::AvrDude::CompleteFn

◆ MessageFn

typedef std::function<void(const char * , unsigned )> Slic3r::AvrDude::MessageFn

◆ ProgressFn

typedef std::function<void(const char * , unsigned )> Slic3r::AvrDude::ProgressFn

◆ Ptr

typedef std::shared_ptr<AvrDude> Slic3r::AvrDude::Ptr

◆ RunFn

typedef std::function<void(Ptr )> Slic3r::AvrDude::RunFn

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
EXIT_SUCCEESS 
EXIT_EXCEPTION 
14 {
15 EXIT_SUCCEESS = 0,
16 EXIT_EXCEPTION = -1000,
17 };
@ EXIT_EXCEPTION
Definition avrdude-slic3r.hpp:16
@ EXIT_SUCCEESS
Definition avrdude-slic3r.hpp:15

Constructor & Destructor Documentation

◆ AvrDude() [1/3]

Slic3r::AvrDude::AvrDude ( )
130: p(new priv()) {}
std::unique_ptr< priv > p
Definition avrdude-slic3r.hpp:75
Definition CutSurface.cpp:39

◆ AvrDude() [2/3]

Slic3r::AvrDude::AvrDude ( AvrDude &&  other)
132: p(std::move(other.p)) {}

◆ AvrDude() [3/3]

Slic3r::AvrDude::AvrDude ( const AvrDude )
delete

◆ ~AvrDude()

Slic3r::AvrDude::~AvrDude ( )
135{
136 if (p && p->avrdude_thread.joinable()) {
137 p->avrdude_thread.detach();
138 }
139}

References p.

Member Function Documentation

◆ cancel()

void Slic3r::AvrDude::cancel ( )
220{
221 if (p) {
222 p->cancelled = true;
224 }
225}
void avrdude_cancel()
Definition main.c:174

References avrdude_cancel(), and p.

+ Here is the call graph for this function:

◆ cancelled()

bool Slic3r::AvrDude::cancelled ( )
235{
236 return p ? p->cancelled : false;
237}

References p.

◆ exit_code()

int Slic3r::AvrDude::exit_code ( )
240{
241 return p ? p->exit_code : 0;
242}

References p.

◆ join()

void Slic3r::AvrDude::join ( )
228{
229 if (p && p->avrdude_thread.joinable()) {
230 p->avrdude_thread.join();
231 }
232}

References p.

◆ last_args_set()

size_t Slic3r::AvrDude::last_args_set ( )
245{
246 return p ? p->current_args_set : 0;
247}

References p.

◆ on_complete()

AvrDude & Slic3r::AvrDude::on_complete ( CompleteFn  fn)
166{
167 if (p) { p->complete_fn = std::move(fn); }
168 return *this;
169}

References p.

◆ on_message()

AvrDude & Slic3r::AvrDude::on_message ( MessageFn  fn)
154{
155 if (p) { p->message_fn = std::move(fn); }
156 return *this;
157}

References p.

◆ on_progress()

AvrDude & Slic3r::AvrDude::on_progress ( ProgressFn  fn)
160{
161 if (p) { p->progress_fn = std::move(fn); }
162 return *this;
163}

References p.

◆ on_run()

AvrDude & Slic3r::AvrDude::on_run ( RunFn  fn)
148{
149 if (p) { p->run_fn = std::move(fn); }
150 return *this;
151}

References p.

Referenced by Slic3r::FirmwareDialog::priv::perform_upload().

+ Here is the caller graph for this function:

◆ operator=() [1/2]

AvrDude & Slic3r::AvrDude::operator= ( AvrDude &&  )
delete

◆ operator=() [2/2]

AvrDude & Slic3r::AvrDude::operator= ( const AvrDude )
delete

◆ push_args()

AvrDude & Slic3r::AvrDude::push_args ( std::vector< std::string >  args)
142{
143 if (p) { p->args.push_back(std::move(args)); }
144 return *this;
145}

References p.

◆ run()

AvrDude::Ptr Slic3r::AvrDude::run ( )
177{
178 auto self = std::make_shared<AvrDude>(std::move(*this));
179
180 if (self->p) {
181 auto avrdude_thread = std::thread([self]() {
182 try {
183 if (self->p->run_fn) {
184 self->p->run_fn(self);
185 }
186
187 if (! self->p->cancelled) {
188 self->p->exit_code = self->p->run();
189 }
190
191 if (self->p->complete_fn) {
192 self->p->complete_fn();
193 }
194 } catch (const std::exception &ex) {
195 self->p->exit_code = EXIT_EXCEPTION;
196
197 static const char *msg = "An exception was thrown in the background thread:\n";
198
199 const char *what = ex.what();
200 auto &message_fn = self->p->message_fn;
201 if (message_fn) {
202 message_fn(msg, sizeof(msg));
203 message_fn(what, (unsigned)std::strlen(what));
204 message_fn("\n", 1);
205 }
206
207 if (self->p->complete_fn) {
208 self->p->complete_fn();
209 }
210 }
211 });
212
213 self->p->avrdude_thread = std::move(avrdude_thread);
214 }
215
216 return self;
217}
if(!(yy_init))
Definition lexer.c:1190

References EXIT_EXCEPTION, and if().

+ Here is the call graph for this function:

◆ run_sync()

int Slic3r::AvrDude::run_sync ( )
172{
173 return p ? p->run() : -1;
174}

References p.

Member Data Documentation

◆ p

std::unique_ptr<priv> Slic3r::AvrDude::p
private

The documentation for this class was generated from the following files: