diff options
author | Ben V. Brown <[email protected]> | 2020-05-29 21:49:13 +1000 |
---|---|---|
committer | Ben V. Brown <[email protected]> | 2020-05-29 21:49:13 +1000 |
commit | 6bb56c28ba753b91626ec032527fdf629e1ab75a (patch) | |
tree | 38e37548c45d2894e51a85ac509d179460b7a9a7 | |
parent | 8d59b072ef83b613145e52298d8f108b4579e7f3 (diff) | |
download | IronOS-6bb56c28ba753b91626ec032527fdf629e1ab75a.tar.gz IronOS-6bb56c28ba753b91626ec032527fdf629e1ab75a.zip |
Drivers + Threads
-rw-r--r-- | workspace/TS100/Core/Drivers/Buttons.cpp (renamed from workspace/TS100/Core/Src/Buttons.cpp) | 0 | ||||
-rw-r--r-- | workspace/TS100/Core/Drivers/Buttons.hpp (renamed from workspace/TS100/Core/Inc/Buttons.hpp) | 0 | ||||
-rw-r--r-- | workspace/TS100/Core/Drivers/Font.h (renamed from workspace/TS100/Core/Inc/Font.h) | 384 | ||||
-rw-r--r-- | workspace/TS100/Core/Drivers/LIS2DH12.cpp (renamed from workspace/TS100/Core/Src/LIS2DH12.cpp) | 0 | ||||
-rw-r--r-- | workspace/TS100/Core/Drivers/LIS2DH12.hpp (renamed from workspace/TS100/Core/Inc/LIS2DH12.hpp) | 0 | ||||
-rw-r--r-- | workspace/TS100/Core/Drivers/LIS2DH12_defines.hpp (renamed from workspace/TS100/Core/Inc/LIS2DH12_defines.hpp) | 56 | ||||
-rw-r--r-- | workspace/TS100/Core/Drivers/MMA8652FC.cpp (renamed from workspace/TS100/Core/Src/MMA8652FC.cpp) | 0 | ||||
-rw-r--r-- | workspace/TS100/Core/Drivers/MMA8652FC.hpp (renamed from workspace/TS100/Core/Inc/MMA8652FC.hpp) | 0 | ||||
-rw-r--r-- | workspace/TS100/Core/Drivers/MMA8652FC_defines.h (renamed from workspace/TS100/Core/Inc/MMA8652FC_defines.h) | 248 | ||||
-rw-r--r-- | workspace/TS100/Core/Drivers/OLED.cpp (renamed from workspace/TS100/Core/Src/OLED.cpp) | 0 | ||||
-rw-r--r-- | workspace/TS100/Core/Drivers/OLED.hpp (renamed from workspace/TS100/Core/Inc/OLED.hpp) | 0 | ||||
-rw-r--r-- | workspace/TS100/Core/Drivers/README.md | 10 | ||||
-rw-r--r-- | workspace/TS100/Core/Drivers/TipThermoModel.cpp (renamed from workspace/TS100/Core/Src/TipThermoModel.cpp) | 0 | ||||
-rw-r--r-- | workspace/TS100/Core/Drivers/TipThermoModel.h (renamed from workspace/TS100/Core/Inc/TipThermoModel.h) | 0 | ||||
-rw-r--r-- | workspace/TS100/Core/Inc/main.hpp | 6 | ||||
-rw-r--r-- | workspace/TS100/Core/Src/main.cpp | 116 | ||||
-rw-r--r-- | workspace/TS100/Core/Src/power.cpp | 2 | ||||
-rw-r--r-- | workspace/TS100/Core/Threads/GUIThread.cpp (renamed from workspace/TS100/Core/Src/GUIThread.cpp) | 0 | ||||
-rw-r--r-- | workspace/TS100/Core/Threads/PIDThread.cpp | 126 |
19 files changed, 487 insertions, 461 deletions
diff --git a/workspace/TS100/Core/Src/Buttons.cpp b/workspace/TS100/Core/Drivers/Buttons.cpp index beca08b1..beca08b1 100644 --- a/workspace/TS100/Core/Src/Buttons.cpp +++ b/workspace/TS100/Core/Drivers/Buttons.cpp diff --git a/workspace/TS100/Core/Inc/Buttons.hpp b/workspace/TS100/Core/Drivers/Buttons.hpp index fb4b1991..fb4b1991 100644 --- a/workspace/TS100/Core/Inc/Buttons.hpp +++ b/workspace/TS100/Core/Drivers/Buttons.hpp diff --git a/workspace/TS100/Core/Inc/Font.h b/workspace/TS100/Core/Drivers/Font.h index 07139044..963ac71f 100644 --- a/workspace/TS100/Core/Inc/Font.h +++ b/workspace/TS100/Core/Drivers/Font.h @@ -1,192 +1,192 @@ -/* - * Font.h - * - * Created on: 17 Sep 2016 - * Author: Ralim - * - * ... This file contains the font... - */ - -#ifndef FONT_H_ -#define FONT_H_ -#include "Translation.h" - -#define FONT_12_WIDTH 12 -// FONTS ARE NO LONGER HERE, MOVED TO PYTHON AUTO GEN - - -const uint8_t ExtraFontChars[] = { - //width = 12 - //height = 16 - 0x00,0x18,0x24,0x24,0x18,0xC0,0x40,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x02,0x02,0x02,0x00,0x00,0x00, // Degrees F - 0x00,0x18,0x24,0x24,0x18,0x80,0x40,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x08,0x10,0x10,0x10,0x00,0x00, // Degrees C - 0x00,0x00,0x20,0x30,0x38,0xFC,0xFE,0xFC,0x38,0x30,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00, // UP arrow - - 0x00,0xF0,0x08,0x0E,0x02,0x02,0x02,0x02,0x0E,0x08,0xF0,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x00, // Battery Empty - 0x00,0xF0,0x08,0x0E,0x02,0x02,0x02,0x02,0x0E,0x08,0xF0,0x00,0x00,0x3F,0x40,0x50,0x50,0x50,0x50,0x50,0x50,0x40,0x3F,0x00, // Battery 1*/ - 0x00,0xF0,0x08,0x0E,0x02,0x02,0x02,0x02,0x0E,0x08,0xF0,0x00,0x00,0x3F,0x40,0x58,0x58,0x58,0x58,0x58,0x58,0x40,0x3F,0x00, // Battery 2*/ - 0x00,0xF0,0x08,0x0E,0x02,0x02,0x02,0x02,0x0E,0x08,0xF0,0x00,0x00,0x3F,0x40,0x5C,0x5C,0x5C,0x5C,0x5C,0x5C,0x40,0x3F,0x00, // Battery 3*/ - 0x00,0xF0,0x08,0x0E,0x02,0x02,0x02,0x02,0x0E,0x08,0xF0,0x00,0x00,0x3F,0x40,0x5E,0x5E,0x5E,0x5E,0x5E,0x5E,0x40,0x3F,0x00, // Battery 4*/ - 0x00,0xF0,0x08,0x0E,0x02,0x02,0x02,0x02,0x0E,0x08,0xF0,0x00,0x00,0x3F,0x40,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x40,0x3F,0x00, // Battery 5*/ - 0x00,0xF0,0x08,0x8E,0x82,0x82,0x82,0x82,0x8E,0x08,0xF0,0x00,0x00,0x3F,0x40,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x40,0x3F,0x00, // Battery 6*/ - 0x00,0xF0,0x08,0xCE,0xC2,0xC2,0xC2,0xC2,0xCE,0x08,0xF0,0x00,0x00,0x3F,0x40,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x40,0x3F,0x00, // Battery 7*/ - 0x00,0xF0,0x08,0xEE,0xE2,0xE2,0xE2,0xE2,0xEE,0x08,0xF0,0x00,0x00,0x3F,0x40,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x40,0x3F,0x00, // Battery 8*/ - 0x00,0xF0,0x08,0xEE,0xE2,0xF2,0xF2,0xE2,0xEE,0x08,0xF0,0x00,0x00,0x3F,0x40,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x40,0x3F,0x00, // Battery 9*/ - 0x00,0xF0,0x08,0xEE,0xE2,0xFA,0xFA,0xE2,0xEE,0x08,0xF0,0x00,0x00,0x3F,0x40,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x40,0x3F,0x00, // Battery 10*/ - - 0x00,0x00,0x38,0xC4,0x00,0x38,0xC4,0x00,0x38,0xC4,0x00,0x00,0x00,0x38,0x3A,0x39,0x38,0x3A,0x39,0x38,0x3A,0x39,0x10,0x10, // heating - 0x00,0x60,0xE0,0xFE,0xE0,0xE0,0xE0,0xE0,0xFE,0xE0,0x60,0x00,0x00,0x00,0x00,0x01,0x03,0xFF,0xFF,0x03,0x01,0x00,0x00,0x00, // AC - - 0xFC,0x02,0x02,0x02,0x02,0x02,0x02,0x82,0x62,0x1A,0x02,0xFC,0x3F,0x40,0x42,0x46,0x4C,0x58,0x46,0x41,0x40,0x40,0x40,0x3F, // ☑ (check box on, menu true) - 0xFC,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xFC,0x3F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F, // ☐ (check box off, menu false) - - /* - 0x00,0x00,0x00,0x80,0x80,0xFE,0xFF,0x83,0x87,0x06,0x00,0x00,0x00,0x00,0x30,0x70,0x60,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00, // Function? - 0x00,0x70,0xFA,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xFF,0xFE,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x00, // a_ - 0x00,0x3C,0x7E,0xE7,0xC3,0xC3,0xC3,0xC3,0xE7,0x7E,0x3C,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x00, // 0_ - 0x55,0x00,0xAA,0x00,0x55,0x00,0xAA,0x00,0x55,0x00,0xAA,0x00,0x55,0x00,0xAA,0x00,0x55,0x00,0xAA,0x00,0x55,0x00,0xAA,0x00, // 25% block - 0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55, // 50% pipe - 0xAA,0xFF,0x55,0xFF,0xAA,0xFF,0x55,0xFF,0xAA,0xFF,0x55,0xFF,0xAA,0xFF,0x55,0xFF,0xAA,0xFF,0x55,0xFF,0xAA,0xFF,0x55,0xFF, // 75% block - 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, // | pipe - 0x80,0x80,0x80,0x80,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, // T pipe ,| - 0xC0,0xC0,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0xFE,0xFE,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, // ,| double pipe - 0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, // || double pipe - 0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0xFE,0xFE,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, // #NAME?//#NAME? - 0xC0,0xC0,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x07,0x07,0x00,0x00,0x00,0x00,0x00, // ,^ double pupe - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, // #NAME?//#NAME? - 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01, // ,> pipe - 0x80,0x80,0x80,0x80,0x80,0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, // _|_ pipe - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x01,0x01,0x01,0x01,0x01,0xFF,0xFF,0x01,0x01,0x01,0x01,0x01, // ,|, pipe - 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x01,0x01,0x01,0x01,0x01, // |, pipe - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, // #NAME?//#NAME? - 0x80,0x80,0x80,0x80,0x80,0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x01,0x01,0x01,0x01,0x01,0xFF,0xFF,0x01,0x01,0x01,0x01,0x01, // #NAME?//#NAME? - 0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x07,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, // ,> double pipe - 0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0xFF,0xFF,0x00,0xFE,0xFE,0x06,0x06,0x06,0x06,0x06, // ^, double pipe - 0xC0,0xC0,0xFF,0xFF,0x00,0xFF,0xFF,0xC0,0xC0,0xC0,0xC0,0xC0,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, // _|_ double pipe - 0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x06,0x06,0xFE,0xFE,0x00,0xFE,0xFE,0x06,0x06,0x06,0x06,0x06, // ,|, double pipe - 0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0xFF,0xFF,0x00,0xFE,0xFE,0x06,0x06,0x06,0x06,0x06, // |, double pipe - 0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, // == double pipe - 0xC0,0xC0,0xFF,0xFF,0x00,0xFF,0xFF,0xC0,0xC0,0xC0,0xC0,0xC0,0x06,0x06,0xFE,0xFE,0x00,0xFE,0xFE,0x06,0x06,0x06,0x06,0x06, // #NAME?//#NAME? - 0x00,0x00,0x00,0x78,0xFC,0xCC,0x8C,0x0C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x3E,0x33,0x33,0x3F,0x1E,0x00,0x00,0x00, // Delta lowercase - 0x00,0x00,0x00,0x00,0x00,0x7E,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 27 (') - 0x80,0x80,0x80,0x80,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00, // ,^ pipe - 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x01,0x01,0x01,0x01,0x01, // | , pipe - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, // solid block - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, // half block bottom - 0x00,0x00,0x00,0x00,0x00,0xBF,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x00,0x00,0x00,0x00,0x00, // 7C (|) - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // top half solid block - 0x00,0x00,0x0C,0xFC,0xFC,0x6C,0x60,0x60,0xE0,0xC0,0x00,0x00,0x00,0x00,0x30,0x3F,0x3F,0x36,0x06,0x06,0x07,0x03,0x00,0x00, // DE small - 0x00,0x00,0x03,0xFF,0xFF,0x1B,0x18,0x18,0xF8,0xF0,0x00,0x00,0x00,0x00,0x30,0x3F,0x3F,0x36,0x06,0x06,0x07,0x03,0x00,0x00, // DE large - 0x00,0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ? (,) - 0x00,0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x00,0x00, // = - 0x00,0x00,0x00,0x40,0x80,0x80,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // sideways comma - 0x00,0x00,0x80,0xC0,0x80,0x00,0x00,0x80,0xC0,0x80,0x00,0x00,0x00,0x00,0x01,0x03,0x01,0x00,0x00,0x01,0x03,0x01,0x00,0x00, // .. - 0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x01,0x00,0x00,0x00,0x00, // . - 0x00,0x00,0x02,0x1F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // tiny 1 - 0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x00,0x00,0x00,0x00, // small block - */ -}; - -const uint8_t FontSymbols[] = { - 0x00,0x00,0x00,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00, // Right block - 0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x00,0x00,0x00, // left block - 0x00,0x00,0x00,0x10,0x18,0x1C,0xFE,0x1C,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x04,0x0C,0x1C,0x3F,0x1C,0x0C,0x04,0x00,0x00, // UD arrow - 0x00,0x00,0x00,0xFE,0xFE,0x00,0x00,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x37,0x00,0x00,0x37,0x37,0x00,0x00,0x00, // !! - 0x00,0x38,0x7C,0xC6,0x82,0xFE,0xFE,0x02,0xFE,0xFE,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x00,0x3F,0x3F,0x00,0x00, // paragraph - 0x00,0x00,0xDC,0xFE,0x22,0x22,0x22,0x22,0xE6,0xC4,0x00,0x00,0x00,0x00,0x08,0x19,0x11,0x11,0x11,0x11,0x1F,0x0E,0x00,0x00, // section - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x00, // cursor - 0x00,0x00,0x00,0x08,0x0C,0x0E,0xFF,0x0E,0x0C,0x08,0x00,0x00,0x00,0x00,0x00,0x44,0x4C,0x5C,0x7F,0x5C,0x4C,0x44,0x00,0x00, // UD arrow - 0x00,0x00,0x00,0x10,0x18,0x1C,0xFE,0x1C,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00, // UP arrow - 0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x0C,0x1C,0x3F,0x1C,0x0C,0x04,0x00,0x00, // Down arrow - 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x03,0x01,0x00,0x00, // right arrow - 0x00,0x00,0x80,0xC0,0xE0,0xF0,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x00,0x00,0x00,0x00,0x00,0x00, // left arrow - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00, - 0x00,0x80,0xC0,0xE0,0xF0,0x80,0x80,0x80,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x01,0x03,0x07,0x00,0x00,0x00,0x07,0x03,0x01,0x00, // LR arrow - 0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x04,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x04, // UP block - 0x00,0x20,0x60,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x60,0x20,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x03,0x01,0x00,0x00,0x00 // Down block -}; - -const uint8_t WarningBlock24[] = { - //width = 24 - //height = 16 - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0x0C,0x02,0xF1,0xF1,0xF1,0x02,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xC0,0xB0,0x8C,0x83,0x80,0x80,0x80,0x80,0xB3,0xB3,0xB3,0x80,0x80,0x80,0x80,0x83,0x8C,0xB0,0xC0,0x00,0x00 -}; - -const uint8_t idleScreenBG[] = { - //width = 84 - //height = 16 - 0x00,0xE0,0x18,0x04,0x02,0x02,0x01,0x41,0x61,0x61,0x61,0xE1,0xC1,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, - 0x81,0x81,0x81,0x81,0xC1,0xE1,0x61,0x61,0x61,0x41,0x01,0x01,0x02,0x02,0x04,0x18,0xE0,0x00,0x00,0xE0,0x18,0x04,0x02,0x02, - 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, - 0x99,0x65,0x01,0x01,0x81,0x41,0x01,0x02,0x02,0x04,0x18,0xE0, - 0x00,0x07,0x18,0x20,0x40,0x40,0x80,0x82,0x86,0x86,0x86,0x87,0x83,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81, - 0x81,0x81,0x81,0x81,0x83,0x87,0x86,0x86,0x86,0x82,0x80,0x80,0x40,0x40,0x20,0x18,0x07,0x00,0x00,0x07,0x18,0x20,0x40,0x40, - 0x80,0x82,0x87,0x85,0x85,0x85,0x85,0x87,0x87,0x85,0x87,0x85,0x87,0x87,0x82,0x82,0x82,0x80,0x82,0x80,0x82,0x82,0x82,0x92, - 0x8A,0x84,0x82,0x81,0x80,0x80,0x80,0x40,0x40,0x20,0x18,0x07 -}; - -const uint8_t idleScreenBGF[] = { - //width = 84 - //height = 16 - 0xE0,0x18,0x04,0x02,0x02,0x01,0x41,0x81,0x01,0x01,0x65,0x99,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, - 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x04,0x18,0xE0,0x00,0x00,0xE0,0x18,0x04,0x02,0x02, - 0x01,0x01,0x41,0x61,0x61,0x61,0xE1,0xC1,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0xC1, - 0xE1,0x61,0x61,0x61,0x41,0x01,0x02,0x02,0x04,0x18,0xE0,0x00, - 0x07,0x18,0x20,0x40,0x40,0x80,0x80,0x80,0x81,0x82,0x84,0x8A,0x92,0x82,0x82,0x82,0x80,0x82,0x80,0x82,0x82,0x82,0x87,0x87, - 0x85,0x87,0x85,0x87,0x87,0x85,0x85,0x85,0x85,0x87,0x82,0x80,0x40,0x40,0x20,0x18,0x07,0x00,0x00,0x07,0x18,0x20,0x40,0x40, - 0x80,0x80,0x82,0x86,0x86,0x86,0x87,0x83,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x83, - 0x87,0x86,0x86,0x86,0x82,0x80,0x40,0x40,0x20,0x18,0x07,0x00 -}; - -/* - * 16x16 icons - * */ -const uint8_t SettingsMenuIcons[] = { - - // Soldering - //width = 16 - //height = 16 - 0x00, 0x02, 0x04, 0x08, 0x12, 0x24, 0xC4, 0x42, 0x82, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x02, 0x07, 0x0A, 0x14, 0x28, 0x50, - 0x60, 0x00, - - - - //Sleep - //width = 16 - //height = 16 - 0x00, 0xC6, 0xE6, 0xF6, 0xBE, 0x9E, 0x8E, 0x86, 0x00, 0x00, - 0x40, 0x40, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x45, 0x65, 0x75, 0x5D, 0x4C, 0x00, 0x06, 0x07, 0x07, 0x05, - 0x04, 0x00, - - - - //Menu - //width = 16 - //height = 16 - 0x00,0x80,0x06,0x86,0x46,0x06,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x00, - 0x00,0x00,0x61,0x60,0x00,0x00,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x00, - - //Wrench - ///width = 16 - //height = 16 - 0x00, 0x18, 0x30, 0x32, 0x7E, 0x7C, 0xF0, 0xC0, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x3E, 0x7E, 0x4C, 0x0C, - 0x18, 0x00, - #ifdef NOTUSED - //Calibration (Not used, kept for future menu layouts) - //width = 16 - //height = 16 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE8, 0x70, - 0x7A, 0x5E, 0x8E, 0x1C, 0x30, 0x00, 0x00, 0x10, 0x38, 0x1C, - 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, - #endif -}; - - -#endif /* FONT_H_ */ +/*
+ * Font.h
+ *
+ * Created on: 17 Sep 2016
+ * Author: Ralim
+ *
+ * ... This file contains the font...
+ */
+
+#ifndef FONT_H_
+#define FONT_H_
+#include "Translation.h"
+
+#define FONT_12_WIDTH 12
+// FONTS ARE NO LONGER HERE, MOVED TO PYTHON AUTO GEN
+
+
+const uint8_t ExtraFontChars[] = {
+ //width = 12
+ //height = 16
+ 0x00,0x18,0x24,0x24,0x18,0xC0,0x40,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x02,0x02,0x02,0x00,0x00,0x00, // Degrees F
+ 0x00,0x18,0x24,0x24,0x18,0x80,0x40,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x08,0x10,0x10,0x10,0x00,0x00, // Degrees C
+ 0x00,0x00,0x20,0x30,0x38,0xFC,0xFE,0xFC,0x38,0x30,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00, // UP arrow
+
+ 0x00,0xF0,0x08,0x0E,0x02,0x02,0x02,0x02,0x0E,0x08,0xF0,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x00, // Battery Empty
+ 0x00,0xF0,0x08,0x0E,0x02,0x02,0x02,0x02,0x0E,0x08,0xF0,0x00,0x00,0x3F,0x40,0x50,0x50,0x50,0x50,0x50,0x50,0x40,0x3F,0x00, // Battery 1*/
+ 0x00,0xF0,0x08,0x0E,0x02,0x02,0x02,0x02,0x0E,0x08,0xF0,0x00,0x00,0x3F,0x40,0x58,0x58,0x58,0x58,0x58,0x58,0x40,0x3F,0x00, // Battery 2*/
+ 0x00,0xF0,0x08,0x0E,0x02,0x02,0x02,0x02,0x0E,0x08,0xF0,0x00,0x00,0x3F,0x40,0x5C,0x5C,0x5C,0x5C,0x5C,0x5C,0x40,0x3F,0x00, // Battery 3*/
+ 0x00,0xF0,0x08,0x0E,0x02,0x02,0x02,0x02,0x0E,0x08,0xF0,0x00,0x00,0x3F,0x40,0x5E,0x5E,0x5E,0x5E,0x5E,0x5E,0x40,0x3F,0x00, // Battery 4*/
+ 0x00,0xF0,0x08,0x0E,0x02,0x02,0x02,0x02,0x0E,0x08,0xF0,0x00,0x00,0x3F,0x40,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x40,0x3F,0x00, // Battery 5*/
+ 0x00,0xF0,0x08,0x8E,0x82,0x82,0x82,0x82,0x8E,0x08,0xF0,0x00,0x00,0x3F,0x40,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x40,0x3F,0x00, // Battery 6*/
+ 0x00,0xF0,0x08,0xCE,0xC2,0xC2,0xC2,0xC2,0xCE,0x08,0xF0,0x00,0x00,0x3F,0x40,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x40,0x3F,0x00, // Battery 7*/
+ 0x00,0xF0,0x08,0xEE,0xE2,0xE2,0xE2,0xE2,0xEE,0x08,0xF0,0x00,0x00,0x3F,0x40,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x40,0x3F,0x00, // Battery 8*/
+ 0x00,0xF0,0x08,0xEE,0xE2,0xF2,0xF2,0xE2,0xEE,0x08,0xF0,0x00,0x00,0x3F,0x40,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x40,0x3F,0x00, // Battery 9*/
+ 0x00,0xF0,0x08,0xEE,0xE2,0xFA,0xFA,0xE2,0xEE,0x08,0xF0,0x00,0x00,0x3F,0x40,0x5F,0x5F,0x5F,0x5F,0x5F,0x5F,0x40,0x3F,0x00, // Battery 10*/
+
+ 0x00,0x00,0x38,0xC4,0x00,0x38,0xC4,0x00,0x38,0xC4,0x00,0x00,0x00,0x38,0x3A,0x39,0x38,0x3A,0x39,0x38,0x3A,0x39,0x10,0x10, // heating
+ 0x00,0x60,0xE0,0xFE,0xE0,0xE0,0xE0,0xE0,0xFE,0xE0,0x60,0x00,0x00,0x00,0x00,0x01,0x03,0xFF,0xFF,0x03,0x01,0x00,0x00,0x00, // AC
+
+ 0xFC,0x02,0x02,0x02,0x02,0x02,0x02,0x82,0x62,0x1A,0x02,0xFC,0x3F,0x40,0x42,0x46,0x4C,0x58,0x46,0x41,0x40,0x40,0x40,0x3F, // ☑ (check box on, menu true)
+ 0xFC,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xFC,0x3F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F, // ☐ (check box off, menu false)
+
+ /*
+ 0x00,0x00,0x00,0x80,0x80,0xFE,0xFF,0x83,0x87,0x06,0x00,0x00,0x00,0x00,0x30,0x70,0x60,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00, // Function?
+ 0x00,0x70,0xFA,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xFF,0xFE,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x00, // a_
+ 0x00,0x3C,0x7E,0xE7,0xC3,0xC3,0xC3,0xC3,0xE7,0x7E,0x3C,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x00, // 0_
+ 0x55,0x00,0xAA,0x00,0x55,0x00,0xAA,0x00,0x55,0x00,0xAA,0x00,0x55,0x00,0xAA,0x00,0x55,0x00,0xAA,0x00,0x55,0x00,0xAA,0x00, // 25% block
+ 0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55, // 50% pipe
+ 0xAA,0xFF,0x55,0xFF,0xAA,0xFF,0x55,0xFF,0xAA,0xFF,0x55,0xFF,0xAA,0xFF,0x55,0xFF,0xAA,0xFF,0x55,0xFF,0xAA,0xFF,0x55,0xFF, // 75% block
+ 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, // | pipe
+ 0x80,0x80,0x80,0x80,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, // T pipe ,|
+ 0xC0,0xC0,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0xFE,0xFE,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, // ,| double pipe
+ 0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, // || double pipe
+ 0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0xFE,0xFE,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, // #NAME?//#NAME?
+ 0xC0,0xC0,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x07,0x07,0x00,0x00,0x00,0x00,0x00, // ,^ double pupe
+ 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, // #NAME?//#NAME?
+ 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01, // ,> pipe
+ 0x80,0x80,0x80,0x80,0x80,0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, // _|_ pipe
+ 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x01,0x01,0x01,0x01,0x01,0xFF,0xFF,0x01,0x01,0x01,0x01,0x01, // ,|, pipe
+ 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x01,0x01,0x01,0x01,0x01, // |, pipe
+ 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, // #NAME?//#NAME?
+ 0x80,0x80,0x80,0x80,0x80,0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x01,0x01,0x01,0x01,0x01,0xFF,0xFF,0x01,0x01,0x01,0x01,0x01, // #NAME?//#NAME?
+ 0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x07,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, // ,> double pipe
+ 0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0xFF,0xFF,0x00,0xFE,0xFE,0x06,0x06,0x06,0x06,0x06, // ^, double pipe
+ 0xC0,0xC0,0xFF,0xFF,0x00,0xFF,0xFF,0xC0,0xC0,0xC0,0xC0,0xC0,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, // _|_ double pipe
+ 0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x06,0x06,0xFE,0xFE,0x00,0xFE,0xFE,0x06,0x06,0x06,0x06,0x06, // ,|, double pipe
+ 0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0xFF,0xFF,0x00,0xFE,0xFE,0x06,0x06,0x06,0x06,0x06, // |, double pipe
+ 0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, // == double pipe
+ 0xC0,0xC0,0xFF,0xFF,0x00,0xFF,0xFF,0xC0,0xC0,0xC0,0xC0,0xC0,0x06,0x06,0xFE,0xFE,0x00,0xFE,0xFE,0x06,0x06,0x06,0x06,0x06, // #NAME?//#NAME?
+ 0x00,0x00,0x00,0x78,0xFC,0xCC,0x8C,0x0C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x3E,0x33,0x33,0x3F,0x1E,0x00,0x00,0x00, // Delta lowercase
+ 0x00,0x00,0x00,0x00,0x00,0x7E,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 27 (')
+ 0x80,0x80,0x80,0x80,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00, // ,^ pipe
+ 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x01,0x01,0x01,0x01,0x01, // | , pipe
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, // solid block
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, // half block bottom
+ 0x00,0x00,0x00,0x00,0x00,0xBF,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x00,0x00,0x00,0x00,0x00, // 7C (|)
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // top half solid block
+ 0x00,0x00,0x0C,0xFC,0xFC,0x6C,0x60,0x60,0xE0,0xC0,0x00,0x00,0x00,0x00,0x30,0x3F,0x3F,0x36,0x06,0x06,0x07,0x03,0x00,0x00, // DE small
+ 0x00,0x00,0x03,0xFF,0xFF,0x1B,0x18,0x18,0xF8,0xF0,0x00,0x00,0x00,0x00,0x30,0x3F,0x3F,0x36,0x06,0x06,0x07,0x03,0x00,0x00, // DE large
+ 0x00,0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ? (,)
+ 0x00,0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x00,0x00, // =
+ 0x00,0x00,0x00,0x40,0x80,0x80,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // sideways comma
+ 0x00,0x00,0x80,0xC0,0x80,0x00,0x00,0x80,0xC0,0x80,0x00,0x00,0x00,0x00,0x01,0x03,0x01,0x00,0x00,0x01,0x03,0x01,0x00,0x00, // ..
+ 0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x01,0x00,0x00,0x00,0x00, // .
+ 0x00,0x00,0x02,0x1F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // tiny 1
+ 0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x00,0x00,0x00,0x00, // small block
+ */
+};
+
+const uint8_t FontSymbols[] = {
+ 0x00,0x00,0x00,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00, // Right block
+ 0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x00,0x00,0x00, // left block
+ 0x00,0x00,0x00,0x10,0x18,0x1C,0xFE,0x1C,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x04,0x0C,0x1C,0x3F,0x1C,0x0C,0x04,0x00,0x00, // UD arrow
+ 0x00,0x00,0x00,0xFE,0xFE,0x00,0x00,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x37,0x00,0x00,0x37,0x37,0x00,0x00,0x00, // !!
+ 0x00,0x38,0x7C,0xC6,0x82,0xFE,0xFE,0x02,0xFE,0xFE,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x00,0x3F,0x3F,0x00,0x00, // paragraph
+ 0x00,0x00,0xDC,0xFE,0x22,0x22,0x22,0x22,0xE6,0xC4,0x00,0x00,0x00,0x00,0x08,0x19,0x11,0x11,0x11,0x11,0x1F,0x0E,0x00,0x00, // section
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x00, // cursor
+ 0x00,0x00,0x00,0x08,0x0C,0x0E,0xFF,0x0E,0x0C,0x08,0x00,0x00,0x00,0x00,0x00,0x44,0x4C,0x5C,0x7F,0x5C,0x4C,0x44,0x00,0x00, // UD arrow
+ 0x00,0x00,0x00,0x10,0x18,0x1C,0xFE,0x1C,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00, // UP arrow
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x0C,0x1C,0x3F,0x1C,0x0C,0x04,0x00,0x00, // Down arrow
+ 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x03,0x01,0x00,0x00, // right arrow
+ 0x00,0x00,0x80,0xC0,0xE0,0xF0,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x00,0x00,0x00,0x00,0x00,0x00, // left arrow
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
+ 0x00,0x80,0xC0,0xE0,0xF0,0x80,0x80,0x80,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x01,0x03,0x07,0x00,0x00,0x00,0x07,0x03,0x01,0x00, // LR arrow
+ 0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x04,0x06,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x06,0x04, // UP block
+ 0x00,0x20,0x60,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x60,0x20,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x03,0x01,0x00,0x00,0x00 // Down block
+};
+
+const uint8_t WarningBlock24[] = {
+ //width = 24
+ //height = 16
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0x0C,0x02,0xF1,0xF1,0xF1,0x02,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xC0,0xB0,0x8C,0x83,0x80,0x80,0x80,0x80,0xB3,0xB3,0xB3,0x80,0x80,0x80,0x80,0x83,0x8C,0xB0,0xC0,0x00,0x00
+};
+
+const uint8_t idleScreenBG[] = {
+ //width = 84
+ //height = 16
+ 0x00,0xE0,0x18,0x04,0x02,0x02,0x01,0x41,0x61,0x61,0x61,0xE1,0xC1,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
+ 0x81,0x81,0x81,0x81,0xC1,0xE1,0x61,0x61,0x61,0x41,0x01,0x01,0x02,0x02,0x04,0x18,0xE0,0x00,0x00,0xE0,0x18,0x04,0x02,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x99,0x65,0x01,0x01,0x81,0x41,0x01,0x02,0x02,0x04,0x18,0xE0,
+ 0x00,0x07,0x18,0x20,0x40,0x40,0x80,0x82,0x86,0x86,0x86,0x87,0x83,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
+ 0x81,0x81,0x81,0x81,0x83,0x87,0x86,0x86,0x86,0x82,0x80,0x80,0x40,0x40,0x20,0x18,0x07,0x00,0x00,0x07,0x18,0x20,0x40,0x40,
+ 0x80,0x82,0x87,0x85,0x85,0x85,0x85,0x87,0x87,0x85,0x87,0x85,0x87,0x87,0x82,0x82,0x82,0x80,0x82,0x80,0x82,0x82,0x82,0x92,
+ 0x8A,0x84,0x82,0x81,0x80,0x80,0x80,0x40,0x40,0x20,0x18,0x07
+};
+
+const uint8_t idleScreenBGF[] = {
+ //width = 84
+ //height = 16
+ 0xE0,0x18,0x04,0x02,0x02,0x01,0x41,0x81,0x01,0x01,0x65,0x99,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x04,0x18,0xE0,0x00,0x00,0xE0,0x18,0x04,0x02,0x02,
+ 0x01,0x01,0x41,0x61,0x61,0x61,0xE1,0xC1,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0xC1,
+ 0xE1,0x61,0x61,0x61,0x41,0x01,0x02,0x02,0x04,0x18,0xE0,0x00,
+ 0x07,0x18,0x20,0x40,0x40,0x80,0x80,0x80,0x81,0x82,0x84,0x8A,0x92,0x82,0x82,0x82,0x80,0x82,0x80,0x82,0x82,0x82,0x87,0x87,
+ 0x85,0x87,0x85,0x87,0x87,0x85,0x85,0x85,0x85,0x87,0x82,0x80,0x40,0x40,0x20,0x18,0x07,0x00,0x00,0x07,0x18,0x20,0x40,0x40,
+ 0x80,0x80,0x82,0x86,0x86,0x86,0x87,0x83,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x83,
+ 0x87,0x86,0x86,0x86,0x82,0x80,0x40,0x40,0x20,0x18,0x07,0x00
+};
+
+/*
+ * 16x16 icons
+ * */
+const uint8_t SettingsMenuIcons[] = {
+
+ // Soldering
+ //width = 16
+ //height = 16
+ 0x00, 0x02, 0x04, 0x08, 0x12, 0x24, 0xC4, 0x42, 0x82, 0x04,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x02, 0x07, 0x0A, 0x14, 0x28, 0x50,
+ 0x60, 0x00,
+
+
+
+ //Sleep
+ //width = 16
+ //height = 16
+ 0x00, 0xC6, 0xE6, 0xF6, 0xBE, 0x9E, 0x8E, 0x86, 0x00, 0x00,
+ 0x40, 0x40, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x45, 0x65, 0x75, 0x5D, 0x4C, 0x00, 0x06, 0x07, 0x07, 0x05,
+ 0x04, 0x00,
+
+
+
+ //Menu
+ //width = 16
+ //height = 16
+ 0x00,0x80,0x06,0x86,0x46,0x06,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x00,
+ 0x00,0x00,0x61,0x60,0x00,0x00,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x00,
+
+ //Wrench
+ ///width = 16
+ //height = 16
+ 0x00, 0x18, 0x30, 0x32, 0x7E, 0x7C, 0xF0, 0xC0, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x3E, 0x7E, 0x4C, 0x0C,
+ 0x18, 0x00,
+ #ifdef NOTUSED
+ //Calibration (Not used, kept for future menu layouts)
+ //width = 16
+ //height = 16
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE8, 0x70,
+ 0x7A, 0x5E, 0x8E, 0x1C, 0x30, 0x00, 0x00, 0x10, 0x38, 0x1C,
+ 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00,
+ #endif
+};
+
+
+#endif /* FONT_H_ */
diff --git a/workspace/TS100/Core/Src/LIS2DH12.cpp b/workspace/TS100/Core/Drivers/LIS2DH12.cpp index 3557f0d9..3557f0d9 100644 --- a/workspace/TS100/Core/Src/LIS2DH12.cpp +++ b/workspace/TS100/Core/Drivers/LIS2DH12.cpp diff --git a/workspace/TS100/Core/Inc/LIS2DH12.hpp b/workspace/TS100/Core/Drivers/LIS2DH12.hpp index 3400130d..3400130d 100644 --- a/workspace/TS100/Core/Inc/LIS2DH12.hpp +++ b/workspace/TS100/Core/Drivers/LIS2DH12.hpp diff --git a/workspace/TS100/Core/Inc/LIS2DH12_defines.hpp b/workspace/TS100/Core/Drivers/LIS2DH12_defines.hpp index f317fbca..c233aca5 100644 --- a/workspace/TS100/Core/Inc/LIS2DH12_defines.hpp +++ b/workspace/TS100/Core/Drivers/LIS2DH12_defines.hpp @@ -1,28 +1,28 @@ -/* - * LIS2DH12_defines.hpp - * - * Created on: 27Feb.,2018 - * Author: Ralim - */ - -#ifndef LIS2DH12_DEFINES_HPP_ -#define LIS2DH12_DEFINES_HPP_ - - -#define LIS2DH_I2C_ADDRESS (25<<1) - -#define LIS_CTRL_REG1 0x20|0x80 -#define LIS_CTRL_REG2 0x21|0x80 -#define LIS_CTRL_REG3 0x22|0x80 -#define LIS_CTRL_REG4 0x23|0x80 -#define LIS_CTRL_REG5 0x24|0x80 -#define LIS_CTRL_REG6 0x25|0x80 -#define LIS_INT1_CFG 0xB0|0x80 -#define LIS_INT2_CFG 0xB4|0x80 -#define LIS_INT1_DURATION 0x33|0x80 -#define LIS_INT1_THS 0x32|0x80 -#define LIS_INT1_SRC 0x31|0x80 -#define LIS_INT2_DURATION 0x37|0x80 -#define LIS_INT2_THS 0x36|0x80 -#define LIS_INT2_SRC 0x35|0x80 -#endif /* LIS2DH12_DEFINES_HPP_ */ +/*
+ * LIS2DH12_defines.hpp
+ *
+ * Created on: 27Feb.,2018
+ * Author: Ralim
+ */
+
+#ifndef LIS2DH12_DEFINES_HPP_
+#define LIS2DH12_DEFINES_HPP_
+
+
+#define LIS2DH_I2C_ADDRESS (25<<1)
+
+#define LIS_CTRL_REG1 0x20|0x80
+#define LIS_CTRL_REG2 0x21|0x80
+#define LIS_CTRL_REG3 0x22|0x80
+#define LIS_CTRL_REG4 0x23|0x80
+#define LIS_CTRL_REG5 0x24|0x80
+#define LIS_CTRL_REG6 0x25|0x80
+#define LIS_INT1_CFG 0xB0|0x80
+#define LIS_INT2_CFG 0xB4|0x80
+#define LIS_INT1_DURATION 0x33|0x80
+#define LIS_INT1_THS 0x32|0x80
+#define LIS_INT1_SRC 0x31|0x80
+#define LIS_INT2_DURATION 0x37|0x80
+#define LIS_INT2_THS 0x36|0x80
+#define LIS_INT2_SRC 0x35|0x80
+#endif /* LIS2DH12_DEFINES_HPP_ */
diff --git a/workspace/TS100/Core/Src/MMA8652FC.cpp b/workspace/TS100/Core/Drivers/MMA8652FC.cpp index cfa4775e..cfa4775e 100644 --- a/workspace/TS100/Core/Src/MMA8652FC.cpp +++ b/workspace/TS100/Core/Drivers/MMA8652FC.cpp diff --git a/workspace/TS100/Core/Inc/MMA8652FC.hpp b/workspace/TS100/Core/Drivers/MMA8652FC.hpp index 2654e903..2654e903 100644 --- a/workspace/TS100/Core/Inc/MMA8652FC.hpp +++ b/workspace/TS100/Core/Drivers/MMA8652FC.hpp diff --git a/workspace/TS100/Core/Inc/MMA8652FC_defines.h b/workspace/TS100/Core/Drivers/MMA8652FC_defines.h index af4ef38c..d3526c02 100644 --- a/workspace/TS100/Core/Inc/MMA8652FC_defines.h +++ b/workspace/TS100/Core/Drivers/MMA8652FC_defines.h @@ -1,124 +1,124 @@ -/* - * MMA8652FC_defines.h - * - * Created on: 31Aug.,2017 - * Author: Ben V. Brown - */ - -#ifndef MMA8652FC_DEFINES_H_ -#define MMA8652FC_DEFINES_H_ - -//--------------MMA8652 Registers-------------------------------------------// - -#define STATUS_REG 0x00 // STATUS Register - -#define OUT_X_MSB_REG 0x01 // [7:0] are 8 MSBs of the 14-bit X-axis sample -#define OUT_X_LSB_REG 0x02 // [7:2] are the 6 LSB of 14-bit X-axis sample -#define OUT_Y_MSB_REG 0x03 // [7:0] are 8 MSBs of the 14-bit Y-axis sample -#define OUT_Y_LSB_REG 0x04 // [7:2] are the 6 LSB of 14-bit Y-axis sample -#define OUT_Z_MSB_REG 0x05 // [7:0] are 8 MSBs of the 14-bit Z-axis sample -#define OUT_Z_LSB_REG 0x06 // [7:2] are the 6 LSB of 14-bit Z-axis sample - -#define F_SETUP_REG 0x09 // F_SETUP FIFO Setup Register -#define TRIG_CFG_REG 0x0A // TRIG_CFG Map of FIFO data capture events -#define SYSMOD_REG 0x0B // SYSMOD System Mode Register -#define INT_SOURCE_REG 0x0C // INT_SOURCE System Interrupt Status Register -#define WHO_AM_I_REG 0x0D // WHO_AM_I Device ID Register -#define XYZ_DATA_CFG_REG 0x0E // XYZ_DATA_CFG Sensor Data Configuration Register -#define HP_FILTER_CUTOFF_REG 0x0F // HP_FILTER_CUTOFF High Pass Filter Register - -#define PL_STATUS_REG 0x10 // PL_STATUS Portrait/Landscape Status Register -#define PL_CFG_REG 0x11 // PL_CFG Portrait/Landscape Configuration Register -#define PL_COUNT_REG 0x12 // PL_COUNT Portrait/Landscape Debounce Register -#define PL_BF_ZCOMP_REG 0x13 // PL_BF_ZCOMP Back/Front and Z Compensation Register -#define P_L_THS_REG 0x14 // P_L_THS Portrait to Landscape Threshold Register - -#define FF_MT_CFG_REG 0x15 // FF_MT_CFG Freefall and Motion Configuration Register -#define FF_MT_SRC_REG 0x16 // FF_MT_SRC Freefall and Motion Source Register -#define FF_MT_THS_REG 0x17 // FF_MT_THS Freefall and Motion Threshold Register -#define FF_MT_COUNT_REG 0x18 // FF_MT_COUNT Freefall Motion Count Register - -#define TRANSIENT_CFG_REG 0x1D // TRANSIENT_CFG Transient Configuration Register -#define TRANSIENT_SRC_REG 0x1E // TRANSIENT_SRC Transient Source Register -#define TRANSIENT_THS_REG 0x1F // TRANSIENT_THS Transient Threshold Register -#define TRANSIENT_COUNT_REG 0x20 // TRANSIENT_COUNT Transient Debounce Counter Register - -#define PULSE_CFG_REG 0x21 // PULSE_CFG Pulse Configuration Register -#define PULSE_SRC_REG 0x22 // PULSE_SRC Pulse Source Register -#define PULSE_THSX_REG 0x23 // PULSE_THS XYZ Pulse Threshold Registers -#define PULSE_THSY_REG 0x24 -#define PULSE_THSZ_REG 0x25 -#define PULSE_TMLT_REG 0x26 // PULSE_TMLT Pulse Time Window Register -#define PULSE_LTCY_REG 0x27 // PULSE_LTCY Pulse Latency Timer Register -#define PULSE_WIND_REG 0x28 // PULSE_WIND Second Pulse Time Window Register - -#define ASLP_COUNT_REG 0x29 // ASLP_COUNT Auto Sleep Inactivity Timer Register - -#define CTRL_REG1 0x2A // CTRL_REG1 System Control 1 Register -#define CTRL_REG2 0x2B // CTRL_REG2 System Control 2 Register -#define CTRL_REG3 0x2C // CTRL_REG3 Interrupt Control Register -#define CTRL_REG4 0x2D // CTRL_REG4 Interrupt Enable Register -#define CTRL_REG5 0x2E // CTRL_REG5 Interrupt Configuration Register - -#define OFF_X_REG 0x2F // XYZ Offset Correction Registers -#define OFF_Y_REG 0x30 -#define OFF_Z_REG 0x31 - -//MMA8652FC 7-bit I2C address - -#define MMA8652FC_I2C_ADDRESS (0x1D<<1) - -//MMA8652FC Sensitivity - -#define SENSITIVITY_2G 1024 -#define SENSITIVITY_4G 512 -#define SENSITIVITY_8G 256 - -#define STATUS_REG 0x00 -#define X_MSB_REG 0X01 -#define X_LSB_REG 0X02 -#define Y_MSB_REG 0X03 -#define Y_LSB_REG 0X04 -#define Z_MSB_REG 0X05 -#define Z_LSB_REG 0X06 - -#define TRIG_CFG 0X0A -#define SYSMOD 0X0B -#define INT_SOURCE 0X0C -#define DEVICE_ID 0X0D - -//-----STATUS_REG(0X00)-----Bit Define----------------------------------------// -#define ZYXDR_BIT 0X08 -//----XYZ_DATA_CFG_REG(0xE)-Bit Define----------------------------------------// -#define FS_MASK 0x03 -#define FULL_SCALE_2G 0x00 //2g=0x0,4g=0x1,8g=0x2 -#define FULL_SCALE_4G 0x01 -#define FULL_SCALE_8G 0x02 -//---------CTRL_REG1(0X2A)Bit Define------------------------------------------// -#define ACTIVE_MASK 1<<0 //bit0 -#define DR_MASK 0x38 //bit D5,D4,D3 -#define FHZ800 0x0 //800hz -#define FHZ400 0x1 //400hz -#define FHZ200 0x2 //200hz -#define FHZ100 0x3 //100hz -#define FHZ50 0x4 //50hz -#define FHZ2 0x5 //12.5hz -#define FHZ1 0x6 //6.25hz -#define FHZ0 0x7 //1.563hz - -//---------CTRL_REG2(0X2B)Bit Define------------------------------------------// -#define MODS_MASK 0x03 //Oversampling Mode 4 -#define Normal_Mode 0x0 //Normal=0,Low Noise Low Power MODS=1, -//HI RESOLUTION=2,LOW POWER MODS = 11 -//----CTRL_REG4---Interrupt Enable BIT ---------------------------------------// -//0 interrupt is disabled (default) -//1 interrupt is enabled -#define INT_EN_ASLP 1<<7 //Auto-SLEEP/WAKE Interrupt Enable -#define INT_EN_FIFO 1<<6 //FIFO Interrupt Enable -#define INT_EN_TRANS 1<<5 //Transient Interrupt Enable -#define INT_EN_LNDPRT 1<<4 //Orientation(Landscape/Portrait)Interrupt Enable -#define INT_EN_PULSE 1<<3 //Pulse Detection Interrupt Enable -#define INT_EN_FF_MT 1<<2 //Freefall/Motion Interrupt Enable -#define INT_EN_DRDY 1<<0 //Data Ready Interrupt Enable - -#endif /* MMA8652FC_DEFINES_H_ */ +/*
+ * MMA8652FC_defines.h
+ *
+ * Created on: 31Aug.,2017
+ * Author: Ben V. Brown
+ */
+
+#ifndef MMA8652FC_DEFINES_H_
+#define MMA8652FC_DEFINES_H_
+
+//--------------MMA8652 Registers-------------------------------------------//
+
+#define STATUS_REG 0x00 // STATUS Register
+
+#define OUT_X_MSB_REG 0x01 // [7:0] are 8 MSBs of the 14-bit X-axis sample
+#define OUT_X_LSB_REG 0x02 // [7:2] are the 6 LSB of 14-bit X-axis sample
+#define OUT_Y_MSB_REG 0x03 // [7:0] are 8 MSBs of the 14-bit Y-axis sample
+#define OUT_Y_LSB_REG 0x04 // [7:2] are the 6 LSB of 14-bit Y-axis sample
+#define OUT_Z_MSB_REG 0x05 // [7:0] are 8 MSBs of the 14-bit Z-axis sample
+#define OUT_Z_LSB_REG 0x06 // [7:2] are the 6 LSB of 14-bit Z-axis sample
+
+#define F_SETUP_REG 0x09 // F_SETUP FIFO Setup Register
+#define TRIG_CFG_REG 0x0A // TRIG_CFG Map of FIFO data capture events
+#define SYSMOD_REG 0x0B // SYSMOD System Mode Register
+#define INT_SOURCE_REG 0x0C // INT_SOURCE System Interrupt Status Register
+#define WHO_AM_I_REG 0x0D // WHO_AM_I Device ID Register
+#define XYZ_DATA_CFG_REG 0x0E // XYZ_DATA_CFG Sensor Data Configuration Register
+#define HP_FILTER_CUTOFF_REG 0x0F // HP_FILTER_CUTOFF High Pass Filter Register
+
+#define PL_STATUS_REG 0x10 // PL_STATUS Portrait/Landscape Status Register
+#define PL_CFG_REG 0x11 // PL_CFG Portrait/Landscape Configuration Register
+#define PL_COUNT_REG 0x12 // PL_COUNT Portrait/Landscape Debounce Register
+#define PL_BF_ZCOMP_REG 0x13 // PL_BF_ZCOMP Back/Front and Z Compensation Register
+#define P_L_THS_REG 0x14 // P_L_THS Portrait to Landscape Threshold Register
+
+#define FF_MT_CFG_REG 0x15 // FF_MT_CFG Freefall and Motion Configuration Register
+#define FF_MT_SRC_REG 0x16 // FF_MT_SRC Freefall and Motion Source Register
+#define FF_MT_THS_REG 0x17 // FF_MT_THS Freefall and Motion Threshold Register
+#define FF_MT_COUNT_REG 0x18 // FF_MT_COUNT Freefall Motion Count Register
+
+#define TRANSIENT_CFG_REG 0x1D // TRANSIENT_CFG Transient Configuration Register
+#define TRANSIENT_SRC_REG 0x1E // TRANSIENT_SRC Transient Source Register
+#define TRANSIENT_THS_REG 0x1F // TRANSIENT_THS Transient Threshold Register
+#define TRANSIENT_COUNT_REG 0x20 // TRANSIENT_COUNT Transient Debounce Counter Register
+
+#define PULSE_CFG_REG 0x21 // PULSE_CFG Pulse Configuration Register
+#define PULSE_SRC_REG 0x22 // PULSE_SRC Pulse Source Register
+#define PULSE_THSX_REG 0x23 // PULSE_THS XYZ Pulse Threshold Registers
+#define PULSE_THSY_REG 0x24
+#define PULSE_THSZ_REG 0x25
+#define PULSE_TMLT_REG 0x26 // PULSE_TMLT Pulse Time Window Register
+#define PULSE_LTCY_REG 0x27 // PULSE_LTCY Pulse Latency Timer Register
+#define PULSE_WIND_REG 0x28 // PULSE_WIND Second Pulse Time Window Register
+
+#define ASLP_COUNT_REG 0x29 // ASLP_COUNT Auto Sleep Inactivity Timer Register
+
+#define CTRL_REG1 0x2A // CTRL_REG1 System Control 1 Register
+#define CTRL_REG2 0x2B // CTRL_REG2 System Control 2 Register
+#define CTRL_REG3 0x2C // CTRL_REG3 Interrupt Control Register
+#define CTRL_REG4 0x2D // CTRL_REG4 Interrupt Enable Register
+#define CTRL_REG5 0x2E // CTRL_REG5 Interrupt Configuration Register
+
+#define OFF_X_REG 0x2F // XYZ Offset Correction Registers
+#define OFF_Y_REG 0x30
+#define OFF_Z_REG 0x31
+
+//MMA8652FC 7-bit I2C address
+
+#define MMA8652FC_I2C_ADDRESS (0x1D<<1)
+
+//MMA8652FC Sensitivity
+
+#define SENSITIVITY_2G 1024
+#define SENSITIVITY_4G 512
+#define SENSITIVITY_8G 256
+
+#define STATUS_REG 0x00
+#define X_MSB_REG 0X01
+#define X_LSB_REG 0X02
+#define Y_MSB_REG 0X03
+#define Y_LSB_REG 0X04
+#define Z_MSB_REG 0X05
+#define Z_LSB_REG 0X06
+
+#define TRIG_CFG 0X0A
+#define SYSMOD 0X0B
+#define INT_SOURCE 0X0C
+#define DEVICE_ID 0X0D
+
+//-----STATUS_REG(0X00)-----Bit Define----------------------------------------//
+#define ZYXDR_BIT 0X08
+//----XYZ_DATA_CFG_REG(0xE)-Bit Define----------------------------------------//
+#define FS_MASK 0x03
+#define FULL_SCALE_2G 0x00 //2g=0x0,4g=0x1,8g=0x2
+#define FULL_SCALE_4G 0x01
+#define FULL_SCALE_8G 0x02
+//---------CTRL_REG1(0X2A)Bit Define------------------------------------------//
+#define ACTIVE_MASK 1<<0 //bit0
+#define DR_MASK 0x38 //bit D5,D4,D3
+#define FHZ800 0x0 //800hz
+#define FHZ400 0x1 //400hz
+#define FHZ200 0x2 //200hz
+#define FHZ100 0x3 //100hz
+#define FHZ50 0x4 //50hz
+#define FHZ2 0x5 //12.5hz
+#define FHZ1 0x6 //6.25hz
+#define FHZ0 0x7 //1.563hz
+
+//---------CTRL_REG2(0X2B)Bit Define------------------------------------------//
+#define MODS_MASK 0x03 //Oversampling Mode 4
+#define Normal_Mode 0x0 //Normal=0,Low Noise Low Power MODS=1,
+//HI RESOLUTION=2,LOW POWER MODS = 11
+//----CTRL_REG4---Interrupt Enable BIT ---------------------------------------//
+//0 interrupt is disabled (default)
+//1 interrupt is enabled
+#define INT_EN_ASLP 1<<7 //Auto-SLEEP/WAKE Interrupt Enable
+#define INT_EN_FIFO 1<<6 //FIFO Interrupt Enable
+#define INT_EN_TRANS 1<<5 //Transient Interrupt Enable
+#define INT_EN_LNDPRT 1<<4 //Orientation(Landscape/Portrait)Interrupt Enable
+#define INT_EN_PULSE 1<<3 //Pulse Detection Interrupt Enable
+#define INT_EN_FF_MT 1<<2 //Freefall/Motion Interrupt Enable
+#define INT_EN_DRDY 1<<0 //Data Ready Interrupt Enable
+
+#endif /* MMA8652FC_DEFINES_H_ */
diff --git a/workspace/TS100/Core/Src/OLED.cpp b/workspace/TS100/Core/Drivers/OLED.cpp index 93390973..93390973 100644 --- a/workspace/TS100/Core/Src/OLED.cpp +++ b/workspace/TS100/Core/Drivers/OLED.cpp diff --git a/workspace/TS100/Core/Inc/OLED.hpp b/workspace/TS100/Core/Drivers/OLED.hpp index efb5aee2..efb5aee2 100644 --- a/workspace/TS100/Core/Inc/OLED.hpp +++ b/workspace/TS100/Core/Drivers/OLED.hpp diff --git a/workspace/TS100/Core/Drivers/README.md b/workspace/TS100/Core/Drivers/README.md new file mode 100644 index 00000000..9b5ebf91 --- /dev/null +++ b/workspace/TS100/Core/Drivers/README.md @@ -0,0 +1,10 @@ +# Drivers
+
+Drivers are the classes used to represent physical hardware on the board in a more abstract way, that are more complex than just an IO
+
+* OLED Display
+* Accelerometers
+* Button handling logic
+* Tip thermo response modelling
+
+All drivers should be written with minimal hardware assumptions, and defer hardware related logic to the BSP folder where possible
\ No newline at end of file diff --git a/workspace/TS100/Core/Src/TipThermoModel.cpp b/workspace/TS100/Core/Drivers/TipThermoModel.cpp index ac1c9389..ac1c9389 100644 --- a/workspace/TS100/Core/Src/TipThermoModel.cpp +++ b/workspace/TS100/Core/Drivers/TipThermoModel.cpp diff --git a/workspace/TS100/Core/Inc/TipThermoModel.h b/workspace/TS100/Core/Drivers/TipThermoModel.h index a4b0b368..a4b0b368 100644 --- a/workspace/TS100/Core/Inc/TipThermoModel.h +++ b/workspace/TS100/Core/Drivers/TipThermoModel.h diff --git a/workspace/TS100/Core/Inc/main.hpp b/workspace/TS100/Core/Inc/main.hpp index f2f2e808..6258bede 100644 --- a/workspace/TS100/Core/Inc/main.hpp +++ b/workspace/TS100/Core/Inc/main.hpp @@ -1,7 +1,6 @@ #ifndef __MAIN_H #define __MAIN_H -#include <MMA8652FC.hpp> #include "OLED.hpp" #include "Setup.h" extern uint8_t PCBVersion; @@ -22,6 +21,11 @@ void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c); void vApplicationStackOverflowHook(xTaskHandle *pxTask, signed portCHAR *pcTaskName); +//Threads +void startGUITask(void const *argument); +void startPIDTask(void const *argument); +void startMOVTask(void const *argument); +extern TaskHandle_t pidTaskNotification ; #ifdef __cplusplus } #endif diff --git a/workspace/TS100/Core/Src/main.cpp b/workspace/TS100/Core/Src/main.cpp index a4232784..2694a4a8 100644 --- a/workspace/TS100/Core/Src/main.cpp +++ b/workspace/TS100/Core/Src/main.cpp @@ -38,12 +38,6 @@ static const size_t MOVTaskStackSize = 512 / 4; uint32_t MOVTaskBuffer[MOVTaskStackSize]; osStaticThreadDef_t MOVTaskControlBlock; -static TaskHandle_t pidTaskNotification = NULL; -static TickType_t powerPulseRate = 1000; -static TickType_t powerPulseDuration = 50; -void startGUITask(void const *argument); -void startPIDTask(void const *argument); -void startMOVTask(void const *argument); // End FreeRTOS // Main sets up the hardware then hands over to the FreeRTOS kernel @@ -51,7 +45,7 @@ int main(void) { preRToSInit(); setTipX10Watts(0); // force tip off - FRToSI2C::init (&hi2c1); + FRToSI2C::init(&hi2c1); OLED::initialize(); // start up the LCD OLED::setFont(0); // default to bigger font // Testing for which accelerometer is mounted @@ -100,114 +94,6 @@ int main(void) { } } -/* StartPIDTask function */ -void startPIDTask(void const *argument __unused) { - /* - * We take the current tip temperature & evaluate the next step for the tip - * control PWM. - */ - setTipX10Watts(0); // disable the output driver if the output is set to be off - TickType_t lastPowerPulseStart = 0; - TickType_t lastPowerPulseEnd = 0; - - history<int32_t, PID_TIM_HZ> tempError = { { 0 }, 0, 0 }; - currentTempTargetDegC = 0; // Force start with no output (off). If in sleep / soldering this will - // be over-ridden rapidly - pidTaskNotification = xTaskGetCurrentTaskHandle(); - uint32_t PIDTempTarget = 0; - for (;;) { - - if (ulTaskNotifyTake(pdTRUE, 2000)) { - // This is a call to block this thread until the ADC does its samples - int32_t x10WattsOut = 0; - // Do the reading here to keep the temp calculations churning along - uint32_t currentTipTempInC = TipThermoModel::getTipInC(true); - PIDTempTarget = currentTempTargetDegC; - if (PIDTempTarget) { - // Cap the max set point to 450C - if (PIDTempTarget > (450)) { - //Maximum allowed output - PIDTempTarget = (450); - } - //Safety check that not aiming higher than current tip can measure - if (PIDTempTarget > TipThermoModel::getTipMaxInC()) { - PIDTempTarget = TipThermoModel::getTipMaxInC(); - } - // Convert the current tip to degree's C - - // As we get close to our target, temp noise causes the system - // to be unstable. Use a rolling average to dampen it. - // We overshoot by roughly 1 degree C. - // This helps stabilize the display. - int32_t tError = PIDTempTarget - currentTipTempInC + 1; - tError = tError > INT16_MAX ? INT16_MAX : tError; - tError = tError < INT16_MIN ? INT16_MIN : tError; - tempError.update(tError); - - // Now for the PID! - - // P term - total power needed to hit target temp next cycle. - // thermal mass = 1690 milliJ/*C for my tip. - // = Watts*Seconds to raise Temp from room temp to +100*C, divided by 100*C. - // we divide milliWattsNeeded by 20 to let the I term dominate near the set point. - // This is necessary because of the temp noise and thermal lag in the system. - // Once we have feed-forward temp estimation we should be able to better tune this. - - int32_t x10WattsNeeded = tempToX10Watts(tError); -// tempError.average()); - // note that milliWattsNeeded is sometimes negative, this counters overshoot - // from I term's inertia. - x10WattsOut += x10WattsNeeded; - - // I term - energy needed to compensate for heat loss. - // We track energy put into the system over some window. - // Assuming the temp is stable, energy in = energy transfered. - // (If it isn't, P will dominate). - x10WattsOut += x10WattHistory.average(); - - // D term - use sudden temp change to counter fast cooling/heating. - // In practice, this provides an early boost if temp is dropping - // and counters extra power if the iron is no longer losing temp. - // basically: temp - lastTemp - // Unfortunately, our temp signal is too noisy to really help. - - } - //If the user turns on the option of using an occasional pulse to keep the power bank on - if (systemSettings.KeepAwakePulse) { - - if (xTaskGetTickCount() - lastPowerPulseStart - > powerPulseRate) { - lastPowerPulseStart = xTaskGetTickCount(); - lastPowerPulseEnd = lastPowerPulseStart - + powerPulseDuration; - } - - //If current PID is less than the pulse level, check if we want to constrain to the pulse as the floor - if (x10WattsOut < systemSettings.KeepAwakePulse - && xTaskGetTickCount() < lastPowerPulseEnd) { - x10WattsOut = systemSettings.KeepAwakePulse; - } - } - - //Secondary safety check to forcefully disable header when within ADC noise of top of ADC - if (getTipRawTemp(0) > (0x7FFF - 150)) { - x10WattsOut = 0; - } - if (systemSettings.powerLimitEnable - && x10WattsOut > (systemSettings.powerLimit * 10)) { - setTipX10Watts(systemSettings.powerLimit * 10); - } else { - setTipX10Watts(x10WattsOut); - } - - HAL_IWDG_Refresh (&hiwdg); - } else { - //ADC interrupt timeout - setTipPWM(0); - } - } -} - #define MOVFilter 8 void startMOVTask(void const *argument __unused) { OLED::setRotation(true); diff --git a/workspace/TS100/Core/Src/power.cpp b/workspace/TS100/Core/Src/power.cpp index 87507d15..4cceb9c5 100644 --- a/workspace/TS100/Core/Src/power.cpp +++ b/workspace/TS100/Core/Src/power.cpp @@ -2,7 +2,7 @@ * power.cpp * * Created on: 28 Oct, 2018 - * Authors: Ben V. Brown, David Hilton + * Authors: Ben V. Brown, David Hilton <- Mostly David */ #include <power.hpp> diff --git a/workspace/TS100/Core/Src/GUIThread.cpp b/workspace/TS100/Core/Threads/GUIThread.cpp index 19bf4650..19bf4650 100644 --- a/workspace/TS100/Core/Src/GUIThread.cpp +++ b/workspace/TS100/Core/Threads/GUIThread.cpp diff --git a/workspace/TS100/Core/Threads/PIDThread.cpp b/workspace/TS100/Core/Threads/PIDThread.cpp new file mode 100644 index 00000000..425aab5a --- /dev/null +++ b/workspace/TS100/Core/Threads/PIDThread.cpp @@ -0,0 +1,126 @@ +/*
+ * PIDThread.cpp
+ *
+ * Created on: 29 May 2020
+ * Author: Ralim
+ */
+
+#include "main.hpp"
+#include "BSP.h"
+#include "power.hpp"
+#include "history.hpp"
+#include "TipThermoModel.h"
+#include "cmsis_os.h"
+#include "FreeRTOS.h"
+#include "task.h"
+#include "Settings.h"
+static TickType_t powerPulseRate = 1000;
+static TickType_t powerPulseDuration = 50;
+TaskHandle_t pidTaskNotification = NULL;
+/* StartPIDTask function */
+void startPIDTask(void const *argument __unused) {
+ /*
+ * We take the current tip temperature & evaluate the next step for the tip
+ * control PWM.
+ */
+ setTipX10Watts(0); // disable the output driver if the output is set to be off
+ TickType_t lastPowerPulseStart = 0;
+ TickType_t lastPowerPulseEnd = 0;
+
+ history<int32_t, PID_TIM_HZ> tempError = { { 0 }, 0, 0 };
+ currentTempTargetDegC = 0; // Force start with no output (off). If in sleep / soldering this will
+ // be over-ridden rapidly
+ pidTaskNotification = xTaskGetCurrentTaskHandle();
+ uint32_t PIDTempTarget = 0;
+ for (;;) {
+
+ if (ulTaskNotifyTake(pdTRUE, 2000)) {
+ // This is a call to block this thread until the ADC does its samples
+ int32_t x10WattsOut = 0;
+ // Do the reading here to keep the temp calculations churning along
+ uint32_t currentTipTempInC = TipThermoModel::getTipInC(true);
+ PIDTempTarget = currentTempTargetDegC;
+ if (PIDTempTarget) {
+ // Cap the max set point to 450C
+ if (PIDTempTarget > (450)) {
+ //Maximum allowed output
+ PIDTempTarget = (450);
+ }
+ //Safety check that not aiming higher than current tip can measure
+ if (PIDTempTarget > TipThermoModel::getTipMaxInC()) {
+ PIDTempTarget = TipThermoModel::getTipMaxInC();
+ }
+ // Convert the current tip to degree's C
+
+ // As we get close to our target, temp noise causes the system
+ // to be unstable. Use a rolling average to dampen it.
+ // We overshoot by roughly 1 degree C.
+ // This helps stabilize the display.
+ int32_t tError = PIDTempTarget - currentTipTempInC + 1;
+ tError = tError > INT16_MAX ? INT16_MAX : tError;
+ tError = tError < INT16_MIN ? INT16_MIN : tError;
+ tempError.update(tError);
+
+ // Now for the PID!
+
+ // P term - total power needed to hit target temp next cycle.
+ // thermal mass = 1690 milliJ/*C for my tip.
+ // = Watts*Seconds to raise Temp from room temp to +100*C, divided by 100*C.
+ // we divide milliWattsNeeded by 20 to let the I term dominate near the set point.
+ // This is necessary because of the temp noise and thermal lag in the system.
+ // Once we have feed-forward temp estimation we should be able to better tune this.
+
+ int32_t x10WattsNeeded = tempToX10Watts(tError);
+// tempError.average());
+ // note that milliWattsNeeded is sometimes negative, this counters overshoot
+ // from I term's inertia.
+ x10WattsOut += x10WattsNeeded;
+
+ // I term - energy needed to compensate for heat loss.
+ // We track energy put into the system over some window.
+ // Assuming the temp is stable, energy in = energy transfered.
+ // (If it isn't, P will dominate).
+ x10WattsOut += x10WattHistory.average();
+
+ // D term - use sudden temp change to counter fast cooling/heating.
+ // In practice, this provides an early boost if temp is dropping
+ // and counters extra power if the iron is no longer losing temp.
+ // basically: temp - lastTemp
+ // Unfortunately, our temp signal is too noisy to really help.
+
+ }
+ //If the user turns on the option of using an occasional pulse to keep the power bank on
+ if (systemSettings.KeepAwakePulse) {
+
+ if (xTaskGetTickCount() - lastPowerPulseStart
+ > powerPulseRate) {
+ lastPowerPulseStart = xTaskGetTickCount();
+ lastPowerPulseEnd = lastPowerPulseStart
+ + powerPulseDuration;
+ }
+
+ //If current PID is less than the pulse level, check if we want to constrain to the pulse as the floor
+ if (x10WattsOut < systemSettings.KeepAwakePulse
+ && xTaskGetTickCount() < lastPowerPulseEnd) {
+ x10WattsOut = systemSettings.KeepAwakePulse;
+ }
+ }
+
+ //Secondary safety check to forcefully disable header when within ADC noise of top of ADC
+ if (getTipRawTemp(0) > (0x7FFF - 150)) {
+ x10WattsOut = 0;
+ }
+ if (systemSettings.powerLimitEnable
+ && x10WattsOut > (systemSettings.powerLimit * 10)) {
+ setTipX10Watts(systemSettings.powerLimit * 10);
+ } else {
+ setTipX10Watts(x10WattsOut);
+ }
+
+ HAL_IWDG_Refresh(&hiwdg);
+ } else {
+ //ADC interrupt timeout
+ setTipPWM(0);
+ }
+ }
+}
|