# Monster++
**Frankenstein's monster among the watch apps.**
  
It's an adjustable clock with pictures in the background, date and battery display and much more.

Based on or inspired by code from
* [36C3 Clock](https://badge.team/projects/36c3_clock)
* [adventure timer](https://badge.team/projects/adventure_timer)
* [Binary Clock](https://badge.team/projects/binary_clock)
* [Control Center](https://badge.team/projects/control_center)
* [DigiClk](https://badge.team/projects/digiclk)
* [Engelsystem](https://badge.team/projects/engelsystem)
* [Fahrplan](https://badge.team/projects/fahrplan)
* [picview](https://badge.team/projects/picview)
* [simple flashlight](https://badge.team/projects/simple_flashlight)
* [Tiny Typer](https://badge.team/projects/tiny_typer)
* [Timer](https://badge.team/projects/timer)
* [watch++](https://badge.team/projects/watch)
* card10 standard apps
  * Menu
  * Bluetooth
  * Personal State
* [Exposure Notifications](https://card10.badge.events.ccc.de/en/exposure_notifications)
  
[Picture of card10 running the app](https://twitter.com/Pixtxa/status/1207011584280793090)

## Features
* Displays time as a **big seven-segment display**
* Displays **date including current weekday**
* Displays **seconds as a nice looking bar** at the bottom of the screen
  * Displays number of exposured COVID-19 Notifications
  	* Window in Seconds, Number of Notifications from Google/Apple and in total
	* Only if any received
	* Also vibrates and lets the chaos led flash
	  * These settings can be chanded in the Exposure Notifications App
* Display color cycles softly during the day
  * Every minute a slightly new color
  * 08:00 = red, 12:00 = yellow, 16:00 = green, 20:00 = cyan, 00:00 = blue, 04:00 = magenta
* Allows **changing** the **time and date** completely **via buttons**
* Displays the **Battery status** (including charging status) of your card10-badge
* Displays the time of your next angel shift (from engelsystem exportet json named shifts.json needed in card10's root directory)
  * Also vibrates (deault: 15 minutes) before shift starts, when shift starts and when shift ends
  * To view more details about your shift, use the [Engelsystem](https://badge.team/projects/engelsystem) app
  * Feature hacked together on 36c3
  	* It worked, but is only tested in UTC+1
* Ten **different brightness modes** (mixed for display and top led bar), starts with auto adjusted display backlight
* **Supports [Timer](https://badge.team/projects/timer) and [Control Center](https://badge.team/projects/control_center) app**
  * Switches automatically to the app when timer/alarm goes off or it's manually selected via button
  * Camp rocket (green) lights up while timer is running
* **Fast change your personal_state** by clicking the BOTTOM_LEFT button, long click to **switch to the ecg app**
* **Power Saving**
  * Automatically adjust brightness of display depending on light-sensor (safes battery)
  * Render complete display once a minute, bar only when changes (140 times per minute)
    * Time editing modes will be rendered faster to enable better feedback from button presses
* Easily activate USB mode or the flashlight LED
* Enable/Disable Bluetooth and easily restart your card10 (also to bootloader mode)
* No annoying blinking Dots between the digits
  * *Yeah, it wouldn't be easy to impement, so I'm calling it a fature*
* **Fast switch to [Cyberband](https://badge.team/projects/cyberband) app**
  * *I had no better Idea for the release, normally it switches to my canteen app, but that is unreleased, because I'm the only one with an card10 on my company*
* **Shitty UX, code and documentation**
  * Buttons have four different click times
  * it's a mashup of different apps, which are somehow put together with some new features beeing added
  * *Well, it's not a feature, I know, but don't have the time and knowledge to do it better and wanted to release it before #36c3*
  * **Works for me**

## Controls
* TOP_RIGHT button
	* <250 ms
		* Cycle between ten different display modes:

			| Mode | display backlight | binary clock |
			|:----:|:-----------------:|:------------:|
			|**0** | auto              | off          |
			|  1   | medium            | on           |
			|  2   | dark              | off          |
			|  3   | off               | off          |
			|  4   | off               | on           |
			|  5   | bright            | on           |
			|  6   | full on           | on           |
			|  7   | full on           | bright       |
			|  8   | full on           | off          |
			|  9   | medium            | off          |
	* 250-500 ms
    	* Switch to [Timer](https://badge.team/projects/timer) app
	* 500-1000 ms
    	* Switch between display and time edit mode
	* \>1 s
    	* Switch to [Cyberband](https://badge.team/projects/cyberband) app
* BOTTOM_RIGHT button
	* < 500 ms
		* Time edit mode
			* Set+1
		* Display mode
			* toggle flashlight LED
	* 500-1000 ms
		* Time edit mode
			* Set+10 
		* Display mode
			* toggle bluetooth state
				* If the chaos rocket flashes, the state in the config file is set to off
				* If the communication rocket flashes, it's set to on
				* To apply the change, you have to restart card10
	* \> 1 s
		* Restart card10
			* For example to apply the change of the bluetooth-state
	* \> 3 s
		* ... and enter USB bootloader mode
			* Bootloader simply uses the same button to enter usb mode
			* It's nice for bigger filetransfers, because the USB mode from the os crashes sometimes
* BOTTOM_LEFT button
	* < 250 ms
		* Time edit mode
			* Set-1
		* Display mode
			* Cycle between personal states
	* 250-500 ms
		* Time edit mode
			* Set-1 
		* Display mode
			* Switch to [Control Center](https://badge.team/projects/control_center) app
	* 500-1000 ms
		* Time edit mode
			* Set-10
		* Display mode
			* Run USB mode
				* Press any button to exit USB mode
	* \> 1 s
		* Switch to card10s ECG app
* To improve the ui a little bit, card10 vibrates if an button is pressed for 500 ms

## Pictures
* Only 160x80 Pixels 24 bpp BMP files are supported
* The app comes with some sample-pictures (CC0):
    * CCCamp19
        * 5 Pictures by Pixtxa
    * 36C3
  	    * 2 Pictures by Pixtxa
	    * 5 Pictures by [ElektrollArt](https://www.elektroll.art/)
* The pictures are showed in (semi-)random secuence
* Loading the picture needs about 3 seconds, so the second bar stopps at second 57 (like on a train station clock) for the picture beeing loaded
* **For a fast startup and better time editing experience, a black background is used**
  * **Don't panic, a picture will be loaded next minute**