Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/csBlueChip/FlipperZero_plugin_howto

A simple plugin for the FlipperZero written as a tutorial example [ie. excessive documentation & error handling]
https://github.com/csBlueChip/FlipperZero_plugin_howto

Last synced: about 1 month ago
JSON representation

A simple plugin for the FlipperZero written as a tutorial example [ie. excessive documentation & error handling]

Awesome Lists containing this project

README

        

# FlipperZero_plugin_howto
A simple plugin for the FlipperZero written as a tutorial example [ie. excessive documentation & error handling]

# FAP Support Has Arrived! :) [Sept 2022]
Since the move to FAP, your "plugins" are now known as "applications"
* "Plugins" are
* Compiled in to the kernel
* Flashed as part of the firmware in the main SoC
* Require the developer to edit/maintain `/applications/meta/applications.fam`
* "Applications" are
* Compiled as separate programs
* Live on the SDCard
* Do NOT require code edits outside their own directory

The upshot is easier development, and (essentailly) unlimited features on your Flipper!

# If you have not yet installed the FlipperZero devkit
On an x86[1] computer, at a Linux[2] command prompt, type:
```
mkdir -p ~/flipperZero/official/
cd ~/flipperZero/official/
git clone --recursive https://github.com/flipperdevices/flipperzero-firmware.git ./
( cd assets/protobuf/ && git fetch )
./fbt
```
...and wait while it downloads all the required tools and performs the first build of the code.

[1] The FlipperZero Toolchain is ONLY available for x86 PCs. EG. You will NOT be able to do this on a RaspberyyPi.

[2] You CAN write FAPs under Windows. Perahps a friendly windows user would like to write a tutorial on this?

# Install the cutting-edge firmware on your Flipper
`./fbt flash_usb_full`

Note:
* `flash_usb` is used to install JUST the firmware

* `flash_usb_full` also installs the "resources" (images and such)

Be aware that since the introdcution of FAP [Sept 2022], Applications are Resources (in the same way that Images are Resources).

# After the devkit is installed
Assuming your devkit is in: `~/flipperZero/official/`

...checkout this demo with:
```
cd ~/flipperZero/official//applications_user
mkdir bc_demo
cd bc_demo
git clone https://github.com/csBlueChip/FlipperZero_plugin_howto.git ./
```

# After bc_demo is downloaded
Compile with:
```
cd ~/flipperZero/official/
./fbt fap_bc_demo
```
...And/Or (Compile and) Upload with:
```
cd ~/flipperZero/official/
./fbt launch APPSRC=bc_demo
```
...Flashing will fail if the FlipperZero is in the applications menu, or running an application!

# About the bc_demo code & documentation
* Review the `README.txt` file for an overview of the code, and how to get started.
* Take a look in `bc_demo.c` for, frankly, an abusive amount of commenting; and overkill error-handling.

The code is all M.I.T. Licensed ...take it ...use it ...butcher it ...polish it ...whatever.

...If you do anything cool with it, I'd love to see your creation :)

# Footnotes
## The change from Plugin -> Application
If you wish to review this repository at the last point before the FAP update, use [this link](https://github.com/csBlueChip/FlipperZero_plugin_howto/tree/21f2620035728cd04e1951c3f6a30de1cfe8a280)

If you wish to review the (trivial) change[s] required to convert from the old "plugin" system to the new "FAP"/"Application" system, see [this link](https://github.com/csBlueChip/FlipperZero_plugin_howto/commit/91e06b53d5b9499edd7247b9b87b73e867f1a841#diff-277dc3e809211402bcdb4976c80cd9f172ede7d3c4f8b95137c00b51c236d71d) ...the addition of an icon and a sub-folder are optional.

## The change from `ValueMutex` -> `FuriMutex`
In March 2023 the mutex API was "broken"/superceded. Due to changes in the Speaker API (which happened (essentially) at the same time) (and the fact that I didn't really think things through properly) the update to this repository wasn't 'clean'.
If you'd like to see a 'clean' update to an app that uses mutex'es, check out [the patch to my WiiEC FAP](https://github.com/csBlueChip/FlipperZero_WiiEC/commit/8ff921b4f8b69fdf60737bdd2b170f0726b719cc)