Program Listing for File busctrl.h#

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

#pragma once

#include "../enums/BUSCTRL_PERFSEL0_PERFSEL0.h"
#include "../enums/BUSCTRL_PERFSEL1_PERFSEL1.h"
#include "../enums/BUSCTRL_PERFSEL2_PERFSEL2.h"
#include "../enums/BUSCTRL_PERFSEL3_PERFSEL3.h"
#include "../ifgen/common.h"

namespace RP2040
{

struct [[gnu::packed]] busctrl
{
    /* Constant attributes. */
    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 << 0u);
    }

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

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

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

    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 << 0u);
        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 << 0u);
        curr |= (PROC0 & 0b1u) << 0u;
        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_BUS_PRIORITY_ACK() volatile
    {
        return BUS_PRIORITY_ACK & (1u << 0u);
    }

    inline uint32_t get_PERFCTR0_PERFCTR0() volatile
    {
        return (PERFCTR0 >> 0u) & 0b111111111111111111111111u;
    }

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

        curr &= ~(0b111111111111111111111111u << 0u);
        curr |= (value & 0b111111111111111111111111u) << 0u;

        PERFCTR0 = curr;
    }

    inline BUSCTRL_PERFSEL0_PERFSEL0 get_PERFSEL0_PERFSEL0() volatile
    {
        return BUSCTRL_PERFSEL0_PERFSEL0((PERFSEL0 >> 0u) & 0b11111u);
    }

    inline void set_PERFSEL0_PERFSEL0(BUSCTRL_PERFSEL0_PERFSEL0 value) volatile
    {
        uint32_t curr = PERFSEL0;

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

        PERFSEL0 = curr;
    }

    inline uint32_t get_PERFCTR1_PERFCTR1() volatile
    {
        return (PERFCTR1 >> 0u) & 0b111111111111111111111111u;
    }

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

        curr &= ~(0b111111111111111111111111u << 0u);
        curr |= (value & 0b111111111111111111111111u) << 0u;

        PERFCTR1 = curr;
    }

    inline BUSCTRL_PERFSEL1_PERFSEL1 get_PERFSEL1_PERFSEL1() volatile
    {
        return BUSCTRL_PERFSEL1_PERFSEL1((PERFSEL1 >> 0u) & 0b11111u);
    }

    inline void set_PERFSEL1_PERFSEL1(BUSCTRL_PERFSEL1_PERFSEL1 value) volatile
    {
        uint32_t curr = PERFSEL1;

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

        PERFSEL1 = curr;
    }

    inline uint32_t get_PERFCTR2_PERFCTR2() volatile
    {
        return (PERFCTR2 >> 0u) & 0b111111111111111111111111u;
    }

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

        curr &= ~(0b111111111111111111111111u << 0u);
        curr |= (value & 0b111111111111111111111111u) << 0u;

        PERFCTR2 = curr;
    }

    inline BUSCTRL_PERFSEL2_PERFSEL2 get_PERFSEL2_PERFSEL2() volatile
    {
        return BUSCTRL_PERFSEL2_PERFSEL2((PERFSEL2 >> 0u) & 0b11111u);
    }

    inline void set_PERFSEL2_PERFSEL2(BUSCTRL_PERFSEL2_PERFSEL2 value) volatile
    {
        uint32_t curr = PERFSEL2;

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

        PERFSEL2 = curr;
    }

    inline uint32_t get_PERFCTR3_PERFCTR3() volatile
    {
        return (PERFCTR3 >> 0u) & 0b111111111111111111111111u;
    }

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

        curr &= ~(0b111111111111111111111111u << 0u);
        curr |= (value & 0b111111111111111111111111u) << 0u;

        PERFCTR3 = curr;
    }

    inline BUSCTRL_PERFSEL3_PERFSEL3 get_PERFSEL3_PERFSEL3() volatile
    {
        return BUSCTRL_PERFSEL3_PERFSEL3((PERFSEL3 >> 0u) & 0b11111u);
    }

    inline void set_PERFSEL3_PERFSEL3(BUSCTRL_PERFSEL3_PERFSEL3 value) volatile
    {
        uint32_t curr = PERFSEL3;

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

        PERFSEL3 = curr;
    }
};

static_assert(sizeof(busctrl) == busctrl::size);

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

}; // namespace RP2040