Bus Pirate firmware auto build: main branch

Here’s a fresh compile from ‘main’: “PR 139 + if 3 high bits of 2 wire LED frame are set, the global brightness is honored, else it will set the bits and full brightness. + if pin is not available reset and exit mode gracefully (LED only so far)”

ci-buspirate-main-6db65f9.zip

Build time: 107.23 seconds

Git pull log @6db65f9:
Updating 664f569…6db65f9
Fast-forward
src/bytecode.h | 29 ±
src/mode/binloopback.c | 2 ±
src/mode/dummy1.c | 12 ±
src/mode/hw1wire.c | 4 ±
src/mode/hw2wire.c | 2 ±
src/mode/hwhduart.c | 2 ±
src/mode/hwi2c.c | 4 ±
src/mode/hwled.c | 81 ++±-
src/mode/hwuart.c | 4 ±
src/syntax.c | 910 ++++++++++++++++++++++±-------------------------
src/syntax.h | 6 ±
src/ui/ui_mode.c | 7 ±
src/ui/ui_process.c | 45 ±-
src/ui/ui_process.h | 1 +
14 files changed, 555 insertions(+), 554 deletions(-)

Here’s a fresh compile from ‘main’: “LCD screensaver fix”

ci-buspirate-main-1ff0e4f.zip

Build time: 107.57 seconds

Git pull log @1ff0e4f:
Updating 6db65f9…1ff0e4f
Fast-forward
src/modes.c | 2 –
src/modes.h | 2 ±
src/pirate.c | 59 +++++++++++++++++++±------------------------------------
src/ui/ui_lcd.c | 43 ++++++++++++++++++++++++++++±-----------
src/ui/ui_lcd.h | 1 +
5 files changed, 54 insertions(+), 53 deletions(-)

I know little of powershell and less of scripts (hardware guy), but looking at the device IDs in device manager, the device instance for COM3 ends in “02” and COM4 ends in “00”. COM4 is the terminal.

It appears that Windows’ assignment of USB interfaces to COM ports is … not predictable. What you indicated is that interface 00 was assigned the higher COM port number, and the interface 02 was assigned the lower COM port number. It’s not clear why Windows sometimes does this. If you happen to discover a root cause, it would be of interest.

The good news: Because the BP hardware has a unique serial number in the USB descriptors, you should now be able to change the COM port to whatever you want, and it will “stick” for that particular buspirate, even if you change which USB port you plug the device into. So, if you change the COM ports to, for example, COM70 for the terminal and COM71 for the binary interface, then unless you uninstall the device from device manager, they will be fixed (unless something else was using COM70 or COM71). Since a conflict would change the COM port, I recommend assigning a relatively high value (e.g., COM70, COM71).

Hope that helps!

That’s a good tip, this has been annoying me to no end. I will add this to the docs for the v1 updates.

Added an issue to make the unique ID a config option because it is problematic for manufacturing.

Does this affect Linux users?

Not really. For example, Linux users can use udev to create symlinks. The symlinks can be based on the USB port the device was connected to, so for a fixed machine (e.g., four USB ports), you could define a rule that creates the symlink /dev/buspirate-1 for the first USB port terminal interface, /dev/buspirate-1-binary for that same device’s binary CDC interface, /dev/buspirate-2 for the second USB port terminal interface, … (etc.)

Or, unless you’re Ian, you likely only have a limited number of them, and can setup udev rules for the specific serial number to always get a specific symlink. For example, I could have:

  • 2GB BP5 → /dev/buspirate5-2gb
  • 1GB BP5 → /dev/buspirate5-1gb
  • 1GB BP5XL → /dev/buspirate5xl
  • 1GB BP6 → /dev/buspirate6

Even with four devices, that’s just listing four serial numbers in the udev rules … so likely reasonable for a linux user?

I realize maybe not everyone knows …

"manufacturing issue" details

Each unique serial number results in a unique device in Windows. Device manager tracks all devices it’s ever seen.

At least some versions of Windows apparently try to keep the COM ports for previously-seen devices locked for that device? (Maybe it’s only during a given boot, or where software isn’t releasing the handle to the COM port?)

Regardless, the manufacturing hit the maximum COM port limit in Windows at some point, and thus had to reboot the test machine every N units (e.g., every 126 units tested) when the unique serial numbers are used.


hth...

Here’s a fresh compile from ‘main’: “begin conversion to universal inlined PIO idle detection function. Begin implemention of universal power supply and pull-up resistors check, error messages. Fix bug in syntax processing related to repeated operations”

ci-buspirate-main-b9bd6f3.zip

Build time: 110.48 seconds

