Example #1
0
 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);
     }
 }
Example #2
0
 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);
     }
 }
Example #3
0
        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;
        }