internal void SetParamaters(byte currentPowerState, byte lastEvent, byte miscState) { if (base.CompletionCode == 0) { #region Power State // [0] Power is on, 1 = On, 0 = Off byte state = Convert.ToByte((currentPowerState & 0x01)); // Translate the current power state into an enumeration. switch (state) { case 0x00: this.powerstate = IpmiPowerState.Off; break; case 0x01: this.powerstate = IpmiPowerState.On; break; default: this.powerstate = IpmiPowerState.Invalid; break; } #endregion #region Power Policy state = Convert.ToByte((currentPowerState & 0x60) >> 5); // Translate the state into Power on Policy. switch (state) { case 0x00: this.powerOnPolicy = PowerRestoreOption.StayOff; break; case 0x01: this.powerOnPolicy = PowerRestoreOption.PreviousState; break; case 0x02: this.powerOnPolicy = PowerRestoreOption.AlwaysPowerUp; break; default: this.powerOnPolicy = PowerRestoreOption.Unknown; break; } #endregion #region Power Fault // [7:5] - reserved // [4] - 1b = last ‘Power is on’ state was entered via IPMI command // [3] - 1b = last power downcaused by power fault // [2] - 1b = last power down caused by a power interlockbeing activated // [1] - 1b = last power down caused by a Power overload // [0] - 1b = AC failed state = Convert.ToByte((lastEvent & 0x1F)); switch (state) { case 0x00: this.lastPowerEvent = PowerEvent.ACfailed; break; case 0x01: this.lastPowerEvent = PowerEvent.PowerOverload; break; case 0x02: this.lastPowerEvent = PowerEvent.PowerInterlockActive; break; case 0x03: this.lastPowerEvent = PowerEvent.PowerFault; break; case 0x04: this.lastPowerEvent = PowerEvent.IpmiSetState; break; default: this.lastPowerEvent = PowerEvent.Unknown; break; } #endregion #region Identity LED // [7:4] - reserved // [6] - 1b = Chassis Identify command and state info supported (Optional) // 0b = Chassis Identify command support unspecified via this // command. byte identitySupport = Convert.ToByte((miscState & 0x40) >> 6); if (identitySupport == 0x01) this.identitySupported = true; // [5:4] - Chassis Identify State. Mandatory when bit [6] = 1b, reserved (return // as 00b) otherwise.Returns the present chassis identify state. Refer to // the Chassis Identify command for more info. // 00b = chassis identify state = Off // 01b = chassis identify state = Temporary (timed) On // 10b = chassis identify state = Indefinite On // 11b = reserved byte Identity = Convert.ToByte((miscState & 0x30) >> 4); switch (Identity) { case 0x00: this.identityState = IdentityState.Off; break; case 0x01: this.identityState = IdentityState.TemporaryOn; break; case 0x02: this.identityState = IdentityState.On; break; default: this.identityState = IdentityState.Unknown; break; } #endregion } else { this.powerstate = IpmiPowerState.Invalid; } }
static EventBase GetFakeEvent() { var selector = Faker.NumberFaker.Number(0, 5); switch (selector) { case 0: var e = new DoorEvent { Eventno = count++, EventType = DoorEventEventType.DoorEvent, Doors = new DoorsSchema { Event = count++, Left = new Doorpos { Count = Faker.NumberFaker.Number(0, 65000), Open = Faker.BooleanFaker.Boolean() }, Right = new Doorpos { Count = Faker.NumberFaker.Number(0, 65000), Open = Faker.BooleanFaker.Boolean() } } }; return(e); case 1: var le = new LightEvent { Eventno = count++, EventType = LightEventEventType.LightEvent, Lights = new LightsSchema { Event = Faker.NumberFaker.Number(0, 11), Frontpass = Faker.BooleanFaker.Boolean(), Rearpass = Faker.BooleanFaker.Boolean(), Left = new Lightpos { Count = Faker.NumberFaker.Number(0, 65000), Lit = Faker.BooleanFaker.Boolean() }, Right = new Lightpos { Count = Faker.NumberFaker.Number(0, 65000), Lit = Faker.BooleanFaker.Boolean() }, Rear = new Lightpos { Count = Faker.NumberFaker.Number(0, 65000), Lit = Faker.BooleanFaker.Boolean() } } }; return(le); case 2: var re = new RelocatedEvent { EventType = RelocatedEventEventType.RelocatedEvent, Location = GetFakeLocation() }; return(re); case 3: var pe = new PowerEvent { EventType = PowerEventEventType.PowerEvent, Msg = Faker.TextFaker.Sentence() }; return(pe); case 4: var ce = new CommEvent { EventType = CommEventEventType.CommEventSuccess, Conncount = count++, Humidity = Faker.NumberFaker.Number(0, 100), Tempf = Faker.NumberFaker.Number(0, 100), Msgnum = count, Msg = Faker.TextFaker.Sentence() }; return(ce); case 5: var cee = new CommEvent { EventType = CommEventEventType.CommEventError, Conncount = count++, Humidity = Faker.NumberFaker.Number(0, 100), Tempf = Faker.NumberFaker.Number(0, 100), Msgnum = count, Msg = Faker.TextFaker.Sentence() }; return(cee); default: return(null); } }
public PowerEvent GetNextEvent() { //Working variables ArrayList EventList = new ArrayList(); PowerEvent OnEvent1 = new PowerEvent(); PowerEvent OffEvent1 = new PowerEvent(); PowerEvent OnEvent2 = new PowerEvent(); PowerEvent OffEvent2 = new PowerEvent(); bool OffEventOffset1 = false; bool OffEventOffset2 = false; //Set the current weekday EditSchedule.WeekDays CurrentDay = GetScheduleDay(DateTime.Now); EditSchedule.WeekDays YesterDay = GetScheduleDay(DateTime.Now.AddDays(-1)); //Reload the settings settings.Reload(); //Get the adjusted time of each event OnEvent1.EventTime = DateTime.Parse(settings.PowerOn1); OnEvent1.EventType = PowerEventType.PowerOn; OffEvent1.EventTime = DateTime.Parse(settings.PowerOff1); OffEvent1.EventType = PowerEventType.PowerOff; if (OffEvent1.EventTime < OnEvent1.EventTime) { OffEvent1.EventTime = OffEvent1.EventTime.AddDays(1); OffEventOffset1 = true; } OnEvent2.EventTime = DateTime.Parse(settings.PowerOn2); OnEvent2.EventType = PowerEventType.PowerOn; OffEvent2.EventTime = DateTime.Parse(settings.PowerOff2); OffEvent2.EventType = PowerEventType.PowerOff; if (OffEvent2.EventTime < OnEvent2.EventTime) { OffEvent2.EventTime = OffEvent2.EventTime.AddDays(1); OffEventOffset2 = true; } //If the event is on a valid day, add it to the list if ((settings.Weekday1 & (int)CurrentDay) > 0) { EventList.Add(OnEvent1); EventList.Add(OffEvent1); } if ((settings.Weekday2 & (int)CurrentDay) > 0) { EventList.Add(OnEvent2); EventList.Add(OffEvent2); } if (OffEventOffset1) if ((settings.Weekday1 & (int)YesterDay) > 0) EventList.Add(OffEvent1); if (OffEventOffset2) if ((settings.Weekday2 & (int)YesterDay) > 0) EventList.Add(OffEvent2); //Sort the list EventList.Sort(new PowerEventSort()); //Get the next event PowerEvent NextEvent = new PowerEvent(); NextEvent.EventType = PowerEventType.NoAction; foreach (PowerEvent pe in EventList) { if (pe.EventTime > DateTime.Now) { NextEvent = pe; break; } } //Note that we have updated the schedule ScheduleChanged = false; //Return the next event return NextEvent; }