Git pull log @b9bd6f3:
Updating 1ff0e4f…b9bd6f3
Fast-forward
src/commands/i2c/scan.c | 4 +±-
src/mode/hw1wire.c | 3 +±
src/mode/hw2wire.c | 2 ±
src/mode/hwhduart.c | 4 ++++
src/mode/hwi2c.c | 9 ±-------
src/mode/hwled.c | 25 +±----------------------
src/mode/hwuart.c | 10 ++++++++++
src/pio_config.h | 28 ++++++++++++++++++++++++++±
src/pirate/hwi2c_pio.c | 32 ++±----------------------------
src/syntax.c | 33 +++++++++++++++++++++++++++±----
src/translation/base.h | 3 +++
src/translation/bs-ba.h | 3 +++
src/translation/en-us.h | 5 +++±
src/translation/en-us.json | 5 +++±
src/translation/it-it.h | 3 +++
src/translation/json2h.bat | 2 ++
src/translation/pl-pl.h | 3 +++
src/translation/zh-cn.h | 5 +++±
src/ui/ui_help.c | 30 +++++++++++++++++++++++++++±-
src/ui/ui_help.h | 1 +
20 files changed, 135 insertions(+), 75 deletions(-)
create mode 100644 src/translation/json2h.bat

Here’s a fresh compile from ‘main’: “preflight sanity check added to upper processing layers for all protocol modes, as well as protocol commands (when -h flag is not present)”

ci-buspirate-main-6251986.zip

Build time: 111.28 seconds

Git pull log @6251986:
Updating b9bd6f3…6251986
Fast-forward
src/commands/i2c/scan.c | 7 -------
src/mode/dio.c | 4 ++++
src/mode/dio.h | 1 +
src/mode/hw1wire.c | 9 +++±----
src/mode/hw1wire.h | 1 +
src/mode/hw2wire.c | 8 +++±—
src/mode/hw2wire.h | 1 +
src/mode/hwhduart.c | 9 +++±----
src/mode/hwhduart.h | 1 +
src/mode/hwi2c.c | 8 +++±—
src/mode/hwi2c.h | 1 +
src/mode/hwled.c | 4 ++++
src/mode/hwled.h | 1 +
src/mode/hwspi.c | 4 ++++
src/mode/hwspi.h | 1 +
src/mode/hwuart.c | 18 +++++±-----------
src/mode/hwuart.h | 1 +
src/mode/infrared.c | 4 ++++
src/mode/infrared.h | 1 +
src/modes.c | 11 +++++++++±
src/modes.h | 1 +
src/syntax.c | 2 ±
src/ui/ui_process.c | 9 +++++++++
23 files changed, 68 insertions(+), 39 deletions(-)

Here’s a fresh compile from ‘main’: “disable syntax debug output”

ci-buspirate-main-2a11db3.zip

Build time: 108.92 seconds

Git pull log @2a11db3:
Updating 6251986…2a11db3
Fast-forward
src/syntax.c | 2 ±
1 file changed, 1 insertion(+), 1 deletion(-)

Here’s a fresh compile from ‘main’: “Fix fala FOR i2C”

ci-buspirate-main-31d847b.zip

Build time: 108.9 seconds

Git pull log @31d847b:
Updating 2a11db3…31d847b
Fast-forward
src/mode/hwi2c.c | 2 ±
src/pirate/hwi2c_pio.c | 16 ++++++++++++±–
2 files changed, 14 insertions(+), 4 deletions(-)

Here’s a fresh compile from ‘main’: “FALA handle full buffer before end of bus activity”

ci-buspirate-main-fa10624.zip

Build time: 116.37 seconds

Git pull log @fa10624:
Updating 31d847b…fa10624
Fast-forward
src/binmode/fala.c | 13 +++++±------
src/binmode/falaio.c | 6 ++±–
src/binmode/logicanalyzer.c | 34 ++++++++++++++++++++++++++±------
src/binmode/logicanalyzer.h | 5 ++±-
src/binmode/sump.c | 2 ±
5 files changed, 40 insertions(+), 20 deletions(-)

Here’s a fresh compile from ‘main’: “Add sample udev rules”

ci-buspirate-main-4a2347f.zip

Build time: 109.47 seconds

Git pull log @4a2347f:
Updating fa10624…4a2347f
Fast-forward
hacks/88-buspirate.rules | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
create mode 100644 hacks/88-buspirate.rules

Here’s a fresh compile from ‘main’: “configuration menus for infrared mode”

ci-buspirate-main-0a8f9da.zip

Build time: 110.94 seconds

