Beispiel #1
0
        /// <summary>
        /// Creates a device option
        /// </summary>
        /// <param name="wire">The wire to read on</param>
        /// <param name="number">The option number</param>
        /// <param name="handle">The device handle</param>
        /// <param name="userName">The username</param>
        /// <param name="password">The password</param>
        /// <param name="reloadFunction">The function to call if
        /// the device requires reloading options</param>
        /// <returns>The device option</returns>
        private IDeviceOption CreateDeviceOption(NetworkMethods wire,
                                                 int number,
                                                 int handle,
                                                 string userName,
                                                 string password,
                                                 Action reloadFunction)
        {
            var name        = wire.ReadString();
            var title       = wire.ReadString();
            var description = wire.ReadString();

            int type = wire.ReadWord();
            int unit = wire.ReadWord();
            int size = wire.ReadWord();
            int cap  = wire.ReadWord();
            int ct   = wire.ReadWord();

            var opt = new NetworkDeviceOption(name,
                                              title,
                                              description,
                                              size,
                                              number,
                                              (SaneType)type,
                                              (SaneUnit)unit,
                                              (SaneCapabilities)cap,
                                              handle,
                                              this,
                                              userName,
                                              password,
                                              reloadFunction);

            switch (ct)
            {
            case (int)SaneConstraint.None:
                opt.Constraint = new NoneConstraint();
                break;

            case (int)SaneConstraint.IntegerList:
                opt.Constraint = CreateIntegerListConstraint(wire);
                break;

            case (int)SaneConstraint.StringList:
                opt.Constraint = CreateStringListConstraint(wire);
                break;

            case (int)SaneConstraint.Range:
                opt.Constraint = CreateRangeConstraint(wire);
                break;

            default:
                throw new NotSupportedException(
                          string.Format
                              (CultureInfo.CurrentCulture,
                              "The constraint type '{0}' is not supported",
                              ct));
            }

            return(opt);
        }
Beispiel #2
0
        /// <summary>
        /// Creates an integer list constraint
        /// </summary>
        /// <param name="wire">The wire to read on</param>
        /// <returns>The constraint</returns>
        private static IOptionConstraint CreateIntegerListConstraint(
            NetworkMethods wire)
        {
            wire.ReadWord();
            var values = wire.ReadArray((w, i) => w.ReadWord());

            return(new Int32ListConstraint(values));
        }
Beispiel #3
0
        /// <summary>
        /// Serialize a string to send down the wire
        /// </summary>
        /// <param name="wire">The wire</param>
        /// <param name="value">The value to send</param>
        /// <returns>The size sent</returns>
        private static int SendString(NetworkMethods wire, string value)
        {
            int sze = Encoding.ASCII.GetBytes(value).Length;

            wire.SendWord(sze);
            wire.SendString(value);
            return(sze);
        }
Beispiel #4
0
        /// <summary>
        /// Serialize a word to send down the wire
        /// </summary>
        /// <param name="wire">The wire</param>
        /// <param name="size">The size of the word (usually 1)</param>
        /// <param name="value">The value to send</param>
        /// <returns>The size sent</returns>
        private static int SendWord(NetworkMethods wire, int size, int value)
        {
            int sze = size * 4;

            wire.SendWord(sze);
            wire.SendWord(1);
            wire.SendWord(value);
            return(sze);
        }
Beispiel #5
0
        /// <summary>
        /// Creates a range constraint
        /// </summary>
        /// <param name="wire">The wire to read on</param>
        /// <returns>The constraint</returns>
        private static IOptionConstraint CreateRangeConstraint(
            NetworkMethods wire)
        {
            wire.ReadWord();
            int min   = wire.ReadWord();
            int max   = wire.ReadWord();
            int quant = wire.ReadWord();

            return(new RangeConstraint(min, max, quant));
        }
Beispiel #6
0
        /// <summary>
        /// Reads the whole image data from the given port
        /// </summary>
        /// <param name="port">The port to read from</param>
        /// <returns>The total data from the port</returns>
        private MemoryStream ReadImageData(int port)
        {
            MemoryStream ret;

            using (var wire = new NetworkMethods(_wire.HostName, port))
            {
                ret = wire.ReadImageRecords();
            }
            return(ret);
        }
Beispiel #7
0
        /// <summary>
        /// Creates the string list constraint
        /// </summary>
        /// <param name="wire">The wire to read on</param>
        /// <returns>The constraint</returns>
        private static IOptionConstraint CreateStringListConstraint(
            NetworkMethods wire)
        {
            var values = wire.ReadArray((w, i) =>
            {
                var s = w.ReadString();
                if (string.IsNullOrEmpty(s))
                {
                    return(null);
                }
                return(s);
            });

            return(new StringListConstraint(values));
        }
Beispiel #8
0
        private IOpenableDevice CreateDevice(NetworkMethods wire,
                                             string userName,
                                             string password)
        {
            var name   = wire.ReadString();
            var vendor = wire.ReadString();
            var model  = wire.ReadString();
            var type   = wire.ReadString();

            return(new NetworkDevice(name,
                                     vendor,
                                     model,
                                     type,
                                     this,
                                     userName,
                                     password));
        }
Beispiel #9
0
 /// <summary>
 /// Construct with the minimum information it needs
 /// </summary>
 /// <param name="hostName">The host name to connect to</param>
 /// <param name="port">The port to connect to</param>
 internal NetworkProcedureCaller(string hostName, int port)
 {
     _wire = new NetworkMethods(hostName, port);
 }