/** * @brief Loads all user defined settings from external EEPROM chip. * @return 1 - if write operation is successful; * 0 - if write operation fails. */ uint8_t eepromLoadSettings(void) { msg_t status = RDY_OK; uint8_t addr = EEPROM_START_ADDR; i2cAcquireBus(&I2CD2); status = i2cMasterTransmitTimeout(&I2CD2, EEPROM_24C02_ADDR, &addr, 1, (uint8_t *)&eepromData, sizeof(eepromData), MS2ST(EEPROM_READ_TIMEOUT_MS)); i2cReleaseBus(&I2CD2); if (status != RDY_OK) { g_i2cErrorInfo.last_i2c_error = i2cGetErrors(&I2CD2); if (g_i2cErrorInfo.last_i2c_error) { debugLog("E:eeprom-load"); g_i2cErrorInfo.i2c_error_counter++; } return 0; } if (eepromData.crc32 != crcCRC32((uint32_t *)&eepromData, sizeof(eepromData) / sizeof(uint32_t) - 1)) { /* Fill with default settings. */ return eepromSaveSettings(); } else { pidSettingsUpdate(eepromData.pidSettings); pwmOutputSettingsUpdate(eepromData.pwmOutput); mixedInputSettingsUpdate(eepromData.mixedInput); inputModeSettingsUpdate(eepromData.modeSettings); sensorSettingsUpdate(eepromData.sensorSettings); accelBiasUpdate(&g_IMU1, eepromData.accelBias); gyroBiasUpdate(&g_IMU1, eepromData.gyroBias); } return 1; }
void uiDmxConfirm(void) { eepromSetDmxAddress(editorValue-1); eepromSaveSettings(); dmxSetAddress(eepromGetDmxAddress()); }