/*
 * -------------------------------------------
 *    CC3220 SDK - v0.10.00.00 
 * -------------------------------------------
 *
 *  Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/ 
 *  
 *  Redistribution and use in source and binary forms, with or without 
 *  modification, are permitted provided that the following conditions 
 *  are met:
 *
 *    Redistributions of source code must retain the above copyright 
 *    notice, this list of conditions and the following disclaimer.
 *
 *    Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the 
 *    documentation and/or other materials provided with the   
 *    distribution.
 *
 *    Neither the name of Texas Instruments Incorporated nor the names of
 *    its contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
 *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
 *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
 *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
 *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
 *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
 *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
 *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *  
 */
//*****************************************************************************
//
// rom.h - Macros to facilitate calling functions in the ROM.
//
//
//*****************************************************************************
//
// THIS IS AN AUTO-GENERATED FILE.  DO NOT EDIT BY HAND.
//
//*****************************************************************************

#ifndef __ROM_H__
#define __ROM_H__

//*****************************************************************************
//
// For backward compatibility with older Driverlib versions
//
//*****************************************************************************
#ifdef TARGET_IS_CC3200
#define USE_CC3200_ROM_DRV_API
#endif

//*****************************************************************************
//
// Pointers to the main API tables.
//
//*****************************************************************************
#define ROM_APITABLE            ((unsigned long *)0x0000040C)
#define ROM_VERSION             (ROM_APITABLE[0])
#define ROM_UARTTABLE           ((unsigned long *)(ROM_APITABLE[1]))
#define ROM_TIMERTABLE          ((unsigned long *)(ROM_APITABLE[2]))
#define ROM_WATCHDOGTABLE       ((unsigned long *)(ROM_APITABLE[3]))
#define ROM_INTERRUPTTABLE      ((unsigned long *)(ROM_APITABLE[4]))
#define ROM_UDMATABLE           ((unsigned long *)(ROM_APITABLE[5]))
#define ROM_PRCMTABLE           ((unsigned long *)(ROM_APITABLE[6]))
#define ROM_I2CTABLE            ((unsigned long *)(ROM_APITABLE[7]))
#define ROM_SPITABLE            ((unsigned long *)(ROM_APITABLE[8]))
#define ROM_CAMERATABLE         ((unsigned long *)(ROM_APITABLE[9]))
#define ROM_FLASHTABLE          ((unsigned long *)(ROM_APITABLE[10]))
#define ROM_PINTABLE            ((unsigned long *)(ROM_APITABLE[11]))
#define ROM_SYSTICKTABLE        ((unsigned long *)(ROM_APITABLE[12]))
#define ROM_UTILSTABLE          ((unsigned long *)(ROM_APITABLE[13]))
#define ROM_I2STABLE            ((unsigned long *)(ROM_APITABLE[14]))
#define ROM_HWSPINLOCKTABLE     ((unsigned long *)(ROM_APITABLE[15]))
#define ROM_GPIOTABLE           ((unsigned long *)(ROM_APITABLE[16]))
#define ROM_AESTABLE            ((unsigned long *)(ROM_APITABLE[17]))
#define ROM_DESTABLE            ((unsigned long *)(ROM_APITABLE[18]))
#define ROM_SHAMD5TABLE         ((unsigned long *)(ROM_APITABLE[19]))
#define ROM_CRCTABLE            ((unsigned long *)(ROM_APITABLE[20]))
#define ROM_SDHOSTTABLE         ((unsigned long *)(ROM_APITABLE[21]))
#define ROM_ADCTABLE            ((unsigned long *)(ROM_APITABLE[22]))
#define ROM_CPUTABLE            ((unsigned long *)(ROM_APITABLE[23]))

//*****************************************************************************
//
// Macros for calling ROM functions in the Interrupt API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_IntEnable                                                         \
        ((void (*)(unsigned long ulInterrupt))ROM_INTERRUPTTABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_IntMasterEnable                                                   \
        ((tBoolean (*)(void))ROM_INTERRUPTTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_IntMasterDisable                                                  \
        ((tBoolean (*)(void))ROM_INTERRUPTTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_IntDisable                                                        \
        ((void (*)(unsigned long ulInterrupt))ROM_INTERRUPTTABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_IntPriorityGroupingSet                                            \
        ((void (*)(unsigned long ulBits))ROM_INTERRUPTTABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_IntPriorityGroupingGet                                            \
        ((unsigned long (*)(void))ROM_INTERRUPTTABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_IntPrioritySet                                                    \
        ((void (*)(unsigned long ulInterrupt,                                 \
                   unsigned char ucPriority))ROM_INTERRUPTTABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_IntPriorityGet                                                    \
        ((long (*)(unsigned long ulInterrupt))ROM_INTERRUPTTABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_IntPendSet                                                        \
        ((void (*)(unsigned long ulInterrupt))ROM_INTERRUPTTABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_IntPendClear                                                      \
        ((void (*)(unsigned long ulInterrupt))ROM_INTERRUPTTABLE[9])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_IntPriorityMaskSet                                                \
        ((void (*)(unsigned long ulPriorityMask))ROM_INTERRUPTTABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_IntPriorityMaskGet                                                \
        ((unsigned long (*)(void))ROM_INTERRUPTTABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_IntRegister                                                       \
        ((void (*)(unsigned long ulInterrupt,                                 \
                   void (*pfnHandler)(void)))ROM_INTERRUPTTABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_IntUnregister                                                     \
        ((void (*)(unsigned long ulInterrupt))ROM_INTERRUPTTABLE[13])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_IntVTableBaseSet                                                  \
        ((void (*)(unsigned long ulVtableBase))ROM_INTERRUPTTABLE[14])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the Timer API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerEnable                                                       \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulTimer))ROM_TIMERTABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerDisable                                                      \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulTimer))ROM_TIMERTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerConfigure                                                    \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulConfig))ROM_TIMERTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerControlLevel                                                 \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulTimer,                                     \
                   tBoolean bInvert))ROM_TIMERTABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerControlEvent                                                 \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulTimer,                                     \
                   unsigned long ulEvent))ROM_TIMERTABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerControlStall                                                 \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulTimer,                                     \
                   tBoolean bStall))ROM_TIMERTABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerPrescaleSet                                                  \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulTimer,                                     \
                   unsigned long ulValue))ROM_TIMERTABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerPrescaleGet                                                  \
        ((unsigned long (*)(unsigned long ulBase,                             \
                            unsigned long ulTimer))ROM_TIMERTABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerPrescaleMatchSet                                             \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulTimer,                                     \
                   unsigned long ulValue))ROM_TIMERTABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerPrescaleMatchGet                                             \
        ((unsigned long (*)(unsigned long ulBase,                             \
                            unsigned long ulTimer))ROM_TIMERTABLE[9])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerLoadSet                                                      \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulTimer,                                     \
                   unsigned long ulValue))ROM_TIMERTABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerLoadGet                                                      \
        ((unsigned long (*)(unsigned long ulBase,                             \
                            unsigned long ulTimer))ROM_TIMERTABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerValueGet                                                     \
        ((unsigned long (*)(unsigned long ulBase,                             \
                            unsigned long ulTimer))ROM_TIMERTABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerMatchSet                                                     \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulTimer,                                     \
                   unsigned long ulValue))ROM_TIMERTABLE[13])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerMatchGet                                                     \
        ((unsigned long (*)(unsigned long ulBase,                             \
                            unsigned long ulTimer))ROM_TIMERTABLE[14])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerIntRegister                                                  \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulTimer,                                     \
                   void (*pfnHandler)(void)))ROM_TIMERTABLE[15])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerIntUnregister                                                \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulTimer))ROM_TIMERTABLE[16])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerIntEnable                                                    \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulIntFlags))ROM_TIMERTABLE[17])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerIntDisable                                                   \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulIntFlags))ROM_TIMERTABLE[18])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerIntStatus                                                    \
        ((unsigned long (*)(unsigned long ulBase,                             \
                            tBoolean bMasked))ROM_TIMERTABLE[19])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerIntClear                                                     \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulIntFlags))ROM_TIMERTABLE[20])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerValueSet                                                     \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulTimer,                                     \
                   unsigned long ulValue))ROM_TIMERTABLE[22])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerDMAEventSet                                                  \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulDMAEvent))ROM_TIMERTABLE[23])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_TimerDMAEventGet                                                  \
        ((unsigned long (*)(unsigned long ulBase))ROM_TIMERTABLE[24])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the UART API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTParityModeSet                                                 \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulParity))ROM_UARTTABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTParityModeGet                                                 \
        ((unsigned long (*)(unsigned long ulBase))ROM_UARTTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTFIFOLevelSet                                                  \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulTxLevel,                                   \
                   unsigned long ulRxLevel))ROM_UARTTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTFIFOLevelGet                                                  \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long *pulTxLevel,                                 \
                   unsigned long *pulRxLevel))ROM_UARTTABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTConfigSetExpClk                                               \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulUARTClk,                                   \
                   unsigned long ulBaud,                                      \
                   unsigned long ulConfig))ROM_UARTTABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTConfigGetExpClk                                               \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulUARTClk,                                   \
                   unsigned long *pulBaud,                                    \
                   unsigned long *pulConfig))ROM_UARTTABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTEnable                                                        \
        ((void (*)(unsigned long ulBase))ROM_UARTTABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTDisable                                                       \
        ((void (*)(unsigned long ulBase))ROM_UARTTABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTFIFOEnable                                                    \
        ((void (*)(unsigned long ulBase))ROM_UARTTABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTFIFODisable                                                   \
        ((void (*)(unsigned long ulBase))ROM_UARTTABLE[9])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTCharsAvail                                                    \
        ((tBoolean (*)(unsigned long ulBase))ROM_UARTTABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTSpaceAvail                                                    \
        ((tBoolean (*)(unsigned long ulBase))ROM_UARTTABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTCharGetNonBlocking                                            \
        ((long (*)(unsigned long ulBase))ROM_UARTTABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTCharGet                                                       \
        ((long (*)(unsigned long ulBase))ROM_UARTTABLE[13])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTCharPutNonBlocking                                            \
        ((tBoolean (*)(unsigned long ulBase,                                  \
                       unsigned char ucData))ROM_UARTTABLE[14])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTCharPut                                                       \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned char ucData))ROM_UARTTABLE[15])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTBreakCtl                                                      \
        ((void (*)(unsigned long ulBase,                                      \
                   tBoolean bBreakState))ROM_UARTTABLE[16])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTBusy                                                          \
        ((tBoolean (*)(unsigned long ulBase))ROM_UARTTABLE[17])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTIntRegister                                                   \
        ((void (*)(unsigned long ulBase,                                      \
                   void(*pfnHandler)(void)))ROM_UARTTABLE[18])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTIntUnregister                                                 \
        ((void (*)(unsigned long ulBase))ROM_UARTTABLE[19])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTIntEnable                                                     \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulIntFlags))ROM_UARTTABLE[20])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTIntDisable                                                    \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulIntFlags))ROM_UARTTABLE[21])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTIntStatus                                                     \
        ((unsigned long (*)(unsigned long ulBase,                             \
                            tBoolean bMasked))ROM_UARTTABLE[22])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTIntClear                                                      \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulIntFlags))ROM_UARTTABLE[23])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTDMAEnable                                                     \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulDMAFlags))ROM_UARTTABLE[24])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTDMADisable                                                    \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulDMAFlags))ROM_UARTTABLE[25])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTRxErrorGet                                                    \
        ((unsigned long (*)(unsigned long ulBase))ROM_UARTTABLE[26])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTRxErrorClear                                                  \
        ((void (*)(unsigned long ulBase))ROM_UARTTABLE[27])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTModemControlSet                                               \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulControl))ROM_UARTTABLE[28])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTModemControlClear                                             \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulControl))ROM_UARTTABLE[29])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTModemControlGet                                               \
        ((unsigned long (*)(unsigned long ulBase))ROM_UARTTABLE[30])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTModemStatusGet                                                \
        ((unsigned long (*)(unsigned long ulBase))ROM_UARTTABLE[31])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTFlowControlSet                                                \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulMode))ROM_UARTTABLE[32])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTFlowControlGet                                                \
        ((unsigned long (*)(unsigned long ulBase))ROM_UARTTABLE[33])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTTxIntModeSet                                                  \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulMode))ROM_UARTTABLE[34])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UARTTxIntModeGet                                                  \
        ((unsigned long (*)(unsigned long ulBase))ROM_UARTTABLE[35])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the uDMA API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAChannelTransferSet                                            \
        ((void (*)(unsigned long ulChannelStructIndex,                        \
                   unsigned long ulMode,                                      \
                   void *pvSrcAddr,                                           \
                   void *pvDstAddr,                                           \
                   unsigned long ulTransferSize))ROM_UDMATABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAEnable                                                        \
        ((void (*)(void))ROM_UDMATABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMADisable                                                       \
        ((void (*)(void))ROM_UDMATABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAErrorStatusGet                                                \
        ((unsigned long (*)(void))ROM_UDMATABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAErrorStatusClear                                              \
        ((void (*)(void))ROM_UDMATABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAChannelEnable                                                 \
        ((void (*)(unsigned long ulChannelNum))ROM_UDMATABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAChannelDisable                                                \
        ((void (*)(unsigned long ulChannelNum))ROM_UDMATABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAChannelIsEnabled                                              \
        ((tBoolean (*)(unsigned long ulChannelNum))ROM_UDMATABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAControlBaseSet                                                \
        ((void (*)(void *pControlTable))ROM_UDMATABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAControlBaseGet                                                \
        ((void * (*)(void))ROM_UDMATABLE[9])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAChannelRequest                                                \
        ((void (*)(unsigned long ulChannelNum))ROM_UDMATABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAChannelAttributeEnable                                        \
        ((void (*)(unsigned long ulChannelNum,                                \
                   unsigned long ulAttr))ROM_UDMATABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAChannelAttributeDisable                                       \
        ((void (*)(unsigned long ulChannelNum,                                \
                   unsigned long ulAttr))ROM_UDMATABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAChannelAttributeGet                                           \
        ((unsigned long (*)(unsigned long ulChannelNum))ROM_UDMATABLE[13])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAChannelControlSet                                             \
        ((void (*)(unsigned long ulChannelStructIndex,                        \
                   unsigned long ulControl))ROM_UDMATABLE[14])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAChannelSizeGet                                                \
        ((unsigned long (*)(unsigned long ulChannelStructIndex))ROM_UDMATABLE[15])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAChannelModeGet                                                \
        ((unsigned long (*)(unsigned long ulChannelStructIndex))ROM_UDMATABLE[16])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAIntStatus                                                     \
        ((unsigned long (*)(void))ROM_UDMATABLE[17])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAIntClear                                                      \
        ((void (*)(unsigned long ulChanMask))ROM_UDMATABLE[18])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAControlAlternateBaseGet                                       \
        ((void * (*)(void))ROM_UDMATABLE[19])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAChannelScatterGatherSet                                       \
        ((void (*)(unsigned long ulChannelNum,                                \
                   unsigned ulTaskCount,                                      \
                   void *pvTaskList,                                          \
                   unsigned long ulIsPeriphSG))ROM_UDMATABLE[20])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAChannelAssign                                                 \
        ((void (*)(unsigned long ulMapping))ROM_UDMATABLE[21])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAIntRegister                                                   \
        ((void (*)(unsigned long ulIntChannel,                                \
                   void (*pfnHandler)(void)))ROM_UDMATABLE[22])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_uDMAIntUnregister                                                 \
        ((void (*)(unsigned long ulIntChannel))ROM_UDMATABLE[23])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the Watchdog API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_WatchdogIntClear                                                  \
        ((void (*)(unsigned long ulBase))ROM_WATCHDOGTABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_WatchdogRunning                                                   \
        ((tBoolean (*)(unsigned long ulBase))ROM_WATCHDOGTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_WatchdogEnable                                                    \
        ((void (*)(unsigned long ulBase))ROM_WATCHDOGTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_WatchdogLock                                                      \
        ((void (*)(unsigned long ulBase))ROM_WATCHDOGTABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_WatchdogUnlock                                                    \
        ((void (*)(unsigned long ulBase))ROM_WATCHDOGTABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_WatchdogLockState                                                 \
        ((tBoolean (*)(unsigned long ulBase))ROM_WATCHDOGTABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_WatchdogReloadSet                                                 \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulLoadVal))ROM_WATCHDOGTABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_WatchdogReloadGet                                                 \
        ((unsigned long (*)(unsigned long ulBase))ROM_WATCHDOGTABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_WatchdogValueGet                                                  \
        ((unsigned long (*)(unsigned long ulBase))ROM_WATCHDOGTABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_WatchdogIntStatus                                                 \
        ((unsigned long (*)(unsigned long ulBase,                             \
                            tBoolean bMasked))ROM_WATCHDOGTABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_WatchdogStallEnable                                               \
        ((void (*)(unsigned long ulBase))ROM_WATCHDOGTABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_WatchdogStallDisable                                              \
        ((void (*)(unsigned long ulBase))ROM_WATCHDOGTABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_WatchdogIntRegister                                               \
        ((void (*)(unsigned long ulBase,                                      \
                   void(*pfnHandler)(void)))ROM_WATCHDOGTABLE[13])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_WatchdogIntUnregister                                             \
        ((void (*)(unsigned long ulBase))ROM_WATCHDOGTABLE[14])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the I2C API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CIntRegister                                                    \
        ((void (*)(uint32_t ui32Base,                                         \
                   void(pfnHandler)(void)))ROM_I2CTABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CIntUnregister                                                  \
        ((void (*)(uint32_t ui32Base))ROM_I2CTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CTxFIFOConfigSet                                                \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Config))ROM_I2CTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CTxFIFOFlush                                                    \
        ((void (*)(uint32_t ui32Base))ROM_I2CTABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CRxFIFOConfigSet                                                \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Config))ROM_I2CTABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CRxFIFOFlush                                                    \
        ((void (*)(uint32_t ui32Base))ROM_I2CTABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CFIFOStatus                                                     \
        ((uint32_t (*)(uint32_t ui32Base))ROM_I2CTABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CFIFODataPut                                                    \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t ui8Data))ROM_I2CTABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CFIFODataPutNonBlocking                                         \
        ((uint32_t (*)(uint32_t ui32Base,                                     \
                       uint8_t ui8Data))ROM_I2CTABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CFIFODataGet                                                    \
        ((uint32_t (*)(uint32_t ui32Base))ROM_I2CTABLE[9])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CFIFODataGetNonBlocking                                         \
        ((uint32_t (*)(uint32_t ui32Base,                                     \
                       uint8_t *pui8Data))ROM_I2CTABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterBurstLengthSet                                           \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t ui8Length))ROM_I2CTABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterBurstCountGet                                            \
        ((uint32_t (*)(uint32_t ui32Base))ROM_I2CTABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterGlitchFilterConfigSet                                    \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Config))ROM_I2CTABLE[13])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveFIFOEnable                                                \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Config))ROM_I2CTABLE[14])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveFIFODisable                                               \
        ((void (*)(uint32_t ui32Base))ROM_I2CTABLE[15])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterBusBusy                                                  \
        ((bool (*)(uint32_t ui32Base))ROM_I2CTABLE[16])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterBusy                                                     \
        ((bool (*)(uint32_t ui32Base))ROM_I2CTABLE[17])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterControl                                                  \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Cmd))ROM_I2CTABLE[18])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterDataGet                                                  \
        ((uint32_t (*)(uint32_t ui32Base))ROM_I2CTABLE[19])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterDataPut                                                  \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t ui8Data))ROM_I2CTABLE[20])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterDisable                                                  \
        ((void (*)(uint32_t ui32Base))ROM_I2CTABLE[21])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterEnable                                                   \
        ((void (*)(uint32_t ui32Base))ROM_I2CTABLE[22])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterErr                                                      \
        ((uint32_t (*)(uint32_t ui32Base))ROM_I2CTABLE[23])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterIntClear                                                 \
        ((void (*)(uint32_t ui32Base))ROM_I2CTABLE[24])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterIntDisable                                               \
        ((void (*)(uint32_t ui32Base))ROM_I2CTABLE[25])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterIntEnable                                                \
        ((void (*)(uint32_t ui32Base))ROM_I2CTABLE[26])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterIntStatus                                                \
        ((bool (*)(uint32_t ui32Base,                                         \
                   bool bMasked))ROM_I2CTABLE[27])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterIntEnableEx                                              \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32IntFlags))ROM_I2CTABLE[28])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterIntDisableEx                                             \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32IntFlags))ROM_I2CTABLE[29])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterIntStatusEx                                              \
        ((uint32_t (*)(uint32_t ui32Base,                                     \
                       bool bMasked))ROM_I2CTABLE[30])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterIntClearEx                                               \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32IntFlags))ROM_I2CTABLE[31])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterTimeoutSet                                               \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Value))ROM_I2CTABLE[32])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveACKOverride                                               \
        ((void (*)(uint32_t ui32Base,                                         \
                   bool bEnable))ROM_I2CTABLE[33])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveACKValueSet                                               \
        ((void (*)(uint32_t ui32Base,                                         \
                   bool bACK))ROM_I2CTABLE[34])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterLineStateGet                                             \
        ((uint32_t (*)(uint32_t ui32Base))ROM_I2CTABLE[35])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterSlaveAddrSet                                             \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t ui8SlaveAddr,                                      \
                   bool bReceive))ROM_I2CTABLE[36])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveDataGet                                                   \
        ((uint32_t (*)(uint32_t ui32Base))ROM_I2CTABLE[37])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveDataPut                                                   \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t ui8Data))ROM_I2CTABLE[38])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveDisable                                                   \
        ((void (*)(uint32_t ui32Base))ROM_I2CTABLE[39])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveEnable                                                    \
        ((void (*)(uint32_t ui32Base))ROM_I2CTABLE[40])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveInit                                                      \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t ui8SlaveAddr))ROM_I2CTABLE[41])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveAddressSet                                                \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t ui8AddrNum,                                        \
                   uint8_t ui8SlaveAddr))ROM_I2CTABLE[42])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveIntClear                                                  \
        ((void (*)(uint32_t ui32Base))ROM_I2CTABLE[43])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveIntDisable                                                \
        ((void (*)(uint32_t ui32Base))ROM_I2CTABLE[44])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveIntEnable                                                 \
        ((void (*)(uint32_t ui32Base))ROM_I2CTABLE[45])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveIntClearEx                                                \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32IntFlags))ROM_I2CTABLE[46])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveIntDisableEx                                              \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32IntFlags))ROM_I2CTABLE[47])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveIntEnableEx                                               \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32IntFlags))ROM_I2CTABLE[48])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveIntStatus                                                 \
        ((bool (*)(uint32_t ui32Base,                                         \
                   bool bMasked))ROM_I2CTABLE[49])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveIntStatusEx                                               \
        ((uint32_t (*)(uint32_t ui32Base,                                     \
                       bool bMasked))ROM_I2CTABLE[50])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CSlaveStatus                                                    \
        ((uint32_t (*)(uint32_t ui32Base))ROM_I2CTABLE[51])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2CMasterInitExpClk                                               \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32I2CClk,                                       \
                   bool bFast))ROM_I2CTABLE[52])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the SPI API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIEnable                                                         \
        ((void (*)(unsigned long ulBase))ROM_SPITABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIDisable                                                        \
        ((void (*)(unsigned long ulBase))ROM_SPITABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIReset                                                          \
        ((void (*)(unsigned long ulBase))ROM_SPITABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIConfigSetExpClk                                                \
        ((void (*)(unsigned long ulBase,                                      \
                  unsigned long ulSPIClk,                                     \
                   unsigned long ulBitRate,                                   \
                   unsigned long ulMode,                                      \
                   unsigned long ulSubMode,                                   \
                   unsigned long ulConfig))ROM_SPITABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIDataGetNonBlocking                                             \
        ((long (*)(unsigned long ulBase,                                      \
                   unsigned long * pulData))ROM_SPITABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIDataGet                                                        \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long *pulData))ROM_SPITABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIDataPutNonBlocking                                             \
        ((long (*)(unsigned long ulBase,                                      \
                   unsigned long ulData))ROM_SPITABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIDataPut                                                        \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulData))ROM_SPITABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIFIFOEnable                                                     \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulFlags))ROM_SPITABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIFIFODisable                                                    \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulFlags))ROM_SPITABLE[9])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIFIFOLevelSet                                                   \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulTxLevel,                                   \
                   unsigned long ulRxLevel))ROM_SPITABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIFIFOLevelGet                                                   \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long *pulTxLevel,                                 \
                   unsigned long *pulRxLevel))ROM_SPITABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIWordCountSet                                                   \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulWordCount))ROM_SPITABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIIntRegister                                                    \
        ((void (*)(unsigned long ulBase,                                      \
                   void(*pfnHandler)(void)))ROM_SPITABLE[13])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIIntUnregister                                                  \
        ((void (*)(unsigned long ulBase))ROM_SPITABLE[14])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIIntEnable                                                      \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulIntFlags))ROM_SPITABLE[15])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIIntDisable                                                     \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulIntFlags))ROM_SPITABLE[16])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIIntStatus                                                      \
        ((unsigned long (*)(unsigned long ulBase,                             \
                            tBoolean bMasked))ROM_SPITABLE[17])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIIntClear                                                       \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulIntFlags))ROM_SPITABLE[18])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIDmaEnable                                                      \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulFlags))ROM_SPITABLE[19])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPIDmaDisable                                                     \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulFlags))ROM_SPITABLE[20])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPICSEnable                                                       \
        ((void (*)(unsigned long ulBase))ROM_SPITABLE[21])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPICSDisable                                                      \
        ((void (*)(unsigned long ulBase))ROM_SPITABLE[22])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SPITransfer                                                       \
        ((long (*)(unsigned long ulBase,                                      \
                   unsigned char *ucDout,                                     \
                   unsigned char *ucDin,                                      \
                   unsigned long ulSize,                                      \
                   unsigned long ulFlags))ROM_SPITABLE[23])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the CAM API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CameraReset                                                       \
        ((void (*)(unsigned long ulBase))ROM_CAMERATABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CameraParamsConfig                                                \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulHSPol,                                     \
                   unsigned long ulVSPol,                                     \
                   unsigned long ulFlags))ROM_CAMERATABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CameraXClkConfig                                                  \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulCamClkIn,                                  \
                   unsigned long ulXClk))ROM_CAMERATABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CameraXClkSet                                                     \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned char bXClkFlags))ROM_CAMERATABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CameraDMAEnable                                                   \
        ((void (*)(unsigned long ulBase))ROM_CAMERATABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CameraDMADisable                                                  \
        ((void (*)(unsigned long ulBase))ROM_CAMERATABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CameraThresholdSet                                                \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulThreshold))ROM_CAMERATABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CameraIntRegister                                                 \
        ((void (*)(unsigned long ulBase,                                      \
                   void (*pfnHandler)(void)))ROM_CAMERATABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CameraIntUnregister                                               \
        ((void (*)(unsigned long ulBase))ROM_CAMERATABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CameraIntEnable                                                   \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulIntFlags))ROM_CAMERATABLE[9])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CameraIntDisable                                                  \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulIntFlags))ROM_CAMERATABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CameraIntStatus                                                   \
        ((unsigned long (*)(unsigned long ulBase))ROM_CAMERATABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CameraIntClear                                                    \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulIntFlags))ROM_CAMERATABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CameraCaptureStop                                                 \
        ((void (*)(unsigned long ulBase,                                      \
                   tBoolean bImmediate))ROM_CAMERATABLE[13])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CameraCaptureStart                                                \
        ((void (*)(unsigned long ulBase))ROM_CAMERATABLE[14])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CameraBufferRead                                                  \
        ((void (*)(unsigned long ulBase,                                      \
                  unsigned long *pBuffer,                                     \
                   unsigned char ucSize))ROM_CAMERATABLE[15])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the FLASH API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_FlashDisable                                                      \
        ((void (*)(void))ROM_FLASHTABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_FlashErase                                                        \
        ((long (*)(unsigned long ulAddress))ROM_FLASHTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_FlashMassErase                                                    \
        ((long (*)(void))ROM_FLASHTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_FlashMassEraseNonBlocking                                         \
        ((void (*)(void))ROM_FLASHTABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_FlashEraseNonBlocking                                             \
        ((void (*)(unsigned long ulAddress))ROM_FLASHTABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_FlashProgram                                                      \
        ((long (*)(unsigned long *pulData,                                    \
                   unsigned long ulAddress,                                   \
                   unsigned long ulCount))ROM_FLASHTABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_FlashProgramNonBlocking                                           \
        ((long (*)(unsigned long *pulData,                                    \
                   unsigned long ulAddress,                                   \
                   unsigned long ulCount))ROM_FLASHTABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_FlashIntRegister                                                  \
        ((void (*)(void (*pfnHandler)(void)))ROM_FLASHTABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_FlashIntUnregister                                                \
        ((void (*)(void))ROM_FLASHTABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_FlashIntEnable                                                    \
        ((void (*)(unsigned long ulIntFlags))ROM_FLASHTABLE[9])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_FlashIntDisable                                                   \
        ((void (*)(unsigned long ulIntFlags))ROM_FLASHTABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_FlashIntStatus                                                    \
        ((unsigned long (*)(tBoolean bMasked))ROM_FLASHTABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_FlashIntClear                                                     \
        ((void (*)(unsigned long ulIntFlags))ROM_FLASHTABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_FlashProtectGet                                                   \
        ((tFlashProtection (*)(unsigned long ulAddress))ROM_FLASHTABLE[13])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the Pin API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinModeSet                                                        \
        ((void (*)(unsigned long ulPin,                                       \
                   unsigned long ulPinMode))ROM_PINTABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinDirModeSet                                                     \
        ((void (*)(unsigned long ulPin,                                       \
                   unsigned long ulPinIO))ROM_PINTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinDirModeGet                                                     \
        ((unsigned long (*)(unsigned long ulPin))ROM_PINTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinModeGet                                                        \
        ((unsigned long (*)(unsigned long ulPin))ROM_PINTABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinConfigGet                                                      \
        ((void (*)(unsigned long ulPin,                                       \
                  unsigned long  *pulPinStrength,                             \
                   unsigned long *pulPinType))ROM_PINTABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinConfigSet                                                      \
        ((void (*)(unsigned long ulPin,                                       \
                  unsigned long  ulPinStrength,                               \
                   unsigned long ulPinType))ROM_PINTABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinTypeUART                                                       \
        ((void (*)(unsigned long ulPin,                                       \
                  unsigned long ulPinMode))ROM_PINTABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinTypeI2C                                                        \
        ((void (*)(unsigned long ulPin,                                       \
                  unsigned long ulPinMode))ROM_PINTABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinTypeSPI                                                        \
        ((void (*)(unsigned long ulPin,                                       \
                  unsigned long ulPinMode))ROM_PINTABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinTypeI2S                                                        \
        ((void (*)(unsigned long ulPin,                                       \
                  unsigned long ulPinMode))ROM_PINTABLE[9])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinTypeTimer                                                      \
        ((void (*)(unsigned long ulPin,                                       \
                  unsigned long ulPinMode))ROM_PINTABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinTypeCamera                                                     \
        ((void (*)(unsigned long ulPin,                                       \
                  unsigned long ulPinMode))ROM_PINTABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinTypeGPIO                                                       \
        ((void (*)(unsigned long ulPin,                                       \
                  unsigned long ulPinMode,                                    \
                   tBoolean bOpenDrain))ROM_PINTABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinTypeADC                                                        \
        ((void (*)(unsigned long ulPin,                                       \
                  unsigned long ulPinMode))ROM_PINTABLE[13])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinTypeSDHost                                                     \
        ((void (*)(unsigned long ulPin,                                       \
                  unsigned long ulPinMode))ROM_PINTABLE[14])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinHysteresisSet                                                  \
        ((void (*)(unsigned long ulHysteresis))ROM_PINTABLE[15])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinLockLevelSet                                                   \
        ((void (*)(unsigned long ulPin,                                       \
                   unsigned char ucLevel))ROM_PINTABLE[16])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinLock                                                           \
        ((void (*)(unsigned long ulOutEnable))ROM_PINTABLE[17])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_PinUnlock                                                         \
        ((void (*)(void))ROM_PINTABLE[18])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the SYSTICK API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SysTickEnable                                                     \
        ((void (*)(void))ROM_SYSTICKTABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SysTickDisable                                                    \
        ((void (*)(void))ROM_SYSTICKTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SysTickIntRegister                                                \
        ((void (*)(void (*pfnHandler)(void)))ROM_SYSTICKTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SysTickIntUnregister                                              \
        ((void (*)(void))ROM_SYSTICKTABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SysTickIntEnable                                                  \
        ((void (*)(void))ROM_SYSTICKTABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SysTickIntDisable                                                 \
        ((void (*)(void))ROM_SYSTICKTABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SysTickPeriodSet                                                  \
        ((void (*)(unsigned long ulPeriod))ROM_SYSTICKTABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SysTickPeriodGet                                                  \
        ((unsigned long (*)(void))ROM_SYSTICKTABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SysTickValueGet                                                   \
        ((unsigned long (*)(void))ROM_SYSTICKTABLE[8])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the UTILS API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_UtilsDelay                                                        \
        ((void (*)(unsigned long ulCount))ROM_UTILSTABLE[0])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the I2S API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SEnable                                                         \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulMode))ROM_I2STABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SDisable                                                        \
        ((void (*)(unsigned long ulBase))ROM_I2STABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SDataPut                                                        \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulDataLine,                                  \
                   unsigned long ulData))ROM_I2STABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SDataPutNonBlocking                                             \
        ((long (*)(unsigned long ulBase,                                      \
                   unsigned long ulDataLine,                                  \
                   unsigned long ulData))ROM_I2STABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SDataGet                                                        \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulDataLine,                                  \
                   unsigned long *pulData))ROM_I2STABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SDataGetNonBlocking                                             \
        ((long (*)(unsigned long ulBase,                                      \
                   unsigned long ulDataLine,                                  \
                   unsigned long *pulData))ROM_I2STABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SConfigSetExpClk                                                \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulI2SClk,                                    \
                   unsigned long ulBitClk,                                    \
                   unsigned long ulConfig))ROM_I2STABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2STxFIFOEnable                                                   \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulTxLevel,                                   \
                   unsigned long ulWordsPerTransfer))ROM_I2STABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2STxFIFODisable                                                  \
        ((void (*)(unsigned long ulBase))ROM_I2STABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SRxFIFOEnable                                                   \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulRxLevel,                                   \
                   unsigned long ulWordsPerTransfer))ROM_I2STABLE[9])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SRxFIFODisable                                                  \
        ((void (*)(unsigned long ulBase))ROM_I2STABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2STxFIFOStatusGet                                                \
        ((unsigned long (*)(unsigned long ulBase))ROM_I2STABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SRxFIFOStatusGet                                                \
        ((unsigned long (*)(unsigned long ulBase))ROM_I2STABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SSerializerConfig                                               \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulDataLine,                                  \
                   unsigned long ulSerMode,                                   \
                   unsigned long ulInActState))ROM_I2STABLE[13])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SIntEnable                                                      \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulIntFlags))ROM_I2STABLE[14])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SIntDisable                                                     \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulIntFlags))ROM_I2STABLE[15])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SIntStatus                                                      \
        ((unsigned long (*)(unsigned long ulBase))ROM_I2STABLE[16])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SIntClear                                                       \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulIntFlags))ROM_I2STABLE[17])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SIntRegister                                                    \
        ((void (*)(unsigned long ulBase,                                      \
                   void (*pfnHandler)(void)))ROM_I2STABLE[18])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SIntUnregister                                                  \
        ((void (*)(unsigned long ulBase))ROM_I2STABLE[19])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2STxActiveSlotSet                                                \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulActSlot))ROM_I2STABLE[20])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_I2SRxActiveSlotSet                                                \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulActSlot))ROM_I2STABLE[21])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the GPIO API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_GPIODirModeSet                                                    \
        ((void (*)(unsigned long ulPort,                                      \
                   unsigned char ucPins,                                      \
                   unsigned long ulPinIO))ROM_GPIOTABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_GPIODirModeGet                                                    \
        ((unsigned long (*)(unsigned long ulPort,                             \
                            unsigned char ucPin))ROM_GPIOTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_GPIOIntTypeSet                                                    \
        ((void (*)(unsigned long ulPort,                                      \
                   unsigned char ucPins,                                      \
                   unsigned long ulIntType))ROM_GPIOTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_GPIODMATriggerEnable                                              \
        ((void (*)(unsigned long ulPort))ROM_GPIOTABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_GPIODMATriggerDisable                                             \
        ((void (*)(unsigned long ulPort))ROM_GPIOTABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_GPIOIntTypeGet                                                    \
        ((unsigned long (*)(unsigned long ulPort,                             \
                            unsigned char ucPin))ROM_GPIOTABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_GPIOIntEnable                                                     \
        ((void (*)(unsigned long ulPort,                                      \
                   unsigned long ulIntFlags))ROM_GPIOTABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_GPIOIntDisable                                                    \
        ((void (*)(unsigned long ulPort,                                      \
                   unsigned long ulIntFlags))ROM_GPIOTABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_GPIOIntStatus                                                     \
        ((long (*)(unsigned long ulPort,                                      \
                   tBoolean bMasked))ROM_GPIOTABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_GPIOIntClear                                                      \
        ((void (*)(unsigned long ulPort,                                      \
                   unsigned long ulIntFlags))ROM_GPIOTABLE[9])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_GPIOIntRegister                                                   \
        ((void (*)(unsigned long ulPort,                                      \
                   void (*pfnIntHandler)(void)))ROM_GPIOTABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_GPIOIntUnregister                                                 \
        ((void (*)(unsigned long ulPort))ROM_GPIOTABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_GPIOPinRead                                                       \
        ((long (*)(unsigned long ulPort,                                      \
                   unsigned char ucPins))ROM_GPIOTABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_GPIOPinWrite                                                      \
        ((void (*)(unsigned long ulPort,                                      \
                   unsigned char ucPins,                                      \
                   unsigned char ucVal))ROM_GPIOTABLE[13])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the AES API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESConfigSet                                                      \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Config))ROM_AESTABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESKey1Set                                                        \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Key,                                          \
                   uint32_t ui32Keysize))ROM_AESTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESKey2Set                                                        \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Key,                                          \
                   uint32_t ui32Keysize))ROM_AESTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESKey3Set                                                        \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Key))ROM_AESTABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESIVSet                                                          \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8IVdata))ROM_AESTABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESTagRead                                                        \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8TagData))ROM_AESTABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESDataLengthSet                                                  \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint64_t ui64Length))ROM_AESTABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESAuthDataLengthSet                                              \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Length))ROM_AESTABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESDataReadNonBlocking                                            \
        ((bool (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Dest,                                         \
                   uint8_t ui8Length))ROM_AESTABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESDataRead                                                       \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Dest,                                         \
                   uint8_t ui8Length))ROM_AESTABLE[9])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESDataWriteNonBlocking                                           \
        ((bool (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Src,                                          \
                   uint8_t ui8Length))ROM_AESTABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESDataWrite                                                      \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Src,                                          \
                   uint8_t ui8Length))ROM_AESTABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESDataProcess                                                    \
        ((bool (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Src,                                          \
                   uint8_t *pui8Dest,                                         \
                   uint32_t ui32Length))ROM_AESTABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESDataMAC                                                        \
        ((bool (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Src,                                          \
                   uint32_t ui32Length,                                       \
                   uint8_t *pui8Tag))ROM_AESTABLE[13])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESDataProcessAE                                                  \
        ((bool (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Src,                                          \
                   uint8_t *pui8Dest,                                         \
                   uint32_t ui32Length,                                       \
                   uint8_t *pui8AuthSrc,                                      \
                   uint32_t ui32AuthLength,                                   \
                   uint8_t *pui8Tag))ROM_AESTABLE[14])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESIntStatus                                                      \
        ((uint32_t (*)(uint32_t ui32Base,                                     \
                       bool bMasked))ROM_AESTABLE[15])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESIntEnable                                                      \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32IntFlags))ROM_AESTABLE[16])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESIntDisable                                                     \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32IntFlags))ROM_AESTABLE[17])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESIntClear                                                       \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32IntFlags))ROM_AESTABLE[18])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESIntRegister                                                    \
        ((void (*)(uint32_t ui32Base,                                         \
                   void(*pfnHandler)(void)))ROM_AESTABLE[19])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESIntUnregister                                                  \
        ((void (*)(uint32_t ui32Base))ROM_AESTABLE[20])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESDMAEnable                                                      \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Flags))ROM_AESTABLE[21])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESDMADisable                                                     \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Flags))ROM_AESTABLE[22])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_AESIVGet                                                          \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8IVdata))ROM_AESTABLE[23])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the DES API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESConfigSet                                                      \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Config))ROM_DESTABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESDataRead                                                       \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Dest,                                         \
                   uint8_t ui8Length))ROM_DESTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESDataReadNonBlocking                                            \
        ((bool (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Dest,                                         \
                   uint8_t ui8Length))ROM_DESTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESDataProcess                                                    \
        ((bool (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Src,                                          \
                   uint8_t *pui8Dest,                                         \
                   uint32_t ui32Length))ROM_DESTABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESDataWrite                                                      \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Src,                                          \
                   uint8_t ui8Length))ROM_DESTABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESDataWriteNonBlocking                                           \
        ((bool (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Src,                                          \
                   uint8_t ui8Length))ROM_DESTABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESDMADisable                                                     \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Flags))ROM_DESTABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESDMAEnable                                                      \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Flags))ROM_DESTABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESIntClear                                                       \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32IntFlags))ROM_DESTABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESIntDisable                                                     \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32IntFlags))ROM_DESTABLE[9])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESIntEnable                                                      \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32IntFlags))ROM_DESTABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESIntRegister                                                    \
        ((void (*)(uint32_t ui32Base,                                         \
                   void(*pfnHandler)(void)))ROM_DESTABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESIntStatus                                                      \
        ((uint32_t (*)(uint32_t ui32Base,                                     \
                       bool bMasked))ROM_DESTABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESIntUnregister                                                  \
        ((void (*)(uint32_t ui32Base))ROM_DESTABLE[13])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESIVSet                                                          \
        ((bool (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8IVdata))ROM_DESTABLE[14])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESKeySet                                                         \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Key))ROM_DESTABLE[15])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_DESDataLengthSet                                                  \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Length))ROM_DESTABLE[16])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the SHAMD5 API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5ConfigSet                                                   \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Mode))ROM_SHAMD5TABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5DataProcess                                                 \
        ((bool (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8DataSrc,                                      \
                   uint32_t ui32DataLength,                                   \
                   uint8_t *pui8HashResult))ROM_SHAMD5TABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5DataWrite                                                   \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Src))ROM_SHAMD5TABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5DataWriteNonBlocking                                        \
        ((bool (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Src))ROM_SHAMD5TABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5DMADisable                                                  \
        ((void (*)(uint32_t ui32Base))ROM_SHAMD5TABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5DMAEnable                                                   \
        ((void (*)(uint32_t ui32Base))ROM_SHAMD5TABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5DataLengthSet                                               \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Length))ROM_SHAMD5TABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5HMACKeySet                                                  \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Src))ROM_SHAMD5TABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5HMACPPKeyGenerate                                           \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Key,                                          \
                   uint8_t *pui8PPKey))ROM_SHAMD5TABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5HMACPPKeySet                                                \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Src))ROM_SHAMD5TABLE[9])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5HMACProcess                                                 \
        ((bool (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8DataSrc,                                      \
                   uint32_t ui32DataLength,                                   \
                   uint8_t *pui8HashResult))ROM_SHAMD5TABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5IntClear                                                    \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32IntFlags))ROM_SHAMD5TABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5IntDisable                                                  \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32IntFlags))ROM_SHAMD5TABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5IntEnable                                                   \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32IntFlags))ROM_SHAMD5TABLE[13])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5IntRegister                                                 \
        ((void (*)(uint32_t ui32Base,                                         \
                   void(*pfnHandler)(void)))ROM_SHAMD5TABLE[14])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5IntStatus                                                   \
        ((uint32_t (*)(uint32_t ui32Base,                                     \
                       bool bMasked))ROM_SHAMD5TABLE[15])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5IntUnregister                                               \
        ((void (*)(uint32_t ui32Base))ROM_SHAMD5TABLE[16])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SHAMD5ResultRead                                                  \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint8_t *pui8Dest))ROM_SHAMD5TABLE[17])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the CRC API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CRCConfigSet                                                      \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32CRCConfig))ROM_CRCTABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CRCDataProcess                                                    \
        ((uint32_t (*)(uint32_t ui32Base,                                     \
                       void *puiDataIn,                                       \
                       uint32_t ui32DataLength,                               \
                       uint32_t ui32Config))ROM_CRCTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CRCDataWrite                                                      \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Data))ROM_CRCTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CRCResultRead                                                     \
        ((uint32_t (*)(uint32_t ui32Base))ROM_CRCTABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CRCSeedSet                                                        \
        ((void (*)(uint32_t ui32Base,                                         \
                   uint32_t ui32Seed))ROM_CRCTABLE[4])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the SDHOST API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostCmdReset                                                    \
        ((void (*)(unsigned long ulBase))ROM_SDHOSTTABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostInit                                                        \
        ((void (*)(unsigned long ulBase))ROM_SDHOSTTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostCmdSend                                                     \
        ((long (*)(unsigned long ulBase,                                      \
                  unsigned long ulCmd,                                        \
                   unsigned ulArg))ROM_SDHOSTTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostIntRegister                                                 \
        ((void (*)(unsigned long ulBase,                                      \
                   void (*pfnHandler)(void)))ROM_SDHOSTTABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostIntUnregister                                               \
        ((void (*)(unsigned long ulBase))ROM_SDHOSTTABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostIntEnable                                                   \
        ((void (*)(unsigned long ulBase,                                      \
                  unsigned long ulIntFlags))ROM_SDHOSTTABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostIntDisable                                                  \
        ((void (*)(unsigned long ulBase,                                      \
                  unsigned long ulIntFlags))ROM_SDHOSTTABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostIntStatus                                                   \
        ((unsigned long (*)(unsigned long ulBase))ROM_SDHOSTTABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostIntClear                                                    \
        ((void (*)(unsigned long ulBase,                                      \
                  unsigned long ulIntFlags))ROM_SDHOSTTABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostRespGet                                                     \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulRespnse[4]))ROM_SDHOSTTABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostBlockSizeSet                                                \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned short ulBlkSize))ROM_SDHOSTTABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostBlockCountSet                                               \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned short ulBlkCount))ROM_SDHOSTTABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostDataNonBlockingWrite                                        \
        ((tBoolean (*)(unsigned long ulBase,                                  \
                       unsigned long ulData))ROM_SDHOSTTABLE[13])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostDataNonBlockingRead                                         \
        ((tBoolean (*)(unsigned long ulBase,                                  \
                       unsigned long *pulData))ROM_SDHOSTTABLE[14])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostDataWrite                                                   \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulData))ROM_SDHOSTTABLE[15])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostDataRead                                                    \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long *ulData))ROM_SDHOSTTABLE[16])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostSetExpClk                                                   \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulSDHostClk,                                 \
                   unsigned long ulCardClk))ROM_SDHOSTTABLE[17])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostCardErrorMaskSet                                            \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulErrMask))ROM_SDHOSTTABLE[18])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_SDHostCardErrorMaskGet                                            \
        ((unsigned long (*)(unsigned long ulBase))ROM_SDHOSTTABLE[19])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the PRCM API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMMCUReset                                                      \
        ((void (*)(tBoolean bIncludeSubsystem))ROM_PRCMTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMSysResetCauseGet                                              \
        ((unsigned long (*)(void))ROM_PRCMTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMPeripheralClkEnable                                           \
        ((void (*)(unsigned long ulPeripheral,                                \
                   unsigned long ulClkFlags))ROM_PRCMTABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMPeripheralClkDisable                                          \
        ((void (*)(unsigned long ulPeripheral,                                \
                   unsigned long ulClkFlags))ROM_PRCMTABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMPeripheralReset                                               \
        ((void (*)(unsigned long ulPeripheral))ROM_PRCMTABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMPeripheralStatusGet                                           \
        ((tBoolean (*)(unsigned long ulPeripheral))ROM_PRCMTABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMI2SClockFreqSet                                               \
        ((void (*)(unsigned long ulI2CClkFreq))ROM_PRCMTABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMPeripheralClockGet                                            \
        ((unsigned long (*)(unsigned long ulPeripheral))ROM_PRCMTABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMSleepEnter                                                    \
        ((void (*)(void))ROM_PRCMTABLE[9])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMSRAMRetentionEnable                                           \
        ((void (*)(unsigned long ulSramColSel,                                \
                   unsigned long ulFlags))ROM_PRCMTABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMSRAMRetentionDisable                                          \
        ((void (*)(unsigned long ulSramColSel,                                \
                   unsigned long ulFlags))ROM_PRCMTABLE[12])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMLPDSEnter                                                     \
        ((void (*)(void))ROM_PRCMTABLE[13])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMLPDSIntervalSet                                               \
        ((void (*)(unsigned long ulTicks))ROM_PRCMTABLE[14])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMLPDSWakeupSourceEnable                                        \
        ((void (*)(unsigned long ulLpdsWakeupSrc))ROM_PRCMTABLE[15])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMLPDSWakeupCauseGet                                            \
        ((unsigned long (*)(void))ROM_PRCMTABLE[16])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMLPDSWakeUpGPIOSelect                                          \
        ((void (*)(unsigned long ulGPIOPin,                                   \
                   unsigned long ulType))ROM_PRCMTABLE[17])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMLPDSWakeupSourceDisable                                       \
        ((void (*)(unsigned long ulLpdsWakeupSrc))ROM_PRCMTABLE[18])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMHibernateEnter                                                \
        ((void (*)(void))ROM_PRCMTABLE[19])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMHibernateWakeupSourceEnable                                   \
        ((void (*)(unsigned long ulHIBWakupSrc))ROM_PRCMTABLE[20])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMHibernateWakeupCauseGet                                       \
        ((unsigned long (*)(void))ROM_PRCMTABLE[21])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMHibernateWakeUpGPIOSelect                                     \
        ((void (*)(unsigned long ulMultiGPIOBitMap,                           \
                   unsigned long ulType))ROM_PRCMTABLE[22])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMHibernateWakeupSourceDisable                                  \
        ((void (*)(unsigned long ulHIBWakupSrc))ROM_PRCMTABLE[23])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMHibernateIntervalSet                                          \
        ((void (*)(unsigned long long ullTicks))ROM_PRCMTABLE[24])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMSlowClkCtrGet                                                 \
        ((unsigned long long (*)(void))ROM_PRCMTABLE[25])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMSlowClkCtrMatchSet                                            \
        ((void (*)(unsigned long long ullTicks))ROM_PRCMTABLE[26])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMSlowClkCtrMatchGet                                            \
        ((unsigned long long (*)(void))ROM_PRCMTABLE[27])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMOCRRegisterWrite                                              \
        ((void (*)(unsigned char ucIndex,                                     \
                   unsigned long ulRegValue))ROM_PRCMTABLE[28])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMOCRRegisterRead                                               \
        ((unsigned long (*)(unsigned char ucIndex))ROM_PRCMTABLE[29])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMIntRegister                                                   \
        ((void (*)(void (*pfnHandler)(void)))ROM_PRCMTABLE[30])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMIntUnregister                                                 \
        ((void (*)(void))ROM_PRCMTABLE[31])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMIntEnable                                                     \
        ((void (*)(unsigned long ulIntFlags))ROM_PRCMTABLE[32])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMIntDisable                                                    \
        ((void (*)(unsigned long ulIntFlags))ROM_PRCMTABLE[33])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMIntStatus                                                     \
        ((unsigned long (*)(void))ROM_PRCMTABLE[34])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMRTCInUseSet                                                   \
        ((void (*)(void))ROM_PRCMTABLE[35])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMRTCInUseGet                                                   \
        ((tBoolean (*)(void))ROM_PRCMTABLE[36])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMRTCSet                                                        \
        ((void (*)(unsigned long ulSecs,                                      \
                   unsigned short usMsec))ROM_PRCMTABLE[37])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMRTCGet                                                        \
        ((void (*)(unsigned long *ulSecs,                                     \
                   unsigned short *usMsec))ROM_PRCMTABLE[38])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMRTCMatchSet                                                   \
        ((void (*)(unsigned long ulSecs,                                      \
                   unsigned short usMsec))ROM_PRCMTABLE[39])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMRTCMatchGet                                                   \
        ((void (*)(unsigned long *ulSecs,                                     \
                   unsigned short *usMsec))ROM_PRCMTABLE[40])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMLPDSRestoreInfoSet                                            \
        ((void (*)(unsigned long ulRestoreSP,                                 \
                   unsigned long ulRestorePC))ROM_PRCMTABLE[41])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMSlowClkCtrFastGet                                             \
        ((unsigned long long (*)(void))ROM_PRCMTABLE[42])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMCC3200MCUInit                                                 \
        ((void (*)(void))ROM_PRCMTABLE[43])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMHIBRegRead                                                    \
        ((unsigned long (*)(unsigned long ulRegAddr))ROM_PRCMTABLE[44])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMHIBRegWrite                                                   \
        ((void (*)(unsigned long ulRegAddr,                                   \
                   unsigned long ulValue))ROM_PRCMTABLE[45])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMCameraFreqSet                                                 \
        ((unsigned long (*)(unsigned char ulDivider,                          \
                            unsigned char ulWidth))ROM_PRCMTABLE[46])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMIORetentionEnable                                             \
        ((void (*)(unsigned long ulIORetGrpFlags))ROM_PRCMTABLE[47])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMIORetentionDisable                                            \
        ((void (*)(unsigned long ulIORetGrpFlags))ROM_PRCMTABLE[48])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMDeviceTypeGet                                                 \
        ((unsigned long (*)(void))ROM_PRCMTABLE[49])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMLPDSEnterKeepDebugIf                                          \
        ((void (*)(void))ROM_PRCMTABLE[50])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_PRCMHibernateCycleTrigger                                         \
        ((void (*)(void))ROM_PRCMTABLE[51])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the HWSPINLOCK API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_HwSpinLockAcquire                                                 \
        ((void (*)(uint32_t ui32LockID))ROM_HWSPINLOCKTABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_HwSpinLockTryAcquire                                              \
        ((int32_t (*)(uint32_t ui32LockID,                                    \
                      uint32_t ui32Retry))ROM_HWSPINLOCKTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_HwSpinLockRelease                                                 \
        ((void (*)(uint32_t ui32LockID))ROM_HWSPINLOCKTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_HwSpinLockTest                                                    \
        ((uint32_t (*)(uint32_t ui32LockID,                                   \
                       bool bCurrentStatus))ROM_HWSPINLOCKTABLE[3])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the ADC API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCEnable                                                         \
        ((void (*)(unsigned long ulBase))ROM_ADCTABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCDisable                                                        \
        ((void (*)(unsigned long ulBase))ROM_ADCTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCChannelEnable                                                  \
        ((void (*)(unsigned long ulBase,                                      \
                  unsigned long ulChannel))ROM_ADCTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCChannelDisable                                                 \
        ((void (*)(unsigned long ulBase,                                      \
                  unsigned long ulChannel))ROM_ADCTABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCIntRegister                                                    \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulChannel,                                   \
                   void (*pfnHandler)(void)))ROM_ADCTABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCIntUnregister                                                  \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulChannel))ROM_ADCTABLE[5])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCIntEnable                                                      \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulChannel,                                   \
                   unsigned long ulIntFlags))ROM_ADCTABLE[6])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCIntDisable                                                     \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulChannel,                                   \
                   unsigned long ulIntFlags))ROM_ADCTABLE[7])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCIntStatus                                                      \
        ((unsigned long (*)(unsigned long ulBase,                             \
                           unsigned long ulChannel))ROM_ADCTABLE[8])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCIntClear                                                       \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulChannel,                                   \
                   unsigned long ulIntFlags))ROM_ADCTABLE[9])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCDMAEnable                                                      \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulChannel))ROM_ADCTABLE[10])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCDMADisable                                                     \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulChannel))ROM_ADCTABLE[11])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCTimerConfig                                                    \
        ((void (*)(unsigned long ulBase,                                      \
                   unsigned long ulValue))ROM_ADCTABLE[14])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCTimerEnable                                                    \
        ((void (*)(unsigned long ulBase))ROM_ADCTABLE[15])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCTimerDisable                                                   \
        ((void (*)(unsigned long ulBase))ROM_ADCTABLE[16])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCTimerReset                                                     \
        ((void (*)(unsigned long ulBase))ROM_ADCTABLE[17])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCTimerValueGet                                                  \
        ((unsigned long (*)(unsigned long ulBase))ROM_ADCTABLE[18])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCFIFOLvlGet                                                     \
        ((unsigned char (*)(unsigned long ulBase,                             \
                            unsigned long ulChannel))ROM_ADCTABLE[19])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_ADCFIFORead                                                       \
        ((unsigned long (*)(unsigned long ulBase,                             \
                            unsigned long ulChannel))ROM_ADCTABLE[20])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions in the CPU API.
//
//*****************************************************************************
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CPUcpsid                                                          \
        ((unsigned long (*)(void))ROM_CPUTABLE[0])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CPUcpsie                                                          \
        ((unsigned long (*)(void))ROM_CPUTABLE[1])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CPUprimask                                                        \
        ((unsigned long (*)(void))ROM_CPUTABLE[2])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CPUwfi                                                            \
        ((void (*)(void))ROM_CPUTABLE[3])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CPUbasepriGet                                                     \
        ((unsigned long (*)(void))ROM_CPUTABLE[4])
#endif
#if defined(USE_CC3200_ROM_DRV_API) || \
    defined(USE_CC3220_ROM_DRV_API)
#define ROM_CPUbasepriSet                                                     \
        ((void (*)(unsigned long ulNewBasepri))ROM_CPUTABLE[5])
#endif

//*****************************************************************************
//
// Macros for calling ROM functions Directly.
//
//*****************************************************************************
#define ROM_UtilsDelayDirect                                                  \
        ((void (*)(unsigned long ulCount))ROM_UTILSTABLE[0])
		
#define ROM_PRCMLPDSEnterDirect                                               \
        ((void (*)(void))ROM_PRCMTABLE[13])
		
#define ROM_PRCMLPDSEnterKeepDebugIfDirect                                    \
        ((void (*)(void))ROM_PRCMTABLE[50])
		
#endif // __ROM_H__
