Program Listing for File busctrl.h

Program Listing for File busctrl.h#

Return to documentation for file (src/generated/structs/busctrl.h)

#pragma once
#ifndef RP2040_STRUCTS_BUSCTRL_H
#define RP2040_STRUCTS_BUSCTRL_H

#include "../enums/BUSCTRL_PERFSEL.h"
#include "../ifgen/common.h"

namespace RP2040
{

struct busctrl
{
    /* Constant attributes. */
    static constexpr struct_id_t id = 3;
    static constexpr std::size_t size = 40;
    /* Fields. */
    uint32_t BUS_PRIORITY;
    const uint32_t BUS_PRIORITY_ACK =
        {};
    uint32_t PERFCTR0;
    uint32_t PERFSEL0;
    uint32_t PERFCTR1;
    uint32_t PERFSEL1;
    uint32_t PERFCTR2;
    uint32_t PERFSEL2;
    uint32_t PERFCTR3;
    uint32_t PERFSEL3;
    /* Methods. */

    inline bool get_BUS_PRIORITY_PROC0() volatile
    {
        return BUS_PRIORITY & 1u;
    }

    inline void set_BUS_PRIORITY_PROC0() volatile
    {
        BUS_PRIORITY |= 1u;
    }

    inline void clear_BUS_PRIORITY_PROC0() volatile
    {
        BUS_PRIORITY &= ~(1u);
    }

    inline void toggle_BUS_PRIORITY_PROC0() volatile
    {
        BUS_PRIORITY ^= 1u;
    }

    inline bool get_BUS_PRIORITY_PROC1() volatile
    {
        return BUS_PRIORITY & (1u << 4u);
    }

    inline void set_BUS_PRIORITY_PROC1() volatile
    {
        BUS_PRIORITY |= 1u << 4u;
    }

    inline void clear_BUS_PRIORITY_PROC1() volatile
    {
        BUS_PRIORITY &= ~(1u << 4u);
    }

    inline void toggle_BUS_PRIORITY_PROC1() volatile
    {
        BUS_PRIORITY ^= 1u << 4u;
    }

    inline bool get_BUS_PRIORITY_DMA_R() volatile
    {
        return BUS_PRIORITY & (1u << 8u);
    }

    inline void set_BUS_PRIORITY_DMA_R() volatile
    {
        BUS_PRIORITY |= 1u << 8u;
    }

    inline void clear_BUS_PRIORITY_DMA_R() volatile
    {
        BUS_PRIORITY &= ~(1u << 8u);
    }

    inline void toggle_BUS_PRIORITY_DMA_R() volatile
    {
        BUS_PRIORITY ^= 1u << 8u;
    }

    inline bool get_BUS_PRIORITY_DMA_W() volatile
    {
        return BUS_PRIORITY & (1u << 12u);
    }

    inline void set_BUS_PRIORITY_DMA_W() volatile
    {
        BUS_PRIORITY |= 1u << 12u;
    }

    inline void clear_BUS_PRIORITY_DMA_W() volatile
    {
        BUS_PRIORITY &= ~(1u << 12u);
    }

    inline void toggle_BUS_PRIORITY_DMA_W() volatile
    {
        BUS_PRIORITY ^= 1u << 12u;
    }

    inline void get_BUS_PRIORITY(bool &PROC0, bool &PROC1, bool &DMA_R,
                                 bool &DMA_W) volatile
    {
        uint32_t curr = BUS_PRIORITY;

        PROC0 = curr & 1u;
        PROC1 = curr & (1u << 4u);
        DMA_R = curr & (1u << 8u);
        DMA_W = curr & (1u << 12u);
    }

    inline void set_BUS_PRIORITY(bool PROC0, bool PROC1, bool DMA_R,
                                 bool DMA_W) volatile
    {
        uint32_t curr = BUS_PRIORITY;

        curr &= ~(0b1u);
        curr |= (PROC0 & 0b1u);
        curr &= ~(0b1u << 4u);
        curr |= (PROC1 & 0b1u) << 4u;
        curr &= ~(0b1u << 8u);
        curr |= (DMA_R & 0b1u) << 8u;
        curr &= ~(0b1u << 12u);
        curr |= (DMA_W & 0b1u) << 12u;

        BUS_PRIORITY = curr;
    }

    inline bool get_BUS_PRIORITY_ACK() volatile
    {
        return BUS_PRIORITY_ACK & 1u;
    }

    inline uint32_t get_PERFCTR0() volatile
    {
        return PERFCTR0 & 0xffffffu;
    }

    inline void set_PERFCTR0(uint32_t value) volatile
    {
        uint32_t curr = PERFCTR0;

        curr &= ~(0xffffffu);
        curr |= (value & 0xffffffu);

        PERFCTR0 = curr;
    }

    inline BUSCTRL_PERFSEL get_PERFSEL0() volatile
    {
        return BUSCTRL_PERFSEL(PERFSEL0 & 0b11111u);
    }

    inline void set_PERFSEL0(BUSCTRL_PERFSEL value) volatile
    {
        uint32_t curr = PERFSEL0;

        curr &= ~(0b11111u);
        curr |= (std::to_underlying(value) & 0b11111u);

        PERFSEL0 = curr;
    }

    inline uint32_t get_PERFCTR1() volatile
    {
        return PERFCTR1 & 0xffffffu;
    }

    inline void set_PERFCTR1(uint32_t value) volatile
    {
        uint32_t curr = PERFCTR1;

        curr &= ~(0xffffffu);
        curr |= (value & 0xffffffu);

        PERFCTR1 = curr;
    }

    inline BUSCTRL_PERFSEL get_PERFSEL1() volatile
    {
        return BUSCTRL_PERFSEL(PERFSEL1 & 0b11111u);
    }

    inline void set_PERFSEL1(BUSCTRL_PERFSEL value) volatile
    {
        uint32_t curr = PERFSEL1;

        curr &= ~(0b11111u);
        curr |= (std::to_underlying(value) & 0b11111u);

        PERFSEL1 = curr;
    }

    inline uint32_t get_PERFCTR2() volatile
    {
        return PERFCTR2 & 0xffffffu;
    }

    inline void set_PERFCTR2(uint32_t value) volatile
    {
        uint32_t curr = PERFCTR2;

        curr &= ~(0xffffffu);
        curr |= (value & 0xffffffu);

        PERFCTR2 = curr;
    }

    inline BUSCTRL_PERFSEL get_PERFSEL2() volatile
    {
        return BUSCTRL_PERFSEL(PERFSEL2 & 0b11111u);
    }

    inline void set_PERFSEL2(BUSCTRL_PERFSEL value) volatile
    {
        uint32_t curr = PERFSEL2;

        curr &= ~(0b11111u);
        curr |= (std::to_underlying(value) & 0b11111u);

        PERFSEL2 = curr;
    }

    inline uint32_t get_PERFCTR3() volatile
    {
        return PERFCTR3 & 0xffffffu;
    }

    inline void set_PERFCTR3(uint32_t value) volatile
    {
        uint32_t curr = PERFCTR3;

        curr &= ~(0xffffffu);
        curr |= (value & 0xffffffu);

        PERFCTR3 = curr;
    }

    inline BUSCTRL_PERFSEL get_PERFSEL3() volatile
    {
        return BUSCTRL_PERFSEL(PERFSEL3 & 0b11111u);
    }

    inline void set_PERFSEL3(BUSCTRL_PERFSEL value) volatile
    {
        uint32_t curr = PERFSEL3;

        curr &= ~(0b11111u);
        curr |= (std::to_underlying(value) & 0b11111u);

        PERFSEL3 = curr;
    }
};

static_assert(sizeof(busctrl) == busctrl::size);
static_assert(ifgen_struct<busctrl>);

static volatile busctrl *const BUSCTRL =
    reinterpret_cast<busctrl *>(0x40030000);

}; // namespace RP2040

#endif