Program Listing for File timer.h#

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

#pragma once

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

namespace RP2040
{

struct [[gnu::packed]] timer
{
    /* Constant attributes. */
    static constexpr std::size_t size = 68;
    /* Fields. */
    uint32_t TIMEHW;
    uint32_t TIMELW;
    uint32_t TIMEHR;
    uint32_t TIMELR;
    uint32_t
        ALARM0;
    uint32_t
        ALARM1;
    uint32_t
        ALARM2;
    uint32_t
        ALARM3;
    uint32_t ARMED;
    uint32_t TIMERAWH;
    uint32_t TIMERAWL;
    uint32_t DBGPAUSE;
    uint32_t PAUSE;
    uint32_t INTR;
    uint32_t INTE;
    uint32_t INTF;
    const uint32_t INTS =
        {};
    /* Methods. */

    inline uint8_t get_ARMED_ARMED() volatile
    {
        return (ARMED >> 0u) & 0b1111u;
    }

    inline void set_ARMED_ARMED(uint8_t value) volatile
    {
        uint32_t curr = ARMED;

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

        ARMED = curr;
    }

    inline bool get_DBGPAUSE_DBG0() volatile
    {
        return DBGPAUSE & (1u << 1u);
    }

    inline void set_DBGPAUSE_DBG0() volatile
    {
        DBGPAUSE |= 1u << 1u;
    }

    inline void clear_DBGPAUSE_DBG0() volatile
    {
        DBGPAUSE &= ~(1u << 1u);
    }

    inline void toggle_DBGPAUSE_DBG0() volatile
    {
        DBGPAUSE ^= 1u << 1u;
    }

    inline bool get_DBGPAUSE_DBG1() volatile
    {
        return DBGPAUSE & (1u << 2u);
    }

    inline void set_DBGPAUSE_DBG1() volatile
    {
        DBGPAUSE |= 1u << 2u;
    }

    inline void clear_DBGPAUSE_DBG1() volatile
    {
        DBGPAUSE &= ~(1u << 2u);
    }

    inline void toggle_DBGPAUSE_DBG1() volatile
    {
        DBGPAUSE ^= 1u << 2u;
    }

    inline void get_DBGPAUSE(bool &DBG0, bool &DBG1) volatile
    {
        uint32_t curr = DBGPAUSE;

        DBG0 = curr & (1u << 1u);
        DBG1 = curr & (1u << 2u);
    }

    inline void set_DBGPAUSE(bool DBG0, bool DBG1) volatile
    {
        uint32_t curr = DBGPAUSE;

        curr &= ~(0b1u << 1u);
        curr |= (DBG0 & 0b1u) << 1u;
        curr &= ~(0b1u << 2u);
        curr |= (DBG1 & 0b1u) << 2u;

        DBGPAUSE = curr;
    }

    inline bool get_PAUSE_PAUSE() volatile
    {
        return PAUSE & (1u << 0u);
    }

    inline void set_PAUSE_PAUSE() volatile
    {
        PAUSE |= 1u << 0u;
    }

    inline void clear_PAUSE_PAUSE() volatile
    {
        PAUSE &= ~(1u << 0u);
    }

    inline void toggle_PAUSE_PAUSE() volatile
    {
        PAUSE ^= 1u << 0u;
    }

    inline bool get_INTR_ALARM_0() volatile
    {
        return INTR & (1u << 0u);
    }

    inline void set_INTR_ALARM_0() volatile
    {
        INTR |= 1u << 0u;
    }

    inline void clear_INTR_ALARM_0() volatile
    {
        INTR &= ~(1u << 0u);
    }

    inline void toggle_INTR_ALARM_0() volatile
    {
        INTR ^= 1u << 0u;
    }

    inline bool get_INTR_ALARM_1() volatile
    {
        return INTR & (1u << 1u);
    }

    inline void set_INTR_ALARM_1() volatile
    {
        INTR |= 1u << 1u;
    }

    inline void clear_INTR_ALARM_1() volatile
    {
        INTR &= ~(1u << 1u);
    }

    inline void toggle_INTR_ALARM_1() volatile
    {
        INTR ^= 1u << 1u;
    }

    inline bool get_INTR_ALARM_2() volatile
    {
        return INTR & (1u << 2u);
    }

    inline void set_INTR_ALARM_2() volatile
    {
        INTR |= 1u << 2u;
    }

    inline void clear_INTR_ALARM_2() volatile
    {
        INTR &= ~(1u << 2u);
    }

    inline void toggle_INTR_ALARM_2() volatile
    {
        INTR ^= 1u << 2u;
    }

    inline bool get_INTR_ALARM_3() volatile
    {
        return INTR & (1u << 3u);
    }

    inline void set_INTR_ALARM_3() volatile
    {
        INTR |= 1u << 3u;
    }

    inline void clear_INTR_ALARM_3() volatile
    {
        INTR &= ~(1u << 3u);
    }

    inline void toggle_INTR_ALARM_3() volatile
    {
        INTR ^= 1u << 3u;
    }

    inline void get_INTR(bool &ALARM_0, bool &ALARM_1, bool &ALARM_2,
                         bool &ALARM_3) volatile
    {
        uint32_t curr = INTR;

        ALARM_0 = curr & (1u << 0u);
        ALARM_1 = curr & (1u << 1u);
        ALARM_2 = curr & (1u << 2u);
        ALARM_3 = curr & (1u << 3u);
    }

    inline void set_INTR(bool ALARM_0, bool ALARM_1, bool ALARM_2,
                         bool ALARM_3) volatile
    {
        uint32_t curr = INTR;

        curr &= ~(0b1u << 0u);
        curr |= (ALARM_0 & 0b1u) << 0u;
        curr &= ~(0b1u << 1u);
        curr |= (ALARM_1 & 0b1u) << 1u;
        curr &= ~(0b1u << 2u);
        curr |= (ALARM_2 & 0b1u) << 2u;
        curr &= ~(0b1u << 3u);
        curr |= (ALARM_3 & 0b1u) << 3u;

        INTR = curr;
    }

    inline bool get_INTE_ALARM_0() volatile
    {
        return INTE & (1u << 0u);
    }

    inline void set_INTE_ALARM_0() volatile
    {
        INTE |= 1u << 0u;
    }

    inline void clear_INTE_ALARM_0() volatile
    {
        INTE &= ~(1u << 0u);
    }

    inline void toggle_INTE_ALARM_0() volatile
    {
        INTE ^= 1u << 0u;
    }

    inline bool get_INTE_ALARM_1() volatile
    {
        return INTE & (1u << 1u);
    }

    inline void set_INTE_ALARM_1() volatile
    {
        INTE |= 1u << 1u;
    }

    inline void clear_INTE_ALARM_1() volatile
    {
        INTE &= ~(1u << 1u);
    }

    inline void toggle_INTE_ALARM_1() volatile
    {
        INTE ^= 1u << 1u;
    }

    inline bool get_INTE_ALARM_2() volatile
    {
        return INTE & (1u << 2u);
    }

    inline void set_INTE_ALARM_2() volatile
    {
        INTE |= 1u << 2u;
    }

    inline void clear_INTE_ALARM_2() volatile
    {
        INTE &= ~(1u << 2u);
    }

    inline void toggle_INTE_ALARM_2() volatile
    {
        INTE ^= 1u << 2u;
    }

    inline bool get_INTE_ALARM_3() volatile
    {
        return INTE & (1u << 3u);
    }

    inline void set_INTE_ALARM_3() volatile
    {
        INTE |= 1u << 3u;
    }

    inline void clear_INTE_ALARM_3() volatile
    {
        INTE &= ~(1u << 3u);
    }

    inline void toggle_INTE_ALARM_3() volatile
    {
        INTE ^= 1u << 3u;
    }

    inline void get_INTE(bool &ALARM_0, bool &ALARM_1, bool &ALARM_2,
                         bool &ALARM_3) volatile
    {
        uint32_t curr = INTE;

        ALARM_0 = curr & (1u << 0u);
        ALARM_1 = curr & (1u << 1u);
        ALARM_2 = curr & (1u << 2u);
        ALARM_3 = curr & (1u << 3u);
    }

    inline void set_INTE(bool ALARM_0, bool ALARM_1, bool ALARM_2,
                         bool ALARM_3) volatile
    {
        uint32_t curr = INTE;

        curr &= ~(0b1u << 0u);
        curr |= (ALARM_0 & 0b1u) << 0u;
        curr &= ~(0b1u << 1u);
        curr |= (ALARM_1 & 0b1u) << 1u;
        curr &= ~(0b1u << 2u);
        curr |= (ALARM_2 & 0b1u) << 2u;
        curr &= ~(0b1u << 3u);
        curr |= (ALARM_3 & 0b1u) << 3u;

        INTE = curr;
    }

    inline bool get_INTF_ALARM_0() volatile
    {
        return INTF & (1u << 0u);
    }

    inline void set_INTF_ALARM_0() volatile
    {
        INTF |= 1u << 0u;
    }

    inline void clear_INTF_ALARM_0() volatile
    {
        INTF &= ~(1u << 0u);
    }

    inline void toggle_INTF_ALARM_0() volatile
    {
        INTF ^= 1u << 0u;
    }

    inline bool get_INTF_ALARM_1() volatile
    {
        return INTF & (1u << 1u);
    }

    inline void set_INTF_ALARM_1() volatile
    {
        INTF |= 1u << 1u;
    }

    inline void clear_INTF_ALARM_1() volatile
    {
        INTF &= ~(1u << 1u);
    }

    inline void toggle_INTF_ALARM_1() volatile
    {
        INTF ^= 1u << 1u;
    }

    inline bool get_INTF_ALARM_2() volatile
    {
        return INTF & (1u << 2u);
    }

    inline void set_INTF_ALARM_2() volatile
    {
        INTF |= 1u << 2u;
    }

    inline void clear_INTF_ALARM_2() volatile
    {
        INTF &= ~(1u << 2u);
    }

    inline void toggle_INTF_ALARM_2() volatile
    {
        INTF ^= 1u << 2u;
    }

    inline bool get_INTF_ALARM_3() volatile
    {
        return INTF & (1u << 3u);
    }

    inline void set_INTF_ALARM_3() volatile
    {
        INTF |= 1u << 3u;
    }

    inline void clear_INTF_ALARM_3() volatile
    {
        INTF &= ~(1u << 3u);
    }

    inline void toggle_INTF_ALARM_3() volatile
    {
        INTF ^= 1u << 3u;
    }

    inline void get_INTF(bool &ALARM_0, bool &ALARM_1, bool &ALARM_2,
                         bool &ALARM_3) volatile
    {
        uint32_t curr = INTF;

        ALARM_0 = curr & (1u << 0u);
        ALARM_1 = curr & (1u << 1u);
        ALARM_2 = curr & (1u << 2u);
        ALARM_3 = curr & (1u << 3u);
    }

    inline void set_INTF(bool ALARM_0, bool ALARM_1, bool ALARM_2,
                         bool ALARM_3) volatile
    {
        uint32_t curr = INTF;

        curr &= ~(0b1u << 0u);
        curr |= (ALARM_0 & 0b1u) << 0u;
        curr &= ~(0b1u << 1u);
        curr |= (ALARM_1 & 0b1u) << 1u;
        curr &= ~(0b1u << 2u);
        curr |= (ALARM_2 & 0b1u) << 2u;
        curr &= ~(0b1u << 3u);
        curr |= (ALARM_3 & 0b1u) << 3u;

        INTF = curr;
    }

    inline bool get_INTS_ALARM_0() volatile
    {
        return INTS & (1u << 0u);
    }

    inline bool get_INTS_ALARM_1() volatile
    {
        return INTS & (1u << 1u);
    }

    inline bool get_INTS_ALARM_2() volatile
    {
        return INTS & (1u << 2u);
    }

    inline bool get_INTS_ALARM_3() volatile
    {
        return INTS & (1u << 3u);
    }

    inline void get_INTS(bool &ALARM_0, bool &ALARM_1, bool &ALARM_2,
                         bool &ALARM_3) volatile
    {
        uint32_t curr = INTS;

        ALARM_0 = curr & (1u << 0u);
        ALARM_1 = curr & (1u << 1u);
        ALARM_2 = curr & (1u << 2u);
        ALARM_3 = curr & (1u << 3u);
    }
};

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

static volatile timer *const TIMER = reinterpret_cast<timer *>(0x40054000);

}; // namespace RP2040