Message ID | 20210703150049.11917-1-sean@mess.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v4l-utils] ir-ctl: print correct transmitter count | expand |
On Sat, Jul 03, 2021 at 04:00:49PM +0100, Sean Young wrote: > Signed-off-by: Sean Young <sean@mess.org> > --- > utils/ir-ctl/ir-ctl.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/utils/ir-ctl/ir-ctl.c b/utils/ir-ctl/ir-ctl.c > index 3c3bcca1..66a257a7 100644 > --- a/utils/ir-ctl/ir-ctl.c > +++ b/utils/ir-ctl/ir-ctl.c > @@ -933,7 +933,7 @@ static int lirc_options(struct arguments *args, int fd, unsigned features) > if (features & LIRC_CAN_SET_TRANSMITTER_MASK) { > rc = ioctl(fd, LIRC_SET_TRANSMITTER_MASK, &args->emitters); > if (rc > 0) > - fprintf(stderr, _("warning: %s: failed to set send transmitters: only %d available\n"), dev, rc); > + fprintf(stderr, _("warning: %s: failed to set send transmitters: only %d available\n"), dev, ffs(~rc) - 1); I was mistaken; the ioctl does return the tx emitter count, not the valid mask. All the existing drivers except rc-loopback return the count, not the mask. The documentation also says so. I'll have to revert. Sean > else if (rc < 0) > fprintf(stderr, _("warning: %s: failed to set send transmitters: %m\n"), dev); > } else > @@ -1026,8 +1026,11 @@ static void lirc_features(struct arguments *args, int fd, unsigned features) > fprintf(stderr, _("warning: %s: device supports setting transmitter mask but returns 0 as number of transmitters\n"), dev); > else if (rc < 0) > fprintf(stderr, _("warning: %s: device supports setting transmitter mask but returns: %m\n"), dev); > - else > - printf(_(" - Set transmitter (%d available)\n"), rc); > + else { > + unsigned count = ffs(~rc) - 1; > + > + printf(_(" - Set transmitter (%d available)\n"), count); > + } > } > } else if (features & LIRC_CAN_SEND_LIRCCODE) { > printf(_(" - Device can send using device dependent LIRCCODE mode (not supported)\n")); > -- > 2.31.1
diff --git a/utils/ir-ctl/ir-ctl.c b/utils/ir-ctl/ir-ctl.c index 3c3bcca1..66a257a7 100644 --- a/utils/ir-ctl/ir-ctl.c +++ b/utils/ir-ctl/ir-ctl.c @@ -933,7 +933,7 @@ static int lirc_options(struct arguments *args, int fd, unsigned features) if (features & LIRC_CAN_SET_TRANSMITTER_MASK) { rc = ioctl(fd, LIRC_SET_TRANSMITTER_MASK, &args->emitters); if (rc > 0) - fprintf(stderr, _("warning: %s: failed to set send transmitters: only %d available\n"), dev, rc); + fprintf(stderr, _("warning: %s: failed to set send transmitters: only %d available\n"), dev, ffs(~rc) - 1); else if (rc < 0) fprintf(stderr, _("warning: %s: failed to set send transmitters: %m\n"), dev); } else @@ -1026,8 +1026,11 @@ static void lirc_features(struct arguments *args, int fd, unsigned features) fprintf(stderr, _("warning: %s: device supports setting transmitter mask but returns 0 as number of transmitters\n"), dev); else if (rc < 0) fprintf(stderr, _("warning: %s: device supports setting transmitter mask but returns: %m\n"), dev); - else - printf(_(" - Set transmitter (%d available)\n"), rc); + else { + unsigned count = ffs(~rc) - 1; + + printf(_(" - Set transmitter (%d available)\n"), count); + } } } else if (features & LIRC_CAN_SEND_LIRCCODE) { printf(_(" - Device can send using device dependent LIRCCODE mode (not supported)\n"));
Signed-off-by: Sean Young <sean@mess.org> --- utils/ir-ctl/ir-ctl.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)