| 284 | } |
| 285 | |
| 286 | static 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 |
no test coverage detected