Example #1
0
            /// <summary>
            /// Read all the alarms of the current device from the DataBas
            /// and stores them in _alarms array
            /// </summary>
            internal void ReadAlarms()
            {
                CmpAlarmsDB cmp = new CmpAlarmsDB();
                DataTable   dt  = cmp.GetData(
                    new string[] { "ALA_DALA_ID, TO_CHAR(ALA_INIDATE,'hh24missddmmyy') ALA_INIDATE" },
                    "[email protected]_UNI_ID@",
                    "ALA_DALA_ID ASC",
                    new object[] { UnitId });

                _alarms          = new uint[(int)Math.Ceiling((double)_numAlarms / ALARMS_PER_BLOCK)];
                _alarmInDatabase = new bool[_numAlarms];
                _actions         = new AlarmAction[_numAlarms];
                for (int i = 0; i < _numAlarms; i++)
                {
                    _actions[i] = AlarmAction.NOTHING;
                }
                foreach (DataRow dr in dt.Rows)
                {
                    int      bit           = Convert.ToInt32(dr["ALA_DALA_ID"]);
                    DateTime dtALA_INIDATE = OPS.Comm.Dtx.StringToDtx(dr["ALA_INIDATE"].ToString());
                    // Activates the current bit.
                    int idx = (int)Math.Floor((double)bit / ALARMS_PER_BLOCK);
                    _alarms[idx]         |= ((uint)(1 << (bit % ALARMS_PER_BLOCK)));
                    _alarmInDatabase[bit] = true;                                               // mark that the current alarm was found in the database

                    if (dtALA_INIDATE > Date)
                    {
                        Date = dtALA_INIDATE;
                    }
                }
            }
Example #2
0
        private Alarm[] GetActiveAlarms()
        {
            CmpAlarmsDB adb = new CmpAlarmsDB();
            DataTable   dt  = adb.GetData(new string[] { "ALA_ID", "ALA_DALA_ID", "ALA_INIDATE" },
                                          "ALA_UNI_ID = @ALARMS.ALA_UNI_ID@ AND ALA_ENDDATE IS NULL", "ALA_DALA_ID ASC", new object[] { _device });

            if (dt.Rows.Count == 0)
            {
                return(null);
            }
            Alarm[] alarms = new Alarm[dt.Rows.Count];
            int     i      = 0;

            foreach (DataRow dr in dt.Rows)
            {
                alarms[i]        = new Alarm(_device, Convert.ToInt32(dr["ALA_ID"]));
                alarms[i]._end   = DateTime.MaxValue;
                alarms[i]._start = Convert.ToDateTime(dr["ALA_INIDATE"]);
                alarms[i]._type  = Convert.ToInt32(dr["ALA_DALA_ID"]);
            }
            return(alarms);
        }
        /// <summary>
        /// Gets All Alarms for zones
        /// </summary>
        /// <returns>DataTable with info about alarms and Phisical zones</returns>
        ///
        public static DataTable GetAlarms()
        {
            // Components Used
            CmpAlarmsDB          cAlarmsDb      = new CmpAlarmsDB();
            CmpGroupsChildsGisDB cGroupChildsDb = new CmpGroupsChildsGisDB();
            CmpGroupsDB          cGroupsDb      = new CmpGroupsDB();

            // STEP 1: Get the alarms
            DataTable dtalarms = cAlarmsDb.GetData();
            // STEP 2: Recursive search of the unit to find his zone.
            DataTable dtReturn = new DataTable();

            dtReturn.Columns.Add("UNI_ID");
            dtReturn.Columns.Add("ZONE_ID");
            object[] ovalues = new object[2];

            foreach (DataRow dr in dtalarms.Rows)
            {
                // Use a recursive function to reach zone. We pass the unit (or group) and the functions return its sector
                string id    = dr["ALA_UNI_ID"].ToString();
                string sZone = "";
                sZone = RecursiveSearchParent(id);

                ovalues[0] = new object();
                ovalues[1] = new object();

                if (String.Compare(sZone, "-1") != 0)
                {
                    ovalues[0] = dr["ALA_UNI_ID"];
                    ovalues[1] = sZone;

                    dtReturn.Rows.Add(ovalues);
                }
            }

            return(dtReturn);
        }