Skip to content

Draft: #12361 Add oevsv.at repeater directory - #1475

Open
bullshit wants to merge 1 commit into
kk7ds:masterfrom
bullshit:feat/oevsv-source
Open

bullshit wants to merge 1 commit into
kk7ds:masterfrom
bullshit:feat/oevsv-source

Conversation

@bullshit

@bullshit bullshit commented Jan 29, 2026 •

Copy link
Copy Markdown

CHIRP PR Guidelines

The following must be true before PRs can be merged:

  1. All tests must be passing. The "PR Checks" job is speculative and failure doesn't always indicate a critial problem, but generally it needs to pass as well. ✅
  2. Commits should be rebased (or simply rebase-able in the web UI) on current master. Do not put merge commits in a PR. ✅
  3. Commits in a single PR should be related. Squash intermediate commits into logical units (i.e. "fix tests" commits need not survive on their own). Keep cleanup commits separate from functional changes. ✅
  4. Major new features or bug fixes should reference a CHIRP issue in the commit message. Do this with the pattern Fixes #1234 or Related to #1234 so that the ticket system links the commit to the issue. ✅
  5. Please write a reasonable commit message, especially if making some change that isn't totally obvious (such as adding a new model, adding a feature, etc). The first line of every commit is emailed to the users' list after each build. It should be short, but meaningful for regular users (examples: "thd74: Fixed tone decoding" or "uv5r: Added settings support"). There should be a blank line after the first, followed by additional text so that it gets formatted properly for the mailing list. ✅
  6. New drivers should be accompanied by a test image in tests/images (except for thin aliases where the driver is sufficiently tested already). All new drivers must use MemoryMapBytes. ❎
  7. All files must be GPLv3 licensed or contain no license verbiage. No additional restrictions can be placed on the usage (i.e. such as noncommercial). ✅
  8. Do not add new py2-compatibility code (No new uses of six, future, etc). ✅
image Screenshot From 2026-01-30 12-52-26

@bullshit bullshit changed the title feat(sources): adding draft of oevsv.at repeater Draft: feat(sources): adding of oevsv.at repeater Jan 29, 2026
@bullshit bullshit changed the title Draft: feat(sources): adding of oevsv.at repeater Draft: feat(sources): oevsv.at repeater Jan 29, 2026
@bullshit bullshit changed the title Draft: feat(sources): oevsv.at repeater Draft: feat(source): oevsv.at repeater Jan 29, 2026
@bullshit
bullshit force-pushed the feat/oevsv-source branch 11 times, most recently from 00baf83 to 642340f Compare January 30, 2026 22:06
@bullshit bullshit changed the title Draft: feat(source): oevsv.at repeater feat(source): oevsv.at repeater Jan 30, 2026
@bullshit bullshit changed the title feat(source): oevsv.at repeater #12361 feat(source): oevsv.at repeater Jan 30, 2026
@bullshit

Copy link
Copy Markdown
Author

Dear @kk7ds, would you do me the honor of reviewing my feature request. i hope i understand the requirements for contributing to this project and i hope i handled locale files right.

Regards

@kk7ds

kk7ds commented Jan 30, 2026

Copy link
Copy Markdown
Owner

I've already looked a bit, I was just waiting until you marked it as not-draft and passed the tests. I can handle the locale stuff for people, FWIW.

@kk7ds kk7ds left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks pretty close, thanks for working on this.

I can't comment on it directly, but your commit message needs to say specifically Fixes: #nnnn and not "Refs". Also we don't really do the github typical "(feat)" nonsense here. So a first line of "Adds oevsv.at repeater directory" would be much more helpful for the users reading the release notes.

Thanks!

Comment thread chirp/sources/oevsv.py Outdated

import logging
import json
from urllib.request import urlopen, Request

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use requests not urllib directly. See the repeaterbook driver for a canonical example.

Comment thread chirp/sources/oevsv.py Outdated

try:
request = Request(url)
request.add_header("User-Agent", "CHIRP-OEVSV-Plugin/1.0")

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please don't invent your own user-agent strings. The standardized header is already present in sources.base.HEADERS. Please use those like the repeaterbook module does.

Comment thread chirp/sources/oevsv.py Outdated
site = rpt.get("site_name", "")
if callsign:
name = callsign
if site and len(f"{callsign} {site[:5]}") <= 16:

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This [:5] looks pretty magical and I also wonder how a callsign plus five characters (and a space) would never not be <=16. Can you explain what is going on here with a comment?

Comment thread chirp/sources/oevsv.py Outdated
name = f"{callsign} {site[:5]}"
mem.name = name[:16]
else:
mem.name = site[:16] if site else "UNKNOWN"

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Memory names are not required and filling them with "UNKNOWN" seems weird. Can you just leave them blank if you have nothing to set?

Comment thread chirp/sources/oevsv.py
# Duplex and offset
# We transmit on repeater's RX, receive on repeater's TX
offset_hz = int((rx_freq - tx_freq) * 1000000)
if abs(offset_hz) < 1000: # Less than 1 kHz = simplex

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not really true, but can you explain why you're doing this? Errors in the DB maybe? Also note that when I try this, I get lots of repeaters with offsets of 0.599999 which I assume should be 0.600 ? I think you probably need to handle that...

Comment thread chirp/sources/oevsv.py Outdated
elif band == "23cm":
mem.tuning_step = 25.0
else:
mem.tuning_step = 5.0

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would probably be better to use the bandplan module to generate these things, although you really generally don't need to worry about setting tuning_step on virtual radios like this, so I'd just remove it if I were you.

Comment thread chirp/sources/oevsv.py Outdated
mem.offset = abs(offset_hz)

# Mode
mem.mode = "FM"

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you move this down below where you do the rest of the mode calculation (and see comment there)?

Comment thread chirp/sources/oevsv.py
if rpt.get("dstar"):
modes.append("D-STAR")
if modes:
comment_parts.append("/".join(modes))

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are you not setting the mem.mode here? D-STAR needs to be mode='DV', C4FM should be mode='DN'. CHIRP doesn't support DMR at all at the moment so I'm not sure it's worth including those, but mode='DMR' will work. Also, you've got a toggle for "FM only" but it seems that you return FM for everything regardless, which does not make much sense.

Comment thread chirp/sources/oevsv.py
station_type=params['station_type'],
fm_only=params['fm_only'],
active_only=params['active_only'],
status_cb=lambda msg: status.send_status(msg, 50))

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you divide up the status range a bit so that the gauge moves each time you fetch a band? Right now it just sits at 50% until it's done. Maybe just divide 100 by the number of bands and move it that much each time?

@bullshit bullshit changed the title #12361 feat(source): oevsv.at repeater #12361 Add oevsv.at repeater directory Jan 31, 2026
@bullshit bullshit changed the title #12361 Add oevsv.at repeater directory Draft: #12361 Add oevsv.at repeater directory Feb 3, 2026
@bullshit

bullshit commented Feb 3, 2026

Copy link
Copy Markdown
Author

Thank you for your quick response. I reused code from a couple of scripts i had. so this work evolved around my poor HAM knowledge ;) I will change or fix the things you mentioned above and come back to you.
Regards

@bullshit
bullshit force-pushed the feat/oevsv-source branch 4 times, most recently from 4b1b332 to ea46d63 Compare February 8, 2026 20:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants