#ifndef SLEEP_AND_EXTI_H
#define SLEEP_AND_EXTI_H

   typedef enum
   {
      eSleepManager_Error,
      eSleepManager_GenericWakeup,
      eSleepManager_USBPlugWakeup,      
   }
   eSleepManager_WakeupReason_t;

   typedef struct
   {
       bool (*Init)();

       bool (*SetUSBWakeup)( bool state );

       eSleepManager_WakeupReason_t (*Sleep)();
       eSleepManager_WakeupReason_t (*SleepTimeout)( uint32_t timeout );

       bool (*GetUSBPlugged)();
       bool (*GetUSBActive)();
        
       void (*DeInit)();
   }
   sSleepManager_Handle_t;

   typedef struct
   {
       void (*USBSuspendEvent)(); 
       void (*USBResumeEvent)(); 
   }
   sSleepManager_Notify_t;

   extern const sSleepManager_Handle_t SleepManagerHandle;
   extern const sSleepManager_Notify_t SleepManagerNotify;
#endif