[solved] M2TKLIB - Compile error using FastLED 3.1

Edit2: Solved! FastLED was updated with a fix.

Edit: Ohnoes! did i just place my first post in the wrong place? :confused:

Hi, when using FastLED 3.1 together with M2TKLIB, i get this error when compiling

In file included from C:\Users\labster\Documents\Arduino\WS2812B_LCD\WS2812B_LCD.ino:1:0:

C:\Users\labster\Documents\Arduino\libraries\FastLED/FastLED.h:17:21: note: #pragma message: FastLED version 3.001.001

 #    pragma message "FastLED version 3.001.001"

                     ^

In file included from C:\Users\labster\Documents\Arduino\libraries\FastLED/FastLED.h:53:0,

                 from C:\Users\labster\Documents\Arduino\WS2812B_LCD\WS2812B_LCD.ino:1:

C:\Users\labster\Documents\Arduino\libraries\FastLED/fastled_progmem.h:47:57: error: section attribute not allowed for 'm2_rom_void'

 #define PROGMEM __attribute__((section(".progmem.data")))

                                                         ^

C:\Users\labster\Documents\Arduino\libraries\M2tklib_liquid/utility/m2.h:62:20: note: in expansion of macro 'PROGMEM'

 #define M2_PROGMEM PROGMEM

                    ^

C:\Users\labster\Documents\Arduino\libraries\M2tklib_liquid/utility/m2.h:98:26: note: in expansion of macro 'M2_PROGMEM'

 typedef void m2_rom_void M2_PROGMEM;

                          ^

C:\Users\labster\Documents\Arduino\libraries\FastLED/fastled_progmem.h:47:57: error: section attribute not allowed for 'm2_rom_char'

 #define PROGMEM __attribute__((section(".progmem.data")))

                                                         ^

C:\Users\labster\Documents\Arduino\libraries\M2tklib_liquid/utility/m2.h:62:20: note: in expansion of macro 'PROGMEM'

 #define M2_PROGMEM PROGMEM

                    ^

C:\Users\labster\Documents\Arduino\libraries\M2tklib_liquid/utility/m2.h:99:26: note: in expansion of macro 'M2_PROGMEM'

 typedef char m2_rom_char M2_PROGMEM;

                          ^

exit status 1
Error compiling for board Arduino Nano.

It compiles fine when using FastLED 3.0.3

Anyone had this problem before, or know whats going on?

Here is the code i use to display a scrollable list on a 20x4 lcd, and Serial.print which list item is selected using a 4x1 membrane keypad, the plan is to use this to change FasLED effects, i got something working using Neopixelbus library but my mind was blown when trying to include more effects, sorry if its a unreadable mess,but iam a complete noob and its all a night worth of copypaste :grin:

Any help, tips, and ninja-tricks is much appreciated!

//#include <FastLED.h> I get the error when this is uncommented
#include <LiquidCrystal_I2C.h>
#include "M2tk.h"
#include "utility/m2ghnlc.h"

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

unsigned long Interval;   // milliseconds between updates
unsigned long lastUpdate; // last update of position

// BUTTONS //
uint8_t uiKeySelectPin = 4;
uint8_t uiKeyNextPin = 5;
uint8_t uiKeyPrevPin = 6;
//uint8_t uiKeyUpPin = 7;

// M2TKLIB STUFF //
const char *selected = "Nothing";
const char *el_strlist_getstr(uint8_t idx, uint8_t msg) {
  const char *s = "";
  if  ( idx == 0 )
    s = "Apple";
  else if ( idx == 1 )
    s = "Banana";
  else if ( idx == 2 )
    s = "Peach";
  else if ( idx == 3 )
    s = "Pumpkin";
  else if ( idx == 4 )
    s = "Corn";
  if (msg == M2_STRLIST_MSG_GET_STR) {
    /* nothing else todo, return the correct string */
  } else if ( msg == M2_STRLIST_MSG_SELECT ) {
    selected = s;
  }

  return s;

}

uint8_t el_strlist_first = 0;
uint8_t el_strlist_cnt = 5;
M2_STRLIST(el_strlist, "l3w12", &el_strlist_first, &el_strlist_cnt, el_strlist_getstr);
//M2_SPACE(el_space, "w1h1");
M2_VSB(el_strlist_vsb, "l3w1r1", &el_strlist_first, &el_strlist_cnt);
M2_LIST(list_strlist) = { &el_strlist,/* &el_space,*/ &el_strlist_vsb };
M2_HLIST(el_strlist_hlist, NULL, list_strlist);

M2_SPACE(el_vspace, "w1h1");
M2_LABEL(el_label, NULL, "Selected:");
M2_LABELPTR(el_labelptr, NULL, &selected);
M2_LIST(list_label) = { &el_label, &el_labelptr };
M2_HLIST(el_label_hlist, NULL, list_label);

M2_LIST(list) = { &el_strlist_hlist, /*&el_vspace,*/ &el_label_hlist };
M2_VLIST(el_vlist, NULL, list);
M2_ALIGN(top_el, "-1|1W64H64", &el_vlist);

M2tk m2(&top_el, m2_es_arduino, m2_eh_4bs, m2_gh_nlc);

void effectselect()
{
  if ((millis() - lastUpdate) > Interval) // time to update
  {
    lastUpdate = millis();
    if (selected == "Apple")
    {
      Serial.print(selected);
    }
    if (selected == "Banana")
    {
      Serial.print(selected);
    }
    if (selected == "Peach")
    {
      Serial.print(selected);
    }
    if (selected == "Pumpkin")
    {
      Serial.print(selected);
    }
    if (selected == "Corn")
    {
      Serial.print(selected);
    }
  }
}

void setup() {
  Serial.begin(9600);
  m2_SetNewLiquidCrystal(&lcd, 20, 4);
  m2.setPin(M2_KEY_SELECT, uiKeySelectPin);
  m2.setPin(M2_KEY_NEXT, uiKeyNextPin);
  m2.setPin(M2_KEY_PREV, uiKeyPrevPin);
  //  m2.setPin(M2_KEY_DATA_UP, uiKeyUpPin);

}

void loop() {
  effectselect();
  if ( m2.handleKey() )
    m2.draw();
  m2.checkKey();
}