/// <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; } } }
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); }