DDA Queue - manage the move queue. More...
#include "dda_queue.h"
#include <string.h>
#include <avr/interrupt.h>
#include "config.h"
#include "timer.h"
#include "serial.h"
#include "sermsg.h"
#include "temp.h"
#include "delay.h"
#include "sersendf.h"
#include "clock.h"
Functions | |
DDA movebuffer[MOVEBUFFER_SIZE] | __attribute__ ((__section__(".bss"))) |
move buffer. | |
uint8_t | queue_full () |
check if the queue is completely full | |
uint8_t | queue_empty () |
check if the queue is completely empty | |
void | queue_step () |
Take a step or go to the next move. | |
void | enqueue (TARGET *t) |
add a move to the movebuffer | |
void | next_move () |
go to the next move. | |
void | print_queue () |
DEBUG - print queue. | |
void | queue_flush () |
dump queue for emergency stop. | |
void | queue_wait () |
waits for a space in the queue to become available | |
Variables | |
uint8_t | mb_head = 0 |
movebuffer head pointer. Points to the last move in the queue. | |
uint8_t | mb_tail = 0 |
movebuffer tail pointer. Points to the currently executing move |
DDA Queue - manage the move queue.
DDA movebuffer [MOVEBUFFER_SIZE] __attribute__ | ( | (__section__(".bss")) | ) |
move buffer.
holds move queue
void enqueue | ( | TARGET * | t ) |
add a move to the movebuffer
Referenced by home_x_positive(), home_y_positive(), home_z_positive(), and process_gcode_command().
void next_move | ( | void | ) |
go to the next move.
be aware that this is sometimes called from interrupt context, sometimes not.
Referenced by enqueue(), and queue_step().
void print_queue | ( | void | ) |
DEBUG - print queue.
Qt/hs format, t is tail, h is head, s is F/full, E/empty or neither
Referenced by clock_250ms(), and process_gcode_command().
void queue_flush | ( | void | ) |
dump queue for emergency stop.
Referenced by process_gcode_command().