/*
 *  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__
