+static uint8_t spickle_is_at_pos(uint8_t side, int32_t pos)
+{
+ int32_t diff;
+ int32_t enc;
+ if (side == I2C_LEFT_SIDE)
+ enc = encoders_spi_get_value(LEFT_SPICKLE_ENCODER);
+ else
+ enc = encoders_spi_get_value(RIGHT_SPICKLE_ENCODER);
+ diff = pos - enc;
+ if (diff < 0)
+ diff = -diff;
+ if (diff < 500)
+ return 1;
+ return 0;
+}
+
+static void spickle_set_qr(uint8_t side)
+{
+ struct quadramp_filter *qr;
+
+ if (side == I2C_LEFT_SIDE)
+ qr = &cobboard.left_spickle.qr;
+ else
+ qr = &cobboard.right_spickle.qr;
+
+ if (state_spicklemode_weak(side))
+ quadramp_set_1st_order_vars(qr, 700, 700); /* set speed */
+ else
+ quadramp_set_1st_order_vars(qr, 3000, 3000); /* set speed */
+}
+
+uint8_t spickle_is_packed(uint8_t side)
+{
+ return spickle_is_at_pos(side, spickle.pos_packed[side]);
+}
+
+uint8_t spickle_is_deployed(uint8_t side)
+{
+ return spickle_is_at_pos(side, spickle.pos_deployed[side]);
+}
+