git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9627 35acf78f-673a-0410-8e92-d51de3d6d3f4

This commit is contained in:
Giovanni Di Sirio 2016-06-16 07:44:08 +00:00
parent c4995095ee
commit 77a63206e7
16 changed files with 8258 additions and 8258 deletions

View File

@ -268,7 +268,7 @@ static mfs_error_t mfs_bank_set_header(MFSDriver *devp,
* *
* @notapi * @notapi
*/ */
static mfs_error_t mfs_copy_bank(MFSDriver *devp, static mfs_error_t mfs_bank_copy(MFSDriver *devp,
mfs_bank_t sbank, mfs_bank_t sbank,
mfs_bank_t dbank) { mfs_bank_t dbank) {
@ -289,7 +289,7 @@ static mfs_error_t mfs_copy_bank(MFSDriver *devp,
* *
* @notapi * @notapi
*/ */
static mfs_error_t mfs_mount(MFSDriver *devp, mfs_bank_t bank) { static mfs_error_t mfs_bank_mount(MFSDriver *devp, mfs_bank_t bank) {
(void)devp; (void)devp;
(void)bank; (void)bank;
@ -352,32 +352,32 @@ static mfs_error_t mfs_try_mount(MFSDriver *devp) {
case PAIR(MFS_BANK_ERASED, MFS_BANK_ERASED): case PAIR(MFS_BANK_ERASED, MFS_BANK_ERASED):
/* Both banks erased, first initialization.*/ /* Both banks erased, first initialization.*/
RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_0, 1)); RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_0, 1));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_0));
return MFS_NO_ERROR; return MFS_NO_ERROR;
case PAIR(MFS_BANK_ERASED, MFS_BANK_OK): case PAIR(MFS_BANK_ERASED, MFS_BANK_OK):
/* Normal situation, bank one is used.*/ /* Normal situation, bank one is used.*/
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_1));
return MFS_NO_ERROR; return MFS_NO_ERROR;
case PAIR(MFS_BANK_ERASED, MFS_BANK_PARTIAL): case PAIR(MFS_BANK_ERASED, MFS_BANK_PARTIAL):
/* Bank zero is erased, bank one has problems.*/ /* Bank zero is erased, bank one has problems.*/
RET_ON_ERROR(mfs_copy_bank(devp, MFS_BANK_1, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_copy(devp, MFS_BANK_1, MFS_BANK_0));
RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_0, cnt1 + 1)); RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_0, cnt1 + 1));
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_0));
return MFS_REPAIR_WARNING; return MFS_REPAIR_WARNING;
case PAIR(MFS_BANK_ERASED, MFS_BANK_GARBAGE): case PAIR(MFS_BANK_ERASED, MFS_BANK_GARBAGE):
/* Bank zero is erased, bank one is not readable.*/ /* Bank zero is erased, bank one is not readable.*/
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1));
RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_0, 1)); RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_0, 1));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_0));
return MFS_REPAIR_WARNING; return MFS_REPAIR_WARNING;
case PAIR(MFS_BANK_OK, MFS_BANK_ERASED): case PAIR(MFS_BANK_OK, MFS_BANK_ERASED):
/* Normal situation, bank zero is used.*/ /* Normal situation, bank zero is used.*/
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_0));
return MFS_NO_ERROR; return MFS_NO_ERROR;
case PAIR(MFS_BANK_OK, MFS_BANK_OK): case PAIR(MFS_BANK_OK, MFS_BANK_OK):
@ -386,12 +386,12 @@ static mfs_error_t mfs_try_mount(MFSDriver *devp) {
if (cnt0 > cnt1) { if (cnt0 > cnt1) {
/* Bank 0 is newer.*/ /* Bank 0 is newer.*/
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_0));
} }
else { else {
/* Bank 1 is newer.*/ /* Bank 1 is newer.*/
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_1));
} }
return MFS_REPAIR_WARNING; return MFS_REPAIR_WARNING;
@ -401,30 +401,30 @@ static mfs_error_t mfs_try_mount(MFSDriver *devp) {
/* Normal bank zero is more recent than the partial bank one, the /* Normal bank zero is more recent than the partial bank one, the
partial bank needs to be erased.*/ partial bank needs to be erased.*/
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_0));
} }
else { else {
/* Partial bank one is more recent than the normal bank zero.*/ /* Partial bank one is more recent than the normal bank zero.*/
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0));
RET_ON_ERROR(mfs_copy_bank(devp, MFS_BANK_1, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_copy(devp, MFS_BANK_1, MFS_BANK_0));
RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_0, cnt1 + 1)); RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_0, cnt1 + 1));
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_0));
} }
return MFS_REPAIR_WARNING; return MFS_REPAIR_WARNING;
case PAIR(MFS_BANK_OK, MFS_BANK_GARBAGE): case PAIR(MFS_BANK_OK, MFS_BANK_GARBAGE):
/* Bank zero is normal, bank one is unreadable.*/ /* Bank zero is normal, bank one is unreadable.*/
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_0));
return MFS_REPAIR_WARNING; return MFS_REPAIR_WARNING;
case PAIR(MFS_BANK_PARTIAL, MFS_BANK_ERASED): case PAIR(MFS_BANK_PARTIAL, MFS_BANK_ERASED):
/* Bank zero has problems, bank one is erased.*/ /* Bank zero has problems, bank one is erased.*/
RET_ON_ERROR(mfs_copy_bank(devp, MFS_BANK_0, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_copy(devp, MFS_BANK_0, MFS_BANK_1));
RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_1, cnt0 + 1)); RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_1, cnt0 + 1));
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_1));
return MFS_REPAIR_WARNING; return MFS_REPAIR_WARNING;
case PAIR(MFS_BANK_PARTIAL, MFS_BANK_OK): case PAIR(MFS_BANK_PARTIAL, MFS_BANK_OK):
@ -433,15 +433,15 @@ static mfs_error_t mfs_try_mount(MFSDriver *devp) {
/* Normal bank one is more recent than the partial bank zero, the /* Normal bank one is more recent than the partial bank zero, the
partial bank has to be erased.*/ partial bank has to be erased.*/
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_1));
} }
else { else {
/* Partial bank zero is more recent than the normal bank one.*/ /* Partial bank zero is more recent than the normal bank one.*/
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1));
RET_ON_ERROR(mfs_copy_bank(devp, MFS_BANK_0, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_copy(devp, MFS_BANK_0, MFS_BANK_1));
RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_1, cnt0 + 1)); RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_1, cnt0 + 1));
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_1));
} }
return MFS_REPAIR_WARNING; return MFS_REPAIR_WARNING;
@ -450,50 +450,50 @@ static mfs_error_t mfs_try_mount(MFSDriver *devp) {
if (cnt0 > cnt1) { if (cnt0 > cnt1) {
/* Bank zero is newer, copying in bank one and using it.*/ /* Bank zero is newer, copying in bank one and using it.*/
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1));
RET_ON_ERROR(mfs_copy_bank(devp, MFS_BANK_0, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_copy(devp, MFS_BANK_0, MFS_BANK_1));
RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_1, cnt0 + 1)); RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_1, cnt0 + 1));
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_1));
} }
else { else {
/* Bank one is newer, copying in bank zero and using it.*/ /* Bank one is newer, copying in bank zero and using it.*/
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0));
RET_ON_ERROR(mfs_copy_bank(devp, MFS_BANK_1, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_copy(devp, MFS_BANK_1, MFS_BANK_0));
RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_0, cnt1 + 1)); RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_0, cnt1 + 1));
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_0));
} }
return MFS_REPAIR_WARNING; return MFS_REPAIR_WARNING;
case PAIR(MFS_BANK_PARTIAL, MFS_BANK_GARBAGE): case PAIR(MFS_BANK_PARTIAL, MFS_BANK_GARBAGE):
/* Bank zero has problems, bank one is unreadable.*/ /* Bank zero has problems, bank one is unreadable.*/
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1));
RET_ON_ERROR(mfs_copy_bank(devp, MFS_BANK_0, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_copy(devp, MFS_BANK_0, MFS_BANK_1));
RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_1, cnt0 + 1)); RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_1, cnt0 + 1));
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_1));
return MFS_REPAIR_WARNING; return MFS_REPAIR_WARNING;
case PAIR(MFS_BANK_GARBAGE, MFS_BANK_ERASED): case PAIR(MFS_BANK_GARBAGE, MFS_BANK_ERASED):
/* Bank zero is unreadable, bank one is erased.*/ /* Bank zero is unreadable, bank one is erased.*/
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1));
RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_0, 1)); RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_0, 1));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_0));
return MFS_REPAIR_WARNING; return MFS_REPAIR_WARNING;
case PAIR(MFS_BANK_GARBAGE, MFS_BANK_OK): case PAIR(MFS_BANK_GARBAGE, MFS_BANK_OK):
/* Bank zero is unreadable, bank one is normal.*/ /* Bank zero is unreadable, bank one is normal.*/
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_1));
return MFS_REPAIR_WARNING; return MFS_REPAIR_WARNING;
case PAIR(MFS_BANK_GARBAGE, MFS_BANK_PARTIAL): case PAIR(MFS_BANK_GARBAGE, MFS_BANK_PARTIAL):
/* Bank zero is unreadable, bank one has problems.*/ /* Bank zero is unreadable, bank one has problems.*/
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0));
RET_ON_ERROR(mfs_copy_bank(devp, MFS_BANK_1, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_copy(devp, MFS_BANK_1, MFS_BANK_0));
RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_0, cnt0 + 1)); RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_0, cnt0 + 1));
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_0));
return MFS_REPAIR_WARNING; return MFS_REPAIR_WARNING;
case PAIR(MFS_BANK_GARBAGE, MFS_BANK_GARBAGE): case PAIR(MFS_BANK_GARBAGE, MFS_BANK_GARBAGE):
@ -501,7 +501,7 @@ static mfs_error_t mfs_try_mount(MFSDriver *devp) {
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_0));
RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1)); RET_ON_ERROR(mfs_bank_erase(devp, MFS_BANK_1));
RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_0, 1)); RET_ON_ERROR(mfs_bank_set_header(devp, MFS_BANK_0, 1));
RET_ON_ERROR(mfs_mount(devp, MFS_BANK_0)); RET_ON_ERROR(mfs_bank_mount(devp, MFS_BANK_0));
return MFS_REPAIR_WARNING; return MFS_REPAIR_WARNING;
default: default: