diff --git a/Control/keystore.c b/Control/keystore.c index 8b12945197058539de93eb5cb75c70529963ae3a..126dc2e861175d40280298181bd2b35667c95f35 100644 --- a/Control/keystore.c +++ b/Control/keystore.c @@ -201,10 +201,11 @@ uint8_t keystore_enable_slot(uint16_t index){ uint8_t keystore_read_slot_status(uint16_t index){ uint8_t key_status = KEYSLOT_ERROR; uint8_t ret; - ret = i2c_master_read(KEY_MAIN_EEPROM, EEPROM_TABLE_OFFSET + index, &key_status, 1); + i2c_master_set_speed(I2C_BITRATE_REG_1M); + ret = i2c_master_read(KEY_MAIN_EEPROM, EEPROM_TABLE_OFFSET + index, sizeof(uint16_t), &key_status, sizeof(uint8_t)); if (ret != I2C_SUCCESS) { printf_P(PSTR("Key status read error %02x, retry...\n"), ret); - ret = i2c_master_read(KEY_MAIN_EEPROM, EEPROM_TABLE_OFFSET + index , &key_status, 1); + ret = i2c_master_read(KEY_MAIN_EEPROM, EEPROM_TABLE_OFFSET + index, sizeof(uint16_t), &key_status, sizeof(uint8_t)); if (ret != I2C_SUCCESS) printf_P(PSTR("Key status read error %02x (fatal)\n"), ret); } return (ret == I2C_SUCCESS) ? key_status : KEYSLOT_ERROR; @@ -214,10 +215,11 @@ uint8_t keystore_write_slot_status(uint16_t index, uint8_t key_status){ uint8_t ret; EEPROM_WRITE_PROTECT_PORT &= ~EEPROM_WRITE_PROTECT_MAIN; - ret = i2c_master_write(KEY_MAIN_EEPROM, EEPROM_TABLE_OFFSET + index, &key_status, 1); + i2c_master_set_speed(I2C_BITRATE_REG_1M); + ret = i2c_master_write(KEY_MAIN_EEPROM, EEPROM_TABLE_OFFSET + index, sizeof(uint16_t), &key_status, sizeof(uint8_t)); if (ret != 0) { printf_P(PSTR("Key status write error %02x, retry...\n"), ret); - ret = i2c_master_write(KEY_MAIN_EEPROM, EEPROM_TABLE_OFFSET + index , &key_status, 1); + ret = i2c_master_write(KEY_MAIN_EEPROM, EEPROM_TABLE_OFFSET + index, sizeof(uint16_t), &key_status, 1); if (ret != I2C_SUCCESS) printf_P(PSTR("Key status write error %02x (fatal)\n"), ret); } @@ -228,10 +230,11 @@ uint8_t keystore_write_slot_status(uint16_t index, uint8_t key_status){ uint8_t keystore_read_key(uint16_t index, KEY key){ uint8_t ret; - ret = i2c_master_read(KEY_MAIN_EEPROM, EEPROM_KEY_OFFSET + (index * sizeof(KEY)), key, sizeof(KEY)); + i2c_master_set_speed(I2C_BITRATE_REG_1M); + ret = i2c_master_read(KEY_MAIN_EEPROM, EEPROM_KEY_OFFSET + (index * sizeof(KEY)), sizeof(uint16_t), key, sizeof(KEY)); if (ret != I2C_SUCCESS) { printf_P(PSTR("Key read error %02x, retry...\n"), ret); - ret = i2c_master_read(KEY_MAIN_EEPROM, EEPROM_KEY_OFFSET + (index * sizeof(KEY)), key, sizeof(KEY)); + ret = i2c_master_read(KEY_MAIN_EEPROM, EEPROM_KEY_OFFSET + (index * sizeof(KEY)), sizeof(uint16_t), key, sizeof(KEY)); if (ret != I2C_SUCCESS) printf_P(PSTR("Key read error %02x (fatal)\n"), ret); } return (ret == I2C_SUCCESS); @@ -241,10 +244,11 @@ uint8_t keystore_write_key(uint16_t index, KEY key){ uint8_t ret; EEPROM_WRITE_PROTECT_PORT &= ~EEPROM_WRITE_PROTECT_MAIN; - ret = i2c_master_write(KEY_MAIN_EEPROM, EEPROM_KEY_OFFSET + (index * sizeof(KEY)), key, sizeof(KEY)); + i2c_master_set_speed(I2C_BITRATE_REG_1M); + ret = i2c_master_write(KEY_MAIN_EEPROM, EEPROM_KEY_OFFSET + (index * sizeof(KEY)), sizeof(uint16_t), key, sizeof(KEY)); if (ret != I2C_SUCCESS) { printf_P(PSTR("Key write error %02x, retry...\n"), ret); - ret = i2c_master_write(KEY_MAIN_EEPROM, EEPROM_KEY_OFFSET + (index * sizeof(KEY)), key, sizeof(KEY)); + ret = i2c_master_write(KEY_MAIN_EEPROM, EEPROM_KEY_OFFSET + (index * sizeof(KEY)), sizeof(uint16_t), key, sizeof(KEY)); if (ret != I2C_SUCCESS) printf_P(PSTR("Key write error %02x (fatal)\n"), ret); }