Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: easy-connect-v16 Watchdog FP MQTTPacket RecordType-v-16 watersenor_and_temp_code
Diff: Flash/flash_programming.cpp
- Revision:
- 33:5b90257d2d57
- Parent:
- 32:8226837c56ae
- Child:
- 34:601effb7b7fe
--- a/Flash/flash_programming.cpp Mon Jan 08 18:07:56 2018 +0000 +++ b/Flash/flash_programming.cpp Sun Jan 21 13:04:06 2018 +0000 @@ -38,9 +38,9 @@ return ReturnValue; } -int FP_WriteMode(uint32_t WriteModeValue) { - uint8_t CurrentPage = FP_GetPage(MODE_BASE_ADDRESS); - uint32_t CurrentAddress = (MODE_BASE_ADDRESS + STEP_ADDRESS); +int FP_WriteRelayStates(uint8_t RelayState1, uint8_t RelayState2) { + uint8_t CurrentPage = FP_GetPage(RELAY_BASE_ADDRESS); + uint32_t CurrentAddress = RELAY1_ADDRESS; EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES; EraseInitStruct.Banks = FLASH_BANK_1; @@ -52,34 +52,68 @@ } HAL_FLASH_Unlock(); - if (FP_ReadValue(CurrentAddress) == WriteModeValue) { - printf("Value does not change, no need to write\r\n"); + if ((FP_ReadValue(RELAY1_ADDRESS) == RelayState1) && + (FP_ReadValue(RELAY2_ADDRESS) == RelayState2)) { + printf("Relay values don't change, no need to write\r\n"); HAL_FLASH_Lock(); return PASSED; } if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK) { printf("Erase error, error num %d\r\n", HAL_FLASH_GetError()); } - if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, CurrentAddress, WriteModeValue) == HAL_OK) { - printf("Write OK\r\n"); - } - else { - printf("Write failed, error num %d\r\n", HAL_FLASH_GetError()); + while (CurrentAddress < (RELAY2_ADDRESS + STEP_ADDRESS)) { + switch (CurrentAddress) { + case (RELAY1_ADDRESS): if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, CurrentAddress, RelayState1) == HAL_OK) { + printf("Write Relay 1 State OK\r\n"); + } + else { + printf("Write Relay 1 State failed, error num %d\r\n", HAL_FLASH_GetError()); + } + break; + case (RELAY2_ADDRESS): if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, CurrentAddress, RelayState2) == HAL_OK) { + printf("Write Relay 2 State OK\r\n"); + } + else { + printf("Write Relay 2 State failed, error num %d\r\n", HAL_FLASH_GetError()); + } + break; + default: break; + } + CurrentAddress = CurrentAddress + STEP_ADDRESS; } - uint32_t readBack = FP_ReadValue(CurrentAddress); - printf("Read back: %d\r\n", readBack); - if (readBack != WriteModeValue) { - printf("Write failed, wrong read back value\r\n"); - HAL_FLASH_Lock(); - return FAILED; + + CurrentAddress = RELAY1_ADDRESS; + while (CurrentAddress < (RELAY2_ADDRESS + STEP_ADDRESS)) { + switch (CurrentAddress) { + case (RELAY1_ADDRESS): if (FP_ReadValue(CurrentAddress) == RelayState1) { + printf("Read back Relay 1 State: %d\r\n", FP_ReadValue(CurrentAddress)); + } + else { + printf("Write Relay 1 State failed, wrong read back value\r\n"); + HAL_FLASH_Lock(); + return FAILED; + } + break; + case (RELAY2_ADDRESS): if (FP_ReadValue(CurrentAddress) == RelayState2) { + printf("Read back Relay 2 State: %d\r\n", FP_ReadValue(CurrentAddress)); + } + else { + printf("Write Relay 2 State failed, wrong read back value\r\n"); + HAL_FLASH_Lock(); + return FAILED; + } + break; + default: break; + } + CurrentAddress = CurrentAddress + STEP_ADDRESS; } HAL_FLASH_Lock(); return PASSED; } -int FP_WriteConfigValues(uint8_t MinOxi, uint8_t MaxOxi, uint32_t UploadPeriod) { +int FP_WriteConfigValues(uint8_t Mode, uint8_t MinOxi, uint8_t MaxOxi, uint32_t UploadPeriod) { uint8_t CurrentPage = FP_GetPage(CONF_BASE_ADDRESS); - uint32_t CurrentAddress = MIN_OXI_ADDRESS; + uint32_t CurrentAddress = MODE_ADDRESS; EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES; EraseInitStruct.Banks = FLASH_BANK_1; EraseInitStruct.Page = CurrentPage; @@ -90,18 +124,26 @@ } HAL_FLASH_Unlock(); - if ((FP_ReadValue(MIN_OXI_ADDRESS) == MinOxi) && + if ((FP_ReadValue(MODE_ADDRESS) == Mode) && + (FP_ReadValue(MIN_OXI_ADDRESS) == MinOxi) && (FP_ReadValue(MAX_OXI_ADDRESS) == MaxOxi) && - (FP_ReadValue(UPLOAD_PERIOD_ARRESS) == UploadPeriod)) { - printf("Value does not change, no need to write\r\n"); + (FP_ReadValue(UPLOAD_PERIOD_ADDRESS) == UploadPeriod)) { + printf("Configuration values don't change, no need to write\r\n"); HAL_FLASH_Lock(); return PASSED; } if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK) { printf("Erase error, error num %d\r\n", HAL_FLASH_GetError()); } - while (CurrentAddress < (UPLOAD_PERIOD_ARRESS + STEP_ADDRESS)) { + while (CurrentAddress < (UPLOAD_PERIOD_ADDRESS + STEP_ADDRESS)) { switch (CurrentAddress) { + case (MODE_ADDRESS): if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, CurrentAddress, Mode) == HAL_OK) { + printf("Write Mode OK\r\n"); + } + else { + printf("Write Mode failed, error num %d\r\n", HAL_FLASH_GetError()); + } + break; case (MIN_OXI_ADDRESS): if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, CurrentAddress, MinOxi) == HAL_OK) { printf("Write MinOxi OK\r\n"); } @@ -116,7 +158,7 @@ printf("Write MaxOxi failed, error num %d\r\n", HAL_FLASH_GetError()); } break; - case (UPLOAD_PERIOD_ARRESS): if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, CurrentAddress, UploadPeriod) == HAL_OK) { + case (UPLOAD_PERIOD_ADDRESS): if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, CurrentAddress, UploadPeriod) == HAL_OK) { printf("Write UploadPeriod OK\r\n"); } else { @@ -128,9 +170,18 @@ CurrentAddress = CurrentAddress + STEP_ADDRESS; } - CurrentAddress = MIN_OXI_ADDRESS; - while (CurrentAddress < (UPLOAD_PERIOD_ARRESS + STEP_ADDRESS)) { + CurrentAddress = MODE_ADDRESS; + while (CurrentAddress < (UPLOAD_PERIOD_ADDRESS + STEP_ADDRESS)) { switch (CurrentAddress) { + case (MODE_ADDRESS): if (FP_ReadValue(CurrentAddress) == Mode) { + printf("Read back Mode: %d\r\n", FP_ReadValue(CurrentAddress)); + } + else { + printf("Write Mode failed, wrong read back value\r\n"); + HAL_FLASH_Lock(); + return FAILED; + } + break; case (MIN_OXI_ADDRESS): if (FP_ReadValue(CurrentAddress) == MinOxi) { printf("Read back MinOxi: %d\r\n", FP_ReadValue(CurrentAddress)); } @@ -149,7 +200,7 @@ return FAILED; } break; - case (UPLOAD_PERIOD_ARRESS): if (FP_ReadValue(CurrentAddress) == UploadPeriod) { + case (UPLOAD_PERIOD_ADDRESS): if (FP_ReadValue(CurrentAddress) == UploadPeriod) { printf("Read back UploadPeriod: %d\r\n", FP_ReadValue(CurrentAddress)); } else {