private void ResetModuleVariables() { mTrackingManager.ResetTimerVariable(); mCANServer.RaiseEquipmentChangedEvent -= mTrackingManager.OnEquipmentChangedEventHandler; mCANClient.RaiseFrameReceivedEvent -= mTrackingManager.FrameReceivedEventHandler; mCANClient.RaiseFrameReceivedEvent -= FrameReceivedEventHandler; mCANClient = null; mCANServer = null; mTrackingManager = null; trackingServiceStarted = false; }
private void StartTrackingService() { int n = 0; do { myIp = GetLocalIPAddressString(); n++; if (myIp == String.Empty || myIp == null) { Thread.Sleep(100); } } while (n < 10 && (myIp == String.Empty || myIp == null)); if (myIp == String.Empty || myIp == null) { throw new Exception("Failed to retrieve the IP address of device"); } // kick off GPS StartListeningToGPS(); // start a CAN Client if (mUseCANBridge) { mCANClient = new CANLib.CANBridgeClient(mCANServerName, mInPort, mOutPort); } else { mCANClient = new CANLib.CANNativeClient(mCANServerName); } // create a GPS - CAN relay mCANServer = new CANCommsServer(mCANClient, mGPSClient); // kick off comms with the RTT server InitialiseCommsServer(); //talk mTrackingManager = new TrackingStateManager(mCommsServer, mGPSClient); mCANServer.RaiseEquipmentChangedEvent += mTrackingManager.OnEquipmentChangedEventHandler; mCANClient.RaiseFrameReceivedEvent += mTrackingManager.FrameReceivedEventHandler; mCANClient.RaiseFrameReceivedEvent += FrameReceivedEventHandler; // add this modules device details to the device catalogue. AddSelfToCatalogue(); // do APC APCWrapper apc = new APCWrapper(mRTTServer, mCommsAddress); mCANClient.RaiseFrameReceivedEvent += apc.FrameReceivedEventHandler; mGPSClient.RaiseGPSPositionChangedEvent += apc.OnGPSChangedEventHandler; mGPSClient.RaiseGPSStatusChangedEvent += apc.OnGPSChangedEventHandler; // prepare to recieve transient messages. mDriverIdReciever = new TransientBlockReciever((int)Block.DriverLogon, mCANClient); mDriverIdReciever.RaiseBlockStatusEvent += OnDriverIdEventHandler; mTxTMessageReciever = new TransientBlockReciever((int)Block.MessageToSystem, mCANClient); mTxTMessageReciever.RaiseBlockStatusEvent += OnTxTMessageEventHandler; // prepare block manager StartDeviceConfigurationManagement(new byte[] { 255, 255, 255, 255 }); mCANServer.ForceEquipmentChangedEvent(); trackingServiceStarted = true; }