Refactor address variable

This commit is contained in:
BlackMark 2020-04-11 22:25:30 +02:00
parent 16955979a2
commit 3ce9c60448

View File

@ -450,10 +450,8 @@ constexpr ChipEraseState &operator|=(ChipEraseState &self, const ChipEraseState
return self; return self;
} }
static inline void handleMessage(Message &msg, ChipEraseState &chipEraseFlag) static inline void handleMessage(Message &msg, uint32_t &addr, ChipEraseState &chipEraseFlag)
{ {
static uint32_t s_address;
if (isSignOn(msg)) if (isSignOn(msg))
formatSignOnAnswer(msg); formatSignOnAnswer(msg);
else if (isGetParameter(msg)) else if (isGetParameter(msg))
@ -469,20 +467,20 @@ static inline void handleMessage(Message &msg, ChipEraseState &chipEraseFlag)
else if (isReadLockIsp(msg)) else if (isReadLockIsp(msg))
formatReadLockIspAnswer(msg); formatReadLockIspAnswer(msg);
else if (isLoadAddress(msg)) { else if (isLoadAddress(msg)) {
s_address = msg.body[1]; addr = msg.body[1];
s_address = (s_address << 8) | msg.body[2]; addr = (addr << 8) | msg.body[2];
s_address = (s_address << 8) | msg.body[3]; addr = (addr << 8) | msg.body[3];
s_address = (s_address << 8) | msg.body[4]; addr = (addr << 8) | msg.body[4];
formatLoadAddressAnswer(msg); formatLoadAddressAnswer(msg);
} else if (isReadFlashIsp(msg)) } else if (isReadFlashIsp(msg))
formatReadFlashIspAnswer(msg, s_address); formatReadFlashIspAnswer(msg, addr);
else if (isReadEepromIsp(msg)) else if (isReadEepromIsp(msg))
formatReadEepromIspAnswer(msg, s_address); formatReadEepromIspAnswer(msg, addr);
else if (isChipEraseIsp(msg)) { else if (isChipEraseIsp(msg)) {
chipEraseFlag = ChipEraseState::REQUEST; chipEraseFlag = ChipEraseState::REQUEST;
formatChipEraseIspAnswer(msg); formatChipEraseIspAnswer(msg);
} else if (isProgramEepromIsp(msg)) } else if (isProgramEepromIsp(msg))
formatProgramEepromIspAnswer(msg, s_address); formatProgramEepromIspAnswer(msg, addr);
else if (isLeaveProgmodeIsp(msg)) { else if (isLeaveProgmodeIsp(msg)) {
chipEraseFlag |= ChipEraseState::RESPONSE; chipEraseFlag |= ChipEraseState::RESPONSE;
formatLeaveProgmodeIspAnswer(msg); formatLeaveProgmodeIspAnswer(msg);
@ -502,11 +500,12 @@ int main()
serial.init(); serial.init();
Message msg; Message msg;
uint32_t addr = 0x0000;
ChipEraseState chipEraseFlag = ChipEraseState::NONE; ChipEraseState chipEraseFlag = ChipEraseState::NONE;
while (true) { while (true) {
if (receiveMessage(msg)) { if (receiveMessage(msg)) {
handleMessage(msg, chipEraseFlag); handleMessage(msg, addr, chipEraseFlag);
} }
} }