ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_poeg.h
Go to the documentation of this file.
1
36
37#pragma once
38
39#ifdef __cplusplus
40extern "C" {
41#endif
42
43#include <stdint.h>
44
45#include "ra8_err.h"
46
47/* =============================================================================
48 * Types
49 * =============================================================================
50 */
51
56typedef enum : uint32_t {
57 k_ra8_poeg_status_none = 0x00000000UL,
58 k_ra8_poeg_status_pidf = 0x00000001UL,
59 k_ra8_poeg_status_iocf = 0x00000002UL,
60 k_ra8_poeg_status_ovrf = 0x00000004UL,
61 k_ra8_poeg_status_ssf = 0x00000008UL,
62 k_ra8_poeg_status_st = 0x00010000UL,
64
69typedef enum : uint32_t {
70 k_ra8_poeg_en_pide = 0x00000100UL,
71 k_ra8_poeg_en_iocen = 0x00000200UL,
72 k_ra8_poeg_en_osten = 0x00000400UL,
73 k_ra8_poeg_en_inv = 0x00001000UL,
75
85typedef struct {
91
98typedef void (*ra8_poeg_event_fn_t)(void* ctx, uint32_t status_mask);
99
100/* =============================================================================
101 * Lifecycle
102 * =============================================================================
103 */
104
118[[nodiscard]] ra8_err_t ra8_poeg_init(uint8_t group, const ra8_poeg_cfg_t* cfg);
119
127[[nodiscard]] ra8_err_t ra8_poeg_deinit(uint8_t group);
128
129/* =============================================================================
130 * Runtime controls
131 * =============================================================================
132 */
133
144[[nodiscard]] ra8_err_t ra8_poeg_trigger_stop(uint8_t group);
145
146/* =============================================================================
147 * Status
148 * =============================================================================
149 */
150
158[[nodiscard]] ra8_err_t ra8_poeg_get_status(uint8_t group, uint32_t* out_mask);
159
167[[nodiscard]] ra8_err_t ra8_poeg_clear_status(uint8_t group, uint32_t mask);
168
169/* =============================================================================
170 * Interrupt path
171 * =============================================================================
172 */
173
182[[nodiscard]] ra8_err_t ra8_poeg_attach_handler(uint8_t group, ra8_poeg_event_fn_t fn, void* ctx);
183
184/* =============================================================================
185 * Power transition
186 * =============================================================================
187 */
188
193[[nodiscard]] ra8_err_t ra8_poeg_enter_stop(uint8_t group);
194
199[[nodiscard]] ra8_err_t ra8_poeg_exit_stop(uint8_t group);
200
201/* =============================================================================
202 * ISR dispatch
203 * =============================================================================
204 */
205
226void ra8_poeg_dispatch(uint8_t group);
227
228#ifdef __cplusplus
229}
230#endif
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Definition ra8_err.h:546
ra8_err_t ra8_poeg_trigger_stop(uint8_t group)
Trigger an emergency stop via POEGG.SSF (software).
Definition ra8_poeg.c:202
ra8_err_t ra8_poeg_exit_stop(uint8_t group)
Exit MSTP-gated stop.
Definition ra8_poeg.c:371
ra8_err_t ra8_poeg_get_status(uint8_t group, uint32_t *out_mask)
Read POEGG status flag bits.
Definition ra8_poeg.c:236
ra8_err_t ra8_poeg_init(uint8_t group, const ra8_poeg_cfg_t *cfg)
Initialise a POEG group with a configuration descriptor.
Definition ra8_poeg.c:126
void ra8_poeg_dispatch(uint8_t group)
Dispatch POEG event – snapshot status + fire callback.
Definition ra8_poeg.c:400
void(* ra8_poeg_event_fn_t)(void *ctx, uint32_t status_mask)
POEG IRQ callback.
Definition ra8_poeg.h:98
ra8_err_t ra8_poeg_deinit(uint8_t group)
Tear down a POEG group.
Definition ra8_poeg.c:167
ra8_poeg_enable_mask_t
POEGG enable bit fields.
Definition ra8_poeg.h:69
@ k_ra8_poeg_en_inv
POEGG.INV input invert.
Definition ra8_poeg.h:73
@ k_ra8_poeg_en_iocen
POEGG.IOCE output short.
Definition ra8_poeg.h:71
@ k_ra8_poeg_en_osten
POEGG.OSTPE osc stop.
Definition ra8_poeg.h:72
@ k_ra8_poeg_en_pide
POEGG.PIDE input detect.
Definition ra8_poeg.h:70
ra8_err_t ra8_poeg_attach_handler(uint8_t group, ra8_poeg_event_fn_t fn, void *ctx)
Attach a POEG event callback.
Definition ra8_poeg.c:305
ra8_err_t ra8_poeg_clear_status(uint8_t group, uint32_t mask)
Clear one or more POEGG status flag bits.
Definition ra8_poeg.c:270
ra8_err_t ra8_poeg_enter_stop(uint8_t group)
Put a group into MSTP-gated stop.
Definition ra8_poeg.c:339
ra8_poeg_status_mask_t
POEGG status / enable bit masks (HUM Ch 21.2.1).
Definition ra8_poeg.h:56
@ k_ra8_poeg_status_ovrf
POEGG.OSTPF Osc Stop.
Definition ra8_poeg.h:60
@ k_ra8_poeg_status_st
POEGG.ST state.
Definition ra8_poeg.h:62
@ k_ra8_poeg_status_none
RA8 poeg status none.
Definition ra8_poeg.h:57
@ k_ra8_poeg_status_ssf
POEGG.SSF Software.
Definition ra8_poeg.h:61
@ k_ra8_poeg_status_pidf
POEGG.PIDF Port Input.
Definition ra8_poeg.h:58
@ k_ra8_poeg_status_iocf
POEGG.IOCF Output Short.
Definition ra8_poeg.h:59
Configuration descriptor for ra8_poeg_init.
Definition ra8_poeg.h:85
bool enable_ioc
True -> enable output short detect.
Definition ra8_poeg.h:87
bool enable_pin
True -> enable external PIDE input.
Definition ra8_poeg.h:86
bool invert_input
True -> invert PIDE input polarity.
Definition ra8_poeg.h:89
bool enable_osc_stop
True -> enable osc stop detect.
Definition ra8_poeg.h:88