Git pull log @0a8f9da:
Updating 4a2347f…0a8f9da
Fast-forward
src/lib/pico_ir_nec/nec_transmit.c | 4 +
src/lib/pico_ir_nec/nec_transmit.h | 1 +
src/mode/hwled.c | 1 +
src/mode/infrared.c | 185 ++++++++++++++++++++++++++±---------
src/mode/infrared.h | 4 ±
src/translation/base.h | 10 ++
src/translation/bs-ba.h | 10 ++
src/translation/en-us.h | 11 +++
src/translation/en-us.json | 10 ++
src/translation/it-it.h | 10 ++
src/translation/pl-pl.h | 10 ++
src/translation/zh-cn.h | 10 ++
12 files changed, 214 insertions(+), 52 deletions(-)

Here’s a fresh compile from ‘main’: “infrared mode receive and decode”

ci-buspirate-main-030ff27.zip

Build time: 109.2 seconds

Git pull log @030ff27:
Updating 0a8f9da…030ff27
Fast-forward
src/CMakeLists.txt | 3 +++
src/lib/pico_ir_nec/nec_receive.c | 40 +++++++++++++++++++++++++++++++±------
src/lib/pico_ir_nec/nec_receive.h | 11 ++++++++±-
src/mode/infrared.c | 27 ++++++++++++++++++±------
src/mode/infrared.h | 2 ±
src/modes.c | 2 ±
src/pirate.h | 2 ++
7 files changed, 69 insertions(+), 18 deletions(-)

Here’s a fresh compile from ‘main’: “this version causes my terminal (and then PC) to freeze…”

ci-buspirate-main-d36bb87.zip

Build time: 108.43 seconds

Git pull log @d36bb87:
Updating 030ff27…d36bb87
Fast-forward
src/CMakeLists.txt | 3 ++
src/lib/pico_ir_nec/nec_receive.c | 3 ±
src/lib/pico_ir_nec/nec_transmit.c | 5 ++
src/lib/pico_ir_nec/nec_transmit.h | 1 +
src/mode/infrared.c | 63 ++++++++++++++++++±----
src/pirate/rc5.pio | 95 ++++++++++++++++++++++++++++++++++++
src/pirate/rc5_pio.c | 98 ++++++++++++++++++++++++++++++++++++++
src/pirate/rc5_pio.h | 8 ++++
src/translation/base.h | 1 +
src/translation/bs-ba.h | 1 +
src/translation/en-us.h | 1 +
src/translation/en-us.json | 1 +
src/translation/it-it.h | 1 +
src/translation/pl-pl.h | 1 +
src/translation/zh-cn.h | 1 +
src/ui/ui_cmdln.c | 7 +++
16 files changed, 277 insertions(+), 13 deletions(-)
create mode 100644 src/pirate/rc5.pio
create mode 100644 src/pirate/rc5_pio.c
create mode 100644 src/pirate/rc5_pio.h

Here’s a fresh compile from ‘main’: “Work in progress”

ci-buspirate-main-bc18726.zip

Build time: 112.38 seconds

Git pull log @bc18726:
Updating d36bb87…bc18726
Fast-forward
src/lib/pico_ir_nec/nec_receive.c | 21 ++±–
src/lib/pico_ir_nec/nec_receive.h | 10 ±-
src/lib/pico_ir_nec/nec_transmit.c | 9 +±
src/lib/pico_ir_nec/nec_transmit.h | 4 ±
src/mode/infrared.c | 34 ++±------
src/pirate/bio.c | 5 ±
src/pirate/rc5.pio | 133 ++++++++++++++++++++++++++±---------
src/pirate/rc5_2.pio | 104 +++++++++++++++++++++++++++++
src/pirate/rc5_pio.c | 79 +++++++++++++++++±—
src/pirate/rc5_pio.h | 8 ±-
src/ui/ui_statusbar.c | 3 +
11 files changed, 313 insertions(+), 97 deletions(-)
create mode 100644 src/pirate/rc5_2.pio

Here’s a fresh compile from ‘main’: “Fix build break that’s in main branch”

ci-buspirate-main-f72ef4d.zip

Build time: 112.13 seconds

Git pull log @f72ef4d:
Updating bc18726…f72ef4d
Fast-forward
src/platform/bpi-rev10.h | 2 ++
src/platform/bpi-rev8.h | 2 ++
src/platform/bpi-rev9.h | 2 ++
src/platform/bpi5-rev10.h | 2 ++
src/platform/bpi5xl-rev0.h | 2 ++
src/platform/bpi6-rev1.h | 2 ++
6 files changed, 12 insertions(+)

Here’s a fresh compile from ‘main’: “Fix show help when no options selected for logic command”

ci-buspirate-main-43b15d7.zip

Build time: 111.22 seconds

Git pull log @43b15d7:
Updating f72ef4d…43b15d7
Fast-forward
src/commands/global/logic.c | 2 ±
1 file changed, 1 insertion(+), 1 deletion(-)