// I2C state handler static void i2c_state_handling(I2C_ID_T id) { if (Chip_I2C_IsMasterActive(id)) Chip_I2C_MasterStateHandler(id); else Chip_I2C_SlaveStateHandler(id); }
/** * @brief I2C Interrupt Handler * @return None */ void I2C_IRQHandler(void) { if (Chip_I2C_IsMasterActive(I2C0)) { Chip_I2C_MasterStateHandler(I2C0); } else { Chip_I2C_SlaveStateHandler(I2C0); } }
void I2C0_IRQHandler(void) { if (Chip_I2C_IsMasterActive(ONBOARD_I2C)) { Chip_I2C_MasterStateHandler(ONBOARD_I2C); } else { Chip_I2C_SlaveStateHandler(ONBOARD_I2C); } }
/* Get an integer input from UART */ static int con_get_input(const char *str) { #ifdef DEBUG_ENABLE int input_valid = 0; int x; char ch[16], *ptr; int i = 0; while (!input_valid) { DEBUGOUT("%s", str); while (1) { /* Setting poll mode for slave is a very bad idea, it works nevertheless */ if ((mode_poll & (1 << i2cDev)) && Chip_I2C_IsStateChanged(i2cDev)) { Chip_I2C_SlaveStateHandler(i2cDev); } x = DEBUGIN(); if (x == EOF) { continue; } if (i >= sizeof(ch) - 2) { break; } if (((x == '\r') || (x == '\n')) && i) { DEBUGOUT("\r\n"); break; } if (x == '\b') { if (i) { DEBUGOUT("\033[1D \033[1D"); i--; } continue; } DEBUGOUT("%c", x); ch[i++] = x; } ch[i] = 0; i = strtol(ch, &ptr, 0); if (*ptr) { i = 0; DEBUGOUT("Invalid input. Retry!\r\n"); continue; } input_valid = 1; } return i; #else static int sind = -1; static uint8_t val[] = {5, I2C_SLAVE_IOX_ADDR, 1, 0}; if (sind >= sizeof(val)) { sind = -1; } while (sind < 0 && (tick_cnt & 0x7F)) {} if (sind < 0) { sind = 0; val[3] = !val[3]; tick_cnt++; } return val[sind++]; #endif }