//---------------------------------------------------------------------------- // // Copyright (c) Intel Corporation, 2011-2014 All Rights Reserved. // //---------------------------------------------------------------------------- using System; using Intel.Manageability.Events; using Intel.Manageability.Exceptions; using System.Collections.ObjectModel; using Intel.Manageability; namespace PETEventsSample { class PETEventsFunctionality { /// /// Subscribe for events /// /// The Intel AMT instance public static void Subscribe(IAMTInstance amt) { //Subscribe for all events by providing the filter values try { //Definition the filter values of all events Filter filter = new Filter(255, 255, 15, 255, 0, 255, 0, 0, 28, 255); PETSubscription subscription = new PETSubscription("192.168.0.1", filter, SenderIDType.FQDN); amt.Events.PETEvents.Subscribe(subscription); Console.WriteLine("\nSubscription operation by providing its filter values completed successfully"); } catch (ManageabilityException ex) { Console.WriteLine("\n" + ex.Message); } //Subscribe for Battery_level_is_critically_low event by providig its name try { //Choose the event name from Events class. Filter filter = new Filter(Events.Battery.Battery_Level_is_Critically_Low); PETSubscription subscription = new PETSubscription("192.168.0.1", filter, "MyAMT"); amt.Events.PETEvents.Subscribe(subscription); Console.WriteLine("\nSubscription operation by providing the event name completed successfully."); } catch (ManageabilityException ex) { Console.WriteLine("\n" + ex.Message); } //Subscribe for an existing event by providig its policy ID value. try { PETSubscription subscription = new PETSubscription("192.168.0.10", 28); amt.Events.PETEvents.Subscribe(subscription); Console.WriteLine("\nSubscription operation by providing an event policy ID completed successfully."); } catch (ManageabilityException ex) { Console.WriteLine("\n" + ex.Message); } } /// /// Get the number of existing subscriptions /// /// The Intel Amt instance public static void GetNumOfSubscription(IAMTInstance amt) { try { uint num = amt.Events.PETEvents.GetNumOfSubscriptions(); Console.WriteLine("\nThere are {0} subscribers", num); } catch (ManageabilityException ex) { Console.WriteLine("\n" + ex.Message); } } /// /// Get the subscriptions list /// /// The Intel Amt instance public static void EnumerateSubscriptions(IAMTInstance amt) { try { int index = 1; Collection PETSubscriptionsCollection = amt.Events.PETEvents.EnumerateSubscriptions(); Console.WriteLine("\nSubscribers details:"); Console.WriteLine("---------------------"); foreach (PETSubscription PETSubscriptionItem in PETSubscriptionsCollection) { //Was subscribed with an event filter values / event name if(PETSubscriptionItem.Filter != null) Console.WriteLine("{0}-> Listener address:{1} Event ID:{2} Community string:{3}", index++, PETSubscriptionItem.ListenerAddress.ToString(), PETSubscriptionItem.Filter.PolicyID.ToString(), PETSubscriptionItem.Sender.ToString()); //Was subscribed with an event policy ID else Console.WriteLine("{0}-> Listener address:{1} Event ID:{2} Community string:{3}", index++, PETSubscriptionItem.ListenerAddress.ToString(), PETSubscriptionItem.FilterID.ToString(), PETSubscriptionItem.Sender.ToString()); } } catch (ManageabilityException ex) { Console.WriteLine("\n" + ex.Message); } } /// /// UnSubscribe for specific event /// /// The Intel AMT instance public static void UnSubscribe(IAMTInstance amt) { try { Filter filter = new Filter(255, 255, 15, 255, 0, 255, 0, 0, 28, 255); PETSubscription subscription = new PETSubscription("192.168.0.1", filter, SenderIDType.FQDN); amt.Events.PETEvents.UnSubscribe(subscription); Console.WriteLine("\nUnSubscription operation completed successfully."); } catch (ManageabilityException ex) { Console.WriteLine("\n" + ex.Message); } } /// /// Unsubscribe all exsiting subscriptions /// /// The Intel AMT instance public static void UnSubscribeAll(IAMTInstance amt) { try { amt.Events.PETEvents.UnSubscribeAll(); Console.WriteLine("\nUnSubscription all existing subscriptions completed successfully."); } catch (ManageabilityException ex) { Console.WriteLine("\n" + ex.Message); } } } }