예제 #1
0
        /*
         * internal void EnviarFoco(List<Cliente> clientes)
         * {
         *
         *  byte opCode = ReadByte();
         *  byte sizeCode = ReadByte();
         *  byte headCode = ReadByte();
         *  byte subCode = ReadByte();
         *
         *  int dispositivo = ReadInt32();
         *  int accion = ReadInt32();
         *
         *  //
         *  byte pin = 2;
         *
         *  switch (accion)
         *  {
         *      case Foco.Encender:
         *          if (Permisos.allow(cliente.Usuario.NIVid, dispositivo, Foco.Encender))
         *          {
         *              foreach (Cliente cliente in clientes)
         *              {
         *                  if (cliente.Tipo == TipoCliente.Espacio)
         *                  {
         *                      cliente.Send(new byte[] { 0xC2, 0xF1, 0x00, 0x01, pin, 0x01 });
         *                  }
         *                  else if (cliente.Tipo == TipoCliente.Usuario)
         *                  {
         *                      cliente.Send(new byte[] { 0xC4, 0xF1, 0x00, 0x01, pin, 0x01 });
         *                  }
         *              }
         *          }
         *          else
         *          {
         *              cliente.Send(new byte[] { 0xC5, 0xF1, 0x00, 0x02, pin, 0x01 });
         *          }
         *          break;
         *      case Foco.Apagar:
         *          if (Permisos.allow(cliente.Usuario.NIVid, dispositivo, Foco.Apagar))
         *          {
         *              foreach (Cliente cliente in clientes)
         *              {
         *                  if (cliente.Tipo == TipoCliente.Espacio)
         *                  {
         *                      cliente.Send(new byte[] { 0xC2, 0xF1, 0x00, 0x01, pin, 0x00 });
         *                  }
         *                  else if (cliente.Tipo == TipoCliente.Usuario)
         *                  {
         *                      cliente.Send(new byte[] { 0xC4, 0xF1, 0x00, 0x01, pin, 0x00 });
         *                  }
         *              }
         *          }
         *          else
         *          {
         *              cliente.Send(new byte[] { 0xC5, 0xF1, 0x00, 0x02, pin, 0x01 });
         *
         *              return;
         *          }
         *          break;
         *  }
         * }
         */

        /*
         * public byte[] GetDispositivos()
         * {
         *
         *  List<Espacio> espacios = new List<Espacio>();
         *
         *  espacios.Add(new Espacio(1, 1, "C-101", "Salon C-101", "192.168.0.5", 5252, 1));
         *  espacios.Add(new Espacio(2, 1, "C-102", "Salon C-102", "192.168.0.6", 5253, 1));
         *  espacios.Add(new Espacio(3, 1, "C-103", "Salon C-103", "192.168.0.7", 5255, 1));
         *
         *  int size = 7 + (espacios.Count * 34);
         *  WriteByte(0xC1);//opCode
         *  WriteByte(size);//sizeCode
         *  WriteByte(0xF3);//headCode
         *  WriteByte(0x00);//subcode
         *
         *
         *  WriteByte(0x00);
         *
         *  WriteByte(espacios.Count);
         *
         *  for (int i = 0; i < espacios.Count; ++i)
         *  {
         *      WriteInt32(espacios[i].ESPid);
         *      WriteInt32(espacios[i].TESid);
         *      WriteString(espacios[i].ESPnombre, 10);
         *      WriteString(espacios[i].ESPdecripcion, 25);
         *      WriteString(espacios[i].ESPip, 15);
         *      WriteInt16(espacios[i].ESPpuerto);
         *      WriteInt16(espacios[i].ESPestado);
         *      WriteByte(0x00);//??
         *
         *  }
         *
         *  return Compile();
         * }
         */
        internal void AbrirPuerta(List <Cliente> clientes)
        {
            byte opCode   = ReadByte();
            byte sizeCode = ReadByte();
            byte headCode = ReadByte();
            byte subCode  = ReadByte();

            int DISid = ReadInt32();
            int PACid = ReadInt32();

            Dispositivo dispositivo = Dispositivos.GetById(DISid);

            byte[] data = new byte[] { 0xC2, 0x05, 0xF1, 0x02, (byte)dispositivo.DISpin };

            foreach (Cliente cliente in clientes)
            {
                if (cliente.Tipo == TipoCliente.Espacio)
                {
                    cliente.Send(data);
                }
            }
        }
