|  | @@ -187,10 +187,23 @@ static shellmatta_retCode_t ymodem_stateMachine(shellmatta_handle_t handle, uint
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              else
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | -                if(((0xffu - byte) != inst->ymodem.packet.packetNumber) ||
 | 
	
		
			
				|  |  | -                  (inst->ymodem.packetCounter % 256u != inst->ymodem.packet.packetNumber))
 | 
	
		
			
				|  |  | +                if((0xffu - byte) != inst->ymodem.packet.packetNumber)
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  | -                    /** -# return error on packet number mismatch or on unexpected packet numbers */
 | 
	
		
			
				|  |  | +                    /** -# return error on packet number complement mismatch */
 | 
	
		
			
				|  |  | +                    inst->ymodem.state = SHELLMATTA_YMODEM_WAIT_FOR_START;
 | 
	
		
			
				|  |  | +                    shellmatta_ymodem_control(handle, YMODEM_NAK);
 | 
	
		
			
				|  |  | +                    ret = SHELLMATTA_ERROR;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                else if((1u == inst->ymodem.packetCounter) && 
 | 
	
		
			
				|  |  | +                        (0 == inst->ymodem.packet.packetNumber))
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    /** -# ignore duplicate header packets after first successful reception during */
 | 
	
		
			
				|  |  | +                    inst->ymodem.state = SHELLMATTA_YMODEM_WAIT_FOR_START;
 | 
	
		
			
				|  |  | +                    ret = SHELLMATTA_OK;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                else if(inst->ymodem.packetCounter % 256u != inst->ymodem.packet.packetNumber)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    /** -# return error on unexpected packet numbers */
 | 
	
		
			
				|  |  |                      inst->ymodem.state = SHELLMATTA_YMODEM_WAIT_FOR_START;
 | 
	
		
			
				|  |  |                      shellmatta_ymodem_control(handle, YMODEM_NAK);
 | 
	
		
			
				|  |  |                      ret = SHELLMATTA_ERROR;
 |