Use a temporary variable for the Printer bootloader HEX parser when combining the current and previous data tokens to form a data word, to simplify the code.

pull/1469/head
Dean Camera 12 years ago
parent 2e7fc37ad2
commit 7d4062fa54

@ -189,6 +189,9 @@ static void ParseIntelHEXByte(const char ReadCharacter)
break; break;
} }
/* Convert the last two received data bytes into a 16-bit word */
uint16_t NewDataWord = ((uint16_t)HEXParser.Data << 8) | HEXParser.PrevData;
switch (HEXParser.RecordType) switch (HEXParser.RecordType)
{ {
case HEX_RECORD_TYPE_Data: case HEX_RECORD_TYPE_Data:
@ -204,7 +207,7 @@ static void ParseIntelHEXByte(const char ReadCharacter)
} }
/* Fill the FLASH memory buffer with the new word of data */ /* Fill the FLASH memory buffer with the new word of data */
boot_page_fill(HEXParser.CurrAddress, ((uint16_t)HEXParser.Data << 8) | HEXParser.PrevData); boot_page_fill(HEXParser.CurrAddress, NewDataWord);
HEXParser.CurrAddress += 2; HEXParser.CurrAddress += 2;
/* Flush the FLASH page to physical memory if we are crossing a page boundary */ /* Flush the FLASH page to physical memory if we are crossing a page boundary */
@ -222,12 +225,12 @@ static void ParseIntelHEXByte(const char ReadCharacter)
case HEX_RECORD_TYPE_ExtendedSegmentAddress: case HEX_RECORD_TYPE_ExtendedSegmentAddress:
/* Extended address data - store the upper 12-bits of the new address */ /* Extended address data - store the upper 12-bits of the new address */
HEXParser.CurrBaseAddress = (((uint32_t)HEXParser.PrevData << 8) | HEXParser.Data) << 4; HEXParser.CurrBaseAddress = ((uint32_t)NewDataWord << 4);
break; break;
case HEX_RECORD_TYPE_ExtendedLinearAddress: case HEX_RECORD_TYPE_ExtendedLinearAddress:
/* Extended address data - store the upper 16-bits of the new address */ /* Extended address data - store the upper 16-bits of the new address */
HEXParser.CurrBaseAddress = (((uint32_t)HEXParser.PrevData << 8) | HEXParser.Data) << 16; HEXParser.CurrBaseAddress = ((uint32_t)NewDataWord << 16);
break; break;
} }

Loading…
Cancel
Save