예제 #2
0
        internal void EnviarFoco(List <Cliente> clientes)
        {
            byte opCode   = ReadByte();
            byte sizeCode = ReadByte();
            byte headCode = ReadByte();
            byte subCode  = ReadByte();

            int DISid = ReadInt32();
            int PACid = ReadInt32();

            Dispositivo dispositivo = Dispositivos.GetById(DISid);

            switch (PACid)
            {
            case Foco.Encender:
                if (Permisos.allow(cliente.Usuario.NIVid, dispositivo.DISid, Foco.Encender))
                {
                    //Dispositivos.SetPACid(DISid, PACid);

                    PacketWriter pwUsuario = new PacketWriter();

                    pwUsuario.WriteByte(0xC4);
                    pwUsuario.WriteByte(0x00);
                    pwUsuario.WriteByte(0xF1);
                    pwUsuario.WriteByte(0x01);
                    pwUsuario.WriteInt32(dispositivo.DISid);
                    pwUsuario.WriteInt32(PACid);

                    foreach (Cliente cliente in clientes)
                    {
                        if (cliente.Tipo == TipoCliente.Espacio)
                        {
                            cliente.Send(new byte[] { 0xC2, 0x06, 0xF1, 0x01, (byte)dispositivo.DISpin, 0x01 });
                        }
                        else if (cliente.Tipo == TipoCliente.Usuario)
                        {
                            cliente.Send(pwUsuario.Compile());

                            //if (cliente.Usuario.USUubicacion == Ubicacion.fragment_dispositivos)
                            //{
                            //    cliente.Send(pwUsuario.Compile());
                            //}
                        }
                    }

                    //data_espacio = new byte[] { 0xC2, 0x00, 0xF1, 0x01, pin, 0x01 };
                }
                else
                {
                    cliente.Send(new byte[] { 0xC5, 0x00, 0xF1, 0x00, 0x00 });
                }
                break;

            case Foco.Apagar:
                if (Permisos.allow(cliente.Usuario.NIVid, dispositivo.DISid, Foco.Apagar))
                {
                    PacketWriter pwUsuario = new PacketWriter();

                    pwUsuario.WriteByte(0xC4);
                    pwUsuario.WriteByte(0x00);
                    pwUsuario.WriteByte(0xF1);
                    pwUsuario.WriteByte(0x01);
                    pwUsuario.WriteInt32(dispositivo.DISid);
                    pwUsuario.WriteInt32(PACid);

                    foreach (Cliente cliente in clientes)
                    {
                        if (cliente.Tipo == TipoCliente.Espacio)
                        {
                            cliente.Send(new byte[] { 0xC2, 0x06, 0xF1, 0x01, (byte)dispositivo.DISpin, 0x00 });
                        }
                        else if (cliente.Tipo == TipoCliente.Usuario)
                        {
                            cliente.Send(pwUsuario.Compile());
                        }
                    }

                    //data_espacio = new byte[] { 0xC2, 0x00, 0xF1, 0x01, pin, 0x00 };
                }
                else
                {
                    cliente.Send(new byte[] { 0xC5, 0x00, 0xF1, 0x00, 0x00 });
                }
                break;
            }

            /*
             * foreach (Cliente cliente in clientes)
             * {
             *  if (cliente.Tipo == TipoCliente.Espacio)
             *  {
             *      cliente.Send(data_espacio);
             *  }
             *  else if (cliente.Tipo == TipoCliente.Usuario)
             *  {
             *
             *      cliente.Send(pwUsuario.Compile());
             *  }
             * }
             */
        }