private OperationTypeEnum GetOperationTypeFromLoggingDevices(ISOTime time) { HashSet <DeviceOperationType> representedTypes = new HashSet <DeviceOperationType>(); IEnumerable <string> distinctDeviceElementIDs = time.DataLogValues.Select(d => d.DeviceElementIdRef).Distinct(); foreach (string isoDeviceElementID in distinctDeviceElementIDs) { int?deviceElementID = TaskDataMapper.InstanceIDMap.GetADAPTID(isoDeviceElementID); if (deviceElementID.HasValue) { DeviceElement deviceElement = DataModel.Catalog.DeviceElements.FirstOrDefault(d => d.Id.ReferenceId == deviceElementID.Value); if (deviceElement != null && deviceElement.DeviceClassification != null) { DeviceOperationType deviceOperationType = DeviceOperationTypes.FirstOrDefault(d => d.MachineEnumerationMember.ToModelEnumMember().Value == deviceElement.DeviceClassification.Value.Value); if (deviceOperationType != null) { representedTypes.Add(deviceOperationType); } } } } DeviceOperationType deviceType = representedTypes.FirstOrDefault(t => t.ClientNAMEMachineType >= 2 && t.ClientNAMEMachineType <= 11); if (deviceType != null) { //2-11 represent known types of operations //These will map to implement devices and will govern the actual operation type. //Return the first such device type return(deviceType.OperationType); } return(OperationTypeEnum.Unknown); }
private EnumeratedValue DecodeMachineInfo(string clientNAME) { if (string.IsNullOrEmpty(clientNAME) || clientNAME.Length != 16) { return(null); } byte deviceGroup; if (!byte.TryParse(clientNAME.Substring(0, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out deviceGroup)) { return(null); } deviceGroup >>= 4; if ((deviceGroup & 0x07) != 2) // Agricultural devices { return(null); } byte deviceClass; if (!byte.TryParse(clientNAME.Substring(2, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out deviceClass)) { return(null); } deviceClass >>= 1; AgGateway.ADAPT.ApplicationDataModel.Representations.EnumerationMember machineType = DefinedTypeEnumerationInstanceList.dtiTractor.ToModelEnumMember(); //Default DeviceOperationType deviceType = DeviceOperationTypes.SingleOrDefault(d => d.ClientNAMEMachineType == deviceClass); if (deviceType != null) { machineType = deviceType.MachineEnumerationMember.ToModelEnumMember(); } return(new EnumeratedValue { Representation = RepresentationInstanceList.dtMachineType.ToModelRepresentation(), Value = machineType }); }