Skip to content

feat(bulletins): post bulletins and announcements, and join, leave and post to ANSRVR groups (F2.5) - #271

Merged
gx1400 merged 1 commit into
chore/aprsnet-0.4.0-alpha.9from
feat/f2.5-posting-groups
Oct 18, 2026
Merged

gx1400 merged 1 commit into
chore/aprsnet-0.4.0-alpha.9from
feat/f2.5-posting-groups

Conversation

@gx1400

@gx1400 gx1400 commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

F2.5 behaviors 5–10, on APRS.NET 0.4.0-alpha.9's BulletinSchedule and AnsrvrCommand (G34). Stacked on #270.

Posting (behaviors 5–7)

  • PostBulletinAsync(BulletinPost) checks the post and refuses what can't be sent:
    • the id: a digit for a bulletin, a letter for an announcement;
    • the group: 1–5 letters and digits;
    • the text: 1–67 sendable characters.
  • It also refuses, with F2.1's transmit.* reasons, when transmitting isn't allowed.
  • Once accepted, the bulletin goes to BLN<id><group> on the sources ticked, or on every TX enabled one.
  • Repeats follow BulletinSchedule:
    • a bulletin at once, then after 1, 2, 4, 8 and 16 minutes, then every 20 minutes, for 4 hours;
    • an announcement after 10, 20 and 40 minutes, then hourly, for 2 days.
  • While Transmit is off a due send waits. When it comes back on, the bulletin goes once and doesn't catch up on the sends it missed.
  • Posting again to the same addressee replaces the text and restarts the schedule (Edit). StopBulletinAsync ends it.
  • A finished or stopped bulletin leaves the list.
  • Our bulletins show in WatchBulletinsAsync with Mine and NextSend, including a copy heard back.

ANSRVR groups (behaviors 8–10)

  • JoinGroupAsync, LeaveGroupAsync and PostToGroupAsync send J, U and CQ to ANSRVR through F2.4's messaging, so they're acked and retried like any message.
  • Joined groups are kept per profile in StationProfile.Groups; GetGroupsAsync lists them.
  • A keep-alive (K) goes every 8 hours (AnsrvrCommand.KeepAliveInterval) while joined. A join or a post counts as activity. After a start, the first keep-alive goes as soon as sending is allowed. Many groups are split across messages of 67 characters or fewer.
  • Not built: a conversation per group. APRS.NET can't yet recognise a message ANSRVR relays from a group (APRS.NET#272 stays open for it), so whatever ANSRVR sends shows in its own conversation in Messages. The spec and scope row say so.

Gateway

  • All five sending calls refuse with gateway.operator-only until F2.9's sign-in, like messaging. GetGroups is open.

UI (Bulletins panel)

  • Shown only when this station can transmit:
    • New bulletin… opens a form with kind, id, group, text and a 67-character counter, Send via ticks (all ticked means every TX enabled source), Post and Cancel;
    • our rows say "Yours · next send 7:08 PM" and have Edit and Stop;
    • an ANSRVR groups section joins, leaves and posts.
  • Errors show under the form.

Other

  • New error codes bulletins.id-invalid, bulletins.text-invalid and bulletins.group-invalid, with their words.
  • OwnBulletins.Dispose can now be called twice, since the engine is disposed under two services.

Tests

  • Engine:
    • posting on two sources with the TNC path, and the first repeat;
    • Stop;
    • a post held while Transmit is off;
    • each refusal;
    • checking and tidying a post;
    • a finished schedule leaving the list;
    • join, post, keep-alive at 8 hours (with ANSRVR acking each message) and leave;
    • keep-alive splitting.
  • UI: the form and Send via; a refused post keeping the form open; Edit and Stop on ours; groups.

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.

1 participant