|  |  |  | @ -34,7 +34,11 @@ void Periphery::config(){ | 
		
	
		
			
				|  |  |  |  |     _canb.configRxMBox(canSpace::DIGITAL_OUTPUT_MBOX, canSpace::MsgID(0x31), canSpace::MsgCtrlReg(0x2));   // Send DO
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     // Remote frame MBOX
 | 
		
	
		
			
				|  |  |  |  |     _canb.configTxMBox(canSpace::COMM_VERSION_MBOX, canSpace::MsgID(0x1, false, true), canSpace::MsgCtrlReg(0)); | 
		
	
		
			
				|  |  |  |  |     // _canb.configRxMBox(canSpace::MODBUS_SETTINGS_MBOX, canSpace::MsgID(0x0), canSpace::MsgCtrlReg(0x10));
 | 
		
	
		
			
				|  |  |  |  |     _canb.configTxMBox(canSpace::COMM_VERSION_MBOX, canSpace::MsgID(0x1, false, true), canSpace::MsgCtrlReg(0x4)); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     _canb.enableTimeOutControl(canSpace::MODBUS_SETTINGS_MBOX); | 
		
	
		
			
				|  |  |  |  |     _canb.setTimeOutValue(canSpace::MODBUS_SETTINGS_MBOX, 1000); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     // Interrupts
 | 
		
	
		
			
				|  |  |  |  |     _canb.configSystemIsr(canSpace::I0EN_ENABLE | | 
		
	
	
		
			
				
					|  |  |  | @ -84,23 +88,7 @@ void Periphery::updateVersionFPGA(){ | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | void Periphery::processDigitalInput(){ | 
		
	
		
			
				|  |  |  |  |     Uint16 data = 0; | 
		
	
		
			
				|  |  |  |  |     _digitalIO.readDigitalIO(data); | 
		
	
		
			
				|  |  |  |  |     _canb.transmitMsg(canSpace::DIGITAL_INPUT_MBOX, (data)); | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | void Periphery::processDigitalOutput(){ | 
		
	
		
			
				|  |  |  |  |     if(_canb.isNewMessage(canSpace::DIGITAL_OUTPUT_MBOX)){ | 
		
	
		
			
				|  |  |  |  |         _canb.receiveMsg(canSpace::DIGITAL_OUTPUT_MBOX, _message); | 
		
	
		
			
				|  |  |  |  |         Uint16 data = _message.mdl.word.LOW_WORD; | 
		
	
		
			
				|  |  |  |  |         _digitalIO.writeDigitalIO(data); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | void Periphery::init_modbus_table(){ | 
		
	
		
			
				|  |  |  |  | void Periphery::initModbusTable(){ | 
		
	
		
			
				|  |  |  |  |     modbusRTU.setInputRegsAddr(400); | 
		
	
		
			
				|  |  |  |  |     modbusRTU.setOutputRegsAddr(400); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -118,13 +106,8 @@ void Periphery::init_modbus_table(){ | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | bool Periphery::isModbusInit() const{ | 
		
	
		
			
				|  |  |  |  |     return _modbusInitFlag; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | void Periphery::receiveModbusParameters(){ | 
		
	
		
			
				|  |  |  |  |     if (!_modbusInitFlag && (_canb.isNewMessage(canSpace::MODBUS_SETTINGS_MBOX))) { // TODO check for init is incorect here maybe
 | 
		
	
		
			
				|  |  |  |  |     if (_canb.isNewMessage(canSpace::MODBUS_SETTINGS_MBOX)) { | 
		
	
		
			
				|  |  |  |  |         _canb.receiveMsg(canSpace::MODBUS_SETTINGS_MBOX, _message); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         MODBUSRTU::modbusConfiguration.node_id = _message.mdl.byte.BYTE0; | 
		
	
	
		
			
				
					|  |  |  | @ -134,13 +117,65 @@ void Periphery::receiveModbusParameters(){ | 
		
	
		
			
				|  |  |  |  |         MODBUSRTU::modbusConfiguration.config.stopbits = static_cast<DSP28335::SCIStopBits>(_message.mdh.byte.BYTE5); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         modbusRTU.configure(MODBUSRTU::modbusConfiguration); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         _modbusInitFlag = true; // TODO modbus init function must be here
 | 
		
	
		
			
				|  |  |  |  |         _modbusRegCounter = 0; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | void Periphery::getModbusConfiguration(){ | 
		
	
		
			
				|  |  |  |  |     _canb.resetTimeStampCounter(); | 
		
	
		
			
				|  |  |  |  |     _canb.clearTimeOutFlag(canSpace::MODBUS_SETTINGS_MBOX); | 
		
	
		
			
				|  |  |  |  |     bool requestIsSent = false; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     while(!_canb.isNewMessage(canSpace::MODBUS_SETTINGS_MBOX)){ | 
		
	
		
			
				|  |  |  |  |         if(_canb.isTimeOut(canSpace::MODBUS_SETTINGS_MBOX)){ | 
		
	
		
			
				|  |  |  |  |             if (!requestIsSent) { | 
		
	
		
			
				|  |  |  |  |                 _canb.resetTimeStampCounter(); | 
		
	
		
			
				|  |  |  |  |                 _canb.clearTimeOutFlag(canSpace::MODBUS_SETTINGS_MBOX); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |                 _message.mdl.word.LOW_WORD = _softVersion.DSP; | 
		
	
		
			
				|  |  |  |  |                 _message.mdl.word.HI_WORD = _softVersion.CPLD; | 
		
	
		
			
				|  |  |  |  |                 _canb.transmitMsg(canSpace::COMM_VERSION_MBOX, _message); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |                 requestIsSent = true; | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             else{ | 
		
	
		
			
				|  |  |  |  |                 _canb.clearTimeOutFlag(canSpace::MODBUS_SETTINGS_MBOX); | 
		
	
		
			
				|  |  |  |  |                 _canb.disableTimeOutControl(canSpace::MODBUS_SETTINGS_MBOX); | 
		
	
		
			
				|  |  |  |  |                 _error = true; | 
		
	
		
			
				|  |  |  |  |                 return; | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     _canb.receiveMsg(canSpace::MODBUS_SETTINGS_MBOX, _message); | 
		
	
		
			
				|  |  |  |  |     MODBUSRTU::modbusConfiguration.node_id = _message.mdl.byte.BYTE0; | 
		
	
		
			
				|  |  |  |  |     MODBUSRTU::modbusConfiguration.config.lenght = static_cast<DSP28335::SCICharLenght>(_message.mdl.byte.BYTE1); | 
		
	
		
			
				|  |  |  |  |     MODBUSRTU::modbusConfiguration.config.baudrate = static_cast<DSP28335::SCIBaudRate>(_message.mdl.word.LOW_WORD); | 
		
	
		
			
				|  |  |  |  |     MODBUSRTU::modbusConfiguration.config.parity = static_cast<DSP28335::SCIParity>(_message.mdh.byte.BYTE4); | 
		
	
		
			
				|  |  |  |  |     MODBUSRTU::modbusConfiguration.config.stopbits = static_cast<DSP28335::SCIStopBits>(_message.mdh.byte.BYTE5); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     modbusRTU.configure(MODBUSRTU::modbusConfiguration); | 
		
	
		
			
				|  |  |  |  |     _modbusRegCounter = 0; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | void Periphery::processDigitalInput(){ | 
		
	
		
			
				|  |  |  |  |     Uint16 data = 0; | 
		
	
		
			
				|  |  |  |  |     _digitalIO.readDigitalIO(data); | 
		
	
		
			
				|  |  |  |  |     _canb.transmitMsg(canSpace::DIGITAL_INPUT_MBOX, (data)); | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | void Periphery::processDigitalOutput(){ | 
		
	
		
			
				|  |  |  |  |     if(_canb.isNewMessage(canSpace::DIGITAL_OUTPUT_MBOX)){ | 
		
	
		
			
				|  |  |  |  |         _canb.receiveMsg(canSpace::DIGITAL_OUTPUT_MBOX, _message); | 
		
	
		
			
				|  |  |  |  |         Uint16 data = _message.mdl.word.LOW_WORD; | 
		
	
		
			
				|  |  |  |  |         _digitalIO.writeDigitalIO(data); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | void Periphery::sendModbusDataToCPU(){ | 
		
	
		
			
				|  |  |  |  |     _message.mdl.all = 0;   // TODO delete maybe?
 | 
		
	
		
			
				|  |  |  |  |     _message.mdh.all = 0; | 
		
	
	
		
			
				
					|  |  |  | 
 |