129dd97b51
`SpiNorFlash.h` is a C++ header, but the `Identification` struct is created in a C style using `typedef struct`. Clang issues a warining about this discrepancy: ``` In file included from /home/nero/repos/pinetime/InfiniSim/InfiniTime/src/systemtask/SystemTask.cpp:13: /home/nero/repos/pinetime/InfiniSim/sim/drivers/SpiNorFlash.h:16:21: warning: anonymous non-C-compatible type given name for linkage purposes by typedef declaration; add a tag name here [-Wnon-c-typedef-for-linkage] typedef struct __attribute__((packed)) { ^ Identification /home/nero/repos/pinetime/InfiniSim/sim/drivers/SpiNorFlash.h:17:9: note: type is not C-compatible due to this default member initializer uint8_t manufacturer = 0; ^~~~~~~~~~~~~~~~~~~~ /home/nero/repos/pinetime/InfiniSim/sim/drivers/SpiNorFlash.h:20:9: note: type is given name 'Identification' for linkage purposes by this typedef declaration } Identification; ^ 1 warning generated. ``` The easy fix is to use a C++ style struct. Also includes code style fix from Riksu9000 Co-authored-by: Riku Isokoski <riksu9000@gmail.com> |
||
---|---|---|
.devcontainer | ||
.github | ||
.idea/codeStyles | ||
.vscode | ||
bootloader | ||
cmake-nRF5x | ||
doc | ||
docker | ||
hooks | ||
images | ||
src | ||
tools | ||
.clang-format | ||
.clang-tidy | ||
.gitattributes | ||
.gitconfig | ||
.gitignore | ||
.gitmodules | ||
.gitpod.yml | ||
CMakeLists.txt | ||
CONTRIBUTING.md | ||
gcc_nrf52-mcuboot.ld | ||
gcc_nrf52.ld | ||
LICENSE | ||
nrf_common.ld | ||
nrf52.svd | ||
README.md |
InfiniTime
Fast open-source firmware for the PineTime smartwatch with many features, written in modern C++.
New to InfiniTime?
Companion apps
- Gadgetbridge (Android)
- AmazFish (SailfishOS)
- Siglo (Linux)
- InfiniLink [Experimental] (iOS)
- ITD (Linux)
Development
- Rough structure of the code
- How to implement an application
- Generate the fonts and symbols
- Creating a stopwatch in Pinetime(article)
- Tips on designing an app UI
InfiniSim Simulator
Use the InfiniSim Simulator to experience the InfiniTime
user interface directly on your PC, to shorten the time until you get your hands on a real PineTime smartwatch.
Or use it to develop new Watchfaces, new Screens, or quickly iterate on the user interface.
Contributing
Build, flash and debug
- Project branches
- Versioning
- Files included in the release notes
- Build the project
- Flash the firmware using OpenOCD and STLinkV2
- Flash the firmware using SWD interface
- Build the project with Docker
- Build the project with VSCode
- Bootloader, OTA and DFU
- Stub using NRF52-DK
API
Architecture and technical topics
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
- Font : Jetbrains Mono under the Apache 2.0 license
Credits
I’m not working alone on this project. First, many people create PR for this projects. Then, there is the whole #pinetime community : a lot of people all around the world who are hacking, searching, experimenting and programming the Pinetime. We exchange our ideas, experiments and code in the chat rooms and forums.
Here are some people I would like to highlight:
- Atc1441 : He works on an Arduino based firmware for the Pinetime and many other smartwatches based on similar hardware. He was of great help when I was implementing support for the BMA421 motion sensor and I²C driver.
- Koen : He’s working on a firmware based on RiotOS. He integrated similar libs as me : NimBLE, LittleVGL,… His help was invaluable too!
- Lup Yuen Lee : He is everywhere: he works on a Rust firmware, builds a MCUBoot based bootloader for the Pinetime, designs a Flutter based companion app for smartphones and writes a lot of articles about the Pinetime!
If you feel like you should appear on this list, just get in touch with me or submit a PR :)