/// <summary>
        /// Generates a serial number for the given model.
        /// </summary>
        public static ISerialNumber GenerateSerialNumber(this EDeviceModel model)
        {
            var date = DateTime.Now;
            var code = "";

            switch (model)
            {
            case EDeviceModel.P300: code = "P3"; break;

            case EDeviceModel.P500: code = "P5"; break;

            case EDeviceModel.P800: code = "P8"; break;

            case EDeviceModel.PT500: code = "S5"; break;

            case EDeviceModel.PT800: code = "S8"; break;

            case EDeviceModel.AV760: code = "V7"; break;

            default:
                throw new Exception(model + " is not implemented for random serial number. Please implement it...");
            }

            var str = code + ('A' + date.Month) + (date.Year - 2000).ToString("00") + (++SERIAL_NUMBER_COUNTER).ToString("000");

            return(ParseSerialNumber(str));
        }
        public static string GetUnlocalizedPartNumber(this EDeviceModel deviceModel)
        {
            switch (deviceModel)
            {
            case EDeviceModel.Internal: return("Internal");

            case EDeviceModel.P300: return("P300");

            case EDeviceModel.P500: return("P500");

            case EDeviceModel.P800: return("P800");

            case EDeviceModel.PT300: return("PT300");

            case EDeviceModel.PT500: return("PT500");

            case EDeviceModel.PT800: return("PT800");

            case EDeviceModel.AV760: return("AV760");

            case EDeviceModel._3XTM: return("T3");

            case EDeviceModel._1XTM: return("T1");

            case EDeviceModel.HT: return("HT");

            case EDeviceModel.WL: return("WL");

            default: {
                throw new ArgumentException("Cannot get model code: unrecoginized device model " + deviceModel);
            }
            }
        }
        /// <summary>
        /// Queries the Android drawable resource icon for the given gauge type.
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static int GetGaugeIcon(EDeviceModel type)
        {
            switch (type)
            {
            case EDeviceModel.P300:
                return(Resource.Drawable.ic_render_gaugep300);

            case EDeviceModel.P500:
                return(Resource.Drawable.ic_render_gaugep500);

            case EDeviceModel.P800:
                return(Resource.Drawable.ic_render_gaugep800);

            case EDeviceModel.AV760:
                return(Resource.Drawable.ic_render_gaugeav760);

            case EDeviceModel.PT500:
                return(Resource.Drawable.ic_render_gaugept500);

            case EDeviceModel.PT800:
                return(Resource.Drawable.ic_render_gaugept800);

            default:
                return(Resource.Drawable.ic_logo_appiondefault);
            }
        }
        /// <summary>
        /// Returns the default protocol for the given version number. This is only used on the older, second, thrid and
        /// forth gen devices.
        /// </summary>
        /// <returns>The protocol from device model.</returns>
        /// <param name="dm">Dm.</param>
        private EProtocolVersion FindProtocolFromDeviceModel(EDeviceModel dm)
        {
            switch (dm)
            {
            case EDeviceModel._1XTM:
            case EDeviceModel._3XTM:
                return(EProtocolVersion.V4);

            case EDeviceModel.AV760:
                return(EProtocolVersion.V1);

            case EDeviceModel.HT:
                return(EProtocolVersion.V4);

            case EDeviceModel.P300:
            case EDeviceModel.P500:
            case EDeviceModel.P800:
                return(EProtocolVersion.V1);

            case EDeviceModel.PT300:
            case EDeviceModel.PT500:
            case EDeviceModel.PT800:
            case EDeviceModel.WL:
                return(EProtocolVersion.V4);

            default:
                return(EProtocolVersion.V1);
            }
        }
        /// <summary>
        /// Queries the Android string resource name for the given gauge.
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static string GetTypeString(this EDeviceModel type)
        {
            var ion = (BaseAndroidION)AppState.context;

            switch (type)
            {
            case EDeviceModel.P300:
                return(ion.context.GetString(Resource.String.device_p300));

            case EDeviceModel.P500:
                return(ion.context.GetString(Resource.String.device_p500));

            case EDeviceModel.P800:
                return(ion.context.GetString(Resource.String.device_p800));

            case EDeviceModel.AV760:
                return(ion.context.GetString(Resource.String.device_av760));

            case EDeviceModel.PT300:
                return(ion.context.GetString(Resource.String.device_pt300));

            case EDeviceModel.PT500:
                return(ion.context.GetString(Resource.String.device_pt500));

            case EDeviceModel.PT800:
                return(ion.context.GetString(Resource.String.device_pt800));

            case EDeviceModel.WL:
                return(ion.context.GetString(Resource.String.device_wllibra));

            default:
                return(ion.context.GetString(Resource.String.device_unknown));
            }
        }
        public TestParameters(EDeviceModel deviceModel, ESensorType sensorType, List <TargetPoint> targetPoints, HashSet <Grade> grades)
        {
            this.deviceModel  = deviceModel;
            this.sensorType   = sensorType;
            this.targetPoints = new List <TargetPoint>();
            this.grades       = grades;

            this.targetPoints.AddRange(targetPoints);

            targetPoints.Sort();
            targetPoints.Reverse();

            if (grades == null || grades.Count <= 0)
            {
                this.grades = new HashSet <Grade>();
                this.grades.Add(new Grade(1.00, "F", false));
            }

            errorBand = 1;
            foreach (var grade in grades)
            {
                if (grade.errorBand < errorBand)
                {
                    errorBand = grade.errorBand;
                }
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Constructs a UIImage for the given device model. By default the
        /// method will cache the UIImage as to not rape the HDD, however,
        /// you can opt out if you are a crazy person.
        /// </summary>
        /// <returns>The user interface image from device model.</returns>
        /// <param name="deviceModel">Device model.</param>
        public static UIImage GetUIImageFromDeviceModel(this EDeviceModel deviceModel, bool enforeCaching = true)
        {
            switch (deviceModel)
            {
            case EDeviceModel.P300:
                return(UIImage.FromBundle("ic_render_gauge_p300"));

            case EDeviceModel.P500:
                return(UIImage.FromBundle("ic_render_gauge_p500"));

            case EDeviceModel.P800:
                return(UIImage.FromBundle("ic_render_gauge_p800"));

            case EDeviceModel.PT300:
                return(UIImage.FromBundle("ic_render_gauge_p300"));

            case EDeviceModel.PT500:
                return(UIImage.FromBundle("ic_render_gauge_p500"));

            case EDeviceModel.PT800:
                return(UIImage.FromBundle("ic_render_gauge_p800"));

            case EDeviceModel.AV760:
                return(UIImage.FromBundle("ic_render_gauge_av760"));

            default:
                return(UIImage.FromBundle("ic_missing.png"));
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Queries the localized string name of the given device model.
        /// </summary>
        /// <returns>The type string.</returns>
        /// <param name="deviceModel">Device model.</param>
        public static string GetTypeString(this EDeviceModel deviceModel)
        {
            switch (deviceModel)
            {
            case EDeviceModel.AV760:
                return(Strings.Device.Model.AV760.FromResources());

            case EDeviceModel.HT:
                return(Strings.Device.Model.HT.FromResources());

            case EDeviceModel.P300:
                return(Strings.Device.Model.P300.FromResources());

            case EDeviceModel.P500:
                return(Strings.Device.Model.P500.FromResources());

            case EDeviceModel.P800:
                return(Strings.Device.Model.P800.FromResources());

            case EDeviceModel.PT300:
                return(Strings.Device.Model.PT300.FromResources());

            case EDeviceModel.PT500:
                return(Strings.Device.Model.PT500.FromResources());

            case EDeviceModel.PT800:
                return(Strings.Device.Model.PT800.FromResources());

            case EDeviceModel._3XTM:
                return(Strings.Device.Model._3XTM.FromResources());

            default:
                return(Strings.Device.Model.UNKNOWN.FromResources());
            }
        }
Ejemplo n.º 9
0
 public GaugeSerialNumber(EDeviceModel model, string deviceCode, string rawSerial, DateTime manufactureDate, ushort batchId)
 {
     this.deviceModel     = model;
     this.deviceCode      = deviceCode;
     this.rawSerial       = rawSerial;
     this.manufactureDate = manufactureDate;
     this.batchId         = batchId;
 }
        public static IDevice CreateDebugDevice(IION ion, EDeviceModel deviceModel)
        {
            var sn = deviceModel.GenerateSerialNumber();

            var factory = ion.deviceManager.deviceFactory;
            var defn    = factory.GetDeviceDefinition(sn);

            return(defn.CreateDevice(ion, sn, new DebugConnection(sn.ToString(), "DebugAddress_" + sn.batchId), null));
        }
Ejemplo n.º 11
0
 public void SetDeviceFilter(EDeviceModel deviceModel)
 {
     deviceFilter = deviceModel;
     deviceAdapter.SetConnections(service.GetConnectionsOfModel(deviceModel));
     if (rig != null && deviceModel.AsRigType() != rig.rigType)
     {
         rig.Disconnect();
         rig = null;
     }
 }
Ejemplo n.º 12
0
        public List <IConnection> GetConnectionsOfModel(EDeviceModel deviceModel)
        {
            var ret = new List <IConnection>();

            foreach (var connection in addressConnectionLookup.Values)
            {
                if (connection.serialNumber.deviceModel == deviceModel)
                {
                    ret.Add(connection);
                }
            }

            return(ret);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Parses out a GaugeSerialNumber from the given serial. If the given serial
        /// is not a valid GaugeSerialNumber we will throw an ArguementException
        /// </summary>
        /// <param name="serial">Serial.</param>
        public static GaugeSerialNumber Parse(string serial)
        {
            if (serial == null)
            {
                /////should not throw exeptions
                //throw new ArgumentException("Cannot parse serial: serial is null");
                return(null);
            }

            // This check is not ideal, but at the time of writing the serial numbers were not solidified. I hate
            // this project.
            if (serial.Length == 8)
            {
                string       rawDeviceCode = serial.Substring(0, 2);
                string       rawYearCode   = serial.Substring(2, 2);
                char         rawMonthCode  = serial[4];
                string       rawBatchId    = serial.Substring(5, 3);
                EDeviceModel deviceModel   = DeviceModelUtils.GetDeviceModelFromCode(rawDeviceCode);
                return(new GaugeSerialNumber(deviceModel, rawDeviceCode, serial, BuildManufactureDate(rawYearCode, rawMonthCode), Convert.ToUInt16(rawBatchId)));
            }
            else if (serial.Length == 9)
            {
                string       rawDeviceModel = serial.Substring(0, 2);
                string       rawYearCode    = serial.Substring(2, 2);
                char         rawMonthCode   = serial[4];
                string       rawBatchId     = serial.Substring(5, 4);
                EDeviceModel deviceModel    = DeviceModelUtils.GetDeviceModelFromCode(rawDeviceModel);
                return(new GaugeSerialNumber(deviceModel, rawDeviceModel, serial, BuildManufactureDate(rawYearCode, rawMonthCode), Convert.ToUInt16(rawBatchId)));
            }
            else if (serial.Length == 10)
            {
                string       rawDeviceModel = serial.Substring(0, 3);
                string       rawYearCode    = serial.Substring(3, 2);
                char         rawMonthCode   = serial[5];
                string       rawBatchId     = serial.Substring(6, 4);
                EDeviceModel deviceModel    = DeviceModelUtils.GetDeviceModelFromCode(rawDeviceModel);
                return(new GaugeSerialNumber(deviceModel, rawDeviceModel, serial, BuildManufactureDate(rawYearCode, rawMonthCode), Convert.ToUInt16(rawBatchId)));
            }
            else
            {
                /////should not throw exeptions
                //throw new ArgumentException("Cannot parse serial: expected serial of length 8, 9 or 10, received length " + serial.Length);
                return(null);
            }
        }
        public static ERigType AsRigType(this EDeviceModel deviceModel)
        {
            switch (deviceModel)
            {
            case EDeviceModel.AV760:
                return(ERigType.Vacuum);

            case EDeviceModel.P300:
            case EDeviceModel.P500:
            case EDeviceModel.P800:
            case EDeviceModel.PT300:
            case EDeviceModel.PT500:
            case EDeviceModel.PT800:
                return(ERigType.Pressure);

            default:
                return(ERigType.Unknown);
            }
        }
Ejemplo n.º 15
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            handler = new Handler(Looper.MainLooper);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_device_selector);
            swiper = FindViewById <SwipeRefreshLayout>(Resource.Id.swiper);
            list   = FindViewById <RecyclerView>(Resource.Id.list);
            list.SetLayoutManager(new LinearLayoutManager(this));
            list.SetAdapter(deviceAdapter = new DeviceAdapter(list, FindViewById(Resource.Id.empty)));
            swiper.SetOnRefreshListener(this);
            startTest        = FindViewById(Resource.Id.startTest);
            startTest.Click += async(sender, e) => {
                StartTestActivity(deviceAdapter.GetCheckedConnections());
            };

            startTest.Visibility          = ViewStates.Gone;
            deviceAdapter.onCheckChanged += (connections) => {
                UpdateRigDisplay();
            };

            spinner         = FindViewById <Spinner>(Resource.Id.spinner);
            spinner.Adapter = spinnerAdapter = new SpinnerAdapter(new EDeviceModel[] {
                EDeviceModel.AV760,
                EDeviceModel.P800,
                EDeviceModel.P500,
            });

            spinner.SetSelection(0);
            deviceFilter = EDeviceModel.AV760;

            FindViewById(Resource.Id.clear).Click += (sender, e) => {
                Clear();
            };

            rigState = FindViewById <TextView>(Resource.Id.rigState);
//			rig = null;

            UpdateRigDisplay();
        }
Ejemplo n.º 16
0
 // Implemented for DataLogReport.ILocalization
 public string GetDeviceModelString(EDeviceModel deviceModel)
 {
     return(deviceModel.GetTypeString());
 }