public static GhGpsElementMask GetMask(this GpsElementExt obj)
        {
            GhGpsElementMask ghGpsElementMask = ~(GhGpsElementMask.Coordinates | GhGpsElementMask.Altitude | GhGpsElementMask.Angle | GhGpsElementMask.Speed | GhGpsElementMask.Satellites | GhGpsElementMask.CellId | GhGpsElementMask.SignalQuality | GhGpsElementMask.OperatorCode);

            if (obj.GPS.X != 0 || obj.GPS.Y != 0)
            {
                ghGpsElementMask |= GhGpsElementMask.Coordinates;
            }
            if (obj.GPS.Altitude != 0)
            {
                ghGpsElementMask |= GhGpsElementMask.Altitude;
            }
            if (obj.GPS.Angle != 0)
            {
                ghGpsElementMask |= GhGpsElementMask.Angle;
            }
            if (obj.GPS.Speed != 0)
            {
                ghGpsElementMask |= GhGpsElementMask.Speed;
            }
            if (obj.GPS.Satellites != 3)
            {
                ghGpsElementMask |= GhGpsElementMask.Satellites;
            }
            IoProperty ioProperty = obj.IO[200];

            if (!ioProperty.IsDefault)
            {
                ghGpsElementMask |= GhGpsElementMask.CellId;
            }
            ioProperty = obj.IO[201];
            if (!ioProperty.IsDefault)
            {
                ghGpsElementMask |= GhGpsElementMask.SignalQuality;
            }
            ioProperty = obj.IO[202];
            if (!ioProperty.IsDefault)
            {
                ghGpsElementMask |= GhGpsElementMask.OperatorCode;
            }
            return(ghGpsElementMask);
        }
 public static bool HasFlag(this GhGpsElementMask mask, GhGpsElementMask flag) => (mask & flag) == flag;