| 
					
				 | 
			
			
				@@ -86,7 +86,7 @@ inline bool parse_version(const char *str, uint16_t version[4]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             version[3] = FIRMWARE_REVISION_ALPHA; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else if (n == strlen_P(STR_REVISION_BETA) && strncmp_P(p, STR_REVISION_BETA, n) == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             version[3] = FIRMWARE_REVISION_BETA; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        else if ((n == 2 || n == 3) && p[0] == 'r' && p[1] == 'c') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else if ((n == 2 || n == 3) && (p[0] == 'r' || p[0] == 'R') && (p[1] == 'c' || p[1] == 'C')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (n == 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 version[3] = FIRMWARE_REVISION_RC; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             else { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -116,12 +116,22 @@ inline bool parse_version(const char *str, uint16_t version[4]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 inline bool strncmp_PP(const char *p1, const char *p2, uint8_t n) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for (; n > 0; -- n, ++ p1, ++ p2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (pgm_read_byte(p1) < pgm_read_byte(p2)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (pgm_read_byte(p1) > pgm_read_byte(p2)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (pgm_read_byte(p1) == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (pgm_read_byte(p1) >= 65 && pgm_read_byte(p1) <= 92) //p1 is upper case (p2 is always lowercase) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if ((pgm_read_byte(p1)+32) < pgm_read_byte(p2)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if ((pgm_read_byte(p1)+32) > pgm_read_byte(p2)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else if (pgm_read_byte(p1) == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else { //p1 is lowercase 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (pgm_read_byte(p1) < pgm_read_byte(p2)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (pgm_read_byte(p1) > pgm_read_byte(p2)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |