/*
 *  Copyright (C) 2016 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_CC3220_ROM_DRV_API)
#define ROM_CPUcpsid                                                          \
        ((unsigned long (*)(void))ROM_CPUTABLE[0])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_CPUcpsie                                                          \
        ((unsigned long (*)(void))ROM_CPUTABLE[1])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_CPUprimask                                                        \
        ((unsigned long (*)(void))ROM_CPUTABLE[2])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_CPUwfi                                                            \
        ((void (*)(void))ROM_CPUTABLE[3])
#endif
#if defined(USE_CC3220_ROM_DRV_API)
#define ROM_CPUbasepriGet                                                     \
        ((unsigned long (*)(void))ROM_CPUTABLE[4])
#endif
#if 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__
