Skip to content

Releases: Jomelo/LCDMenuLib2

v2.2.7

25 May 14:32
Compare
Choose a tag to compare

New:

  • Add an option to use dynamic menu elements with submenus.
  • Add two new element types for a better dyn element handling
    _LCDML_TYPE_dynParam_enableSubMenus
    _LCDML_TYPE_dynParam_enableCustomRefresh
    => examples for the handling will be add in further examples on the next time

Bugfix

  • on every scroll action the display is refreshed => now only if the elements windows is moved, the display would be refreshed
  • Screensaver / jump To action on dynamic refreshed content works now correctly

Update dynUpdateContent Example

  • Reduce complexity of dynamic updated content example

Optimisation

  • Remove some unused functions
  • Documentation

v2.2.6

02 Aug 14:49
49801c6
Compare
Choose a tag to compare

#v2.2.6

  • update condetion handling

  • add an example for condetions with dynamic menu elements

  • new internaly button handling

    • remove many methods and replace them with makros and some new methods to be compatible to older versions
  • add two new methods to update dynamic content

    • example
      • the menu have 3 dynamic elements on top layer
      • element 2 updates the content of element 1 but at this time element 1 was send to display
      • Now the update of element 1 from element 2 take an effekt when the next button is pressed because it was displayed before the change of element 2 was done. So we neeed another update function for dynamic content to handle this behavior.
  • remove a warning on compiling an example with encoders

v2.2.4

25 May 20:40
Compare
Choose a tag to compare
  • bugfix jumpTo .. function

v2.2.3

05 May 18:39
Compare
Choose a tag to compare
  • BugFix: OTHER_jumpTo / OTHER_setCursorTo function. It could be happen that the menu could not find a menu function.

v2.2.2

04 May 06:14
Compare
Choose a tag to compare
  • add a function to update the menu function directly (for own trigger)
    LCDML.OTHER_updateFunc(void);
    LCDML.loop_menu();

  • add a function to use the new event system with a white mask to allow event groups (this is only in the menu function setup allowed)
    LCDML.FUNC_setCEMask(unsigned long p_mask);

  • change some internal function calling

  • try to remove dead locks with while functions

  • bugfix data type of event mask

  • rename boolean to bool

  • update the examples

v2.2.1

20 Apr 12:07
Compare
Choose a tag to compare

BugFix:

  • rename a function: MENU_getLastActivFunctionID to MENU_getLastActiveFunctionID

v2.2.0

20 Apr 09:02
Compare
Choose a tag to compare

This version adds some new content and optimize many things. For details read the following lines.

Performance optimization:

  • reduce the function calling deep (function calls function and so on ..)
  • optimize the search function

Memory Optimization:

  • remove a recursive function
  • remove some local object variables

Update:

  • serial control example with new event handling example
  • change ir remote lib to rimp lib (thx @clear-sky)
  • the above changes in all examples

BugFix:

  • the OTHER_... functions could not handle back jumps over more then one layer. For example from LCDML_0_2_2_2 to LCDML_0, 3. (thx @toza2010)
  • "use ram mode" works now correctly. Attention!!! When you are using a non arduino controller like ESP ore STM or SAMD ore something else you have to define the constant "#define _LCDML_cfg_use_ram" before you include the library (thx @clear-sky)
  • the loop timer in a menu function was not always reseted when a function was closed

Some peaple ask for an adcanced mode with more buttons which can be used. This mode is no implemended and named as custom event mode. The custom event function generates a new group of function and can be called with LCDML.CE_...(). The custom events handling is nearly equivalent to the button handling, but there some fine different things. The custom events are not resetted by any menu function. This means that every event which was set have to be reseted by you manually in a menu function or on another position. The secound differnt things is, that you can set for your custom events call back function. This means when a defined event is called a special menu function is called.

  • LCDML.CE_setup(void); // returns a boolean value, it is equivalent to LVDML.BT_setup();
  • LCDML.CE_set(uint8_t p_event); // set an event, p_event is a number between 0 and 63
  • LCDML.CE_resetAll(void); // reset all event states
  • LCDML.CE_reset(uint8_t p_event); // reset an event, p_event is a number between 0 and 63
  • LCDML.CE_checkAny(void); // returns a boolean value, when any event is enabled the return value is true
  • LCDML.CE_check(uint8_t p_event); // check a special event, the return value is true or false
  • LCDML.CE_setOnChangeCbFunction(uint8_t p_event, LCDML_FuncPtr_pu8 p_function); // p event is the event number, and the callback function is a menu function which have to be defined in menu definition. The callback event limit is set to 4 elements (p_event: 0 - 3). When more special events are needed this value can be changed in the LCDMenuLib2.h file.
  • LCDMLCE_clearOnChangeCbFunction(uint8_t p_event); // remove the callback function from a special event

After adding the custom event handling there are some need for another speical handling. The question was, when a custom event was called and closed where is the correct cursor position after the return to the menu or should be the last calling function called again. To include this part not by hand, the library supports no speicial function to set a advanced go back handling for active functions. This functions are called shortly GBA functions (GBA stands for "go back adcanced").

  • LCDML.FUNC_setGBA(void); // to go back automatically to the last cursorposition or active function
  • LCDML.FUNC_setGBAToLastCursorPos(void); to go back to the last cursorposition
  • LCDML.FUNC_setGBAToLastFunc(void); to go back to the last active function

Some other function to release features that was not included in the library

  • LCDML.MENU_getRootObj(void); // get the root menu object, the data type is this one LCDMenuLib2_menu * tmp;
  • LCDML.MENU_getLastActivFunctionID(void); // get the last active function id
  • LCDML.MENU_getLastCursorPositionID(void); // get the last cursor position
  • LCDML.MENU_getElementIDFromCursorPos(void); // returns the menu element id from current cursor position

Some needfull function for very dynamic contents

  • LCDML.OTHER_getIDFromFunction(LCDML_FuncPtr_pu8 p_search); // return an id
  • LCDML.OTHER_getFunctionFromID(uint8_t p_element_id); // returns the functionname (datatype LCDML_FuncPtr_pu8)

I have test many things, but i could test all display types. So i hope i found many bugs. When you found further bugs, please report them.

v2.1.2

29 Dec 11:40
Compare
Choose a tag to compare

BugFix:

  • fix a small bug with the handling of parameters on jumpTo.. and setCursorTo functions

v2.1.1

27 Dec 19:21
Compare
Choose a tag to compare

bugfix:

  • a time overrun bug in all examples which are controled with an encoder
  • a bug with the usage of parameter and jumpTo.. functions

changes:

  • create an option to use a new element search function which works not recursiv (this part is under construction at the moment. The old function is still working correct but not nice ;-|)
  • on example 000 and 001 add an option to enable a header line above the menu. The header displayes the parent name if available otherwise a custom string is displayed.

v2.1.0

18 Jan 08:58
cb22a67
Compare
Choose a tag to compare
  • add multi language support (not all language chars are supported at the moment)
  • add an example for multi language -> examples -> LCDMenuLib2 -> 02_functionality -> LCDML_022_multiLanguage