chiark / gitweb /
Refresh of m206-always-use-homing-homeing
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 10 Aug 2012 16:07:00 +0000 (17:07 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 10 Aug 2012 16:07:00 +0000 (17:07 +0100)
Marlin/Marlin.pde

index 05e7d5a424bb3003d2ab83b1040bf13eb10954c8..5b00f9cd2fc96d4da1177877ba6b305a9bae010f 100644 (file)
@@ -545,14 +545,18 @@ bool code_seen(char code)
   return (strchr_pointer != NULL);  //Return True if a character was found
 }
 
-static const PROGMEM float base_min_pos[3] = { X_MIN_POS, Y_MIN_POS, Z_MIN_POS };
-static const PROGMEM float base_max_pos[3] = { X_MAX_POS, Y_MAX_POS, Z_MAX_POS };
-static const PROGMEM float base_home_pos[3] = { X_HOME_POS, Y_HOME_POS, Z_HOME_POS };
+#define XYZ_CONFIG(type,array,axis) (pgm_read_##type##_near(&array##_P[(axis)]))
+#define XYZ_CONSTS_FROM_CONFIG(type, array, CONFIG) \
+static const PROGMEM type array##_P[3] = { X_##CONFIG, Y_##CONFIG, Z_##CONFIG };
+
+XYZ_CONSTS_FROM_CONFIG(float, base_min_pos,    MIN_POS);
+XYZ_CONSTS_FROM_CONFIG(float, base_max_pos,    MAX_POS);
+XYZ_CONSTS_FROM_CONFIG(float, base_home_pos,   HOME_POS);
 
 static void axis_is_at_home(int axis) {
-  current_position[axis] = base_home_pos[axis] + add_homeing[axis];
-  min_pos[axis] = base_min_pos[axis] + add_homeing[axis];
-  max_pos[axis] = base_max_pos[axis] + add_homeing[axis];
+  current_position[axis] = XYZ_CONFIG(float, base_home_pos,axis) + add_homeing[axis];
+  min_pos[axis] = XYZ_CONFIG(float, base_min_pos, axis) + add_homeing[axis];
+  max_pos[axis] = XYZ_CONFIG(float, base_max_pos, axis) + add_homeing[axis];
 }
 
 #define HOMEAXIS(LETTER) \