GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - B3yondC/B3yondTime: Firmware for Pinetime smartwatch written in C/C++ and based on FreeRTOS

BranchesTags
Open more actions menu
 
 

Latest commit

 

History

1,102 Commits
1,102 Commits

Folders and files

NameName
Last commit message
Last commit date
.devcontainer
.devcontainer
 
 
.github
.github
 
 
.idea/codeStyles
.idea/codeStyles
 
 
.vscode
.vscode
 
 
bootloader
bootloader
 
 
cmake-nRF5x
cmake-nRF5x
 
 
doc
doc
 
 
docker
docker
 
 
hooks
hooks
 
 
images
images
 
 
qt-mockup/src
qt-mockup/src
 
 
src
src
 
 
tools
tools
 
 
.clang-format
.clang-format
 
 
.clang-tidy
.clang-tidy
 
 
.gitattributes
.gitattributes
 
 
.gitconfig
.gitconfig
 
 
.gitignore
.gitignore
 
 
.gitmodules
.gitmodules
 
 
.gitpod.yml
.gitpod.yml
 
 
CMakeLists.txt
CMakeLists.txt
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
gcc_nrf52-mcuboot.ld
gcc_nrf52-mcuboot.ld
 
 
gcc_nrf52.ld
gcc_nrf52.ld
 
 
nrf52.svd
nrf52.svd
 
 
nrf_common.ld
nrf_common.ld
 
 

Repository files navigation

B3yondTime

This is a fork of the InfiniTime firmware for the Pinetime smartwatch.

What's this fork about?

While maintaining most of the "under the hood" machinery of InfiniTime, this fork changes the way the display application works in significant ways:

  • It decouples the display implementation from the base system by using interfaces and a container class for the device's controllers and drivers.
  • The way a user interacts with the display is defined using a screen graph which contains all possible transitions between the screens and the triggers of these transitions.
  • It comes with a specific base class for watch faces, which simplifies the development of new watch faces by providing ready-to-use common functionality such as handlers for time and date change events, widget creation helper functions, etc.
  • A Qt mockup project is provided which allows for easy development of new screens. It provides mockups for most of the controllers and the system interface, so that you can share the very same screen source files between the Qt application and the actual firmware.

Overview

Watch faces

At the moment there are three watch faces: analog, digital and binary.

Watch faces

The watch faces can be locked and unlocked by pushing the side button. This feature is helpful to protect against unintended touch inputs when you wear the watch all day long.

Settings

Screens have been implemented for setting the brightness, the display wake up modes and the activity goal (steps per day).

Settings

Mockup

New screens can be developed in the Qt mockup project. Swiping, tapping and pushing the side button can be simulated using the mouse.

The mockup provides GUI elements to generate different inputs from the watch's (mockup) controllers. That way, you can properly test the behavior of new screens before embedding them into the firmware.

Mockup

The clockwork

The inner workings of the firmware are shared with InfiniTime:

  • Build system based on CMake;
  • Based on FreeRTOS 10.0.0 real-time OS.
  • Using LittleVGL/LVGL 7 as UI library...
  • ... and NimBLE 1.3.0 as BLE stack.

Companion apps

To get the most out of your Pinetime smartwatch, you can use a companion app which acts as a data provider for the watch.

  • Gadgetbridge (on Android via F-Droid)
  • Amazfish (on SailfishOS and Linux)
  • Siglo (on Linux)
  • [Experimental] WebBLEWatch Synchronize time directly from your web browser. video
  • [Experimental] Infini-iOS (on iOS)

Documentation

Introduction

  • Getting started with InfiniTime 1.0
  • Flash, upgrade (OTA), time synchronization,...
  • Bootloader based on MCUBoot

TODO - Development

to be continued...

Build, flash and debug

  • Project branches
  • Versioning
  • Files included in the release notes
  • Build the project
  • Flash the firmware using OpenOCD and STLinkV2
  • Build the project with Docker
  • Build the project with VSCode
  • Bootloader, OTA and DFU
  • Stub using NRF52-DK
  • Logging with JLink RTT.
  • Using files from the releases

Contribute

  • How to contribute ?

API

  • BLE implementation and API

Architecture and technical topics

  • Memory analysis

Using the firmware

  • Integration with Gadgetbridge
  • Integration with AmazFish
  • Firmware update, OTA

Licenses

This project is released under the GNU General Public License version 3 or, at your option, any later version.

It integrates the following projects:

  • RTOS : FreeRTOS under the MIT license
  • UI : LittleVGL/LVGL under the MIT license
  • BLE stack : NimBLE under the Apache 2.0 license
  • TODO: Add license of fonts

Credits

All the credits go to the contributors of InfiniTime. :)

About

Firmware for Pinetime smartwatch written in C/C++ and based on FreeRTOS

Resources

Readme
GPL-3.0 license

Contributing

Contributing
Activity

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.