ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_app.c File Reference

Implementation of the ra8_app app framework (#146). More...

#include "ra8_app.h"
#include "ra8_attributes.h"
#include "ra8_check.h"
Include dependency graph for ra8_app.c:

Go to the source code of this file.

Functions

ra8_err_t ra8_app_registry_init (ra8_app_registry_t *reg, ra8_app_t **storage, uint16_t cap)
 Bind a registry to caller-owned pointer storage (empty, no focus).
ra8_err_t ra8_app_find (const ra8_app_registry_t *reg, uint16_t id, int16_t *out_idx)
 Find a registered app's index by id.
ra8_err_t ra8_app_register (ra8_app_registry_t *reg, ra8_app_t *app)
 Register an app (calls its init once) and add it to the registry.
ra8_err_t ra8_app_launch (ra8_app_registry_t *reg, uint16_t id)
 Launch (focus) the app with id, running the focus lifecycle.
ra8_err_t ra8_app_active (const ra8_app_registry_t *reg, ra8_app_t **out_app)
 Get the currently focused app.
ra8_err_t ra8_app_route_input (ra8_app_registry_t *reg, const ra8_widget_event_t *ev, bool *out_handled)
 Route an input event to the focused app.
ra8_err_t ra8_app_tick (ra8_app_registry_t *reg)
 Run the focused app's per-frame tick (no-op if none / NULL).
ra8_err_t ra8_app_render (ra8_app_registry_t *reg)
 Run the focused app's render (on-target; no-op if none / NULL).
ra8_err_t ra8_app_count (const ra8_app_registry_t *reg, uint16_t *out_count)
 Number of registered apps (for the launcher to list).
ra8_err_t ra8_app_at (const ra8_app_registry_t *reg, uint16_t idx, ra8_app_t **out_app)
 Get the app at registry index idx (launcher enumeration).
ra8_err_t ra8_app_nav_init (ra8_app_nav_t *nav, ra8_app_registry_t *reg, uint16_t *storage, uint16_t cap)
 Bind a navigation back-stack to a registry + caller-owned storage.
ra8_err_t ra8_app_nav_go (ra8_app_nav_t *nav, uint16_t id)
 Focus app id, pushing the outgoing app onto the back-stack.
ra8_err_t ra8_app_nav_go_index (ra8_app_nav_t *nav, uint16_t idx)
 Focus the app at registry index idx (launcher select-by-position).
ra8_err_t ra8_app_nav_back (ra8_app_nav_t *nav, bool *out_popped)
 Return to the most recently pushed app (pop the back-stack).
ra8_err_t ra8_app_nav_depth (const ra8_app_nav_t *nav, uint16_t *out_depth)
 Current back-stack depth (apps the user can still go back through).
ra8_err_t ra8_app_state (const ra8_app_registry_t *reg, uint16_t id, ra8_app_state_t *out_state)
 Report an app's lifecycle state, derived from the registry.
static void internal_app_remove_at (ra8_app_registry_t *reg, uint16_t idx)
 Remove the registry slot at idx and compact the table down one place.
ra8_err_t ra8_app_uninstall (ra8_app_registry_t *reg, uint16_t id)
 Uninstall (unmount) a removable, non-focused app from the registry.

Variables

static const char * s_tag = "ra8_app"
 Logging / check tag.

Detailed Description

Implementation of the ra8_app app framework (#146).

Manages a caller-owned application registry and dispatches bounded lifecycle transitions without allocation or hidden global ownership.

Definition in file ra8_app.c.

Function Documentation

◆ internal_app_remove_at()

void internal_app_remove_at ( ra8_app_registry_t * reg,
uint16_t idx )
static

Remove the registry slot at idx and compact the table down one place.

Shifts every slot after idx down by one (a forward sweep bounded by reg->count, NASA Rule 2, mirroring ra8_app_find), decrements count, and – if the focused app sat after the removed slot – decrements active so it keeps pointing at the same app. Factored out of ra8_app_uninstall so that function stays within the size budget; the caller has already validated idx and run the outgoing app's teardown.

Parameters
[in,out]regRegistry to compact (non-NULL; checked by the caller).
[in]idxSlot to remove, in [0, reg->count) and not the focused app.
Precondition
reg is non-NULL and idx < reg->count.
idx != reg->active (the caller refuses to remove the focused app).
Postcondition
reg->count shrank by one and slot idx is overwritten.
reg->active still indexes the same app (adjusted if it shifted).
Note
Not thread-safe.
Since
0.1.0

Definition at line 318 of file ra8_app.c.

References ra8_app_registry_t::active, ra8_app_registry_t::apps, ra8_app_registry_t::count, and RA8_INTERNAL.

Referenced by ra8_app_uninstall().

◆ ra8_app_active()

ra8_err_t ra8_app_active ( const ra8_app_registry_t * reg,
ra8_app_t ** out_app )
nodiscard

Get the currently focused app.

Parameters
[in]regRegistry.
[out]out_appReceives the active app pointer, or NULL if none.
Returns
ra8_err_t
Return values
k_ra8_okReported (see *out_app).
k_ra8_err_null_ptrreg or out_app is NULL.
Precondition
reg and out_app non-NULL.
Postcondition
*out_app == NULL iff no app is focused.
Note
Pure read; not thread-safe vs concurrent mutation.
Since
0.1.0

Definition at line 115 of file ra8_app.c.

References ra8_app_registry_t::active, ra8_app_registry_t::apps, k_ra8_app_none, k_ra8_ok, RA8_CHECK_NULL_PTR, and s_tag.

Referenced by app_launch_selfcheck(), app_shell_selfcheck(), ra8_app_nav_go(), wd_active_name(), and wd_service_request().

◆ ra8_app_at()

ra8_err_t ra8_app_at ( const ra8_app_registry_t * reg,
uint16_t idx,
ra8_app_t ** out_app )
nodiscard

Get the app at registry index idx (launcher enumeration).

Parameters
[in]regRegistry.
[in]idxIndex in [0, count).
[out]out_appReceives the app pointer.
Returns
ra8_err_t
Return values
k_ra8_okReported.
k_ra8_err_null_ptrreg or out_app is NULL.
k_ra8_err_out_of_rangeidx >= count.
Precondition
reg and out_app non-NULL.
Postcondition
On success *out_app is reg->apps[idx].
Note
Pure read.
Since
0.1.0

Definition at line 174 of file ra8_app.c.

References ra8_app_registry_t::apps, ra8_app_registry_t::count, k_ra8_err_out_of_range, k_ra8_ok, RA8_CHECK_NULL_PTR, and s_tag.

Referenced by app_shell_log_menu(), ra8_app_nav_go_index(), wd_neighbor_id(), wd_tabbar_on_input(), and wd_tabbar_render().

◆ ra8_app_count()

ra8_err_t ra8_app_count ( const ra8_app_registry_t * reg,
uint16_t * out_count )
nodiscard

Number of registered apps (for the launcher to list).

Parameters
[in]regRegistry.
[out]out_countReceives reg->count.
Returns
ra8_err_t k_ra8_ok, or k_ra8_err_null_ptr.
Precondition
reg and out_count non-NULL.
Postcondition
*out_count == reg->count.
Note
Pure read.
Since
0.1.0

Definition at line 166 of file ra8_app.c.

References ra8_app_registry_t::count, k_ra8_ok, RA8_CHECK_NULL_PTR, and s_tag.

Referenced by app_launch_banner(), app_shell_banner(), app_shell_log_menu(), app_shell_uninstall_demo(), wd_check_touch_dispatch(), wd_neighbor_id(), wd_print_banner(), wd_tabbar_on_input(), and wd_tabbar_render().

◆ ra8_app_find()

ra8_err_t ra8_app_find ( const ra8_app_registry_t * reg,
uint16_t id,
int16_t * out_idx )
nodiscard

Find a registered app's index by id.

Parameters
[in]regRegistry.
[in]idApp id to find.
[out]out_idxReceives the index in [0, count), or k_ra8_app_none.
Returns
ra8_err_t
Return values
k_ra8_okSearch done (see *out_idx).
k_ra8_err_null_ptrreg or out_idx is NULL.
Precondition
reg and out_idx non-NULL.
Postcondition
*out_idx == k_ra8_app_none iff no app has id.
Note
Pure; not thread-safe vs concurrent mutation.
Since
0.1.0

Definition at line 34 of file ra8_app.c.

References ra8_app_registry_t::apps, ra8_app_registry_t::count, ra8_app::id, k_ra8_app_none, k_ra8_ok, RA8_CHECK_NULL_PTR, and s_tag.

Referenced by ra8_app_launch(), ra8_app_register(), ra8_app_state(), and ra8_app_uninstall().

◆ ra8_app_launch()

ra8_err_t ra8_app_launch ( ra8_app_registry_t * reg,
uint16_t id )
nodiscard

Launch (focus) the app with id, running the focus lifecycle.

If a different app is focused, its on_leave runs first; then the target becomes active and its on_enter runs. Launching the already-active app is an idempotent no-op (no lifecycle calls) so a re-tap on the current app does not flicker.

Parameters
[in,out]regRegistry.
[in]idApp id to focus.
Returns
ra8_err_t
Return values
k_ra8_okFocused (or already focused).
k_ra8_err_null_ptrreg is NULL.
k_ra8_err_not_foundNo app has id.
Precondition
reg non-NULL.
Postcondition
On success reg->active indexes the app whose id is id.
Note
Not thread-safe.
Since
0.1.0

Definition at line 78 of file ra8_app.c.

References ra8_app_registry_t::active, ra8_app_registry_t::apps, k_ra8_app_none, k_ra8_err_not_found, k_ra8_ok, ra8_app_find(), RA8_CHECK_NULL_PTR, and s_tag.

Referenced by er_render_current(), er_render_nag_region(), main(), ra8_app_nav_back(), ra8_app_nav_go(), wa_run_two_apps(), wd_selfcheck(), and wd_service_request().

◆ ra8_app_nav_back()

ra8_err_t ra8_app_nav_back ( ra8_app_nav_t * nav,
bool * out_popped )
nodiscard

Return to the most recently pushed app (pop the back-stack).

Pops the top of the back-stack and focuses that app through ra8_app_launch, firing the focus lifecycle. An empty back-stack is not an error – it reports *out_popped == false so a chrome can decide what "back" means at the root (exit, no-op, etc.). The pop is committed only after the launch succeeds.

Parameters
[in,out]navNavigation state.
[out]out_poppedReceives true if an app was popped + focused.
Returns
ra8_err_t
Return values
k_ra8_okDone (see out_popped); false at the root.
k_ra8_err_null_ptrnav, nav->reg, or out_popped is NULL.
k_ra8_err_not_foundThe popped id is no longer registered.
Precondition
nav, nav->reg, and out_popped non-NULL.
Postcondition
On *out_popped == true the registry's active app is the popped id and nav->depth shrank by one; otherwise both are unchanged.
Note
Not thread-safe.
See also
ra8_app_nav_go
Since
0.1.0

Definition at line 251 of file ra8_app.c.

References ra8_app_nav_t::depth, k_ra8_ok, ra8_app_launch(), RA8_CHECK_NULL_PTR, ra8_app_nav_t::reg, s_tag, and ra8_app_nav_t::stack.

Referenced by app_launch_switch_and_back(), app_shell_back_to_root(), and app_shell_settings_round_trip().

◆ ra8_app_nav_depth()

ra8_err_t ra8_app_nav_depth ( const ra8_app_nav_t * nav,
uint16_t * out_depth )
nodiscard

Current back-stack depth (apps the user can still go back through).

Parameters
[in]navNavigation state.
[out]out_depthReceives nav->depth.
Returns
ra8_err_t
Return values
k_ra8_okReported.
k_ra8_err_null_ptrnav or out_depth is NULL.
Precondition
nav and out_depth non-NULL.
Postcondition
*out_depth == nav->depth.
No navigation state is modified.
Note
Pure read; not thread-safe vs concurrent mutation.
Since
0.1.0

Definition at line 270 of file ra8_app.c.

References ra8_app_nav_t::depth, k_ra8_ok, RA8_CHECK_NULL_PTR, and s_tag.

Referenced by app_launch_enter_reader(), app_launch_switch_and_back(), app_shell_back_to_root(), app_shell_launch_library(), app_shell_open_reader(), and app_shell_settings_round_trip().

◆ ra8_app_nav_go()

ra8_err_t ra8_app_nav_go ( ra8_app_nav_t * nav,
uint16_t id )
nodiscard

Focus app id, pushing the outgoing app onto the back-stack.

Composes ra8_app_launch (so the focus lifecycle fires) and remembers the app that lost focus so ra8_app_nav_back can return to it. The outgoing app is pushed only when a different app was focused: launching the already focused app, or the very first launch (no prior focus), pushes nothing – the trail records real navigation, not idempotent re-taps. Capacity is checked before the launch so a full back-stack leaves the focus unchanged.

Parameters
[in,out]navNavigation state.
[in]idApp id to focus.
Returns
ra8_err_t
Return values
k_ra8_okFocused (and pushed if a different app left).
k_ra8_err_null_ptrnav or nav->reg is NULL.
k_ra8_err_no_memA push was required but the back-stack is full.
k_ra8_err_not_foundNo app has id (focus + trail unchanged).
Precondition
nav and nav->reg non-NULL.
Postcondition
On success the registry's active app is the one whose id is id.
nav->depth grew by one iff a different app was previously focused.
Note
Not thread-safe.
See also
ra8_app_nav_back
Since
0.1.0

Definition at line 201 of file ra8_app.c.

References ra8_app_nav_t::cap, ra8_app_nav_t::depth, k_ra8_err_no_mem, k_ra8_ok, ra8_app_active(), ra8_app_launch(), RA8_CHECK_NULL_PTR, ra8_app_nav_t::reg, s_tag, and ra8_app_nav_t::stack.

Referenced by app_launch_enter_reader(), app_launch_switch_and_back(), app_shell_open_reader(), app_shell_settings_round_trip(), and ra8_app_nav_go_index().

◆ ra8_app_nav_go_index()

ra8_err_t ra8_app_nav_go_index ( ra8_app_nav_t * nav,
uint16_t idx )
nodiscard

Focus the app at registry index idx (launcher select-by-position).

A home/launcher (the chrome) enumerates apps by positionra8_app_count gives the tile count and ra8_app_at maps a tile back to its app – then lets the user pick the n-th tile. This is the bridge that resolves that position to the app's id and focuses it through ra8_app_nav_go, so the outgoing app is pushed onto the back-stack exactly as a by-id navigation would. It is the by-index sibling of ra8_app_nav_go: the launcher thinks in indices, the back-stack records ids, and this couples the two. A NULL slot at idx (a caller-cleared storage entry) is rejected rather than focused.

Parameters
[in,out]navNavigation state.
[in]idxRegistry index in [0, count) of the app to focus.
Returns
ra8_err_t
Return values
k_ra8_okFocused (and pushed if a different app left).
k_ra8_err_null_ptrnav, nav->reg, or the slot at idx is NULL.
k_ra8_err_out_of_rangeidx >= count.
k_ra8_err_no_memA push was required but the back-stack is full.
k_ra8_err_not_foundThe resolved id is no longer registered.
Precondition
nav is non-NULL.
nav->reg is non-NULL (the navigation is bound to a registry).
Postcondition
On success the registry's active app is reg->apps[idx].
nav->depth grew by one iff a different app was previously focused.
Note
Not thread-safe.
See also
ra8_app_nav_go The by-id navigation this composes.
ra8_app_at The index enumeration a launcher pairs with this.
Since
0.1.0

Definition at line 238 of file ra8_app.c.

References k_ra8_ok, ra8_app_at(), ra8_app_nav_go(), RA8_CHECK_NULL_PTR, ra8_app_nav_t::reg, and s_tag.

Referenced by app_shell_launch_library().

◆ ra8_app_nav_init()

ra8_err_t ra8_app_nav_init ( ra8_app_nav_t * nav,
ra8_app_registry_t * reg,
uint16_t * storage,
uint16_t cap )
nodiscard

Bind a navigation back-stack to a registry + caller-owned storage.

Parameters
[out]navNavigation state to initialise.
[in]regRegistry the navigation focuses apps in (non-NULL).
[in]storageArray of uint16_t the back-stack fills with app ids.
[in]capCapacity of storage (>= 1).
Returns
ra8_err_t
Return values
k_ra8_okInitialised.
k_ra8_err_null_ptrnav, reg, or storage is NULL.
k_ra8_err_invalid_argcap is 0.
Precondition
nav, reg, and storage non-NULL; cap >= 1.
Postcondition
nav->depth == 0 (empty trail).
nav->reg == reg and nav->cap == cap.
Note
Not thread-safe.
See also
ra8_app_nav_go
Since
0.1.0

Definition at line 186 of file ra8_app.c.

References ra8_app_nav_t::cap, ra8_app_nav_t::depth, k_ra8_err_invalid_arg, k_ra8_ok, RA8_CHECK_NULL_PTR, ra8_app_nav_t::reg, s_tag, and ra8_app_nav_t::stack.

Referenced by app_launch_register(), and app_shell_register().

◆ ra8_app_register()

ra8_err_t ra8_app_register ( ra8_app_registry_t * reg,
ra8_app_t * app )
nodiscard

Register an app (calls its init once) and add it to the registry.

Rejects a duplicate id. On success the app's init (if any) runs; a non-ok init leaves the app unregistered and returns its error. This is the point a build-time guard (#if RA8_APP_X) wraps to exclude an app.

Parameters
[in,out]regRegistry.
[in]appApp instance (non-NULL, vt non-NULL).
Returns
ra8_err_t
Return values
k_ra8_okRegistered + initialised.
k_ra8_err_null_ptrreg or app (or app->vt) is NULL.
k_ra8_err_no_memRegistry already at cap.
k_ra8_err_conflictAn app with the same id is registered.
<init'serror> app->vt->init returned non-ok.
Precondition
app->vt non-NULL.
Postcondition
On success reg->count grew by one and app->initialized == true.
On any failure the registry is unchanged.
Note
Not thread-safe.
Since
0.1.0

Definition at line 48 of file ra8_app.c.

References ra8_app_registry_t::apps, ra8_app_registry_t::cap, ra8_app_registry_t::count, k_ra8_app_none, k_ra8_err_conflict, k_ra8_err_no_mem, k_ra8_ok, ra8_app_find(), RA8_CHECK_NULL_PTR, and s_tag.

Referenced by app_launch_register(), app_shell_add(), er_apps_init(), main(), and wd_register_apps().

◆ ra8_app_registry_init()

ra8_err_t ra8_app_registry_init ( ra8_app_registry_t * reg,
ra8_app_t ** storage,
uint16_t cap )
nodiscard

Bind a registry to caller-owned pointer storage (empty, no focus).

Parameters
[out]regRegistry to initialise.
[in]storageArray of ra8_app_t* the registry fills.
[in]capCapacity of storage (>= 1).
Returns
ra8_err_t
Return values
k_ra8_okInitialised.
k_ra8_err_null_ptrreg or storage is NULL.
k_ra8_err_invalid_argcap is 0.
Precondition
reg and storage non-NULL; cap >= 1.
Postcondition
reg->count == 0 and reg->active == k_ra8_app_none.
Note
Not thread-safe.
Since
0.1.0

Definition at line 20 of file ra8_app.c.

References ra8_app_registry_t::active, ra8_app_registry_t::apps, ra8_app_registry_t::cap, ra8_app_registry_t::count, k_ra8_app_none, k_ra8_err_invalid_arg, k_ra8_ok, RA8_CHECK_NULL_PTR, and s_tag.

Referenced by app_launch_register(), app_shell_register(), er_apps_init(), main(), and wd_register_apps().

◆ ra8_app_render()

ra8_err_t ra8_app_render ( ra8_app_registry_t * reg)
nodiscard

Run the focused app's render (on-target; no-op if none / NULL).

Parameters
[in,out]regRegistry.
Returns
ra8_err_t k_ra8_ok, or k_ra8_err_null_ptr if reg is NULL.
Precondition
reg non-NULL.
Postcondition
The active app's render ran (if any).
The registry's focus / membership state is unchanged.
Note
Not thread-safe.
Since
0.1.0

Definition at line 153 of file ra8_app.c.

References ra8_app_registry_t::active, ra8_app_registry_t::apps, k_ra8_app_none, k_ra8_ok, RA8_CHECK_NULL_PTR, and s_tag.

Referenced by app_launch_enter_reader(), app_shell_launch_library(), app_shell_open_reader(), app_shell_settings_round_trip(), er_render_current(), er_render_nag_region(), wa_run_two_apps(), wd_render_active(), and wd_selfcheck().

◆ ra8_app_route_input()

ra8_err_t ra8_app_route_input ( ra8_app_registry_t * reg,
const ra8_widget_event_t * ev,
bool * out_handled )
nodiscard

Route an input event to the focused app.

Parameters
[in,out]regRegistry.
[in]evThe event.
[out]out_handledReceives true if the active app consumed it.
Returns
ra8_err_t
Return values
k_ra8_okRouted (see *out_handled); false if no focus.
k_ra8_err_null_ptrreg, ev, or out_handled is NULL.
Precondition
ev and out_handled non-NULL.
Postcondition
*out_handled is the active app's on_input result, or false.
Note
Not thread-safe.
Since
0.1.0

Definition at line 124 of file ra8_app.c.

References ra8_app_registry_t::active, ra8_app_registry_t::apps, k_ra8_app_none, k_ra8_ok, RA8_CHECK_NULL_PTR, and s_tag.

Referenced by app_launch_route_back(), app_shell_open_reader(), wd_check_touch_dispatch(), and wd_route_button().

◆ ra8_app_state()

ra8_err_t ra8_app_state ( const ra8_app_registry_t * reg,
uint16_t id,
ra8_app_state_t * out_state )
nodiscard

Report an app's lifecycle state, derived from the registry.

Maps id to a ra8_app_state_t: an id that is not registered reports k_ra8_app_state_unmounted; a registered app reports k_ra8_app_state_foreground when it is the registry's focused (active) app and k_ra8_app_state_background otherwise. Nothing is stored per app – the state is computed from membership plus the focused index, so it cannot disagree with ra8_app_active or ra8_app_find. A launcher uses this to draw the focused tile differently and to decide whether a "remove" affordance applies (only background apps can be uninstalled).

Parameters
[in]regRegistry.
[in]idApp id to query.
[out]out_stateReceives the derived ra8_app_state_t.
Returns
ra8_err_t
Return values
k_ra8_okReported (see out_state).
k_ra8_err_null_ptrreg or out_state is NULL.
Precondition
reg and out_state non-NULL.
Postcondition
*out_state == k_ra8_app_state_unmounted iff no app has id.
*out_state == k_ra8_app_state_foreground iff id is the active app.
Note
Pure read; not thread-safe vs concurrent mutation.
See also
ra8_app_launch
ra8_app_uninstall
Since
0.1.0

Definition at line 279 of file ra8_app.c.

References ra8_app_registry_t::active, k_ra8_app_none, k_ra8_app_state_background, k_ra8_app_state_foreground, k_ra8_app_state_unmounted, k_ra8_ok, ra8_app_find(), RA8_CHECK_NULL_PTR, and s_tag.

Referenced by app_shell_uninstall_demo().

◆ ra8_app_tick()

ra8_err_t ra8_app_tick ( ra8_app_registry_t * reg)
nodiscard

Run the focused app's per-frame tick (no-op if none / NULL).

Parameters
[in,out]regRegistry.
Returns
ra8_err_t k_ra8_ok, or k_ra8_err_null_ptr if reg is NULL.
Precondition
reg non-NULL.
Postcondition
The active app's tick ran (if any).
No app state other than what tick itself mutates is touched.
Note
Not thread-safe.
Since
0.1.0

Definition at line 140 of file ra8_app.c.

References ra8_app_registry_t::active, ra8_app_registry_t::apps, k_ra8_app_none, k_ra8_ok, RA8_CHECK_NULL_PTR, and s_tag.

◆ ra8_app_uninstall()

ra8_err_t ra8_app_uninstall ( ra8_app_registry_t * reg,
uint16_t id )
nodiscard

Uninstall (unmount) a removable, non-focused app from the registry.

The run-time half of #146's "core uninstallable" rule. Resolves id and:

  • refuses a core app (removable == false) with k_ra8_err_not_supported – the framework guarantees a core app can never be torn down at run time;
  • refuses the focused app with k_ra8_err_busy – the chrome must navigate away first, so the active-app and back-stack invariants stay intact;
  • otherwise unmounts it: runs its deinit (if any), then removes it from the registry table by compacting the later slots down one place and decrementing count. If the focused app sat after the removed slot, its active index is adjusted so it keeps pointing at the same app.

After a successful uninstall the app is absent (ra8_app_find / ra8_app_count no longer see it) and ra8_app_state reports k_ra8_app_state_unmounted for its id. The app instance itself is caller-owned static storage and is left intact apart from initialized being cleared, so it may be re-registered later.

Warning
If the uninstalled app's id still sits on an ra8_app_nav_t back-stack, a later ra8_app_nav_back to it forwards k_ra8_err_not_found (the id no longer resolves); the chrome should not uninstall an app it can still navigate back to.
Parameters
[in,out]regRegistry.
[in]idApp id to uninstall.
Returns
ra8_err_t
Return values
k_ra8_okUnmounted; the app left the registry.
k_ra8_err_null_ptrreg (or the resolved registry slot) is NULL.
k_ra8_err_not_foundNo app has id.
k_ra8_err_not_supportedid is a core app (removable == false).
k_ra8_err_busyid is the focused app (navigate away first).
Precondition
reg non-NULL.
Postcondition
On k_ra8_ok reg->count shrank by one and id is no longer registered.
On any failure the registry is unchanged.
Note
Not thread-safe.
See also
ra8_app_register
ra8_app_state
Since
0.1.0

Definition at line 329 of file ra8_app.c.

References ra8_app_registry_t::active, ra8_app_registry_t::apps, internal_app_remove_at(), k_ra8_app_none, k_ra8_err_busy, k_ra8_err_not_found, k_ra8_err_not_supported, k_ra8_ok, ra8_app_find(), RA8_CHECK_NULL_PTR, and s_tag.

Referenced by app_shell_uninstall_demo().

Variable Documentation

◆ s_tag

const char* s_tag = "ra8_app"
static

Logging / check tag.

Definition at line 17 of file ra8_app.c.

Referenced by app_ecdsa_verify(), app_flash_program(), app_flash_readback(), app_net_close(), app_net_open(), app_net_read(), app_read_bootsel(), app_sha_final(), app_sha_init(), app_sha_update(), demo_build_dlist(), demo_checkpoint(), demo_open(), demo_reopen_naive(), demo_restore(), demo_run(), demo_run(), demo_wear_phase(), demo_write_verify(), display_get_caps(), display_get_framebuffer(), display_init(), drw_blend_render(), drw_demo_fill_and_check(), dtc_arm_run_armed(), dtc_arm_run_disarmed(), dtc_coh_report(), dtc_coh_run_once(), dtc_demo_run_once(), epub_entry_close(), epub_entry_open(), epub_entry_read(), ez_bind_page(), ez_cfg_ptrs_ok(), ez_cfg_scratch_ok(), ez_draw_lens_chrome(), ez_draw_status(), ez_open_views(), ez_render_and_hash(), ez_scene_init(), ez_scene_prefetch(), ez_scene_present(), ez_scene_render(), ez_scene_selftest(), ez_selftest_lens(), ez_selftest_pan(), ez_selftest_stages(), ez_selftest_zoom(), ez_tile_decode(), internal_add_manifest_image(), internal_agt_cascade_mstp_enable_both(), internal_agt_cascade_resolve_halves(), internal_alloc_blank(), internal_alloc_run(), internal_apply_instance(), internal_atomic_replace(), internal_attach_dma_dirs(), internal_attach_hardware(), internal_bdsink_commit_sector(), internal_bdsink_flush(), internal_bdsink_write(), internal_bind_manifest_material(), internal_bkup_demo_rw_check(), internal_block_read_pec_check(), internal_bringup(), internal_bringup_spi(), internal_bus_init(), internal_cache_bind(), internal_cache_erase(), internal_cache_get_caps(), internal_cache_read(), internal_cache_read_block(), internal_cache_sync(), internal_cache_write(), internal_cache_write_block(), internal_canfd_clock_block_init(), internal_cfg_extent_ok(), internal_cfg_ladder_ok(), internal_cfg_ok(), internal_cfg_ptrs_ok(), internal_cfg_scratch_ok(), internal_check_caps(), internal_check_link_state(), internal_check_ptrs(), internal_checkpoint(), internal_claim(), internal_cmac_check_args(), internal_compile_and_cache(), internal_compose_check(), internal_compute_source_key(), internal_configure_pipes(), internal_configure_pipes(), internal_configure_pipes(), internal_configure_pipes(), internal_configure_pipes(), internal_copy_name(), internal_crc_stream(), internal_crc_stream_validate_args(), internal_cs(), internal_dcp_in_payload(), internal_dcp_in_zlp(), internal_decode_csd(), internal_decode_stream(), internal_default_open_queues(), internal_default_open_rings(), internal_demo_mount(), internal_demo_mount(), internal_demo_open(), internal_demo_probe_fat(), internal_demo_probe_foreign(), internal_demo_read_once(), internal_demo_roundtrip(), internal_demo_roundtrip(), internal_demo_run(), internal_demo_run(), internal_demo_run(), internal_derive_names(), internal_derive_stem(), internal_dev_erase(), internal_dev_get_caps(), internal_dev_read(), internal_dev_sync(), internal_dev_write(), internal_devcfg_write_record(), internal_devcfg_xm_read(), internal_devcfg_xm_write(), internal_dir_load(), internal_do_bus_reset(), internal_do_bus_reset(), internal_do_bus_reset(), internal_do_bus_reset(), internal_do_bus_transfer(), internal_do_set_address(), internal_do_set_address(), internal_do_set_address(), internal_do_set_address(), internal_do_set_interface(), internal_do_walk_desc(), internal_do_walk_desc(), internal_do_walk_desc(), internal_dotf_demo_sample(), internal_downscale_if_needed(), internal_eink_clear(), internal_eink_deinit(), internal_eink_flush(), internal_eink_get_caps(), internal_eink_get_framebuffer(), internal_eink_init(), internal_eink_validate_cfg(), internal_emit_strip(), internal_enum_assign_addr(), internal_enum_configure(), internal_enum_ladder(), internal_enum_read_config(), internal_enum_read_dev_desc(), internal_eswclk_power_on_domain(), internal_eswclk_program_cks(), internal_etha_to_operation(), internal_etha_wait_for_mode(), internal_fallback_or_propagate(), internal_fill_row(), internal_fill_strip(), internal_fs_erase(), internal_fs_get_capacity(), internal_fs_read(), internal_fs_write(), internal_geometry(), internal_get_capacity(), internal_graphics_confirm_powered(), internal_graphics_confirm_ready(), internal_h_create_mutex(), internal_h_create_queue(), internal_h_create_semaphore(), internal_h_thread_create(), internal_h_timer_start(), internal_hold_gpio(), internal_host_hs_bringup(), internal_i3c_i2c_block_bringup(), internal_init_bind_owner(), internal_issue_cbw(), internal_js_bind_geometry(), internal_lcd_clear(), internal_lcd_deinit(), internal_lcd_flush(), internal_lcd_get_caps(), internal_lcd_get_framebuffer(), internal_lcd_init(), internal_lcd_validate_cfg(), internal_lin_rx_buf(), internal_lin_tx_buf(), internal_lvd_demo_sample(), internal_make_name(), internal_mark_dirty(), internal_mecc_inject(), internal_mecc_run_pass(), internal_mount(), internal_mount(), internal_mram_erase(), internal_mram_get_caps(), internal_mram_read(), internal_mram_write(), internal_ns_verify_or_deny(), internal_open_finalise(), internal_open_levelx(), internal_open_or_provision(), internal_open_prep(), internal_open_stage_key_iv_region(), internal_open_validate(), internal_open_validate_init(), internal_ops_read(), internal_ops_transfer(), internal_ops_write(), internal_ops_xfer8(), internal_pdg_demo_sample(), internal_phy_read_link(), internal_pick_free(), internal_pll2_program_protected(), internal_poeg_demo_cycle(), internal_pread_null_ok(), internal_prepare_init(), internal_produce_args_ok(), internal_pull_data_stage(), internal_pull_gpio(), internal_put_check(), internal_ra8_cache_maintain_range(), internal_ra8_compress_validate(), internal_ra8_epaper_validate_load(), internal_ra8_epaper_wait_ready(), internal_ra8_epd_cal_read_record(), internal_ra8_epd_cal_try_panel(), internal_ra8_epd_cal_try_record(), internal_ra8_vfs_compress_load_blob(), internal_ra8_vfs_compress_read_validate(), internal_ra8_vfs_compress_store_blob(), internal_ra8_vfs_compress_write_validate(), internal_ram_erase(), internal_ram_get_caps(), internal_ram_read(), internal_ram_write(), internal_ram_write(), internal_read_args_ok(), internal_read_at(), internal_read_block(), internal_read_csw(), internal_read_font(), internal_read_one(), internal_read_stamp(), internal_read_stream(), internal_read_wdt1_word(), internal_reclaim_stale(), internal_recover(), internal_release_run(), internal_render_ready(), internal_reset_channel(), internal_reset_tables(), internal_resync_mac_speed(), internal_run_acmd41(), internal_run_data_in(), internal_run_data_out(), internal_sample(), internal_scan_log(), internal_sci_transport_bringup(), internal_sci_transport_cs(), internal_sci_transport_set_clock(), internal_sci_transport_xfer(), internal_sd_demo_roundtrip(), internal_sdcard_card_online(), internal_sdcard_identify(), internal_sdcard_negotiate_width(), internal_sdcard_publish_and_select(), internal_sdcard_publish_rca(), internal_sdhi_finish_xfer(), internal_sdhi_get_caps(), internal_sdhi_read(), internal_sdhi_write(), internal_sdramc_wait(), internal_sdspi_get_caps(), internal_sdspi_read(), internal_sdspi_write(), internal_set_clock(), internal_source_read(), internal_ssie_power_up(), internal_start_with_mode(), internal_stream_open(), internal_super_read(), internal_swap_replay_capture(), internal_swap_run_all(), internal_swap_run_one(), internal_swap_vfs_read_verify(), internal_swap_vfs_write(), internal_tas_learn_entry(), internal_tas_validate(), internal_timer_arm(), internal_timer_disarm(), internal_transcode_image(), internal_tx_ext_init(), internal_uart_flush(), internal_uart_write(), internal_usb60ckcr_switch_to_pll2p_div4(), internal_usbcdc_write(), internal_usbckcr_switch_to_pll2p_div5(), internal_usbmsc_get_caps(), internal_usbmsc_read(), internal_usbmsc_write(), internal_validate(), internal_validate_and_ungate(), internal_validate_caps(), internal_validate_cfg(), internal_validate_cfg_crypto(), internal_validate_cfg_flash(), internal_validate_cfg_net(), internal_validate_cfg_ptrs(), internal_validate_init_args(), internal_validate_open_args(), internal_validate_required_ops(), internal_validate_required_ops_group1(), internal_validate_required_ops_group2(), internal_vfs_file_open_resolve(), internal_vfs_open_resolve(), internal_vfs_probe_and_mount(), internal_vfs_rename_split(), internal_wait_act_set(), internal_wait_tx0_done(), internal_write_block(), internal_write_entry(), internal_write_one(), internal_write_one_sector(), internal_write_stamp(), internal_xfer(), internal_xspi_clock_block_init(), internal_xspi_erase(), internal_xspi_get_caps(), internal_xspi_program_chunked(), internal_xspi_read(), internal_xspi_read_chunked(), internal_xspi_write(), jof_memstore_pread(), jof_memstore_sink(), jof_parse(), jof_probe_dims(), jof_tile_dims(), longstrip_band_at_y(), longstrip_fling(), longstrip_prefetch(), longstrip_render(), longstrip_scroll_by(), longstrip_set_viewport(), longstrip_tile_decode(), longstrip_visible_bands(), ls_band_decode(), ls_blit(), lx_fs_backend_bind(), main(), priv_cache_store_dir_save(), priv_cache_store_sector_read(), priv_cache_store_sector_release(), priv_cache_store_sector_write(), priv_cache_store_super_write(), priv_dcp_push_chunk(), priv_jof_on_rows(), priv_jof_png_rows(), priv_ota_validate_cfg(), priv_ra8_esp_hosted_gpio_bind(), priv_ra8_esp_hosted_gpio_edge_register(), priv_ra8_esp_hosted_osi_bind_all(), priv_ra8_esp_hosted_rtos_bind(), priv_ra8_esp_hosted_rtos_bind_pool(), priv_ra8_esp_hosted_rtos_bind_sync(), priv_ra8_esp_hosted_rtos_block_size(), priv_ra8_esp_hosted_rtos_deinit(), priv_ra8_esp_hosted_rtos_init(), priv_ra8_esp_hosted_rtos_pool_deinit(), priv_ra8_esp_hosted_rtos_pool_init(), priv_ra8_esp_hosted_rtos_release(), priv_ra8_esp_hosted_rtos_sync_deinit(), priv_ra8_esp_hosted_rtos_sync_init(), priv_ra8_esp_hosted_spi_bind(), priv_ra8_esp_hosted_spi_open(), priv_ra8_key_import_build_blob(), priv_ra8_key_import_resolve(), priv_ra8_key_import_seal(), priv_ra8_sec_cmac_compute(), priv_ra8_sec_cmac_verify(), priv_ra8_secure_trng_read(), priv_rabook_pipeline_check_common(), priv_sdmmc_spi_run_init_sequence(), priv_usbhs_phy_bringup(), ra8_acmphs_channel_deinit(), ra8_acmphs_channel_enable(), ra8_acmphs_channel_init(), ra8_acmphs_clear_status(), ra8_acmphs_get_status(), ra8_acmphs_init(), ra8_acmphs_read_output(), ra8_acmphs_set_inputs(), ra8_adc_configure_scan_group(), ra8_adc_get_status(), ra8_adc_init(), ra8_adc_init_configured(), ra8_adc_read_channel(), ra8_adc_read_group_results(), ra8_adc_read_internal_channel(), ra8_adc_self_diagnose(), ra8_adc_set_oversampling(), ra8_agt_deinit(), ra8_agt_enter_stop(), ra8_agt_get_status(), ra8_agt_set_reload(), ra8_agt_start_cascade(), ra8_agt_start_free_run(), ra8_agt_start_pulse_output(), ra8_agt_stop(), ra8_app_active(), ra8_app_at(), ra8_app_count(), ra8_app_find(), ra8_app_launch(), ra8_app_nav_back(), ra8_app_nav_depth(), ra8_app_nav_go(), ra8_app_nav_go_index(), ra8_app_nav_init(), ra8_app_register(), ra8_app_registry_init(), ra8_app_render(), ra8_app_route_input(), ra8_app_state(), ra8_app_tick(), ra8_app_uninstall(), ra8_arena_carve(), ra8_arena_init(), ra8_arena_remaining(), ra8_batt_monitor_init(), ra8_batt_update(), ra8_ble_close(), ra8_ble_open(), ra8_ble_set_random_address(), ra8_board_console_stream(), ra8_board_shared_ram(), ra8_board_touch_open(), ra8_box_layout(), ra8_box_tree_init(), ra8_bscan_get_idcode(), ra8_bscan_get_status(), ra8_bscan_init(), ra8_bscan_set_instruction(), ra8_cac_get_status(), ra8_cac_init(), ra8_cac_measure(), ra8_cache_store_close(), ra8_cache_store_evict(), ra8_cache_store_get(), ra8_cache_store_init(), ra8_cache_store_pin(), ra8_cache_store_put(), ra8_cache_store_read(), ra8_cache_store_sync(), ra8_canfd_clear_status(), ra8_canfd_deinit(), ra8_canfd_filter_set(), ra8_canfd_get_error_state(), ra8_canfd_get_status(), ra8_canfd_init(), ra8_canfd_receive(), ra8_canfd_set_accept_filter(), ra8_canfd_set_bitrate(), ra8_canfd_set_brs(), ra8_canfd_set_iso_mode(), ra8_canfd_set_tdc(), ra8_canfd_set_test_mode(), ra8_canfd_transmit(), ra8_ceu_byte_swap_set(), ra8_ceu_capture_arm(), ra8_ceu_capture_start_ex(), ra8_ceu_data_size_get(), ra8_ceu_dma_pump(), ra8_ceu_get_status(), ra8_ceu_init(), ra8_ceu_set_dma_buffer(), ra8_ceu_status_snapshot(), ra8_cgc_disable_stop_detection(), ra8_cgc_enable_stop_detection(), ra8_cgc_eswclk_init(), ra8_cgc_init(), ra8_cgc_pll2_enable(), ra8_cgc_switch_pll1_target(), ra8_cgc_usbfs_clock_enable(), ra8_cgc_usbhs_pll_enable(), ra8_cgc_use_hoco(), ra8_cnecc_attach_handler(), ra8_cnecc_clear_status(), ra8_cnecc_compute(), ra8_cnecc_disable_instance(), ra8_cnecc_enable_instance(), ra8_cnecc_exit_standby(), ra8_cnecc_get_counters(), ra8_cnecc_get_status(), ra8_cnecc_init(), ra8_cnecc_inject_fault(), ra8_cnecc_set_correction_permission(), ra8_cnecc_set_irq_enables(), ra8_cnecc_test_mode_active(), ra8_cnecc_test_mode_disable(), ra8_cnecc_verify(), ra8_cpu1_halt(), ra8_cpu1_release(), ra8_crc_compute(), ra8_crc_get_status(), ra8_crc_init(), ra8_dac_b_exit_stop(), ra8_dac_b_get_status(), ra8_dac_b_init(), ra8_dac_b_init_configured(), ra8_dac_b_write(), ra8_decompress(), ra8_devcfg_commit(), ra8_devcfg_get_body(), ra8_devcfg_get_vcom_mv(), ra8_devcfg_load(), ra8_dma_channel_is_busy(), ra8_dma_deinit(), ra8_dma_init(), ra8_dma_release(), ra8_dma_request(), ra8_dmac_is_active(), ra8_dmac_start(), ra8_dmac_start_block(), ra8_doc_add16(), ra8_doc_init(), ra8_doc_set_window(), ra8_doc_sub16(), ra8_doc_window_compare(), ra8_dotf_clear_status(), ra8_dotf_disable(), ra8_dotf_enable(), ra8_dotf_exit_stop(), ra8_dotf_get_active_region(), ra8_dotf_get_status(), ra8_dotf_init(), ra8_dotf_install_key(), ra8_dotf_open(), ra8_dotf_rotate_key(), ra8_dotf_run_self_test(), ra8_dotf_select_region(), ra8_dotf_set_iv(), ra8_dotf_set_key_size(), ra8_dotf_set_region(), ra8_dotf_set_sca_level(), ra8_drw_blit_textured_rect(), ra8_drw_cache_flush(), ra8_drw_dlist_add_fill(), ra8_drw_dlist_begin(), ra8_drw_dlist_end(), ra8_drw_dlist_run(), ra8_drw_draw_line(), ra8_drw_draw_triangle(), ra8_drw_fill_rect(), ra8_drw_get_hwrevision(), ra8_drw_get_status(), ra8_drw_init(), ra8_drw_load_clut(), ra8_drw_perf_read(), ra8_drw_set_blend(), ra8_drw_set_gradient(), ra8_drw_set_texture(), ra8_drw_wait_idle(), ra8_dtc_get_status(), ra8_dtc_init(), ra8_dtc_reconfigure(), ra8_elc_init(), ra8_elc_is_enabled(), ra8_epaper_align_area(), ra8_epaper_decode_dev_info(), ra8_epaper_dev_info(), ra8_epaper_display_area(), ra8_epaper_get_vcom(), ra8_epaper_image_bytes(), ra8_epaper_init(), ra8_epaper_load_image(), ra8_epaper_set_vcom(), ra8_epaper_validate_cfg(), ra8_epaper_waveform_cfg_for_lut(), ra8_epd_cal_apply(), ra8_epd_cal_deserialize(), ra8_epd_cal_provision(), ra8_epd_cal_resolve(), ra8_epd_cal_serialize(), ra8_eth_coma_bringup(), ra8_eth_coma_get_status(), ra8_eth_coma_init(), ra8_eth_get_stats(), ra8_eth_get_status(), ra8_eth_gptp_deinit(), ra8_eth_gptp_enter_stop(), ra8_eth_gptp_exit_stop(), ra8_eth_gptp_get_avtp_ns(), ra8_eth_gptp_get_increment(), ra8_eth_gptp_get_time(), ra8_eth_gptp_init(), ra8_eth_gptp_ip_version(), ra8_eth_gptp_set_increment(), ra8_eth_gptp_set_offset(), ra8_eth_gptp_timer_disable(), ra8_eth_gptp_timer_enable(), ra8_eth_gptp_timer_is_enabled(), ra8_eth_gptp_tiv_from_hz(), ra8_eth_gwca_attach_buffers(), ra8_eth_gwca_axi_init(), ra8_eth_gwca_configure_queue(), ra8_eth_gwca_default_open(), ra8_eth_gwca_default_recv(), ra8_eth_gwca_default_send(), ra8_eth_gwca_find_slot(), ra8_eth_gwca_get_status(), ra8_eth_gwca_init(), ra8_eth_gwca_init_ring(), ra8_eth_gwca_install_linkfix(), ra8_eth_gwca_reload_queue(), ra8_eth_gwca_rx_frame(), ra8_eth_gwca_set_descriptor_buffer(), ra8_eth_gwca_set_operation_mode(), ra8_eth_gwca_tx_frame(), ra8_eth_init(), ra8_eth_link_status(), ra8_eth_mfwd_get_status(), ra8_eth_mfwd_init(), ra8_eth_mfwd_route_queue(), ra8_eth_mfwd_set_forwarding_masks(), ra8_eth_open(), ra8_eth_read(), ra8_eth_write(), ra8_etha_account_traffic(), ra8_etha_attach_handler(), ra8_etha_clear_stats(), ra8_etha_clear_status(), ra8_etha_configure_cbs(), ra8_etha_configure_cut_through(), ra8_etha_deinit(), ra8_etha_descriptor_ring_init(), ra8_etha_disable_irq(), ra8_etha_enable_irq(), ra8_etha_enable_tas(), ra8_etha_enter_stop(), ra8_etha_exit_stop(), ra8_etha_get_cbs_state(), ra8_etha_get_queue_level(), ra8_etha_get_stats(), ra8_etha_get_status(), ra8_etha_init(), ra8_etha_open(), ra8_etha_read_stats(), ra8_etha_read_tas_entry(), ra8_etha_reset(), ra8_etha_set_ipv_remap(), ra8_etha_set_max_frame_size(), ra8_etha_set_mode(), ra8_etha_set_preemption(), ra8_etha_set_queue_arb(), ra8_etha_set_queue_depth(), ra8_etha_set_rx_tag_filter(), ra8_etha_set_tas_schedule(), ra8_etha_set_vlan_mode(), ra8_etha_set_vlan_tag(), ra8_etha_tas_ram_reset(), ra8_ether_phy_link_status_get(), ra8_ether_phy_mdio_read(), ra8_ether_phy_open(), ra8_ftl_as_blockdev(), ra8_ftl_checkpoint_load(), ra8_ftl_checkpoint_save(), ra8_ftl_checkpoint_size(), ra8_ftl_phys_of(), ra8_ftl_wear_stats(), ra8_glcdc_gamma_enable(), ra8_glcdc_get_status(), ra8_glcdc_init(), ra8_glcdc_set_clut_double_buffered(), ra8_glcdc_set_gamma(), ra8_glcdc_set_layer2(), ra8_glyph_atlas_get(), ra8_glyph_atlas_init(), ra8_glyph_atlas_put(), ra8_glyph_atlas_stats(), ra8_gpio_attach_irq(), ra8_gpio_detach_irq(), ra8_gpio_input_init(), ra8_gpio_output_init(), ra8_gpio_read(), ra8_gpt_capture_configure(), ra8_gpt_capture_read(), ra8_gpt_clear_status(), ra8_gpt_counter_set(), ra8_gpt_dead_time_set(), ra8_gpt_deinit(), ra8_gpt_duty_cycle_set(), ra8_gpt_event_count_configure(), ra8_gpt_get_status(), ra8_gpt_init(), ra8_gpt_period_set(), ra8_gpt_pwm_pin_configure(), ra8_gpt_read(), ra8_gpt_read_dma(), ra8_gpt_set_duty(), ra8_gpt_set_period(), ra8_gpt_start_free_run(), ra8_gpt_stop(), ra8_gpt_three_phase_open(), ra8_gpt_write_dma(), ra8_i3c_dynamic_address_assign(), ra8_i3c_get_status(), ra8_i3c_i2c_get_errors(), ra8_i3c_i2c_init(), ra8_i3c_i2c_peripheral_open(), ra8_i3c_i2c_peripheral_receive(), ra8_i3c_i2c_peripheral_send(), ra8_i3c_i2c_peripheral_status(), ra8_i3c_i2c_read(), ra8_i3c_i2c_scan(), ra8_i3c_i2c_write(), ra8_i3c_ibi_read(), ra8_i3c_init(), ra8_i3c_peripheral_open(), ra8_i3c_read(), ra8_i3c_recv_ccc(), ra8_icu_configure_irq_pin(), ra8_icu_init(), ra8_icu_nmi_status(), ra8_icu_read_irqcr(), ra8_io_blockdev_as_fs_backend(), ra8_io_blockdev_cache_init(), ra8_io_blockdev_cache_stats(), ra8_io_blockdev_get_caps(), ra8_io_blockdev_mram_init(), ra8_io_blockdev_ram_init(), ra8_io_blockdev_read(), ra8_io_blockdev_sdhi_init(), ra8_io_blockdev_sdram_init(), ra8_io_blockdev_sdspi_init(), ra8_io_blockdev_usbmsc_init(), ra8_io_blockdev_vsource_init(), ra8_io_blockdev_vsource_read(), ra8_io_blockdev_write(), ra8_io_blockdev_xspi_init(), ra8_io_fsfmt_get_builtin(), ra8_io_fsfmt_init(), ra8_io_fsfmt_probe(), ra8_io_fsfmt_register(), ra8_io_i2c_bus_as_ops(), ra8_io_i2c_bus_bind_i3c_compat(), ra8_io_i2c_bus_bind_riic(), ra8_io_i2c_bus_read(), ra8_io_i2c_bus_transfer(), ra8_io_i2c_bus_write(), ra8_io_log_attach(), ra8_io_spi_bus_as_ops(), ra8_io_spi_bus_bind_sci_spi(), ra8_io_spi_bus_bind_spi_b(), ra8_io_spi_bus_set_clock(), ra8_io_spi_bus_write_read(), ra8_io_spi_bus_xfer8(), ra8_io_stream_blockdev_init(), ra8_io_stream_puts(), ra8_io_stream_ram_init(), ra8_io_stream_ram_used(), ra8_io_stream_uart_init(), ra8_io_stream_usbcdc_init(), ra8_io_stream_write(), ra8_io_vfs_file_close(), ra8_io_vfs_file_open(), ra8_io_vfs_file_read(), ra8_io_vfs_file_seek(), ra8_io_vfs_file_size(), ra8_io_vfs_file_sync(), ra8_io_vfs_file_tell(), ra8_io_vfs_file_write(), ra8_io_vfs_free_space(), ra8_io_vfs_get_caps(), ra8_io_vfs_listdir(), ra8_io_vfs_mkdir(), ra8_io_vfs_mount(), ra8_io_vfs_mount_auto(), ra8_io_vfs_open(), ra8_io_vfs_rename(), ra8_io_vfs_rmdir(), ra8_io_vfs_stat(), ra8_io_vfs_unlink(), ra8_io_vfs_unmount(), ra8_ipc_can_access(), ra8_ipc_can_send(), ra8_ipc_channel_for_recv(), ra8_ipc_channel_for_send(), ra8_ipc_clear_event(), ra8_ipc_clear_status(), ra8_ipc_deinit(), ra8_ipc_get_attribution(), ra8_ipc_get_nmi_attribution(), ra8_ipc_get_sem_attribution(), ra8_ipc_get_status(), ra8_ipc_has_data(), ra8_ipc_init(), ra8_ipc_nmi_get_status(), ra8_ipc_recv_burst(), ra8_ipc_recv_message(), ra8_ipc_recv_message_retry(), ra8_ipc_ring_consume(), ra8_ipc_ring_init(), ra8_ipc_ring_is_empty(), ra8_ipc_ring_is_full(), ra8_ipc_ring_produce(), ra8_ipc_sem_is_locked(), ra8_ipc_sem_release(), ra8_ipc_sem_take_timeout(), ra8_ipc_sem_try_take(), ra8_ipc_send_burst(), ra8_ipc_send_event(), ra8_ipc_send_message(), ra8_ipc_send_message_retry(), ra8_isr_init(), ra8_isr_lookup_slot(), ra8_isr_register(), ra8_iwdt_get_counter(), ra8_iwdt_get_status(), ra8_iwdt_init(), ra8_jpeg_sw_decode(), ra8_jpeg_sw_decode_stripes(), ra8_jpeg_sw_encode(), ra8_jpeg_sw_get_dimensions(), ra8_kbd_apply(), ra8_kbd_layout_init(), ra8_kbd_text_init(), ra8_key_vault_load_mac_key(), ra8_key_vault_set_mac_key(), ra8_key_vault_sha256_xor_challenge(), ra8_key_vault_store(), ra8_keycache_get(), ra8_keycache_init(), ra8_keycache_prefetch(), ra8_keycache_put(), ra8_keycache_stats(), ra8_layer3_switch_open(), ra8_layer3_switch_route_add(), ra8_layer3_switch_status_get(), ra8_lpm_arm_dpsier(), ra8_lpm_clear_dpsifr(), ra8_lpm_deinit(), ra8_lpm_enter_sleep(), ra8_lpm_get_clock_stop(), ra8_lpm_get_dpsi_state(), ra8_lpm_get_exit_cause(), ra8_lpm_get_opccr(), ra8_lpm_get_status(), ra8_lpm_graphics_power_on(), ra8_lpm_init(), ra8_lpm_set_clock_stop(), ra8_lpm_set_dpsiegr(), ra8_lpm_set_ldo_standby(), ra8_lpm_set_ram_retention(), ra8_lpm_wait_for_opccr(), ra8_lvd_attach_channel_handler(), ra8_lvd_channel_deinit(), ra8_lvd_channel_init(), ra8_lvd_clear_status(), ra8_lvd_configure_for_standby(), ra8_lvd_disable_cmpe(), ra8_lvd_disable_elc_event(), ra8_lvd_disable_irq(), ra8_lvd_disable_reset(), ra8_lvd_enable_cmpe(), ra8_lvd_enable_elc_event(), ra8_lvd_enable_irq(), ra8_lvd_enable_reset(), ra8_lvd_get_status(), ra8_lvd_set_filter(), ra8_lvd_set_hysteresis_mode(), ra8_lvd_set_irq_edge(), ra8_lvd_set_irq_kind(), ra8_lvd_set_negate_mode(), ra8_lvd_set_threshold(), ra8_mipi_csi_dl_get_status(), ra8_mipi_csi_get_module_info(), ra8_mipi_csi_get_module_irq_status(), ra8_mipi_csi_get_status(), ra8_mipi_csi_init(), ra8_mipi_csi_pm_get_status(), ra8_mipi_csi_read_short_packet(), ra8_mipi_csi_set_ecc_mode(), ra8_mipi_csi_set_epd(), ra8_mipi_csi_set_frame_error_mode(), ra8_mipi_csi_set_lrte(), ra8_mipi_csi_set_virtual_channels(), ra8_mipi_csi_short_packet_get_status(), ra8_mipi_csi_start_receive(), ra8_mipi_csi_stop_receive(), ra8_mipi_csi_vc_get_status(), ra8_mipi_dsi_ack_error_get(), ra8_mipi_dsi_get_status(), ra8_mipi_dsi_init(), ra8_mipi_dsi_link_status_get(), ra8_mipi_dsi_read_packet(), ra8_mipi_dsi_rx_payload_read(), ra8_mipi_dsi_rx_result_get(), ra8_mipi_dsi_send_command(), ra8_mipi_dsi_send_command_short(), ra8_mipi_dsi_set_video_timing(), ra8_mipi_dsi_te_event_pending(), ra8_mipi_dsi_ulps_enter(), ra8_mipi_dsi_video_configure(), ra8_mipi_dsi_video_start(), ra8_mipi_phy_deinit(), ra8_mipi_phy_get_status(), ra8_mipi_phy_init(), ra8_mipi_phy_recover_from_error(), ra8_mipi_phy_set_lane_speed(), ra8_mipi_phy_validate_pll_band(), ra8_mpc_read_pfs(), ra8_mpc_route_peripheral(), ra8_mpu_configure(), ra8_mpu_set_region(), ra8_mstp_disable(), ra8_mstp_enable(), ra8_mstp_get_refcount(), ra8_mstp_init(), ra8_mstp_is_stopped(), ra8_net_pal_get_mac_addr(), ra8_net_pal_init(), ra8_net_pal_link_status(), ra8_net_pal_recv_frame(), ra8_net_pal_send_frame(), ra8_net_pal_set_mac_addr(), ra8_npu_dequantize_i8(), ra8_npu_dequantize_u8(), ra8_npu_quantize_i8(), ra8_npu_quantize_u8(), ra8_nsc_acmphs_read_output(), ra8_nsc_adc_read_channel(), ra8_nsc_cgc_get_clock_hz(), ra8_nsc_crc_compute(), ra8_nsc_eth_recv(), ra8_nsc_eth_send(), ra8_nsc_glcdc_init(), ra8_nsc_gpt_init(), ra8_nsc_gpt_read(), ra8_nsc_iic_init(), ra8_nsc_iic_read(), ra8_nsc_iic_write(), ra8_nsc_key_vault_challenge(), ra8_nsc_log_emit(), ra8_nsc_periph_init(), ra8_nsc_sci_getc(), ra8_nsc_sci_init(), ra8_nsc_spi_init(), ra8_nsc_spi_read(), ra8_nsc_spi_write(), ra8_nsc_spi_write_read(), ra8_nsc_xspi_read(), ra8_nsc_xspi_status(), ra8_ota_check_for_update(), ra8_ota_commit_get_bank_config(), ra8_ota_commit_pending(), ra8_ota_commit_swap_bank(), ra8_ota_download_to_inactive_bank(), ra8_ota_verify_signature(), ra8_pdg_capture_start(), ra8_pdg_delay_ns_to_code(), ra8_pdg_get_delay(), ra8_pdg_get_status(), ra8_pdg_get_status_full(), ra8_pdg_init(), ra8_pdg_pick_frange(), ra8_pdg_required_write_ns(), ra8_pdg_set_delay(), ra8_pdg_set_delay_batch(), ra8_pdm_configure(), ra8_pdm_init(), ra8_pdm_read(), ra8_pdm_read_enable(), ra8_pdm_start(), ra8_pdm_stop(), ra8_pdm_stream_disable(), ra8_pdm_stream_enable(), ra8_pfs_route_peripheral(), ra8_pfs_set_drive_strength(), ra8_pin_validator_claim(), ra8_poeg_clear_status(), ra8_poeg_deinit(), ra8_poeg_get_status(), ra8_poeg_init(), ra8_poeg_trigger_stop(), ra8_pwr_clear_wake_source(), ra8_pwr_enter_software_standby(), ra8_pwr_init(), ra8_pwr_set_wake_source(), ra8_pwr_wake_source_is_enabled(), ra8_rabook_gray4_downscale(), ra8_rabook_gray4_encode(), ra8_rabook_gray8_encode(), ra8_reset_get_attribution(), ra8_reset_get_cause(), ra8_reset_get_raw(), ra8_reset_get_source_mask(), ra8_reset_init(), ra8_reset_set_source_mask(), ra8_reset_software_reset(), ra8_rmac_attach_handler(), ra8_rmac_clear_status(), ra8_rmac_deinit(), ra8_rmac_enter_stop(), ra8_rmac_exit_stop(), ra8_rmac_get_status(), ra8_rmac_init(), ra8_rmac_mdio_c22_read(), ra8_rmac_mdio_c22_write(), ra8_rmac_mdio_c45_read(), ra8_rmac_mdio_c45_write(), ra8_rmac_phy_auto_neg_start(), ra8_rmac_phy_auto_neg_wait(), ra8_rmac_phy_link_status(), ra8_rmac_phy_link_status_get(), ra8_rmac_phy_lsi_get(), ra8_rmac_phy_mdio_read(), ra8_rmac_phy_open(), ra8_rmac_phy_reset(), ra8_rmac_phy_set_advertise(), ra8_rmac_read_stats(), ra8_rmac_set_frame_size(), ra8_rmac_set_link(), ra8_rmac_set_loopback(), ra8_rmac_set_lpi(), ra8_rmac_set_mac_address(), ra8_rmac_set_magic_packet(), ra8_rmac_set_pause_frame(), ra8_rmac_set_pfc_group(), ra8_rmac_set_ptp_filter(), ra8_rmac_set_rx_filter(), ra8_rmac_set_vlan_framing(), ra8_rsip_aes128_install_plain(), ra8_rsip_aes192_install_plain(), ra8_rsip_aes256_install_plain(), ra8_rsip_aes_ccm(), ra8_rsip_aes_cipher(), ra8_rsip_aes_gcm(), ra8_rsip_chacha20(), ra8_rsip_chacha20_install_plain(), ra8_rsip_chacha20_poly1305(), ra8_rsip_debug_level_get(), ra8_rsip_ecdh_compute(), ra8_rsip_ecdsa_sign(), ra8_rsip_ecdsa_verify(), ra8_rsip_eddsa_sign(), ra8_rsip_eddsa_verify(), ra8_rsip_exit_stop(), ra8_rsip_get_status(), ra8_rsip_hash(), ra8_rsip_hmac(), ra8_rsip_hmac_install_plain(), ra8_rsip_hmac_sha256_final(), ra8_rsip_hmac_sha256_init(), ra8_rsip_hmac_sha256_update(), ra8_rsip_init(), ra8_rsip_kdf(), ra8_rsip_key_inject_aes(), ra8_rsip_key_inject_ecc(), ra8_rsip_key_inject_rsa(), ra8_rsip_key_unwrap(), ra8_rsip_key_validate(), ra8_rsip_key_wrap(), ra8_rsip_kv_count(), ra8_rsip_kv_read(), ra8_rsip_kv_write(), ra8_rsip_life_get(), ra8_rsip_oem_bl_version_get(), ra8_rsip_oem_install(), ra8_rsip_poly1305(), ra8_rsip_protected_aes_decrypt(), ra8_rsip_protected_aes_encrypt(), ra8_rsip_protected_aes_init(), ra8_rsip_protected_ecdsa_sign(), ra8_rsip_protected_rsa_decrypt(), ra8_rsip_rsa_decrypt(), ra8_rsip_rsa_encrypt(), ra8_rsip_rsa_sign(), ra8_rsip_rsa_verify(), ra8_rsip_sha256(), ra8_rsip_sha256_final(), ra8_rsip_sha256_init(), ra8_rsip_sha256_update(), ra8_rsip_tamper_status(), ra8_rsip_trng_read(), ra8_rtc_clock_init(), ra8_rtc_get(), ra8_rtc_get_status(), ra8_rtc_init(), ra8_rtc_set(), ra8_rtc_set_alarm(), ra8_sci_baud_calculate(), ra8_sci_get_errors(), ra8_sci_getc_polling(), ra8_sci_init(), ra8_sci_lin_break_detected(), ra8_sci_lin_check_header(), ra8_sci_lin_check_response(), ra8_sci_lin_checksum(), ra8_sci_lin_clear_status(), ra8_sci_lin_init(), ra8_sci_lin_read_response(), ra8_sci_lin_send_break(), ra8_sci_lin_send_header(), ra8_sci_lin_send_response(), ra8_sci_lin_wait_break(), ra8_sci_read_dma(), ra8_sci_read_stop(), ra8_sci_spi_init(), ra8_sci_spi_xfer8(), ra8_sci_write_dma(), ra8_sdcard_get_capacity(), ra8_sdcard_get_type(), ra8_sdcard_init(), ra8_sdcard_read_blocks(), ra8_sdcard_write_blocks(), ra8_sdhi_attach_dma(), ra8_sdhi_clear_status(), ra8_sdhi_deinit(), ra8_sdhi_get_status(), ra8_sdhi_init(), ra8_sdhi_read_block(), ra8_sdhi_send_command(), ra8_sdhi_set_bus_width(), ra8_sdhi_set_bus_width_4bit(), ra8_sdhi_set_bus_width_8bit(), ra8_sdhi_set_clock(), ra8_sdhi_write_block(), ra8_sdmmc_spi_bind_fs_backend(), ra8_sdmmc_spi_get_capacity(), ra8_sdmmc_spi_get_card_type(), ra8_sdmmc_spi_init(), ra8_sdmmc_spi_read_block(), ra8_sdmmc_spi_read_blocks(), ra8_sdmmc_spi_transport_sci(), ra8_sdmmc_spi_write_block(), ra8_sdmmc_spi_write_blocks(), ra8_sdramc_enter_self_refresh(), ra8_sdramc_exit_self_refresh(), ra8_sdramc_get_status(), ra8_sdramc_init(), ra8_slab_alloc(), ra8_slab_free(), ra8_slab_init(), ra8_slab_stats(), ra8_smbus_block_read(), ra8_smbus_block_write(), ra8_smbus_init(), ra8_smbus_read_byte_data(), ra8_smbus_receive_byte(), ra8_spi_b_target_init(), ra8_spi_b_target_xfer(), ra8_spi_get_errors(), ra8_spi_init(), ra8_spi_read_dma(), ra8_spi_write_dma(), ra8_spi_xfer8(), ra8_sram_attach_bank_handler(), ra8_sram_attach_handler(), ra8_sram_get_bank_info(), ra8_sram_get_status(), ra8_sram_init(), ra8_sram_self_test(), ra8_sram_set_mode(), ra8_ssie_attach_dma(), ra8_ssie_get_status(), ra8_ssie_init(), ra8_ssie_read_buffer(), ra8_ssie_read_sample(), ra8_ssie_recv_iso(), ra8_ssie_send_iso(), ra8_ssie_start(), ra8_ssie_start_recovery(), ra8_ssie_write_buffer(), ra8_systick_configure(), ra8_systick_reload_for(), ra8_systick_set_reload(), ra8_threadx_systick_reload_for(), ra8_threadx_systick_retune(), ra8_tile_cache_get(), ra8_tile_cache_init(), ra8_tile_cache_prefetch(), ra8_tile_cache_prefetch_pan(), ra8_tile_cache_put(), ra8_tile_cache_stats(), ra8_tile_rect_of_pixels(), ra8_time_init(), ra8_touch_open(), ra8_touch_read(), ra8_tsn_convert_to_milli_c(), ra8_tsn_get_status(), ra8_tsn_init(), ra8_tsn_read_die_temp_milli_c(), ra8_tsn_read_raw(), ra8_tz_ns_signed_body_len(), ra8_tz_secure_boot_host_reset(), ra8_tz_secure_boot_jump_ns(), ra8_tz_secure_boot_run(), ra8_tz_secure_boot_sau_init(), ra8_ui_hit_test(), ra8_ui_nav_init(), ra8_ui_nav_pop(), ra8_ui_nav_push(), ra8_ui_nav_replace(), ra8_ui_nav_top(), ra8_ui_pager_goto(), ra8_ui_pager_init(), ra8_ui_pager_next(), ra8_ui_pager_prev(), ra8_ulpt_deinit(), ra8_ulpt_get_status(), ra8_ulpt_init(), ra8_ulpt_set_period(), ra8_ulpt_start(), ra8_ulpt_stop(), ra8_usb_cdc_get_line_coding(), ra8_usb_cdc_get_line_state(), ra8_usb_cdc_handle_setup(), ra8_usb_cdc_init(), ra8_usb_cdc_recv(), ra8_usb_composite_close(), ra8_usb_composite_dispatch_setup(), ra8_usb_composite_get_class_count(), ra8_usb_composite_get_config_descriptor(), ra8_usb_composite_get_device_descriptor(), ra8_usb_composite_init(), ra8_usb_composite_register_class(), ra8_usb_composite_set_descriptors(), ra8_usb_device_init(), ra8_usb_get_device_state(), ra8_usb_get_status(), ra8_usb_haud_init(), ra8_usb_haud_recv_samples(), ra8_usb_hcdc_ecm_get_link_status(), ra8_usb_hcdc_ecm_init(), ra8_usb_hcdc_ecm_parse_mac(), ra8_usb_hcdc_ecm_recv_frame(), ra8_usb_hcdc_init(), ra8_usb_hcdc_recv(), ra8_usb_hhid_get_input_report(), ra8_usb_hhid_get_report(), ra8_usb_hhid_init(), ra8_usb_hhub_get_port_count(), ra8_usb_hhub_get_port_status(), ra8_usb_hhub_init(), ra8_usb_hmsc_build_cbw(), ra8_usb_hmsc_decode_csw(), ra8_usb_hmsc_init(), ra8_usb_hmsc_inquiry(), ra8_usb_hmsc_read10(), ra8_usb_hmsc_read_capacity(), ra8_usb_hmsc_write10(), ra8_usb_host_bulk_in(), ra8_usb_host_bulk_out(), ra8_usb_host_control_xfer(), ra8_usb_host_init(), ra8_usb_host_setup_request(), ra8_usb_pal_ep_recv(), ra8_usb_pal_get_state(), ra8_usb_pal_init(), ra8_usb_paud_get_format(), ra8_usb_paud_get_volume(), ra8_usb_paud_handle_setup(), ra8_usb_paud_init(), ra8_usb_paud_recv_frame(), ra8_usb_paud_set_descriptors(), ra8_usb_phid_get_idle(), ra8_usb_phid_get_protocol(), ra8_usb_phid_handle_setup(), ra8_usb_phid_init(), ra8_usb_phid_recv_report(), ra8_usb_phid_send_report(), ra8_usb_phid_set_descriptors(), ra8_usb_pmsc_attach_storage(), ra8_usb_pmsc_build_csw(), ra8_usb_pmsc_dispatch_command(), ra8_usb_pmsc_feed_cbw(), ra8_usb_pmsc_init(), ra8_usb_pprn_get_port_status(), ra8_usb_pprn_handle_setup(), ra8_usb_pprn_init(), ra8_usb_pprn_recv(), ra8_usb_pprn_set_descriptors(), ra8_usb_pvnd_handle_setup(), ra8_usb_pvnd_init(), ra8_usb_pvnd_recv(), ra8_usb_pvnd_set_descriptors(), ra8_usb_queue_in(), ra8_usb_queue_out(), ra8_usb_read_setup_if_valid(), ra8_usb_read_setup_unconditional(), ra8_vfs_compress_read(), ra8_vfs_compress_write(), ra8_vin_capture_arm(), ra8_vin_capture_disarm(), ra8_vin_capture_start(), ra8_vin_get_active_buffer(), ra8_vin_get_line_count(), ra8_vin_get_module_status(), ra8_vin_get_status(), ra8_vin_init(), ra8_vin_lut_program(), ra8_vin_reset(), ra8_vin_set_csi_input(), ra8_vin_set_data_mode(), ra8_vin_set_field_detect(), ra8_vin_set_preclip(), ra8_vin_set_rgb_to_yc(), ra8_vin_set_uds_ctrl(), ra8_vin_set_uds_scale(), ra8_vin_set_yc_to_rgb(), ra8_vmem_get(), ra8_vmem_init(), ra8_vmem_prefetch(), ra8_vmem_put(), ra8_vmem_stats(), ra8_vmem_stream_init(), ra8_vreg_get_status(), ra8_vreg_init(), ra8_vsource_add_paged(), ra8_vsource_add_xip(), ra8_vsource_init(), ra8_vsource_loader(), ra8_vsource_xip_ptr(), ra8_wdt_clear_status_blocking(), ra8_wdt_deinit(), ra8_wdt_get_counter(), ra8_wdt_get_status(), ra8_wdt_init(), ra8_wdt_ofs_get(), ra8_wdt_pclkb_divisor(), ra8_wdt_subscribe(), ra8_wdt_timeout_cycles_get(), ra8_wdt_total_pclkb_cycles(), ra8_widget_book_grid_init(), ra8_widget_button_init(), ra8_widget_damage(), ra8_widget_dispatch(), ra8_widget_invalidate(), ra8_widget_keyboard_init(), ra8_widget_label_init(), ra8_widget_layout_stack(), ra8_widget_nav_bar_init(), ra8_widget_panel_init(), ra8_widget_progress_bar_init(), ra8_widget_reflow_view_init(), ra8_widget_status_bar_init(), ra8_widget_toolbar_init(), ra8_xspi_calibrate_dqs(), ra8_xspi_clear_status(), ra8_xspi_deinit(), ra8_xspi_direct_command(), ra8_xspi_flash_erase_sector(), ra8_xspi_flash_program(), ra8_xspi_flash_read(), ra8_xspi_flash_read_id(), ra8_xspi_flash_read_status(), ra8_xspi_get_status(), ra8_xspi_init(), ra8_xspi_resume(), ra8_xspi_set_dtr_mode(), ra8_xspi_set_xip_mode(), ra8_xspi_software_reset(), ra8_xspi_suspend(), ra8_xspi_xip_enter(), ra8_xspi_xip_exit(), rabook_compile_from_epub_to_buffer(), rabook_import_compile_adapter(), rabook_import_compile_adapter_m33(), sdhi_card_block_roundtrip(), sdhi_card_check_capacity(), sdhi_card_roundtrip(), sdhi_demo_mount_via_io(), sdhi_demo_read_and_verify(), sdhi_demo_roundtrip(), sdhi_demo_write_payload(), SecureFault_Handler(), ux_dcd_ra8_usb_initialize(), ux_hcd_ra8_usb_initialize(), zoom_source_init(), zoom_view_close(), zoom_view_invalidate(), zoom_view_open(), zoom_view_pan(), zoom_view_pan_dir(), zoom_view_present(), zoom_view_rebind(), zoom_view_render(), zoom_view_set_scale(), and zoom_view_window().