All Projects → MWatch → kernel

MWatch / kernel

Licence: other
An embedded 'Smartwatch' written in Rust

Programming Languages

rust
11053 projects
GDB
78 projects

Projects that are alternatives of or similar to kernel

DemOS
Free, simple, extremely lightweight, stackless, cooperative, co-routine system (OS) for microcontrollers
Stars: ✭ 18 (-55%)
Mutual labels:  arm
openHCAN
Hausautomatisierungsloesung auf CAN-Bus Basis.
Stars: ✭ 16 (-60%)
Mutual labels:  arm
embedded-in-rust
A blog about Rust and embedded stuff
Stars: ✭ 49 (+22.5%)
Mutual labels:  arm
tensorflow-serving-arm
TensorFlow Serving ARM - A project for cross-compiling TensorFlow Serving targeting popular ARM cores
Stars: ✭ 75 (+87.5%)
Mutual labels:  arm
exynos-usbdl
Unsigned code loader for Exynos BootROM
Stars: ✭ 57 (+42.5%)
Mutual labels:  arm
pbp-packages
Package build scripts for using Arch Linux ARM with the Pinebook Pro laptop.
Stars: ✭ 3 (-92.5%)
Mutual labels:  arm
tupai
Tupai is a multi-tasking operating system I wrote for my degree that focuses on safety and design, targeting a variety of platforms.
Stars: ✭ 21 (-47.5%)
Mutual labels:  arm
docker-images
All my docker images in one mono-repository with multi-arch support
Stars: ✭ 18 (-55%)
Mutual labels:  arm
eye drop
Eye Drop is a set of bottles containing a digital liquid made of shiny particles. Eye Drop uses a Huawei smartwatch and a lens from Google Cardboard to give an impression of immersive screen.
Stars: ✭ 19 (-52.5%)
Mutual labels:  smartwatch
WindowsSimplify
Windows 系統優化精簡 / Windows Simplify Project
Stars: ✭ 234 (+485%)
Mutual labels:  arm
JBC SolderingStation
JBC_SolderingStation
Stars: ✭ 63 (+57.5%)
Mutual labels:  arm
ARM-episodes
Arm Episodes
Stars: ✭ 75 (+87.5%)
Mutual labels:  arm
tensorflow-aarch64
Compiled tensorflow for aarch64 architecture
Stars: ✭ 20 (-50%)
Mutual labels:  arm
G-DOS
A portable, ROM-booting hobby OS. Currently supports m68k, arm, and PowerPC targets
Stars: ✭ 36 (-10%)
Mutual labels:  arm
Boost-for-Android-Prebuilt
boost for android
Stars: ✭ 58 (+45%)
Mutual labels:  arm
dynTaintTracer
a taint tracer based on DynamoRIO, currently ARM only
Stars: ✭ 32 (-20%)
Mutual labels:  arm
zscilib
An open-source scientific computing library for embedded systems running Zephyr OS or standalone.
Stars: ✭ 85 (+112.5%)
Mutual labels:  arm
AndroidWear-OpenWear
Android Wear & TicWear & Duwear Library
Stars: ✭ 20 (-50%)
Mutual labels:  smartwatch
arch-pi
A simple script automatically installing Arch Linux for the Raspberry Pi.
Stars: ✭ 38 (-5%)
Mutual labels:  arm
utest
Lightweight unit testing framework for C/C++ projects. Suitable for embedded devices.
Stars: ✭ 18 (-55%)
Mutual labels:  arm

Build Status

mwatch

An embedded smartwatch written with Rust, using the RTFM framework for multithreading.

Logo

Features

  • Capacitive touch sense inputs - with support for multitouch gestures
  • Full 16bit colour ssd1351 OLED
  • Runtime installable apps (see SDK section for more info)
  • Real time clock
  • Notification alerts via bluetooth
  • Buildable on stable rust 2018

Developing applications for the MWatch

The mwatch provides an SDK for developing applications that can be installed at runtime via the mwatch-send-tool. More info about the SDK can be found in the SDK repo.

System Architecture

Overview

The MWatch tries to follow a modern computer operating system, complete with a kernel, a built in window/display manager along with a user space api for developing user space apps on the watch, as well as some builtin applications.

Window/Display Manager

The window manager handles input and rendering of states/applications inside the watch, all states must implement the State trait to run but can optionally implement other helper traits which allows the window manager to enable more functionality for a state.

Kernel API

The kernel among otherthings provides an API for the sdk to interact with, this is providided by lib.rs in the kernel crate. This allows the SDK to properly depend on the kernel, meaning if the kernel implements a new API all that is required for the sdk to use it is to bump the version of the kernel. Currently there is no checking done on the binary the sdk produces to make sure it is compatible with the current running kernel.

Protocol

The MWatch has a builtin bluetooth module connected to usart2. Through this serial interface we can recieve Notifications, Applications and more. The basic procotol looks like this

STX -> TYPE -> (DELIM:DATA)* -> ETX
                ^^^^^^^^^^
                Can repeat many times based on the type 

In english, start byte followed by a type followed by any amount of delimiters followed by data finally ETX. All data must be valid ascii, to send binary data you must convert to hex nibbles first. See the application_manager for more info.

Input management

The TSC (touch sense controller) builtin to the mwatch provides three inputs. The kernel polls these inputs and multiplexes there results to produce a final output. For example touching the middle button produces a middle output, touching the left and right at the same time produces a dual-click output.

Documentation

Changelog

Building

  • Requires the thumbv7em-none-eabi target to be installed, use rustup target add thumbv7em-none-eabi to do so.
  • Requires cargo-binutils for extra features, such as generating a stripped binary. Note: The llvm-tools-preview component must be installed with rustup component add llvm-tools-preview for it to work.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Copyright Scott Mabin 2019

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].