diff --git a/lib/card10/portexpander.c b/lib/card10/portexpander.c index ee3ac3da9df23430800a7892bbfcd326232d5e3a..6ae8cd93b3866fa0dd794928875e2fda33d234f6 100644 --- a/lib/card10/portexpander.c +++ b/lib/card10/portexpander.c @@ -105,3 +105,12 @@ void portexpander_set(uint8_t pin, uint8_t value) portexpander_write(PE_C_OUTPUT_PORT, output_state); } } + +void portexpander_set_mask(uint8_t mask, uint8_t values) +{ + if (detected) { + output_state &= ~(mask & ~values); + output_state |= mask & values; + portexpander_write(PE_C_OUTPUT_PORT, output_state); + } +} diff --git a/lib/card10/portexpander.h b/lib/card10/portexpander.h index b81c7070d4d412714d1df08b1f424fabf37291b0..24e4e5ffbccfc6e1b47cbf987df6c141931cc484 100644 --- a/lib/card10/portexpander.h +++ b/lib/card10/portexpander.h @@ -7,6 +7,7 @@ void portexpander_init(void); uint8_t portexpander_get(void); void portexpander_set(uint8_t pin, uint8_t value); +void portexpander_set_mask(uint8_t mask, uint8_t values); bool portexpander_detected(void); #endif