• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

jacob-meacham / rotary-voip
59%

Build:
DEFAULT BRANCH: main
Repo Added 13 Jan 2026 10:53PM UTC
Token KM0UUXCDliLMrdvwHyyaxU8CMF8CmMQ86 regen
Build 16 Last
Files 46
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH main
branch: SELECT
CHANGE BRANCH
x
Sync Branches
  • No branch selected
  • main

26 May 2026 03:28AM UTC coverage: 58.697% (+0.02%) from 58.682%
26430541998

push

github

jacob-meacham
fix(gpio): use push-pull drive on outputs (was inadvertently open-drain)

For input pins, lgpio's lFlags parameter encodes bias (SET_PULL_NONE,
SET_PULL_UP, SET_PULL_DOWN). For output pins, the same lFlags parameter
encodes drive mode (DRIVE_PUSH_PULL=0, DRIVE_OPEN_DRAIN=1,
DRIVE_OPEN_SOURCE=2, ACTIVE_LOW=4). The integer values overlap.

We were passing SET_PULL_NONE (=1) as lFlags to gpio_claim_output for
outputs, which lgpio interprets as DRIVE_OPEN_DRAIN — the pin can pull
LOW but can only float HIGH. The PAM8302's internal pull-up on its EN
pin was usually enough to keep EN HIGH when we wanted, but this is
unreliable — temperature, supply variation, or even a slightly
different PAM8302 batch can flip the polarity to "amp on when GPIO is
LOW", which is what the user just observed.

Pass 0 to select the default DRIVE_PUSH_PULL so HIGH actually drives
the pin to 3.3V.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

0 of 2 new or added lines in 1 file covered. (0.0%)

2396 of 4082 relevant lines covered (58.7%)

0.59 hits per line

Relevant lines Covered
Build:
Build:
4082 RELEVANT LINES 2396 COVERED LINES
0.59 HITS PER LINE
Source Files on main
  • Tree
  • List 46
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
26430541998 main fix(gpio): use push-pull drive on outputs (was inadvertently open-drain) For input pins, lgpio's lFlags parameter encodes bias (SET_PULL_NONE, SET_PULL_UP, SET_PULL_DOWN). For output pins, the same lFlags parameter encodes drive mode (DRIVE_PUSH_... push 26 May 2026 03:30AM UTC jacob-meacham github
58.7
26408616263 main fix(gpio): use libgpiod for input edge detection instead of lgpio lgpio's callback delivery for alert-claimed pins was inconsistent — delivering both directions when we'd asked for FALLING only, with the "level" argument that supposedly distingui... push 25 May 2026 03:46PM UTC jacob-meacham github
58.68
26405876166 main fix(dial): widen debounce, drop settle window — count falls only Going back to basics. The various settle/quiet-period schemes were introducing inconsistency (sometimes dropping a real pulse, sometimes not catching a phantom). Just: 1. Count f... push 25 May 2026 02:38PM UTC jacob-meacham github
59.26
26386918502 main fix(dial): add dial-start settle window to catch off-normal close glitch The level-poll alone leaves a small race at dial-start: GPIO22 takes a few µs to settle LOW once the user starts pulling the dial, and if a contact-close glitch fires on GPI... push 25 May 2026 06:34AM UTC jacob-meacham github
59.43
26386056412 main fix(dial): poll DIAL_ACTIVE level instead of tracking its edges Earlier attempts to use GPIO22 (off-normal) as a digit-boundary signal ran aground because on this dial the off-normal switch chatters along with the pulse contact (internal jumper b... push 25 May 2026 06:07AM UTC jacob-meacham github
59.26
26385719111 main fix(gpio): filter lgpio callbacks to only fire on requested edge lgpio's gpio_claim_alert requires specifying which edges to alert on (we use BOTH so the pin can later have callbacks for any direction). But lgpio's .callback(... edge ...) paramet... push 25 May 2026 05:56AM UTC jacob-meacham github
59.27
26385350507 main revert(dial): drop GPIO22 gate, use inter-pulse timeout This dial's off-normal switch briefly opens during each pulse cycle — it doesn't stay LOW for the whole dial movement, so it can't serve as a clean digit gate. Combined with the GPIO27 cap w... push 25 May 2026 05:44AM UTC jacob-meacham github
59.35
26384958031 main feat(dial): use off-normal switch as digit gate Refactors DialReader so a digit is delimited by the off-normal switch (DIAL_ACTIVE) instead of an inter-pulse timeout. This eliminates two classes of bug: 1. Phantom pulses fired by the off-normal ... push 25 May 2026 05:31AM UTC jacob-meacham github
59.56
26376472223 main fix(dial): debounce dial pulse to drop contact bounce edges Each real rotary pulse was registering 5-7 times because the dial's mechanical contact bounces for a few ms on each open/close. Dialing "4" produced 26 pulses, which then fell through as... push 25 May 2026 12:04AM UTC jacob-meacham github
59.23
26375633768 main fix(audio): match plughw:X,Y config against PyAudio's hw:X,Y device name PyAudio device names embed the ALSA hardware path as "(hw:X,Y)", not as "(plughw:X,Y)". A config value of plughw:0,0 was failing to match "USB Audio Device: - (hw:0,0)" beca... push 24 May 2026 11:24PM UTC jacob-meacham github
59.18
See All Builds (16)

Badge your Repo: rotary-voip

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Refresh
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc