HCoop
/
clinton
/
Smoothieware.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add $J for instant jog of one axis.
[clinton/Smoothieware.git]
/
src
/
modules
/
robot
/
Conveyor.h
diff --git
a/src/modules/robot/Conveyor.h
b/src/modules/robot/Conveyor.h
index
22dc030
..
1418188
100644
(file)
--- a/
src/modules/robot/Conveyor.h
+++ b/
src/modules/robot/Conveyor.h
@@
-5,60
+5,54
@@
You should have received a copy of the GNU General Public License along with Smoothie. If not, see <http://www.gnu.org/licenses/>.
*/
You should have received a copy of the GNU General Public License along with Smoothie. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONVEYOR_H
-#define CONVEYOR_H
+#pragma once
#include "libs/Module.h"
#include "libs/Module.h"
-#include "
HeapRing
.h"
+#include "
BlockQueue
.h"
-using namespace std;
-#include <string>
-#include <vector>
-
-class Gcode;
class Block;
class Conveyor : public Module
{
public:
Conveyor();
class Block;
class Conveyor : public Module
{
public:
Conveyor();
+ void start(uint8_t n_actuators);
void on_module_loaded(void);
void on_idle(void *);
void on_module_loaded(void);
void on_idle(void *);
- void on_main_loop(void *);
- void on_block_end(void *);
void on_halt(void *);
void on_halt(void *);
- void on_config_reload(void *);
-
- void notify_block_finished(Block *);
- void wait_for_
empty_queue(
);
+ void wait_for_
idle(bool wait_for_motors=true
);
bool is_queue_empty() { return queue.is_empty(); };
bool is_queue_full() { return queue.is_full(); };
bool is_queue_empty() { return queue.is_empty(); };
bool is_queue_full() { return queue.is_full(); };
+ bool is_idle() const;
- void ensure_running(void);
-
- void append_gcode(Gcode *);
- void queue_head_block(void);
+ // returns next available block writes it to block and returns true
+ bool get_next_block(Block **block);
+ void block_finished();
void dump_queue(void);
void flush_queue(void);
void dump_queue(void);
void flush_queue(void);
- bool is_flushing() const { return flush; }
+ float get_current_feedrate() const { return current_feedrate; }
+ void force_queue() { check_queue(true); }
friend class Planner; // for queue
private:
friend class Planner; // for queue
private:
- typedef HeapRing<Block> Queue_t;
+ void check_queue(bool force= false);
+ void queue_head_block(void);
+ using Queue_t= BlockQueue;
Queue_t queue; // Queue of Blocks
Queue_t queue; // Queue of Blocks
- volatile unsigned int gc_pending;
+
+ uint32_t queue_delay_time_ms;
+ size_t queue_size;
+ float current_feedrate{0}; // actual nominal feedrate that current block is running at in mm/sec
struct {
volatile bool running:1;
struct {
volatile bool running:1;
- volatile bool
flus
h:1;
-
volatile bool halted
:1;
+ volatile bool
allow_fetc
h:1;
+
bool flush
:1;
};
};
};
};
-
-#endif // CONVEYOR_H