Example #1
0
void HeartbeatArrival(uint16_t sourceId, CANExtended::DeviceState state)
{
#ifdef DEBUG_PRINT
	static int dc =0;
#endif
	if (state != CANExtended::Operational)
		return;
	CanEx->Sync(sourceId, SYNC_LIVE, CANExtended::Trigger); //Confirm & Stop
	if (sourceId & 0x100)
	{
		boost::shared_ptr<ShelfUnit> unit = unitManager.FindUnit(sourceId);
		if (unit.get() == NULL)
		{
#ifdef DEBUG_PRINT
			cout<<"#"<<++dc<<" DeviceID: "<<(sourceId & 0xff)<<" Added"<<endl;
#endif
			unit.reset(new ShelfUnit(*CanEx, sourceId));
			CanEx->AddDevice(unit);
//			unit->ReadCommandResponse.bind(ethEngine.get(), &NetworkEngine::DeviceReadResponse);
//			unit->WriteCommandResponse.bind(ethEngine.get(), &NetworkEngine::DeviceWriteResponse);
			unitManager.Add(sourceId, unit);
		}
	}
}