There are errors with the Bitrex's menu

Greetings!

I decided to try Bitrix’s mod-menu-system-11 with data output on the OLED display. But several errors occurred during compilation, for example :

error: ‘____menu_base’ is not a namespace-name namespace menu_base = ____menu_base;
error: expected namespace-name before ‘;’ token namespace menu_base = ____menu_base;
error: ‘menu_base’ does not name a type using menu_base_t = menu_base::MenuBase;
error: ‘struct xod::bitrex__xod_menu_system_11__leaf_menu_item_impl::State’ has no member named ‘leaf_menu’ state->leaf_menu.set_text(line1, line2);
error: template argument 1 is invalid BiDirectionalConcatListView<menu_base_t*> menu_ptr_list_view;
Blockquote

How can I solve the problem?

hi, there is very little log data, copy it to a log.txt and upload it for verification.

1 Like

Thanks for the answer!

log.txt (100.0 KB)

1 Like

Compile the example and I get the same error.

C:\Users\user\AppData\Local\Temp\xod_temp_sketchbookFTlCP0\xod_1587925015661_sketch\xod_1587925015661_sketch.ino:1351:23: error: '____menu_base' is not a namespace-name
 namespace menu_base = ____menu_base;
                       ^~~~~~~~~~~~~
C:\Users\user\AppData\Local\Temp\xod_temp_sketchbookFTlCP0\xod_1587925015661_sketch\xod_1587925015661_sketch.ino:1351:36: error: expected namespace-name before ';' token
 namespace menu_base = ____menu_base;

The problem is there ( is not a namespace-name) , it may be that with XOD updates, that code is no longer compatible.
The only one that could solve it is @bitrex but it hasn’t been seen here for a long time.
The first version is also generating the same error.

Or someone with more complete knowledge than mine :smile:, could rewrite that library or tell you what part of the code to change.

1 Like

Thanks for the help. This is good and bad news at the same time. :grinning:

If I understand, after so much work … that it doesn’t work, it’s sad.
Maybe @nkrkv an give you a hand how to solve it.

If everything works, for the menus you can use the flash-strings … that free up ram memory.

Here he explains it better

1 Like

Thanks for the tip, I did not think that flash-strings has such an effect.

Is there any alternative to Bitrix’s flash-strings?

That they fulfill that function no, I do not know if there is another way.

The only drawback is that you have to open the new cloned node and edit the chain, like this in each menu.

Based on the data presented in the article and in the comments (https://www.hackster.io/MattyZ/code-free-lcd-menu-generation-using-xod-582d36). I decided to test the library in earlier versions of XOD, including v0.32.1 and v0.28.2. But mistakes still exist.

Should try 0.27.0 or lower, the date of hackster.io is February 29, 2019.

XOD version 0.27.0 is from February 8.

1 Like

I tried version 0.27.0, the position of all nodes is reset, but the connections are preserved. Unfortunately, this did not solve the problem, again many errors.
log_XOD_027.txt (100.3 KB)

Perhaps it is not that but an earlier version, in the publication it is not clarified which version has used bitrex, try an inferior one, some should work.

The errors remain the same?

Yes, it seems the same errors.

C:\Users\stryg\AppData\Local\Temp\xod_temp_sketchbookqaKnXM\xod_1588185535950_sketch\xod_1588185535950_sketch.ino:1336:23: error: ‘____menu_base’ is not a namespace-name
namespace menu_base = ____menu_base;
^~~~~~~~~~~~~
C:\Users\stryg\AppData\Local\Temp\xod_temp_sketchbookqaKnXM\xod_1588185535950_sketch\xod_1588185535950_sketch.ino:1336:36: error: expected namespace-name before ‘;’ token
namespace menu_base = ____menu_base;
^

C:\Users\stryg\AppData\Local\Temp\xod_temp_sketchbookqaKnXM\xod_1588185535950_sketch\xod_1588185535950_sketch.ino:1337:21: error: ‘menu_base’ does not name a type
using menu_base_t = menu_base::MenuBase;
^~~~~~~~~

C:\Users\stryg\AppData\Local\Temp\xod_temp_sketchbookqaKnXM\xod_1588185535950_sketch\xod_1588185535950_sketch.ino:1339:14: error: ‘menu_base’ does not name a type
using Type = menu_base::BiDirectionalList<menu_base_t*>;

Hi y’all, I got the message I’d be happy to take a look at cruntos problem if they would like to shoot over a minimal example sketch that demonstrates the errors that are being experienced and any other relevant information. I’ll do my best. Sorry for the problems I tested the examples for that project on a couple systems (Linux, Windows) and boards of my own (Sparkfun RedBoard, Rich UNO) recently, with a recent version of XOD, and it seemed to work OK. I’d like to get to the bottom of the issues that some seem to be reporting, if it’s something with newer versions of XOD or an error on my part

2 Likes

Hi cruntos, if you could please link a minimal example sketch that gives these errors for you on your system I’ll see what I can do, thanks!

1 Like

Hi! Thanks for the answer! I will attach two files, one for version 0.27 and one for 0.33. This is a simple menu with an output to the OLED display (https://xod.io/libs/wayland/ssd1306-oled-i2c/).
Menu_027.xodball (31.2 KB)
Menu_033.xodball (28.2 KB)

2 Likes

Great, thank you. It’ll probably be the weekend before I have a chance to dig into it, but I’ll surely see what I can do to get ya sorted. Standby and I’ll check back in shortly

1 Like

The @bitrex project works correctly if it is compiled as a project, but when using it as a library it generates the error.

Maybe @nkrkv can tell us if it is an XOD bug or if it is a function implemented in the library that is not supported.

Here is a modified project that compiles correctly and includes necessary components from the “MENU” library.

Menu-cruntos.xodball (69.7 KB)

1 Like