mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 05:12:33 +01:00 
			
		
		
		
	Tighten up Printer bootloader implementation; fold the IsHEX() function logic into HexToDecimal() and remove redundant state machine state logic to save space in the compiled binary.
This commit is contained in:
		
							parent
							
								
									961da384f9
								
							
						
					
					
						commit
						7b5b8f199f
					
				| @ -133,21 +133,6 @@ void Application_Jump_Check(void) | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 |  | ||||||
|  * Determines if a given input byte of data is an ASCII encoded HEX value. |  | ||||||
|  * |  | ||||||
|  * \note Input HEX bytes are expected to be in uppercase only. |  | ||||||
|  * |  | ||||||
|  * \param[in] Byte  ASCII byte of data to check |  | ||||||
|  * |  | ||||||
|  * \return Boolean \c true if the input data is ASCII encoded HEX, \c false otherwise. |  | ||||||
|  */ |  | ||||||
| static bool IsHex(const char Byte) |  | ||||||
| { |  | ||||||
| 	return ((Byte >= 'A') && (Byte <= 'F')) || |  | ||||||
| 	       ((Byte >= '0') && (Byte <= '9')); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /**
 | /**
 | ||||||
|  * Converts a given input byte of data from an ASCII encoded HEX value to an integer value. |  * Converts a given input byte of data from an ASCII encoded HEX value to an integer value. | ||||||
|  * |  * | ||||||
| @ -155,16 +140,17 @@ static bool IsHex(const char Byte) | |||||||
|  * |  * | ||||||
|  * \param[in] Byte  ASCII byte of data to convert |  * \param[in] Byte  ASCII byte of data to convert | ||||||
|  * |  * | ||||||
|  * \return Integer converted value of the input ASCII encoded HEX byte of data. |  * \return Integer converted value of the input ASCII encoded HEX byte of data, or -1 if the | ||||||
|  |  *         input is not valid ASCII encoded HEX. | ||||||
|  */ |  */ | ||||||
| static uint8_t HexToDecimal(const char Byte) | static int8_t HexToDecimal(const char Byte) | ||||||
| { | { | ||||||
| 	if ((Byte >= 'A') && (Byte <= 'F')) | 	if ((Byte >= 'A') && (Byte <= 'F')) | ||||||
| 	  return (10 + (Byte - 'A')); | 	  return (10 + (Byte - 'A')); | ||||||
| 	else if ((Byte >= '0') && (Byte <= '9')) | 	else if ((Byte >= '0') && (Byte <= '9')) | ||||||
| 	  return (Byte - '0'); | 	  return (Byte - '0'); | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return -1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| @ -180,7 +166,6 @@ static void ParseIntelHEXByte(const char ReadCharacter) | |||||||
| 	{ | 	{ | ||||||
| 		HEXParser.Checksum     = 0; | 		HEXParser.Checksum     = 0; | ||||||
| 		HEXParser.CurrAddress  = HEXParser.CurrBaseAddress; | 		HEXParser.CurrAddress  = HEXParser.CurrBaseAddress; | ||||||
| 		HEXParser.ParserState  = HEX_PARSE_STATE_WAIT_LINE; |  | ||||||
| 		HEXParser.ReadMSB      = false; | 		HEXParser.ReadMSB      = false; | ||||||
| 
 | 
 | ||||||
| 		/* ASCII ':' indicates the start of a new HEX record */ | 		/* ASCII ':' indicates the start of a new HEX record */ | ||||||
| @ -191,11 +176,12 @@ static void ParseIntelHEXByte(const char ReadCharacter) | |||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/* Only allow ASCII HEX encoded digits, ignore all other characters */ | 	/* Only allow ASCII HEX encoded digits, ignore all other characters */ | ||||||
| 	if (!IsHex(ReadCharacter)) | 	int8_t ReadCharacterDec = HexToDecimal(ReadCharacter); | ||||||
|  | 	if (ReadCharacterDec < 0) | ||||||
| 	  return; | 	  return; | ||||||
| 
 | 
 | ||||||
| 	/* Read and convert the next nibble of data from the current character */ | 	/* Read and convert the next nibble of data from the current character */ | ||||||
| 	HEXParser.Data    = (HEXParser.Data << 4) | HexToDecimal(ReadCharacter); | 	HEXParser.Data    = (HEXParser.Data << 4) | ReadCharacterDec; | ||||||
| 	HEXParser.ReadMSB = !HEXParser.ReadMSB; | 	HEXParser.ReadMSB = !HEXParser.ReadMSB; | ||||||
| 
 | 
 | ||||||
| 	/* Only process further when a full byte (two nibbles) have been read */ | 	/* Only process further when a full byte (two nibbles) have been read */ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Dean Camera
						Dean Camera