Skip to content

FURI: fix bugs #59

@glitchcore

Description

@glitchcore

One of the most important component of Flipper Core is FURI (Flipper Universal Registry Implementation). It helps control the applications flow, make dynamic linking and interaction between applications.

In fact, FURI is just wrapper around RTOS thread management and mutexes, and callback management.

We have draft implementing of it, but there are some issues:

  • value mutex not implemented (test_furi_concurrent_access failed)
  • any API returns bool or pointer | NULL, maybe add enum with error statuses
  • function furi_open has 6 arguments, maybe pass bitmask of flags
  • at furiac_start we have array for task stack and descriptor and don't reuse its elements after some task ends
  • you can subscribe to changing record state by passing state_callback to furi_open but it is not used (test_furi_mute_algorithm, part 3 failed). Also I suggest leave 1 callback for data and state (with "type" argument)
  • test_furi_nonexistent_data not implemented
  • part of test_furi_mute_algorithm not implemented
  • Mute algorithm only partially implemented, if you want to do this, contact @glitchcore and get some vision from my mind
  • Opened records not close on app exit.

Also I think about implement FURI completely in Rust

We have 2 limitations here:

  • You cannot "send some data and get answer" (only take pointer to function and call it)
  • Bidirectional pipes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions