/// <summary>
      /// Get status of a particular component.
      /// </summary>
      /// <param name="id">component to query</param>
      /// <returns>null when ok, string with description when faulted</returns>
      public string GetStatus(BusComponentId id)
      {
         string result = null;

         switch (id)
         {
            case BusComponentId.Bus:
            {
               result = this.busStatus;
               break;
            }
            case BusComponentId.ReelMotor:
            {
               result = this.reelMotor.FaultReason;
               break;
            }
            case BusComponentId.ReelDigitalIo:
            {
               result = this.reelDigitalIo.FaultReason;
               break;
            }
            case BusComponentId.ReelAnalogIo:
            {
               result = this.reelAnalogIo.FaultReason;
               break;
            }
            case BusComponentId.ReelEncoder:
            {
               result = this.reelEncoder.FaultReason;
               break;
            }
            case BusComponentId.FeederTopFrontMotor:
            {
               result = this.feederTopFrontMotor.FaultReason;
               break;
            }
            case BusComponentId.FeederTopRearMotor:
            {
               result = this.feederTopRearMotor.FaultReason;
               break;
            }
            case BusComponentId.FeederBottomFrontMotor:
            {
               result = this.feederBottomFrontMotor.FaultReason;
               break;
            }
            case BusComponentId.FeederBottomRearMotor:
            {
               result = this.feederBottomRearMotor.FaultReason;
               break;
            }
            case BusComponentId.FeederEncoder:
            {
               result = this.feederEncoder.FaultReason;
               break;
            }
            case BusComponentId.GuideLeftMotor:
            {
               result = this.guideLeftMotor.FaultReason;
               break;
            }
            case BusComponentId.GuideRightMotor:
            {
               result = this.guideRightMotor.FaultReason;
               break;
            }
            case BusComponentId.LaunchDigitalIo:
            {
               result = this.launchDigitalIo.FaultReason;
               break;
            }
            case BusComponentId.LaunchAnalogIo:
            {
               result = this.launchAnalogIo.FaultReason;
               break;
            }
            case BusComponentId.Gps:
            {
               result = this.gps.FaultReason;
               break;
            }
            case BusComponentId.NitrogenSensor1:
            {
               result = this.nitrogenSensor1Fault;
               break;
            }
            case BusComponentId.NitrogenSensor2:
            {
               result = this.nitrogenSensor2Fault;
               break;
            }
            case BusComponentId.RobotTotalCurrentSensor:
            {
               result = this.robotTotalCurrentFault;
               break;
            }
            case BusComponentId.LaunchTotalCurrentSensor:
            {
               result = this.launchTotalCurrentFault;
               break;
            }
            case BusComponentId.FrontPumpMotor:
            {
               if (RobotApplications.repair == ParameterAccessor.Instance.RobotApplication)
               {
                  result = this.frontPumpMotor.FaultReason;
               }

               break;
            }
            case BusComponentId.FrontPressureSensor:
            {
               if (RobotApplications.repair == ParameterAccessor.Instance.RobotApplication)
               {
                  result = this.frontPressureFault;
               }

               break;
            }
            case BusComponentId.FrontScaleRs232:
            {
               if (RobotApplications.repair == ParameterAccessor.Instance.RobotApplication)
               {
                  result = this.frontScaleRs232.FaultReason;
               }

               break;
            }
            case BusComponentId.FrontDigitalScale:
            {
               if (RobotApplications.repair == ParameterAccessor.Instance.RobotApplication)
               {
                  result = FgDigitalScale.Front.FaultReason;
               }

               break;
            }
            case BusComponentId.RearPumpMotor:
            {
               if (RobotApplications.repair == ParameterAccessor.Instance.RobotApplication)
               {
                  result = this.rearPumpMotor.FaultReason;
               }

               break;
            }
            case BusComponentId.RearPressureSensor:
            {
               if (RobotApplications.repair == ParameterAccessor.Instance.RobotApplication)
               {
                  result = this.rearPressureFault;
               }

               break;
            }
            case BusComponentId.RearScaleRs232:
            {
               if (RobotApplications.repair == ParameterAccessor.Instance.RobotApplication)
               {
                  result = this.rearScaleRs232.FaultReason;
               }

               break;
            }
            case BusComponentId.RearDigitalScale:
            {
               if (RobotApplications.repair == ParameterAccessor.Instance.RobotApplication)
               {
                  result = FgDigitalScale.Rear.FaultReason;
               }

               break;
            }
            case BusComponentId.ThicknessSensor:
            {
               if (RobotApplications.inspect == ParameterAccessor.Instance.RobotApplication)
               {
                  result = ThicknessSensor.Instance.FaultReason;
               }

               break;
            }
            case BusComponentId.StressSensor:
            {
               if (RobotApplications.inspect == ParameterAccessor.Instance.RobotApplication)
               {
                  result = StressSensor.Instance.FaultReason;
               }

               break;
            }
         }

         return (result);
      }
      /// <summary>
      /// Get status of a particular component.
      /// </summary>
      /// <param name="id">component to query</param>
      /// <returns>null when ok, string with description when faulted</returns>
      public string GetStatus(BusComponentId id)
      {
         string result = null;

         switch (id)
         {
            case BusComponentId.Bus:
            {
               result = (false != this.Running) ? this.busStatus : "off";
               break;
            }
            case BusComponentId.RobotBody:
            {
               result = (false != this.Running) ? this.robotBody.FaultReason : "off";
               break;
            }
            case BusComponentId.RobotTopFrontWheel:
            {
               result = (false != this.Running) ? this.robotTopFrontWheel.FaultReason : "off";
               break;
            }
            case BusComponentId.RobotTopRearWheel:
            {
               result = (false != this.Running) ? this.robotTopRearWheel.FaultReason : "off";
               break;
            }
            case BusComponentId.RobotBottomFrontWheel:
            {
               result = (false != this.Running) ? this.robotBottomFrontWheel.FaultReason : "off";
               break;
            }
            case BusComponentId.RobotBottomRearWheel:
            {
               result = (false != this.Running) ? this.robotBottomRearWheel.FaultReason : "off";
               break;
            }
         }

         return (result);
      }