public DataBlockContainer(int commandCode, byte[] data)
 {
     Header = new ContainerHeader();
     Header.Code = commandCode;
     Header.ContainerType = ContainerType.DataBlock;
     Header.PayloadLength = data.Length;
     Payload = data;
 }
        /// <summary>
        /// Read response block from stream
        /// </summary>
        /// <param name="header">the container header</param>
        /// <param name="payload">data after header</param>
        public ResponseBlockContainer(ContainerHeader header, Stream payload)
        {
            if (payload == null)
                throw new ArgumentNullException("payload");

            Header = header;
            readParameters(payload);
        }
 public DataBlockContainer(int commandCode, byte[] data)
 {
     Header               = new ContainerHeader();
     Header.Code          = commandCode;
     Header.ContainerType = ContainerType.DataBlock;
     Header.PayloadLength = data.Length;
     Payload              = data;
 }
        public DataBlockContainer(ContainerHeader header, Stream payload, StillImageDevice.TransferCallback callback)
        {
            Header = header;
            Payload = new byte[Header.PayloadLength];
//            int readnum = payload.Read(Payload, 0, Header.PayloadLength);
            int numBytes = 0;
            while (numBytes != Header.PayloadLength)
            {
                numBytes += payload.Read(Payload, numBytes, Header.PayloadLength - numBytes);
                if (callback != null)
                    callback(Header.PayloadLength, numBytes);
            }
        }
        public DataBlockContainer(ContainerHeader header, Stream payload, StillImageDevice.TransferCallback callback)
        {
            Header  = header;
            Payload = new byte[Header.PayloadLength];
//            int readnum = payload.Read(Payload, 0, Header.PayloadLength);
            int numBytes = 0;

            while (numBytes != Header.PayloadLength)
            {
                numBytes += payload.Read(Payload, numBytes, Header.PayloadLength - numBytes);
                if (callback != null)
                {
                    callback((uint)Header.PayloadLength, (uint)numBytes);
                }
            }
        }
Пример #6
0
        protected Container getContainer(bool synchronized, StillImageDevice.TransferCallback callback)
        {
            var header = new ContainerHeader(_inerStream);

            switch (header.ContainerType)
            {
            case ContainerType.DataBlock:
                return(new DataBlockContainer(header, _inerStream, callback));

            case ContainerType.ResponseBlock:
                if (synchronized)
                {
                    Monitor.Exit(_commandLock);
                }
                return(new ResponseBlockContainer(header, _inerStream));

            //Give current instance as stream, because we need keep track on the distance to next header
            case ContainerType.CommandBlock:
            case ContainerType.EventBlock:
                throw new Exception("Invalid container type. " + header.ContainerType);
            }
            throw new Exception("Unkown container type");
        }
Пример #7
0
        protected Container getContainer(bool synchronized, StillImageDevice.TransferCallback callback)
        {
            var header = new ContainerHeader(_inerStream);

            switch (header.ContainerType)
            {
                case ContainerType.DataBlock:
                    return new DataBlockContainer(header, _inerStream, callback);
                case ContainerType.ResponseBlock:
                    if (synchronized)
                        Monitor.Exit(_commandLock);
                    return new ResponseBlockContainer(header, _inerStream);
                        //Give current instance as stream, because we need keep track on the distance to next header
                case ContainerType.CommandBlock:
                case ContainerType.EventBlock:
                    throw new Exception("Invalid container type. " + header.ContainerType);
            }
            throw new Exception("Unkown container type");
        }
Пример #8
0
 protected Container(ContainerHeader header)
 {
     Header = header;
 }
Пример #9
0
 public ParameterContainer(uint[] parameters)
 {
     Header               = new ContainerHeader();
     Parameters           = parameters;
     Header.PayloadLength = payloadLength;
 }