-
Notifications
You must be signed in to change notification settings - Fork 16
Implement M17 Parrot and Feature Parity #19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
- Added M17Parrot.h/cpp for multi-threaded voice and packet echo. - Integrated Parrot routing and cleanup in M17Protocol. - Added LSTN (Listen-only) mode support for M17 nodes. - Added M17P (Packet Mode) routing support. - Fixed M17 keep-alive validation bug. - Improved protocol architecture by inheriting SM17Protocol from CSEProtocol.
|
would appreciate testers to see if we have feature parity with mrefd. |
|
still getting weird unknown packets when i tested with droidstar.. I'll try testing with mvoice as well for a second test and look at the specs closer (https://spec.m17project.org).. Finally I have a proper m17 radio and fork of WPSD, so I should be able to investigate further.. just need time. |
M17 Protocol Upgrade PlanBased on the Protocol Audit, I propose upgrading Proposed Changes:
Impact: |
Principal Engineer Analysis: The Case for Dual-Stack M17I have conducted a comparative code audit of Executive Summary: Detailed Comparison:
Conclusion: Proposed Resolution:
|
Implemented M17LegacyCompat flag (default true). Added dual-mode receiver for 54/56-byte frames. Updated transmitter and Parrot to respect compat flag.
Principal Engineer Review: Feature Branch StateBranch: Executive SummaryThe M17 protocol implementation has been successfully refactored to support a Dual-Mode operation, allowing Key Implementation Details
Verification Logic
Next Steps / Recommendations
|
|
(I asked gemini to pretend its a principal engineer .. thats why all those headings) |
M17 Feature Parity & Parrot Support
This PR implements the M17 Parrot feature and several protocol enhancements to achieve parity with other M17 reflector implementations (like
mrefd).Changes
M17 Parrot
CM17StreamParrotandCM17PacketParrotfor echoing voice and data.std::asyncto ensure non-blocking operation.Protocol Enhancements
IsValidKeepAlivePacketthat caused disconnects for some clients.CM17Protocolnow correctly inherits fromCSEProtocol, making it a first-class citizen in the reflector stack.SSE Analysis
Architectural Impact
The introduction of the
CParrotabstraction and its integration into theTask()loop follows the existing pattern of the reflector, ensuring minimal disruption to other protocols. By usingstd::futurefor playback, we avoid any potential for audio stuttering or blockages in the main processing thread.Maintainability
The code uses strict typing and follows the project's C++17 standards. Circular dependencies were resolved using forward declarations, keeping the header files clean and reducing compile-time coupling.
Scalability
The use of an
std::mapfor parrot sessions keyed by IP ensures that multiple users can use the parrot simultaneously without interference. The expiration logic prevents memory leaks from abandoned sessions.Verification
make debug=true DHT=false urfd.Fixes #12