Mercurial > public > ostc4
diff Discovery/Src/externLogbookFlash.c @ 429:7f351c25608a ImprovmentNVM_2
Marked possible code improvment for future activities:
parameters stored in the settings were not trusted. LastDive ID and Sample index are usually calculated at startup. This calculation could be avoided, nevertheless the implementation works => only TODO
Removed function without effect:
Calling writeblock with legth 0 has no effect
author | ideenmodellierer |
---|---|
date | Mon, 17 Feb 2020 19:43:09 +0100 |
parents | b1091e183d52 |
children | 9a9e4908ce2e b90ddf57f7f1 |
line wrap: on
line diff
--- a/Discovery/Src/externLogbookFlash.c Mon Feb 17 19:04:10 2020 +0100 +++ b/Discovery/Src/externLogbookFlash.c Mon Feb 17 19:43:09 2020 +0100 @@ -660,7 +660,7 @@ void ext_flash_create_new_dive_log(uint8_t *pHeaderPreDive) { SSettings *settings; - uint8_t id, id_next; + uint8_t id; uint8_t header1, header2; settings = settingsGetPointer(); @@ -668,10 +668,12 @@ actualAddress = HEADERSTART + (0x800 * id); ext_flash_read_block_start(); - ext_flash_read_block(&header1, EF_SAMPLE); - ext_flash_read_block(&header2, EF_SAMPLE); + ext_flash_read_block(&header1, EF_SAMPLE); /* the sample ring is increased instead of header... not sure if that is planned intention */ + ext_flash_read_block(&header2, EF_SAMPLE); /* does not matter because actual address is reset in write_block call */ ext_flash_read_block_stop(); + /* TODO Cleanup_Ref_2: The code below should not be necessary in case of a proper shutdown and startup */ + /* the implementation fixes an issue which might happen at Cleanup_Ref_1 (in case of more then 254 dives) */ if((header1 == 0xFA) && (header2 == 0xFA)) { id += 1; /* 0-255, auto rollover */ @@ -691,11 +693,6 @@ id = 0; } - /* delete next header */ - id_next = id + 1; - actualPointerHeader = HEADERSTART + (0x800 * id_next); - ef_write_block(0,0, EF_HEADER, 0); - settings->lastDiveLogId = id; actualPointerHeader = HEADERSTART + (0x800 * id); @@ -1407,6 +1404,9 @@ uint8_t header1, header2; convert_Type dataStart, dataEnd; + /* TODO Cleanup_Ref_1: cleanup logFlashNextSampleStartAddress and lastDiveLogId */ + /* The implementation below would cause problems in case more then 254 dives would be done. */ + /* This is avoided by Cleanup_Ref2 */ for(id = 0; id < 255;id++) { actualAddress = HEADERSTART + (0x800 * id) + HEADER2OFFSET;