To register and unregister the event handler, follow these steps:
- Define callback function wants to call on occurrence of
event.
void TestNotifyCb(XPm_Notifier* const notifier) { xil_printf("Received notification: Node=0x%x, Event=%d, OPP=%d\n", notifier->node, (int)notifier->event, (int)notifier->oppoint); } - Define the notifier object. The notifier object can be of the following
types:
- Notifier object for device
event:
XPm_Notifier notifier = { .callback = TestNotifyCb, .node = PM_DEV_USB_0, .event = EVENT_STATE_CHANGE, .flags = 0, }; - Notifier object for power event:
XPm_Notifier notifier = { .callback = TestNotifyCb, .node = PM_POWER_FPD, .event = EVENT_ZERO_USER, .flags = 0, }; - Notifier object for register error
event:
XPm_Notifier notifier = { .callback = TestNotifyCb, .node = XIL_NODETYPE_EVENT_ERROR_PMC_ERR1, .event = XIL_EVENT_ERROR_MASK_CFRAME, .flags = 0, };
- Notifier object for device
event:
- Use notifier object and register for the
event.
XPm_RegisterNotifier(¬ifier); - Unregister for the
event.
XPm_UnregisterNotifier(¬ifier);