From 8ba5fe4b82ab603651484ec735223bf83ddc40df Mon Sep 17 00:00:00 2001 From: Philipp Claves <pclaves@web.de> Date: Sun, 6 Nov 2011 00:35:10 +0100 Subject: [PATCH] Control: Add speed i2c switching to keystore code for eeprom access. --- Control/keystore.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/Control/keystore.c b/Control/keystore.c index 8b12945..126dc2e 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); } -- GitLab