Merge pull request #1275 from Zaaphod/Probe-G20
[clinton/Smoothieware.git] / src / modules / tools / zprobe / CartGridStrategy.h
1 #pragma once
2
3 #include "LevelingStrategy.h"
4
5 #include <string.h>
6 #include <tuple>
7
8 #define cart_grid_leveling_strategy_checksum CHECKSUM("rectangular-grid")
9
10 class StreamOutput;
11 class Gcode;
12
13 class CartGridStrategy : public LevelingStrategy
14 {
15 public:
16 CartGridStrategy(ZProbe *zprobe);
17 ~CartGridStrategy();
18 bool handleGcode(Gcode* gcode);
19 bool handleConfig();
20
21 private:
22
23 bool doProbe(Gcode *gc);
24 bool findBed();
25 void setAdjustFunction(bool on);
26 void print_bed_level(StreamOutput *stream);
27 void doCompensation(float *target, bool inverse);
28 void reset_bed_level();
29 void save_grid(StreamOutput *stream);
30 bool load_grid(StreamOutput *stream);
31 bool probe_grid(int n, int m, float _x_start, float _y_start, float _x_size, float _y_size, StreamOutput *stream);
32
33 float initial_height;
34 float tolerance;
35
36 float *grid;
37 std::tuple<float, float, float> probe_offsets;
38 float x_start,y_start;
39 float x_size,y_size;
40
41 struct {
42 uint8_t configured_grid_x_size:8;
43 uint8_t configured_grid_y_size:8;
44 uint8_t current_grid_x_size:8;
45 uint8_t current_grid_y_size:8;
46 };
47
48 struct {
49 bool save:1;
50 bool do_home:1;
51 bool only_by_two_corners:1;
52 bool human_readable:1;
53 };
54 };