Brak opisu

Bob Matcuk 4aac32b6f4 initial version 3 lat temu
icons 4aac32b6f4 initial version 3 lat temu
.gitignore 6a223ba3b4 Initial commit 3 lat temu
LICENSE 6a223ba3b4 Initial commit 3 lat temu
README.md 4aac32b6f4 initial version 3 lat temu
application.fam 4aac32b6f4 initial version 3 lat temu
qrcode.c 4aac32b6f4 initial version 3 lat temu
qrcode.h 4aac32b6f4 initial version 3 lat temu
qrcode_app.c 4aac32b6f4 initial version 3 lat temu

README.md

flipperzero-qrcode

Display qrcodes on the Flipper Zero

Building

First, clone the flipperzero-firmware repo and then clone this repo in the applications_user directory:

git clone git@github.com:flipperdevices/flipperzero-firmware.git
cd flipperzero-firmware/applications_user
git clone git@github.com:bmatcuk/flipperzero-qrcode.git

Next, in the base of the flipperzero-firmware directory, run fbt:

cd ..
./fbt fap_qrcode

This will automatically install dependencies and build the application. When it has finished building, the .fap will be in build/f7-firmware-D/.extapps/qrcode.fap (fbt output will tell you where to find the .fap, should it change in the future).

Installation

Copy the qrcode.fap file onto your Flipper Zero sd card in the apps/Tools directory. Then create a top level directory called qrcodes to store your qrcode files.

Creating QR Codes

qrcode files are simple text files with the extension .qrcode. This app will expect them to live in a top-level directory on your sd card called qrcodes. They should have the following content:

Filetype: QRCode
Version: 0
Message: your content here

Message Format

qrcodes support 4 formats called "modes": numeric, alpha-numeric, binary, and kanji. Because of the limited screen real-estate on the Flipper Zero, you'll want to pick the best mode for the data you are trying to display.

The app will automatically detect the best mode to use, so the only thing you need to do is make sure the message in your file is formatted to use the best mode. For example, if your message is entirely numeric, make sure you don't include any extraneous punctuation in your file. If you're only encoding a domain name, make sure it's uppercase to take advantage of alpha-numeric mode, etc.

Numeric Mode

Consists of only numbers, nothing else. This mode can encode the most data.

Alpha-Numeric Mode

This mode can encode numbers, uppercase letters only, spaces, and the following symbols: $%*+-./:. This format may be appropriate for urls, as long as you're only encoding the domain name and you remember to use uppercase letters (ex: HTTP://EXAMPLE.COM). If your url includes some path after the domain, you'll likely need to use binary mode because the paths are usually case-sensitive.

A qrcode in alpha-numeric mode can encode ~40% less data than numeric mode.

Binary Mode

This mode is a little bit of a misnomer: binary mode simply means that the message will be encoded as 8-bit bytes. The qrcode standard stipulates that text will use ISO-8859-1 (also known as Latin-1) encoding, not utf8 as would be the standard these days. However, some readers may automatically detect utf8. To be standard-compliant, that basically means you can only use Latin letters, numbers, and symbols.

A qrcode in binary mode can encode ~60% less data than numeric mode, and ~30% less than alpha-numeric.

Kanji Mode

This mode is unsupported, so I won't go into detail.

qrcode library

This application uses the QRCode library by ricmoo. This is the same library that is in the lib directory of the flipper-firmware repo (which was originally included for a now-removed demo app), but modified slightly to fix some compiler errors.