On Wed, Sep 22, 2021 at 6:27 PM Kenneth Sloat <ksloat@xxxxxxxxxxxxxxxx> wrote: > > Hello, > > I am using libgpiod v1.4.1 and am having trouble using a bulk request of gpio lines as outputs from a chip. I am using the C++ bindings. I have confirmed that I can individually request lines and set them as expected. However, if I use the bulk request, while I get the expected number of lines (and defaulted value is set correctly), iterating through them (with array operator in this case) and trying to set the values is not working as expected. I find that for every index/position, line 0 is the one being toggled. > > A simple example is below: > > gpiod::chip *mychip; > > mychip = new gpiod::chip("1"); Why would you need to allocate it with new? > > gpiod::line_bulk lines = mychip->get_all_lines(); > lines.request({std::string("gpio-test"), > gpiod::line_request::DIRECTION_OUTPUT, 0}); > > for (unsigned int i = 0; i < lines.size(); i++) { > printf("Set line %d\n", i); > lines[i].set_value(1); > usleep(1000 * 1000); > printf("Clear line %d\n", i); > lines[i].set_value(0); > usleep(1000 * 1000); > printf("\n"); > } > > return 0; > > Not sure if this is a usage problem on my part or an actual issue. > I'll see if I can confirm the behavior here but it looks like a bug indeed. Bart > Thanks > > Sincerely, > Ken Sloat