PokittoLib with changes to lcd refresh etc.
Fork of Pokitto by
This is a fork by user @Spinal, and is used in Pokittris for testing. Do not import this to your own program.
Diff: POKITTO_CORE/PokittoConsole.h
- Revision:
- 0:e8b8f36b4505
diff -r 000000000000 -r e8b8f36b4505 POKITTO_CORE/PokittoConsole.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/POKITTO_CORE/PokittoConsole.h Mon Sep 18 11:47:51 2017 +0000 @@ -0,0 +1,160 @@ +/**************************************************************************/ +/*! + @file PokittoConsole.h + @author Jonne Valola + + @section LICENSE + + Software License Agreement (BSD License) + + Copyright (c) 2016, Jonne Valola + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/**************************************************************************/ + +#ifndef POKITTO_CONSOLE_H +#define POKITTO_CONSOLE_H + +#include "Pokitto_settings.h" +#include "PokittoButtons.h" +#include <stdint.h> + +struct consmsg { + uint32_t val; + uint8_t valtype; + uint8_t msgsource; + uint8_t msgtype; +}; + +/** VAL TYPES **/ +#define V_UINT8 0 +#define V_INT8 1 +#define V_UINT16 2 +#define V_INT16 3 +#define V_UINT32 4 +#define V_INT32 5 +#define V_FLOAT 6 +#define V_STRING 7 +#define V_NONE 8 + +/** MESSAGE TYPE **/ +#define MSG_NULL 0 +#define MSG_OK 1 +#define MSG_WARNING 2 +#define MSG_FATAL 255 +#define MSG_INIT_OK 3 +#define MSG_INIT_FAIL 4 +#define MSG_NOT_ENOUGH_MEM 5 +#define MSG_GFX_MODE_CHANGE 6 +#define MSG_GFX_MODE_INVALID 7 +#define MSG_UP 8 +#define MSG_DOWN 9 +#define MSG_PRINT 10 +#define MSG_BREAK 11 +#define MSG_YESNO 12 +#define MSG_YES 13 +#define MSG_NO 14 +#define MSG_OBJECT 15 +#define MSG_OBJECT2 16 + +/** MESSAGE SOURCE **/ +#define MSOURCE_NULL 0 +#define MSOURCE_SD 1 +#define MSOURCE_LCD 2 +#define MSOURCE_SOUND 3 +#define MSOURCE_TIMER 4 +#define MSOURCE_BTNA 5 +#define MSOURCE_BTNB 6 +#define MSOURCE_BTNC 7 +#define MSOURCE_BTNU 8 +#define MSOURCE_BTND 9 +#define MSOURCE_BTNL 10 +#define MSOURCE_BTNR 11 +#define MSOURCE_BATT 12 +#define MSOURCE_APP 13 +#define MSOURCE_USER 14 +#define MSOURCE_COLLISION 15 + +/** CONSOLE MODES **/ +#define CONS_OVERLAY 0x1 +#define CONS_PAUSE 0x2 +#define CONS_STEP 0x4 +#define CONS_VISIBLE 0x8 + + +/** CONSOLE DEBOUNCE **/ +#define CONS_TIMEOUT 20 +extern uint16_t conscounter; + + + +namespace Pokitto { + +class Display; + +class Console { +public: + /** Console class constructor */ + Console(); + + static uint8_t mode; + static uint8_t visible; + static unsigned char* font; + static void Toggle(); + static void AddMessage(uint8_t, uint8_t, uint8_t, uint32_t); + static void AddMessage(uint8_t, uint8_t); + static void AddMessage(uint8_t, char*); + static void AddMessage(uint8_t, uint8_t, uint32_t); + static void Last(); + static void First(); + static void RemoveLast(); + static void Previous(); + static void Next(); + static consmsg GetMessage(); + static void PrintMessage(); + static void Purge(); + static void Draw(); // pokConsole + +private: + /** Message buffer */ + static consmsg msgbuf[CONSOLEBUFSIZE]; + static uint8_t conslast; + static uint8_t consfirst; + static uint8_t conspointer; +public: + static uint16_t conscounter; + static uint16_t color; + static Display* _display; + static Buttons* _buttons; +}; + + +} // namespace + +// this is the console used by the core if POK_USE_CONSOLE is nonzero +extern Pokitto::Console console; + +#endif // POKITTO_CONSOLE_H +