MCPcopy Create free account
hub / github.com/Motion-Project/motion / stepper_move

Function stepper_move

src/track.c:286–345  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

284}
285
286static unsigned int stepper_move(struct context *cnt, struct coord *cent, struct images *imgs)
287{
288 unsigned int command = 0, data = 0;
289
290 if (cnt->track.dev < 0) {
291 MOTION_LOG(WRN, TYPE_TRACK, NO_ERRNO
292 ,_("No device %s started yet , trying stepper_center()")
293 ,cnt->track.port);
294
295 if (!stepper_center(cnt, 0, 0)) {
296 MOTION_LOG(ERR, TYPE_TRACK, SHOW_ERRNO
297 ,_("failed to initialize stepper device on %s , fd [%i].")
298 ,cnt->track.port, cnt->track.dev);
299 return 0;
300 }
301
302 MOTION_LOG(NTC, TYPE_TRACK, NO_ERRNO
303 ,_("succeed , device started %s , fd [%i]")
304 ,cnt->track.port, cnt->track.dev);
305 }
306
307 /* x-axis */
308
309 if (cent->x < imgs->width / 2) {
310 command = STEPPER_COMMAND_LEFT_N;
311 data = imgs->width / 2 - cent->x;
312 }
313
314 if (cent->x > imgs->width / 2) {
315 command = STEPPER_COMMAND_RIGHT_N;
316 data = cent->x - imgs->width / 2;
317 }
318
319 data = data * cnt->track.stepsize / imgs->width;
320
321 if (data) {
322 stepper_command(cnt, cnt->track.motorx, command, data);
323 }
324
325 /* y-axis */
326
327 if (cent->y < imgs->height / 2) {
328 command = STEPPER_COMMAND_UP_N;
329 data = imgs->height / 2 - cent->y;
330 }
331
332 if (cent->y > imgs->height / 2) {
333 command = STEPPER_COMMAND_DOWN_N;
334 data = cent->y - imgs->height / 2;
335 }
336
337 data = data * cnt->track.stepsize / imgs->height;
338
339 if (data) {
340 stepper_command(cnt, cnt->track.motory, command, data);
341 }
342
343

Callers 1

track_moveFunction · 0.85

Calls 2

stepper_centerFunction · 0.85
stepper_commandFunction · 0.85

Tested by

no test coverage detected