Skip to content

Commit

Permalink
pbdrv/motor: Consolidate iodev getter.
Browse files Browse the repository at this point in the history
This getter was masking several different possible errors into just one generic error. We also use it in just one place, so it makes sense unpack it and save a bit of space.

pybricks/support#361
  • Loading branch information
laurensvalk committed Jun 4, 2021
1 parent 539229c commit 38b4903
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 71 deletions.
25 changes: 7 additions & 18 deletions lib/pbio/drv/city_hub/motor.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,6 @@
#include <pbio/iodev.h>
#include <pbio/port.h>

static pbio_iodev_t *get_iodev(pbio_port_t port) {
pbio_iodev_t *iodev;
pbio_error_t err;

err = pbdrv_ioport_get_iodev(port, &iodev);
if (err != PBIO_SUCCESS) {
return NULL;
}

if (!PBIO_IODEV_IS_MOTOR(iodev)) {
return NULL;
}

return iodev;
}

pbio_error_t pbdrv_motor_coast(pbio_port_t port) {

// set both port pins 1 and 2 to output low
Expand Down Expand Up @@ -149,11 +133,16 @@ pbio_error_t pbdrv_motor_set_duty_cycle(pbio_port_t port, int16_t duty_cycle) {
}

pbio_error_t pbdrv_motor_get_id(pbio_port_t port, pbio_iodev_type_id_t *id) {

pbio_iodev_t *iodev;
pbio_error_t err;

iodev = get_iodev(port);
err = pbdrv_ioport_get_iodev(port, &iodev);
if (err != PBIO_SUCCESS) {
return err;
}

if (!iodev) {
if (!PBIO_IODEV_IS_MOTOR(iodev)) {
return PBIO_ERROR_NO_DEV;
}

Expand Down
23 changes: 6 additions & 17 deletions lib/pbio/drv/move_hub/motor.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,6 @@
#include <pbio/iodev.h>
#include <pbio/port.h>

static pbio_iodev_t *get_iodev(pbio_port_t port) {
pbio_iodev_t *iodev;
pbio_error_t err;

err = pbdrv_ioport_get_iodev(port, &iodev);
if (err != PBIO_SUCCESS) {
return NULL;
}

if (!PBIO_IODEV_IS_MOTOR(iodev)) {
return NULL;
}

return iodev;
}

pbio_error_t pbdrv_motor_coast(pbio_port_t port) {

Expand Down Expand Up @@ -220,10 +205,14 @@ pbio_error_t pbdrv_motor_get_id(pbio_port_t port, pbio_iodev_type_id_t *id) {
return PBIO_SUCCESS;
} else if (port == PBIO_PORT_C || port == PBIO_PORT_D) {
pbio_iodev_t *iodev;
pbio_error_t err;

iodev = get_iodev(port);
err = pbdrv_ioport_get_iodev(port, &iodev);
if (err != PBIO_SUCCESS) {
return err;
}

if (!iodev) {
if (!PBIO_IODEV_IS_MOTOR(iodev)) {
return PBIO_ERROR_NO_DEV;
}

Expand Down
25 changes: 7 additions & 18 deletions lib/pbio/drv/prime_hub/motor.c
Original file line number Diff line number Diff line change
Expand Up @@ -109,22 +109,6 @@ static const pbdrv_motor_data_t
},
};

static pbio_iodev_t *get_iodev(pbio_port_t port) {
pbio_iodev_t *iodev;
pbio_error_t err;

err = pbdrv_ioport_get_iodev(port, &iodev);
if (err != PBIO_SUCCESS) {
return NULL;
}

if (!PBIO_IODEV_IS_MOTOR(iodev)) {
return NULL;
}

return iodev;
}

pbio_error_t pbdrv_motor_coast(pbio_port_t port) {
const pbdrv_motor_data_t *data;

Expand Down Expand Up @@ -188,11 +172,16 @@ pbio_error_t pbdrv_motor_set_duty_cycle(pbio_port_t port, int16_t duty_cycle) {
}

pbio_error_t pbdrv_motor_get_id(pbio_port_t port, pbio_iodev_type_id_t *id) {

pbio_iodev_t *iodev;
pbio_error_t err;

iodev = get_iodev(port);
err = pbdrv_ioport_get_iodev(port, &iodev);
if (err != PBIO_SUCCESS) {
return err;
}

if (!iodev) {
if (!PBIO_IODEV_IS_MOTOR(iodev)) {
return PBIO_ERROR_NO_DEV;
}

Expand Down
25 changes: 7 additions & 18 deletions lib/pbio/drv/technic_hub/motor.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,22 +68,6 @@ static const pbdrv_motor_data_t
},
};

static pbio_iodev_t *get_iodev(pbio_port_t port) {
pbio_iodev_t *iodev;
pbio_error_t err;

err = pbdrv_ioport_get_iodev(port, &iodev);
if (err != PBIO_SUCCESS) {
return NULL;
}

if (!PBIO_IODEV_IS_MOTOR(iodev)) {
return NULL;
}

return iodev;
}

pbio_error_t pbdrv_motor_coast(pbio_port_t port) {
const pbdrv_motor_data_t *data;

Expand Down Expand Up @@ -147,11 +131,16 @@ pbio_error_t pbdrv_motor_set_duty_cycle(pbio_port_t port, int16_t duty_cycle) {
}

pbio_error_t pbdrv_motor_get_id(pbio_port_t port, pbio_iodev_type_id_t *id) {

pbio_iodev_t *iodev;
pbio_error_t err;

iodev = get_iodev(port);
err = pbdrv_ioport_get_iodev(port, &iodev);
if (err != PBIO_SUCCESS) {
return err;
}

if (!iodev) {
if (!PBIO_IODEV_IS_MOTOR(iodev)) {
return PBIO_ERROR_NO_DEV;
}

Expand Down

0 comments on commit 38b4903

Please sign in to comment.