| 
					
				 | 
			
			
				@@ -450,13 +450,12 @@ shellmatta_retCode_t shellmatta_processData(shellmatta_handle_t     handle, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 /* handling of transport layer fsm */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ret = shellmatta_handle_transport_fsm(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                /* crc error handling */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (SHELLMATTA_ERROR == ret) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // TODO: Better error handling 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    /* error in this case means crc error */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    utils_terminateInput(inst); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     shellmatta_reset_transport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    shellmatta_printf(handle, "crc error\r\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    shellmatta_printf(handle, "crc error"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    utils_terminateInput(inst); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     return SHELLMATTA_OK; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -465,7 +464,12 @@ shellmatta_retCode_t shellmatta_processData(shellmatta_handle_t     handle, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (transportLayerInst.state == STATE_PROCESS_PAYLOAD) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     /* recursive call with complete payload */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // TODO: replace inst->write function pointer with transport layer write function 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    transportLayerInst.originalWrite = inst->write; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    inst->write = shellmatta_write_transport; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     shellmatta_processData(handle, payloadBuffer, payloadLength); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // TODO: set back inst->write function pointer to original 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    inst->write = transportLayerInst.originalWrite; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     shellmatta_handle_transport_fsm(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     return SHELLMATTA_OK; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 |