@ -151,6 +151,40 @@ out:
return mcp23018_status ;
}
# ifdef LEFT_LEDS
uint8_t ergodox_left_leds_update ( void ) {
if ( mcp23018_status ) { / / if there was an error
return mcp23018_status ;
}
# define LEFT_LED_1_SHIFT 7 / / in MCP23018 port B
# define LEFT_LED_2_SHIFT 6 / / in MCP23018 port B
# define LEFT_LED_3_SHIFT 7 / / in MCP23018 port A
/ / set logical value ( doesn ' t matter on inputs )
/ / - unused : hi - Z : 1
/ / - input : hi - Z : 1
/ / - driving : hi - Z : 1
mcp23018_status = i2c_start ( I2C_ADDR_WRITE ) ;
if ( mcp23018_status ) goto out ;
mcp23018_status = i2c_write ( OLATA ) ;
if ( mcp23018_status ) goto out ;
mcp23018_status = i2c_write ( 0 b11111111
& ~ ( ergodox_left_led_3 < < LEFT_LED_3_SHIFT )
) ;
if ( mcp23018_status ) goto out ;
mcp23018_status = i2c_write ( 0 b11111111
& ~ ( ergodox_left_led_2 < < LEFT_LED_2_SHIFT )
& ~ ( ergodox_left_led_1 < < LEFT_LED_1_SHIFT )
) ;
if ( mcp23018_status ) goto out ;
out :
i2c_stop ( ) ;
return mcp23018_status ;
}
# endif
# ifdef ONEHAND_ENABLE
__attribute__ ( ( weak ) )
/ / swap - hands action needs a matrix to define the swap