mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
To: Sascha Hauer <s.hauer@pengutronix.de>
Cc: barebox@lists.infradead.org
Subject: Re: [PATCH] Add Menu Framework
Date: Fri, 20 Aug 2010 05:21:01 +0200	[thread overview]
Message-ID: <20100820032101.GA8693@game.jcrosoft.org> (raw)
In-Reply-To: <20100819082922.GE27749@pengutronix.de>

On 10:29 Thu 19 Aug     , Sascha Hauer wrote:
> On Thu, Aug 19, 2010 at 05:53:22AM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
> > Introduce a menu framework that allow us to create list menu to simplify
> > barebox and make it more user-frendly
> > 
> > This kind of menu is very usefull when you do not have a keyboard or a
> > serial console attached to your board to allow you to interract with
> > barebox
> 
> \o/ Cool! I really like it.
> 
> This is simple and still very flexible.
> 
> Some things which came up during testing:
> 
> - I get a data abort when trying to remove a menu without removing the
>   entries first. example:
> 
> barebox@Phytec phyCORE-i.MX31:/ menu -a -m boot -d "Boot Menu"
> barebox@Phytec phyCORE-i.MX31:/ menu -e -a -m boot -c boot -d "Boot"
> barebox@Phytec phyCORE-i.MX31:/ menu -r -m boot
> data abort
> pc : [<87f05058>]    lr : [<87f05098>]
> sp : 87affe20  ip : 87f20794  fp : 00000004
> r10: 00000002  r9 : 00000000  r8 : 00200200
> r7 : 00100100  r6 : 87b0daf8  r5 : 87b0db18  r4 : 001000f0
> r3 : 87b0db18  r2 : 87b0db18  r1 : 003b7fff  r0 : 001000f0
> Flags: nzCv  IRQs off  FIQs off  Mode SVC_32
> Resetting CPU ...
> 
FIx
> - do_menu could use a if (!argc) return COMMAND_ERROR_USAGE;
> 
too
> - It would be nice to have an option to directly create a submenu on the
>   command line (though this can be added later). So instead of doing
> 
> menu -e -a -m boot -c "menu -s -m network" -R -d "Network settings ->"
> 
> we could have a
> 
> menu -e -a -m boot -u network -R -d "Network settings ->"
> 
> We could than automatically add a 'back' entry if a menu is a submenu.
I disagree here about the automatic adding of a 'back" entry
as you may want to put at the top or the bottom or where ever you want and you
may not write the menu in English or the text "Back"
so I will prefer to let it done manually as this

menu -a -m boot -d "Boot Menu"
menu -a -m network -d "Network settings"
menu -e -a -m network -c "echo ok" -R -d "test"
menu -e -a -m network -u boot -d "Back"
menu -e -a -m boot -u network -d "Network settings ->"
menu -e -a -m boot -c reset -R -d "Exit"

> 
> - It shouldn't be possible to add the same menu twice. example:
> 
> barebox@Phytec phyCORE-i.MX31:/ menu -a -m boot -d "Boot Menu"
> barebox@Phytec phyCORE-i.MX31:/ menu -a -m boot -d "Boot Menu"
> barebox@Phytec phyCORE-i.MX31:/ menu -l
> boot: Boot Menu
> boot: Boot Menu
> barebox@Phytec phyCORE-i.MX31:/
fix
> 
> - Removing entries does not work as expected. example:
> 
> menu -a -m boot -d "Boot Menu"
> menu -e -a -m boot -c boot -d "Boot"
> menu -e -a -m boot -c reset -d "Reset"
> menu -e -a -m boot -c "exit" -d "Command line"
> menu -e -r -m boot -n 1
> menu -s -m boot
fix
> 
> - commands should always return positive error codes. A good practice is
>   to pass -E* values up to do_menu, use strerror() to print the error
>   code and return 1 afterwards.
I agree but but of the time there is no -E* related to this Framework

so do u want to create them?
> 
> > +		switch(opt) {
> > +		case 'm':
> > +			cm.menu = optarg;
> > +			break;
> > +			break;
> > +		case 'l':
> > +			cm.action = action_list;
> > +			break;
> > +		case 's':
> > +			cm.action = action_show;
> > +			break;
> > +#if defined(CONFIG_CMD_MENU_MANAGEMENT)
> > +		case 'e':
> > +			cm.entry = 1;
> > +		case 'a':
> 
> There is a 'break' missing here.
> 
fix
> > +			cm.action = action_add;
> > +			break;
> > +		case 'r':
> > +			cm.action = action_remove;
> > +			break;
> > +		case 'c':
> > +			cm.command = optarg;
> > +			break;
> 
> Thank you for this work. I really appreciate it ;)
Your welcome
My goal was to make the bootloader more easy to use for end user and device without keyboard

and keep 2 API
commands as it's easy to manage at run time

and C for very complex menu

I plan to have this also via FrameBuffer and with a background image
so maybe barebox could replace grub & co aneday :)

Best Regards,
J.

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  reply	other threads:[~2010-08-20  3:26 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-19  3:53 Jean-Christophe PLAGNIOL-VILLARD
2010-08-19  8:29 ` Sascha Hauer
2010-08-20  3:21   ` Jean-Christophe PLAGNIOL-VILLARD [this message]
2010-08-20  6:38     ` Sascha Hauer
2010-08-20  6:51       ` Jean-Christophe PLAGNIOL-VILLARD
2010-08-20  7:09         ` Robert Schwebel
2010-08-20  8:18           ` Jean-Christophe PLAGNIOL-VILLARD
2010-08-20  8:22 ` [PATCH 1/2 v2] " Jean-Christophe PLAGNIOL-VILLARD
2010-08-20  8:22 ` [PATCH 2/2] Menu/cmd: add sub menu entry command support Jean-Christophe PLAGNIOL-VILLARD

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100820032101.GA8693@game.jcrosoft.org \
    --to=plagnioj@jcrosoft.com \
    --cc=barebox@lists.infradead.org \
    --cc=s.hauer@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox