@ -169,24 +169,43 @@ void Periphery::processDigitalOutput(){
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# pragma CODE_SECTION("ramfuncs"); 
 
					 
					 
					 
					# pragma CODE_SECTION("ramfuncs"); 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					void  Periphery : : sendModbusDataToCPU ( ) { 
 
					 
					 
					 
					void  Periphery : : sendModbusDataToCPU ( ) { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    _message . mdl . all  =  0 ;    // TODO delete maybe?
 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    _message . mdh . all  =  0 ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    WEINBUS : : WeinbusTableRegister  reg ; 
 
					 
					 
					 
					    WEINBUS : : WeinbusTableRegister  reg ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    reg  =  modbusRTU . dataHandler . outputRegisters . get_register_cursor ( _modbusRegCounter ) ; 
 
					 
					 
					 
					    reg  =  modbusRTU . dataHandler . outputRegisters . get_register_cursor ( _modbusRegCounter ) ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if ( modbusRTU . dataHandler . outputRegisters . address_range ( reg . get_address ( ) ) ) { 
 
					 
					 
					 
					    _message . mdl . all  =  reg . get_address ( ) ; 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        _message . mdl . all  =  reg . get_address ( ) ; 
 
					 
					 
					 
					    switch ( reg . get_type ( ) ) { 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        reg . read ( _message . mdh . all ) ; 
 
					 
					 
					 
					        case  WEINBUS : : DATA_UINT16 : 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            reg . read ( reinterpret_cast < uint16_t & > ( _message . mdh . all ) ) ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            break ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        case  WEINBUS : : DATA_INT16 : 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            reg . read ( reinterpret_cast < int16_t & > ( _message . mdh . all ) ) ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            break ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        case  WEINBUS : : DATA_UINT32 : 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            reg . read ( reinterpret_cast < uint32_t & > ( _message . mdh . all ) ) ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            break ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        case  WEINBUS : : DATA_INT32 : 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            reg . read ( reinterpret_cast < int32_t & > ( _message . mdh . all ) ) ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            break ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        case  WEINBUS : : DATA_FLOAT : 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            reg . read ( reinterpret_cast < float & > ( _message . mdh . all ) ) ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            break ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        default : { } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    } 
 
					 
					 
					 
					    } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    else  { 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        _modbusRegCounter  =  0 ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        reg  =  modbusRTU . dataHandler . outputRegisters . get_register_cursor ( _modbusRegCounter ) ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        _message . mdl . all  =  reg . get_address ( ) ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        reg . read ( _message . mdh . all ) ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    } 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    _modbusRegCounter + + ; 
 
					 
					 
					 
					    _modbusRegCounter + + ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    if  ( _modbusRegCounter  > =  modbusRTU . dataHandler . outputRegisters . get_quantity ( ) ) { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        _modbusRegCounter  =  0 ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    _cana . transmitMsg ( can_space : : MODBUS_DATA_COMM_TO_CPU_MBOX ,  _message ) ; 
 
					 
					 
					 
					    _cana . transmitMsg ( can_space : : MODBUS_DATA_COMM_TO_CPU_MBOX ,  _message ) ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -200,7 +219,8 @@ void Periphery::receiveCpuModbusData(){
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        WEINBUS : : WeinbusTableRegister  reg ; 
 
					 
					 
					 
					        WEINBUS : : WeinbusTableRegister  reg ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        uint32_t  addr  =  _message . mdl . all ; 
 
					 
					 
					 
					        uint32_t  addr  =  _message . mdl . all ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        reg  =  modbusRTU . dataHandler . inputRegisters . get_register_cursor ( addr  -  modbusRTU . dataHandler . inputRegisters . get_start_address ( ) ) ; 
 
					 
					 
					 
					        if ( modbusRTU . dataHandler . inputRegisters . is_address_exists ( addr ) )  return ; 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        reg  =  modbusRTU . dataHandler . inputRegisters . get_register_address ( addr ) ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        reg . write_data ( _message . mdh . all ) ; 
 
					 
					 
					 
					        reg . write_data ( _message . mdh . all ) ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    } 
 
					 
					 
					 
					    } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					}