text: //*****************************************************************************
  //
  // hibernate.h - API definition for the Hibernation module.
  //
  // Copyright (c) 2007-2008 Luminary Micro, Inc.  All rights reserved.
  // 
  // Software License Agreement
  // 
  // Luminary Micro, Inc. (LMI) is supplying this software for use solely and
  // exclusively on LMI's microcontroller products.
  // 
  // The software is owned by LMI and/or its suppliers, and is protected under
  // applicable copyright laws.  All rights are reserved.  You may not combine
  // this software with "viral" open-source software in order to form a larger
  // program.  Any use in violation of the foregoing restrictions may subject
  // the user to criminal sanctions under applicable laws, as well as to civil
  // liability for the breach of the terms and conditions of this license.
  // 
  // THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
  // OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
  // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
  // LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
  // CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
  // 
  // This is part of revision 2523 of the Stellaris Peripheral Driver Library.
  //
  //*****************************************************************************
  
  #ifndef __HIBERNATE_H__
  #define __HIBERNATE_H__
  
  //*****************************************************************************
  //
  // If building with a C++ compiler, make all of the definitions in this header
  // have a C binding.
  //
  //*****************************************************************************
  #ifdef __cplusplus
  extern "C"
  {
  #endif
  
  //*****************************************************************************
  //
  // Macros needed for selecting the clock source for HibernateClockSelect()
  //
  //*****************************************************************************
  #define HIBERNATE_CLOCK_SEL_RAW         0x04
  #define HIBERNATE_CLOCK_SEL_DIV128      0x00
  
  //*****************************************************************************
  //
  // Macros need to configure wake events for HibernateWakeSet()
  //
  //*****************************************************************************
  #define HIBERNATE_WAKE_PIN              0x10
  #define HIBERNATE_WAKE_RTC              0x08
  
  //*****************************************************************************
  //
  // Macros needed to configure low battery detect for HibernateLowBatSet()
  //
  //*****************************************************************************
  #define HIBERNATE_LOW_BAT_DETECT        0x20
  #define HIBERNATE_LOW_BAT_ABORT         0xA0
  
  //*****************************************************************************
  //
  // Macros defining interrupt source bits for the interrupt functions.
  //
  //*****************************************************************************
  #define HIBERNATE_INT_PIN_WAKE          0x08
  #define HIBERNATE_INT_LOW_BAT           0x04
  #define HIBERNATE_INT_RTC_MATCH_0       0x01
  #define HIBERNATE_INT_RTC_MATCH_1       0x02
  
  //*****************************************************************************
  //
  // API Function prototypes
  //
  //*****************************************************************************
  extern void HibernateEnableExpClk(unsigned long ulHibClk);
  extern void HibernateDisable(void);
  extern void HibernateClockSelect(unsigned long ulClockInput);
  extern void HibernateRTCEnable(void);
  extern void HibernateRTCDisable(void);
  extern void HibernateWakeSet(unsigned long ulWakeFlags);
  extern unsigned long HibernateWakeGet(void);
  extern void HibernateLowBatSet(unsigned long ulLowBatFlags);
  extern unsigned long HibernateLowBatGet(void);
  extern void HibernateRTCSet(unsigned long ulRTCValue);
  extern unsigned long HibernateRTCGet(void);
  extern void HibernateRTCMatch0Set(unsigned long ulMatch);
  extern unsigned long HibernateRTCMatch0Get(void);
  extern void HibernateRTCMatch1Set(unsigned long ulMatch);
  extern unsigned long HibernateRTCMatch1Get(void);
  extern void HibernateRTCTrimSet(unsigned long ulTrim);
  extern unsigned long HibernateRTCTrimGet(void);
  extern void HibernateDataSet(unsigned long *pulData, unsigned long ulCount);
  extern void HibernateDataGet(unsigned long *pulData, unsigned long ulCount);
  extern void HibernateRequest(void);
  extern void HibernateIntEnable(unsigned long ulIntFlags);
  extern void HibernateIntDisable(unsigned long ulIntFlags);
  extern void HibernateIntRegister(void (*pfnHandler)(void));
  extern void HibernateIntUnregister(void);
  extern unsigned long HibernateIntStatus(tBoolean bMasked);
  extern void HibernateIntClear(unsigned long ulIntFlags);
  extern unsigned int HibernateIsActive(void);
  
  //*****************************************************************************
  //
  // Several Hibernate module APIs have been renamed, with the original function
  // name being deprecated.  These defines provide backward compatibility.
  //
  //*****************************************************************************
  #ifndef DEPRECATED
  #include "sysctl.h"
  #define HibernateEnable(a)                         \
          HibernateEnableExpClk(a, SysCtlClockGet())
  #endif
  
  //*****************************************************************************
  //
  // Mark the end of the C bindings section for C++ compilers.
  //
  //*****************************************************************************
  #ifdef __cplusplus
  }
  #endif
  
  #endif  // __HIBERNATE_H__
  