GithubHelp home page GithubHelp logo

ledgerhq / ledger-app-nanopb-boilerplate Goto Github PK

View Code? Open in Web Editor NEW
4.0 7.0 2.0 98 KB

A nano S/X boilerplate app to show basic use of nanopb

License: Apache License 2.0

Makefile 11.08% Shell 8.01% Python 2.36% C 78.54%
infraprj-4968

ledger-app-nanopb-boilerplate's Introduction

Ledger nanopb app

Overview

This repository is a boilerplate for a Nano S/X app tht would use NanoPB. It does very little, and just expose a minimal API (get_app_config, decode_tx_from_apdu).

Building and installing

To build and install the app on your Ledger Nano S you must set up the Ledger Nano S build environments. Please follow the Getting Started instructions at here.

If you don't want to setup a global environnment, you can also setup one just for this app by sourcing prepare-devenv.sh with the right target (s or x).

install prerequisite and switch to a Nano X dev-env:

sudo apt install python3-venv
# (x or s, depending on your device)
source prepare-devenv.sh x 

Compile and load the app onto the device:

make load

Refresh the repo (required after Makefile edits):

make clean

Remove the app from the device:

make delete

Example of Ledger wallet functionality

This app writes its output on the host's terminal through the PRINTF macro. Instructions to setup the host are given here.

Test functionality:

# (x or s, depending on your device)
source prepare-devenv.sh x
python3 py3_tests/test_send.py

This script builds a transaction with dummy data, serializes it and send it to the device. The device will then decode it and display every element it contains. This is a very basic example, as it is limited to static memory allocation. To enable dynamyc memory allocation, you can customize the interface provided in src/pb_custom.(c|h) and set PB_ENABLE_MALLOC inside ledger-nanopb/pb.h. You then have to provide your own implmentation of realloc and free. For instance, you could use umm_malloc. Be carefull with heap and stack usage, especially on Nano S.

Debugging

DEBUG is set by default here. and enables PRINTF (see here) Instrumentation is available for pb_decode and its subcalls. To enable it, uncomment this line. .

Documentation

This follows the specification available in the api.asc.

ledger-app-nanopb-boilerplate's People

Contributors

tamtamhero avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

isabella232

ledger-app-nanopb-boilerplate's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.