Switch C++ to use Direction enum for functions and added Direction contants to MP

pull/144/head
ZodiusInfuser 2021-05-12 18:27:03 +01:00 zatwierdzone przez Phil Howard
rodzic 4a206a9b70
commit d4ba1d97d9
8 zmienionych plików z 26 dodań i 22 usunięć

Wyświetl plik

@ -48,12 +48,12 @@ namespace pimoroni {
ioe.set_address(address);
}
bool BreakoutEncoder::get_direction(void) {
return direction_cw;
BreakoutEncoder::Direction BreakoutEncoder::get_direction() {
return direction;
}
void BreakoutEncoder::set_direction(bool clockwise) {
direction_cw = clockwise;
void BreakoutEncoder::set_direction(Direction direction) {
this->direction = direction;
}
void BreakoutEncoder::set_brightness(float brightness) {
@ -77,7 +77,7 @@ namespace pimoroni {
int16_t BreakoutEncoder::read() {
int16_t count = ioe.read_rotary_encoder(ENC_CHANNEL);
if(!direction_cw)
if(direction != DIRECTION_CW)
count = 0 - count;
ioe.clear_interrupt_flag();

Wyświetl plik

@ -21,7 +21,7 @@ namespace pimoroni {
public:
static const uint8_t DEFAULT_I2C_ADDRESS = 0x0F;
static constexpr float DEFAULT_BRIGHTNESS = 1.0f; //Effectively the maximum fraction of the period that the LED will be on
static const bool DEFAULT_DIRECTION = DIRECTION_CW;
static const Direction DEFAULT_DIRECTION = DIRECTION_CW;
static const uint8_t PIN_UNUSED = UINT8_MAX;
static const uint32_t DEFAULT_TIMEOUT = 1;
@ -44,7 +44,7 @@ namespace pimoroni {
//--------------------------------------------------
private:
IOExpander ioe;
bool direction_cw = DEFAULT_DIRECTION;
Direction direction = DEFAULT_DIRECTION;
float brightness = DEFAULT_BRIGHTNESS;
uint8_t interrupt_pin = PIN_UNUSED; // A local copy of the value passed to the IOExpander, used in initialisation
@ -80,8 +80,8 @@ namespace pimoroni {
void set_address(uint8_t address);
// Encoder breakout specific
bool get_direction();
void set_direction(bool clockwise);
Direction get_direction();
void set_direction(Direction direction);
void set_brightness(float brightness);
void set_led(uint8_t r, uint8_t g, uint8_t b);

Wyświetl plik

@ -11,7 +11,7 @@ namespace pimoroni {
ioe.set_mode(POT_TERM_B, IOExpander::PIN_OUT);
ioe.set_mode(POT_INPUT, IOExpander::PIN_ADC);
if(direction_cw) {
if(direction == DIRECTION_CW) {
// Clockwise increasing
ioe.output(POT_TERM_A, IOExpander::LOW);
ioe.output(POT_TERM_B, IOExpander::HIGH);
@ -58,7 +58,7 @@ namespace pimoroni {
ioe.set_address(address);
}
float BreakoutPotentiometer::get_adc_vref(void) {
float BreakoutPotentiometer::get_adc_vref() {
return ioe.get_adc_vref();
}
@ -66,12 +66,12 @@ namespace pimoroni {
ioe.set_adc_vref(vref);
}
bool BreakoutPotentiometer::get_direction(void) {
return direction_cw;
BreakoutPotentiometer::Direction BreakoutPotentiometer::get_direction() {
return direction;
}
void BreakoutPotentiometer::set_direction(bool clockwise) {
if(clockwise) {
void BreakoutPotentiometer::set_direction(Direction direction) {
if(direction == DIRECTION_CW) {
// Clockwise increasing
ioe.output(POT_TERM_A, IOExpander::LOW);
ioe.output(POT_TERM_B, IOExpander::HIGH);
@ -81,7 +81,7 @@ namespace pimoroni {
ioe.output(POT_TERM_A, IOExpander::HIGH);
ioe.output(POT_TERM_B, IOExpander::LOW);
}
direction_cw = clockwise;
this->direction = direction;
}
void BreakoutPotentiometer::set_brightness(float brightness) {

Wyświetl plik

@ -21,7 +21,7 @@ namespace pimoroni {
public:
static const uint8_t DEFAULT_I2C_ADDRESS = 0x0E;
static constexpr float DEFAULT_BRIGHTNESS = 1.0f; //Effectively the maximum fraction of the period that the LED will be on
static const bool DEFAULT_DIRECTION = DIRECTION_CW;
static const Direction DEFAULT_DIRECTION = DIRECTION_CW;
static const uint8_t PIN_UNUSED = UINT8_MAX;
static const uint32_t DEFAULT_TIMEOUT = 1;
static const uint32_t DEFAULT_ADC_TIMEOUT = 1;
@ -43,7 +43,7 @@ namespace pimoroni {
//--------------------------------------------------
private:
IOExpander ioe;
bool direction_cw = DEFAULT_DIRECTION;
Direction direction = DEFAULT_DIRECTION;
float brightness = DEFAULT_BRIGHTNESS;
@ -80,8 +80,8 @@ namespace pimoroni {
void set_adc_vref(float vref);
// Potentiometer breakout specific
bool get_direction();
void set_direction(bool clockwise);
Direction get_direction();
void set_direction(Direction direction);
void set_brightness(float brightness);
void set_led(uint8_t r, uint8_t g, uint8_t b);

Wyświetl plik

@ -22,6 +22,8 @@ STATIC const mp_rom_map_elem_t BreakoutEncoder_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_set_led), MP_ROM_PTR(&BreakoutEncoder_set_led_obj) },
{ MP_ROM_QSTR(MP_QSTR_available), MP_ROM_PTR(&BreakoutEncoder_available_obj) },
{ MP_ROM_QSTR(MP_QSTR_read), MP_ROM_PTR(&BreakoutEncoder_read_obj) },
{ MP_ROM_QSTR(MP_QSTR_DIRECTION_CW), MP_ROM_INT(1) },
{ MP_ROM_QSTR(MP_QSTR_DIRECTION_CCW), MP_ROM_INT(0) },
};
STATIC MP_DEFINE_CONST_DICT(BreakoutEncoder_locals_dict, BreakoutEncoder_locals_dict_table);

Wyświetl plik

@ -144,7 +144,7 @@ mp_obj_t BreakoutEncoder_set_direction(size_t n_args, const mp_obj_t *pos_args,
breakout_encoder_BreakoutEncoder_obj_t *self = MP_OBJ_TO_PTR2(args[ARG_self].u_obj, breakout_encoder_BreakoutEncoder_obj_t);
self->breakout->set_direction(args[ARG_clockwise].u_bool);
self->breakout->set_direction(args[ARG_clockwise].u_bool ? BreakoutEncoder::DIRECTION_CW : BreakoutEncoder::DIRECTION_CCW);
return mp_const_none;
}

Wyświetl plik

@ -26,6 +26,8 @@ STATIC const mp_rom_map_elem_t BreakoutPotentiometer_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_set_led), MP_ROM_PTR(&BreakoutPotentiometer_set_led_obj) },
{ MP_ROM_QSTR(MP_QSTR_read), MP_ROM_PTR(&BreakoutPotentiometer_read_obj) },
{ MP_ROM_QSTR(MP_QSTR_read_raw), MP_ROM_PTR(&BreakoutPotentiometer_read_raw_obj) },
{ MP_ROM_QSTR(MP_QSTR_DIRECTION_CW), MP_ROM_INT(1) },
{ MP_ROM_QSTR(MP_QSTR_DIRECTION_CCW), MP_ROM_INT(0) },
};
STATIC MP_DEFINE_CONST_DICT(BreakoutPotentiometer_locals_dict, BreakoutPotentiometer_locals_dict_table);

Wyświetl plik

@ -167,7 +167,7 @@ mp_obj_t BreakoutPotentiometer_set_direction(size_t n_args, const mp_obj_t *pos_
breakout_potentiometer_BreakoutPotentiometer_obj_t *self = MP_OBJ_TO_PTR2(args[ARG_self].u_obj, breakout_potentiometer_BreakoutPotentiometer_obj_t);
self->breakout->set_direction(args[ARG_clockwise].u_bool);
self->breakout->set_direction(args[ARG_clockwise].u_bool ? BreakoutPotentiometer::DIRECTION_CW : BreakoutPotentiometer::DIRECTION_CCW);
return mp_const_none;
}