private void OnDriverIdEventHandler(object sender, BlockStatusEventArgs stateEvent) { try { CNXLog.InfoFormat("DriverId {0}", stateEvent.State); if (stateEvent.State == BlockState.COMPLETE || stateEvent.State == BlockState.COMPLETE_REPEAT) { TransientBlockReciever reciever = (TransientBlockReciever)sender; if (reciever.BlockData.Length == 0) { mCommsServer.Send(RTTMesg.CreateDriverStatus(RTTMesg.RTTOutMsgIds.DriverLogoff)); } else if (reciever.BlockData[0] == 0) { mCommsServer.Send(RTTMesg.CreateDriverStatus(RTTMesg.RTTOutMsgIds.DriverLogoff)); } else { string driverId = Encoding.ASCII.GetString(reciever.BlockData); CNXLog.WarnFormat("DriverId {0}", driverId); mCommsServer.Send(RTTMesg.CreateDriverLogonMessage(driverId)); } } } catch (Exception e) { CNXLog.Error("OnDriverIdEventHandler", e); } }
private void OnTxTMessageEventHandler(object sender, BlockStatusEventArgs stateEvent) { try { if (stateEvent.State == BlockState.COMPLETE || stateEvent.State == BlockState.COMPLETE_REPEAT) { TransientBlockReciever reciever = (TransientBlockReciever)sender; string txtMesg = Encoding.ASCII.GetString(reciever.BlockData); CNXLog.InfoFormat("TxT Message {0}", txtMesg); mCommsServer.Send(RTTMesg.CreateDriverTxTMessage(txtMesg)); } } catch (Exception e) { CNXLog.Error("OnTxTMessageEventHandler", e); } }
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; }