#include <stdbool.h>
#include <math.h>
+/// common variables for planning (move master)
+typedef struct mpMoveMasterSingleton {
+ float position[AXES]; // final move position for planning purposes
+
+ float jerk; // jerk values cached from previous block
+ float recip_jerk;
+ float cbrt_jerk;
+} mpMoveMasterSingleton_t;
+
+
+mpMoveMasterSingleton_t mm = {}; // context for line planning
+
+
+/// Set planner position for a single axis
+void mp_set_planner_position(uint8_t axis, const float position) {
+ mm.position[axis] = position;
+}
+
/* Sonny's algorithm - simple
*
#include "buffer.h"
+void mp_set_planner_position(uint8_t axis, const float position);
void mp_plan_block_list(mpBuf_t *bf, uint8_t *mr_flag);
stat_t mp_aline(GCodeState_t *gm_in);
#include <stdio.h>
-mpMoveMasterSingleton_t mm; // context for line planning
-mpMoveRuntimeSingleton_t mr; // context for line runtime
+mpMoveRuntimeSingleton_t mr = {}; // context for line runtime
void planner_init() {
- // If you know all memory has been zeroed by a hard reset you don't need
- // these next 2 lines
- memset(&mr, 0, sizeof(mr)); // clear all values, pointers and status
- memset(&mm, 0, sizeof(mm)); // clear all values, pointers and status
mp_init_buffers();
}
* still close to the starting point.
*/
-/// Set planner position for a single axis
-void mp_set_planner_position(uint8_t axis, const float position) {
- mm.position[axis] = position;
-}
-
/// Set runtime position for a single axis
void mp_set_runtime_position(uint8_t axis, const float position) {
((MIN_SEGMENT_USEC + 1) / MICROSECONDS_PER_MINUTE)
-/// common variables for planning (move master)
-typedef struct mpMoveMasterSingleton {
- float position[AXES]; // final move position for planning purposes
-
- float jerk; // jerk values cached from previous block
- float recip_jerk;
- float cbrt_jerk;
-} mpMoveMasterSingleton_t;
-
-
typedef struct mpMoveRuntimeSingleton { // persistent runtime variables
uint8_t move_state; // state of the overall move
uint8_t section; // what section is the move in?
// Reference global scope structures
-extern mpMoveMasterSingleton_t mm; // context for line planning
extern mpMoveRuntimeSingleton_t mr; // context for line runtime
void planner_init();
void mp_flush_planner();
-void mp_set_planner_position(uint8_t axis, const float position);
void mp_set_runtime_position(uint8_t axis, const float position);
void mp_set_steps_to_runtime_position();
float mp_get_runtime_velocity();