//////////////////////////////////////////////////////////////////////////////// /// /// @file bcm5719_TXMBUF.h /// /// @project bcm5719 /// /// @brief bcm5719_TXMBUF /// //////////////////////////////////////////////////////////////////////////////// /// //////////////////////////////////////////////////////////////////////////////// /// /// @copyright Copyright (c) 2018, Evan Lojewski /// @cond /// /// All rights reserved. /// /// Redistribution and use in source and binary forms, with or without /// modification, are permitted provided that the following conditions are met: /// 1. Redistributions of source code must retain the above copyright notice, /// this list of conditions and the following disclaimer. /// 2. 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. /// 3. Neither the name of the 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 HOLDER 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. /// @endcond //////////////////////////////////////////////////////////////////////////////// /** @defgroup BCM5719_TXMBUF_H bcm5719_TXMBUF */ /** @addtogroup BCM5719_TXMBUF_H * @{ */ #ifndef BCM5719_TXMBUF_H #define BCM5719_TXMBUF_H #include #ifdef CXX_SIMULATOR /* Compiling c++ simulator code - uses register wrappers */ void init_bcm5719_TXMBUF_mmap(void* base); void init_bcm5719_TXMBUF(void); #include typedef CXXRegister BCM5719_TXMBUF_H_uint8_t; typedef CXXRegister BCM5719_TXMBUF_H_uint16_t; typedef CXXRegister BCM5719_TXMBUF_H_uint32_t; #define BCM5719_TXMBUF_H_uint8_t_bitfield(__pos__, __width__) CXXRegister #define BCM5719_TXMBUF_H_uint16_t_bitfield(__pos__, __width__) CXXRegister #define BCM5719_TXMBUF_H_uint32_t_bitfield(__pos__, __width__) CXXRegister #define register_container struct #define volatile #define BITFIELD_BEGIN(__type__, __name__) struct { #define BITFIELD_MEMBER(__type__, __name__, __offset__, __bits__) __type__##_bitfield(__offset__, __bits__) __name__; #define BITFIELD_END(__type__, __name__) } __name__; #else /* Firmware Data types */ typedef uint8_t BCM5719_TXMBUF_H_uint8_t; typedef uint16_t BCM5719_TXMBUF_H_uint16_t; typedef uint32_t BCM5719_TXMBUF_H_uint32_t; #define register_container union #define BITFIELD_BEGIN(__type__, __name__) struct { #define BITFIELD_MEMBER(__type__, __name__, __offset__, __bits__) __type__ __name__:__bits__; #define BITFIELD_END(__type__, __name__) } __name__; #endif /* !CXX_SIMULATOR */ #define REG_TXMBUF_BASE ((volatile void*)0x2c800) /* TX MBuf */ #define REG_TXMBUF_SIZE (0x7400) /** @brief Component definition for @ref TXMBUF. */ typedef struct { #ifdef CXX_SIMULATOR typedef uint32_t (*read_callback_t)(uint32_t, void*); read_callback_t mIndexReadCallback; void* mIndexReadCallbackArgs; typedef void (*write_callback_t)(uint32_t, uint32_t value, void*); write_callback_t mIndexWriteCallback; void* mIndexWriteCallbackArgs; uint32_t read(int index) { return mIndexReadCallback(index, mIndexReadCallbackArgs); } void write(int index, uint32_t value) { mIndexWriteCallback(index, value, mIndexWriteCallbackArgs); } #endif /* CXX_SIMULATOR */ } TXMBUF_t; /** @brief TX MBuf */ extern volatile TXMBUF_t TXMBUF; #ifdef CXX_SIMULATOR /* Compiling c++ code - uses register wrappers */ #undef volatile #endif /* CXX_SIMULATOR */ #undef register_container #undef BITFIELD_BEGIN #undef BITFIELD_MEMBER #undef BITFIELD_END #endif /* !BCM5719_TXMBUF_H */ /** @} */