Invalid conversion from int to lv_buttonmatrix_ctrl_t issue

Hi, I am trying to setup a button matrix with a call to lv_buttonmatrix_set_ctrl_map(). The map itself is this:

static const lv_buttonmatrix_ctrl_t ctrl_map[] PROGMEM = {
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
    LV_BUTTONMATRIX_CTRL_CHECKABLE | LV_BUTTONMATRIX_CTRL_CHECKED,
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
};

However, I am getting a compiler error for an invalid conversion from int to lv_buttonmatrix_ctrl_t. That’s most likely because the final value is not a member of the enum. So, how do I set this correctly?

The documentation says that I can simply OR the enums together. I’ve tried doing this with ctrl_map[8] |= LV_BUTTONMATRIX_CTRL_CHECKED but that also does not work.

Thank you.

Same thing happens when I use
lv_buttonmatrix_set_button_ctrl(matrix, 8, LV_BUTTONMATRIX_CTRL_CHECKABLE | LV_BUTTONMATRIX_CTRL_CHECKED);

yet the documentation states:

void lv_buttonmatrix_set_button_ctrl(lv_obj_t *obj, uint32_t btn_id, lv_buttonmatrix_ctrl_t ctrl)

Set the attributes of a button of the button matrix

Parameters:

  • obj – pointer to button matrix object
  • btn_id – 0 based index of the button to modify. (Not counting new lines)
  • ctrl – OR-ed attributes. E.g. LV_BUTTONMATRIX_CTRL_NO_REPEAT | LV_BUTTONMATRIX_CTRL_CHECKABLE

I am using Arduino’s toolchain and compiler for Windows if that makes a difference.

Since it’s been 9 days without a reply, I figured out my own problem:

static const lv_buttonmatrix_ctrl_t ctrl_map[] PROGMEM = {
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
    static_cast<lv_buttonmatrix_ctrl_t>(LV_BUTTONMATRIX_CTRL_CHECKABLE | LV_BUTTONMATRIX_CTRL_CHECKED),
    LV_BUTTONMATRIX_CTRL_CHECKABLE,
};