|
|
3 weeks ago | |
|---|---|---|
| LINBPQ | 4 weeks ago | |
| v32 | 4 weeks ago | |
| .gitignore | 3 weeks ago | |
| 10.0.2.7_17022_20260623_130146.log | 4 weeks ago | |
| BPQTermTCP.ini | 2 years ago | |
| CLI_SUMMARY.txt | 4 weeks ago | |
| COMPARISON.md | 4 weeks ago | |
| Makefile | 3 weeks ago | |
| QUICKSTART_CLI.md | 4 weeks ago | |
| README.md | 3 weeks ago | |
| README_BOTH_VERSIONS.txt | 4 weeks ago | |
| README_CLI.md | 4 weeks ago | |
| TermTCP.32 | 4 weeks ago | |
| TermTCPCli.zip | 4 weeks ago | |
| termtcp | 4 weeks ago | |
| termtcp.c | 3 weeks ago | |
| termtcp_cli.o | 4 weeks ago | |
README.md
TermTCP
A terminal TCP client for BPQ32 packet radio nodes, written in C with an ncurses TUI. Connects via BPQTermTCP protocol, displays split output/monitor panes, supports real-time RF frame monitoring with port filtering, multiple simultaneous sessions, and built-in forms for ICS-213 and packet check-in.
Features
- ncurses TUI with split output and monitor panes
- BPQTermTCP protocol (compatible with QtTermTCP)
- Up to 4 simultaneous sessions with live background receive
- RF monitor with per-port and frame-type filtering
- Auto-populates port names from the BPQ server on connect
- Scrollable output and monitor windows with history
- Input history (Up/Down arrows)
- Session logging to timestamped files
- Function key bar (F1/F3–F10) at bottom of screen
- ICS-213 General Message form with F2 background send
- PKTNET Packet Check-In form
- Multiple host configuration with quick connect
- Unicode box-drawing borders on all menus
Dependencies
- GCC
- ncurses with wide character support (
libncursesw6)
Install dependencies on Debian/Ubuntu
sudo apt install gcc libncurses-dev
Build
make
The binary is ./termtcp.
Other make targets
make clean # Remove build artifacts
make debug # Build with debug symbols
make install # Install to /usr/local/bin/
Manual compile
gcc -Wall -Wextra -O2 -std=gnu99 -D_XOPEN_SOURCE_EXTENDED \
-o termtcp termtcp.c -lm -lncursesw
Configuration
Config is stored in ~/.BPQTermTCP.ini and created automatically on first run. Edit it to add BPQ nodes:
[Host1]
Host=10.0.2.7
Port=17023
Username=kb8pmy
Password=yourpassword
Name=Home Node
[Host2]
Host=10.121.15.68
Port=17023
Username=kb8pmy
Password=yourpassword
Name=Water Tower
Port names, monitor settings, and port mask are saved here automatically when you change them in-program.
Usage
./termtcp
Press Ctrl+A to open the menu, then select an option.
Key bindings
| Key | Action |
|---|---|
| Ctrl+A | Open menu |
| Ctrl+A C | Connect to a host |
| Ctrl+A D | Disconnect current session |
| Ctrl+A N | Open a new session |
| Ctrl+A X | Close current session |
| Ctrl+A 1–4 | Switch to session 1, 2, 3, or 4 |
| Ctrl+A O | Config / host editor |
| Ctrl+A M | Monitor options |
| Ctrl+A L | Toggle session log |
| Ctrl+A F | Forms submenu (ICS-213, PKTNET check-in) |
| Ctrl+A H | Help |
| Ctrl+A Q | Quit |
| F1 | Connect |
| F3 | Monitor options |
| F4 | Config / host editor |
| F5 | Toggle log |
| F6 | Forms submenu |
| F7 | New session |
| F8 | Previous session |
| F9 | Next session |
| F10 | Quit |
| Up / Down | Input history |
| PgUp / PgDn | Scroll output window |
| Home / End | Scroll monitor window |
| Enter | Send line to server |
Multiple sessions
Open up to 4 connections simultaneously. All sessions receive data in the background — switch between them with F8/F9 or Ctrl+A 1–4. The status bar shows [current/total] session count. Close the current session with Ctrl+A X (if it is the last open session, the program exits).
Forms (Ctrl+A F)
- ICS-213 General Message — fills in all numbered fields, sends via F2 in the background using silence-based prompt detection
- PKTNET Packet Check-In — pre-formatted check-in template
Monitor options (Ctrl+A M)
- Toggle TX, supervisor, nodes, and UI-only frame filtering
- Toggle monitor pane visibility
- Select which RF ports to monitor (Tab to switch to port list)
Port names are auto-populated from the BPQ server when you connect and saved to config.
BPQ Protocol Notes
- Uses BPQTermTCP protocol (same wire format as QtTermTCP)
- Sends trace options on connect to enable RF monitoring
- Port list requested automatically via P8=1 on connect
- Monitor frames delimited by
0xFF 0x1B/0xFEbyte markers - Port info delivered as
0xFF 0xFFpacket on connect - NODES broadcasts filtered client-side via
>NODESin AX.25 header
Version
Current: 0.0.60