예제 #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);
     }
 }
예제 #2
0
        private void FrameReceivedEventHandler(object o, FrameReceivedEventArgs a)
        {
            switch ((CNXMsgIds)a.Frame.MailboxId)
            {
            case CNXMsgIds.DriverMessageAck:
                mCommsServer.Send(RTTMesg.CreateDriverMessageAck(BitConverter.ToUInt16(a.Frame.Data, 0)));
                break;

            case CNXMsgIds.DriverStatus:
                CNXLog.WarnFormat("Driver status recieved {0}.", (CANLib.DriverStatus)a.Frame.Data[0]);
                RTTMesg.RTTOutMsgIds state = RTTMesg.RTTOutMsgIds.UNKNOWN;
                switch ((CANLib.DriverStatus)a.Frame.Data[0])
                {
                case DriverStatus.Break:
                    state = RTTMesg.RTTOutMsgIds.DriverStatusOnBreak;
                    break;

                case DriverStatus.Normal:
                    state = RTTMesg.RTTOutMsgIds.DriverStatusNormal;
                    break;

                case DriverStatus.OutOfVehicle:
                    state = RTTMesg.RTTOutMsgIds.DriverStatusOutOfVehicle;
                    break;

                default:
                    CNXLog.WarnFormat("CNXMsgIds.DriverStatus {0} out of range.", a.Frame.Data[0]);
                    break;
                }
                if (state != RTTMesg.RTTOutMsgIds.UNKNOWN)
                {
                    mCommsServer.Send(RTTMesg.CreateDriverStatus(state));
                }
                break;

            default:
                break;
            }
        }