BV I2C: add text styles
This commit is contained in:
parent
7f7994678f
commit
eff30a6431
|
@ -119,7 +119,9 @@ static bool busvoodoo_i2c_setup(char** prefix, const char* line)
|
|||
i2c_master_setup(BUSVOODOO_I2C, busvoodoo_i2c_speed); // setup I2C
|
||||
if (busvoodoo_i2c_embedded_pullup) {
|
||||
busvoodoo_embedded_pullup(true); // set pull-up
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_WARNING);
|
||||
printf("use LV to set pull-up voltage\n");
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_RESET);
|
||||
}
|
||||
busvoodoo_led_blue_off(); // disable blue LED because there is no activity
|
||||
busvoodoo_i2c_setting = BUSVOODOO_I2C_SETTING_NONE; // restart settings next time
|
||||
|
@ -164,23 +166,32 @@ static void busvoodoo_i2c_read(void)
|
|||
busvoodoo_led_blue_pulse(BUSVOODOO_LED_PULSE); // pulse blue LED to show we read data
|
||||
uint8_t data; // to store the data read
|
||||
switch (i2c_master_read(BUSVOODOO_I2C, &data, 1)) {
|
||||
case I2C_MASTER_RC_NONE: // all went fine
|
||||
printf("%+02x", data); // show data
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_MASTER:
|
||||
printf("slave not selected");
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_READY:
|
||||
printf("slave not ready");
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_RECEIVE:
|
||||
printf("not in receive mode");
|
||||
break;
|
||||
case I2C_MASTER_RC_BUS_ERROR:
|
||||
printf("error detected on bus (reset I2C peripheral to correct)");
|
||||
break;
|
||||
default:
|
||||
printf("error");
|
||||
case I2C_MASTER_RC_NONE: // all went fine
|
||||
printf("%+02x", data); // show data
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_MASTER:
|
||||
printf("slave not selected");
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_READY:
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_WARNING);
|
||||
printf("slave not ready");
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_RESET);
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_RECEIVE:
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_WARNING);
|
||||
printf("not in receive mode");
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_RESET);
|
||||
break;
|
||||
case I2C_MASTER_RC_BUS_ERROR:
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_ERROR);
|
||||
printf("error detected on bus (reset I2C peripheral to correct)");
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_RESET);
|
||||
break;
|
||||
default:
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_ERROR);
|
||||
printf("error");
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_RESET);
|
||||
break;
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
@ -193,26 +204,35 @@ static void busvoodoo_i2c_write(uint8_t data)
|
|||
printf("write %+02x: ", data);
|
||||
busvoodoo_led_blue_pulse(BUSVOODOO_LED_PULSE); // pulse blue LED to show we send data
|
||||
switch (i2c_master_write(BUSVOODOO_I2C, &data, 1)) {
|
||||
case I2C_MASTER_RC_NONE: // all went fine
|
||||
printf("ack");
|
||||
break;
|
||||
case I2C_MASTER_RC_NAK:
|
||||
printf("nack");
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_MASTER:
|
||||
printf("slave not selected");
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_READY:
|
||||
printf("slave not ready");
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_TRANSMIT:
|
||||
printf("not in transmit mode");
|
||||
break;
|
||||
case I2C_MASTER_RC_BUS_ERROR:
|
||||
printf("error detected on bus (reset I2C peripheral to correct)");
|
||||
break;
|
||||
default:
|
||||
printf("error");
|
||||
case I2C_MASTER_RC_NONE: // all went fine
|
||||
printf("ack");
|
||||
break;
|
||||
case I2C_MASTER_RC_NAK:
|
||||
printf("nack");
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_MASTER:
|
||||
printf("slave not selected");
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_READY:
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_WARNING);
|
||||
printf("slave not ready");
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_RESET);
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_TRANSMIT:
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_WARNING);
|
||||
printf("not in transmit mode");
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_RESET);
|
||||
break;
|
||||
case I2C_MASTER_RC_BUS_ERROR:
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_ERROR);
|
||||
printf("error detected on bus (reset I2C peripheral to correct)");
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_RESET);
|
||||
break;
|
||||
default:
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_ERROR);
|
||||
printf("error");
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_RESET);
|
||||
break;
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
@ -232,26 +252,37 @@ static void busvoodoo_i2c_select(uint16_t slave, bool write)
|
|||
printf(" to %s: ", write ? "write" : "read");
|
||||
busvoodoo_led_blue_pulse(BUSVOODOO_LED_PULSE); // pulse blue LED to show we send the slave address
|
||||
switch (i2c_master_select_slave(BUSVOODOO_I2C, slave, 10 == busvoodoo_i2c_addressbits, write)) {
|
||||
case I2C_MASTER_RC_NONE: // all went fine
|
||||
printf("selected");
|
||||
break;
|
||||
case I2C_MASTER_RC_NAK:
|
||||
printf("no such slave");
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_MASTER:
|
||||
printf("can't become master");
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_RECEIVE:
|
||||
printf("not in receive mode");
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_TRANSMIT:
|
||||
printf("not in transmit mode");
|
||||
break;
|
||||
case I2C_MASTER_RC_BUS_ERROR:
|
||||
printf("error detected on bus (reset I2C peripheral to correct)");
|
||||
break;
|
||||
default:
|
||||
printf("error");
|
||||
case I2C_MASTER_RC_NONE: // all went fine
|
||||
printf("selected");
|
||||
break;
|
||||
case I2C_MASTER_RC_NAK:
|
||||
printf("no such slave");
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_MASTER:
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_WARNING);
|
||||
printf("can't become master");
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_RESET);
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_RECEIVE:
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_WARNING);
|
||||
printf("not in receive mode");
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_RESET);
|
||||
break;
|
||||
case I2C_MASTER_RC_NOT_TRANSMIT:
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_WARNING);
|
||||
printf("not in transmit mode");
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_RESET);
|
||||
break;
|
||||
case I2C_MASTER_RC_BUS_ERROR:
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_ERROR);
|
||||
printf("error detected on bus (reset I2C peripheral to correct)");
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_ERROR);
|
||||
break;
|
||||
default:
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_ERROR);
|
||||
printf("error");
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_RESET);
|
||||
break;
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
@ -509,7 +540,9 @@ static void busvoodoo_i2c_command_scan(void* argument)
|
|||
}
|
||||
if (I2C_MASTER_RC_NONE != i2c_master_stop(BUSVOODOO_I2C)) { // send stop condition
|
||||
i2c_master_reset(BUSVOODOO_I2C); // reset the I2C peripheral since it might be stuck
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_WARNING);
|
||||
printf("stop condition failed\n"); // show error to user
|
||||
busvoodoo_text_style(BUSVOODOO_TEXT_STYLE_RESET);
|
||||
busvoodoo_leds_blink(0.5, 0.5); // show error on LEDs
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue