
وحدة GNU Radio خارج الشجرة (OOT) لكتل QRadioLink.
إشعار مهم: هذا كود مُولّد بالذكاء الاصطناعي.
لم يتم مراجعة هذا الكود من قبل مبرمجين محترفين، إنها مهمة كبيرة. توجد اختبارات في قاعدة الكود، يرجى مراجعتها ومراجعة الكود الخاص بها.
وحدة GNU Radio خارج الشجرة (OOT) لكتل QRadioLink.
الفرع main: GNU Radio 3.10 OOT (CMake find_package(gnuradio)). المنفذ التجريبي لـ GNU Radio 4 موجود على الفرع gnuradio4 (README_gr4.md على ذلك الفرع).
التنقل في الكود: docs/CODE_MAP.md (الملفات، الدوال، فهرس الكتل). توجيه نمط gr-ident عبر ZMQ: docs/GRIDENT_ZMQ.md (مقدمة gr-ident على :5560).
تم التحقق من مرجع IQ لكتل المُعدِّل باستخدام radio-modulation-validator (2026-05-31). الملخص: فشل طفيف — 6/19 كتلة نجحت، 13 فشل طفيف، 0 فشل صارم، 3 تم تخطيها.
تم التعرف على جميع الأنماط المختبرة في عائلة التعديل الصحيحة (FSK, PSK, AM, FM). تعكس حالات الفشل الطفيف على مستوى الترتيب (على سبيل المثال توقع FSK على أنه CPFSK بدلاً من 4FSK أو GMSK) حدود مصنف الترتيب للمدقق، وليست دليلاً على أن هذه المُعدِّلات تُنتج عائلة موجة خاطئة.
يستخدم الفحص مرجع IQ مدمجًا (وليس كتل OOT المبنية); تنطبق النتائج على الأنماط المدرجة في هذا README على main وتنعكس على gnuradio4.
النتائج الكاملة لكل كتلة: VALIDATION_REPORT.md
تم توثيق هذا المشروع في المسودة الأولية التالية:
طيف انتشار غاوسي موزع مقيد تشفيريًا لتعزيز الاتصالات السرية: التصميم والتنفيذ والأداء المحاكى في نماذج قنوات ITU
IACR Cryptology ePrint Archive، ورقة 2025/108456
https://eprint.iacr.org/2025/108456
طابع زمني لسجل الأرشيف: 21 مارس 2026.
توفر هذه الوحدة كتل GNU Radio لمخططات تعديل رقمية وتناظرية متنوعة، متخصصة في اتصالات الراديو الهواة والصوت الرقمي.
تم تحويل هذه الوحدة من تطبيق QRadioLink، وهو جهاز إرسال واستقبال SDR متعدد الأنماط لـ GNU Radio و ADALM-Pluto و LimeSDR و USRP وغيرها من أجهزة SDR. يقع الكود المصدري الأصلي على https://codeberg.org/qradiolink/qradiolink.
التحقق: تم التحقق من الكتل المحولة التي لها نظير في QRadioLink مقابل المصدر الأصلي لـ QRadioLink (الفرع next، codeberg.org/qradiolink/qradiolink) بحيث تتطابق مخططات التدفق ومعلمات المرشحات وثوابت القياس وسلوك الكتلة. تمت استعادة سلاسل تعديل/إزالة تعديل SSB و AM (بما في ذلك هيكل CESSB وثوابت القاطع/الممدد) لتطابق الأصل حيث اختلفت. بعض الكتل في هذه الوحدة ليس لها مصدر مقابل في src/gr/ الخاص بـ QRadioLink؛ يتم ذكر أصلها في الجدول أدناه.
الإسناد والأصل:
next، src/gr/): التعديل/إزالة التعديل (2FSK, 4FSK, GMSK, BPSK, QPSK, AM, SSB, NBFM, WBFM)، الصوت الرقمي (FreeDV, M17, DMR)، والكتل الداعمة (RSSI, M17 deframer, MMDVM source/sink, clipper, stretcher, zero_idle_bursts, gr_4fsk_discriminator, demod_mmdvm_multi, demod_mmdvm_multi2, mod_mmdvm_multi2). تم اشتقاق أو إعادة تنفيذ DSP وسلوك النمط لهذه الكتل من تطبيق QRadioLink.gr_* في src/gr/ لـ QRadioLink): 8FSK, SOQPSK, CPM-4FSK, dPMR, NXDN, POCSAG, D-STAR, YSF, P25. أصلها مُعطى في جدول أصل الكتل أدناه.أصل الكتل (التحقق / الإسناد):
تم اختبار الكود بشكل مكثف باستخدام libFuzzer مع أكثر من 104 ملايين عملية تنفيذ عبر كتل متعددة، ولم يتم اكتشاف أي أعطال أو تسرب للذاكرة. انظر fuzzing-results/results.md للحصول على تفاصيل التغطية.
SOQPSK هو مخطط تعديل فعال في عرض النطاق الترددي يوفر كفاءة طيفية محسنة مقارنة بـ QPSK القياسي. يدعم التنفيذ وضعي تشغيل:
الوضع 1: قناة واحدة VHF/UHF
الوضع 2: متعدد النواقل VHF/UHF (مقاوم للتلاشي)
شرائح عرض النطاق الترددي القصوى المتاحة:
كفاءة SOQPSK: ~1.5 بت/ثانية/هرتز
سعة كل ناقل:
مواصفات الناقل:
جميع الكتل متاحة من خلال روابط بايثون، بما في ذلك:
تمكن روابط بايثون من الاستخدام في مخططات تدفق GNU Radio Companion ونصوص بايثون.
gr-qradiolink/ ├── CMakeLists.txt # Top-level CMake configuration ├── include/ # Public header files │ └── gnuradio/ │ └── qradiolink/ ├── lib/ # Implementation files ├── python/ # Python bindings │ └── qradiolink/ │ └── bindings/ ├── grc/ # GNU Radio Companion block definitions ├── docs/ # Documentation │ ├── doxygen/ │ ├── CODE_MAP.md # Code and function map (all modules) │ ├── GRIDENT_ZMQ.md # gr-ident ZMQ mode routing guide │ ├── DSSS_BLOCKS.md # DSSS spreader/despreader guide │ ├── GDSS_BLOCKS.md # GDSS spreader/despreader guide │ └── PTT_CONTROL.md # PTT control with gr-osmosdr ├── examples/ # Example flowgraphs ├── tests/ # Unit tests └── cmake/ # CMake modules └── Modules/
## التبعيات
انظر [DEPENDENCIES.md](https://github.com/supermagnum/gr-qradiolink/blob/HEAD/DEPENDENCIES.md) للحصول على قائمة كاملة بالتبعيات المطلوبة والاختيارية.
**ملخص سريع:**
- استنساخ باستخدام `git clone --recursive` (أو تشغيل `git submodule update --init --recursive` بعد الاستنساخ)
- GNU Radio >= 3.10 (مع مكون ترميز الصوت المبني بدعم Codec2)
- CMake >= 3.16
- مكتبات Boost
- Volk (مكتبة النواة المحسّنة للمتجهات)
- ZeroMQ (اختياري، لكتل MMDVM والتمهيد SUB لـ gr-ident)
- Python 3.x مع NumPy (لربط بايثون)
- مكتبة fmt (للالاختبارات)
## الاختبار
تتضمن الوحدة اختبارات وحدة شاملة لجميع الكتل. تُجرى الاختبارات باستخدام إطار CTest وBoost.Test.
### نتائج الاختبار
جميع الاختبارات تمر بنجاح. انظر [tests/results.md](https://github.com/supermagnum/gr-qradiolink/blob/HEAD/tests/results.md) لاختبارات الوحدة C++، وأداة اختبار بايثون، ونتائج الحالات الحدودية. انظر [fuzzing-results/results.md](https://github.com/supermagnum/gr-qradiolink/blob/HEAD/fuzzing-results/results.md) لتفاصيل اختبارات التشويش وبروتوكول MMDVM.
**اختبارات الوحدة C++:**```
100% tests passed
Test Breakdown:
- 12 Manual tests (with int main): test_mod_2fsk, test_mod_4fsk, test_mod_8fsk,
test_mod_am, test_mod_gmsk, test_mod_bpsk, test_mod_mmdvm, test_mod_freedv,
test_gdss_spreader_cc, test_gdss_despreader_cc, test_dsss_cdma_transmitter_cc,
test_dsss_cdma_receiver_cc
- Boost.Test tests: mod_ssb, mod_qpsk, mod_nbfm, mod_wbfm, mod_dsss, all
demodulators, rssi_tag_block (8 tests), interleaver_bb (13 tests with edge cases)
- gr-ident: test_grident_zmq (JSON parse and mode_id to demod mapping)
Test Coverage:
- Modulators: 2FSK, 4FSK, 8FSK, AM, GMSK, BPSK, SSB, QPSK, NBFM, WBFM, DSSS, M17, DMR, dPMR, NXDN
- Demodulators: 2FSK, 4FSK, 8FSK, AM, GMSK, BPSK, SSB, QPSK, NBFM, WBFM, DSSS, M17, DMR, dPMR, NXDN
- FEC: interleaver_bb (HF burst error handling, 13 tests including edge cases)
- Note: SOQPSK and CPM-4FSK blocks are implemented and available but unit tests are planned for future releases
اختبارات بروتوكول MMDVM (Python):``` 41 tests passed, 0 tests failed
انظر [fuzzing-results/results.md](https://github.com/supermagnum/gr-qradiolink/blob/HEAD/fuzzing-results/results.md) للحصول على نتائج اختبار بروتوكول MMDVM الكاملة.
**محاكاة BER لتقنية DSSS** ([examples/dsss_ber_simulation.py](https://github.com/supermagnum/gr-qradiolink/blob/HEAD/examples/dsss_ber_simulation.py)) تقوم بتشغيل الناشر -> AWGN -> مزيل الانتشار وترسم BER مقابل SNR لـ N=64, 128, 256 مع تراكب المنحنى النظري 0.5*erfc(sqrt(N*Es/N0/2))؛ تتطابق المنحنيات ضمن ضوضاء المحاكاة، مما يؤكد سلوك DSSS الصحيح.
### تشغيل الاختبارات
لبناء وتشغيل مجموعة الاختبارات:```bash
cd build
cmake ..
make
ctest --output-on-failure
تتضمن الوحدة تغطية شاملة للاختبارات التشويهية باستخدام libFuzzer. انظر fuzzing-results/results.md للحصول على نتائج حملة الاختبارات التشويهية الكاملة بما في ذلك:
تتضمن الوحدة اختبارات تحقق مبنية على بايثون لجميع أنواع التعديل. انظر fuzzing-results/results.md لنتائج اختبارات التحقق. جميع أوضاع الصوت الرقمي (FreeDV، M17، DMR، dPMR، NXDN) لديها الآن روابط بايثون ودعم التحقق. كتل SOQPSK لديها روابط بايثون وهي متاحة للاستخدام؛ تم التخطيط لاختبارات التحقق في الإصدارات المستقبلية.
mode_id في gr-ident.جميع الكتل لديها تعريفات كتل في GRC (GNU Radio Companion) في دليل grc/. الكتل الرئيسية:
التعديلات الرقمية:
التعديلات التناظرية:
الصوت الرقمي:
بروتوكولات MMDVM:
gr-ident (اختياري، libzmq):
FEC:
للحصول على القائمة الكاملة لجميع الكتل، انظر دليل grc/.
هذا المشروع مرخص بموجب رخصة GNU العامة العامة الإصدار 3.0 أو الأحدث (GPL-3.0-or-later).
انظر ملف LICENSE في مستودع QRadioLink للتفاصيل.
| الكتل | الأصل | ملاحظات |
|---|
| 2FSK, 4FSK, GMSK, BPSK, QPSK, AM, SSB, NBFM, WBFM, FreeDV, M17, DMR | QRadioLink | تم التحقق منها مقابل QRadioLink src/gr/ (gr_demod_, gr_mod_). |
| MMDVM source/sink, demod_mmdvm_multi, demod_mmdvm_multi2, mod_mmdvm_multi2, RSSI, clipper, stretcher, zero_idle_bursts, gr_4fsk_discriminator | QRadioLink | تم التحقق منها مقابل QRadioLink src/gr/. |
| 8FSK | مُنفَّذ لهذه الوحدة | لا يوجد gr_demod_8fsk/gr_mod_8fsk في QRadioLink. امتداد لتصميم نمط 4FSK. |
| SOQPSK | مُنفَّذ لهذه الوحدة | لا يوجد gr_demod_soqpsk/gr_mod_soqpsk في QRadioLink. من أدبيات/مواصفات SOQPSK. |
| CPM-4FSK | مُنفَّذ لهذه الوحدة | لا يوجد gr_mod_cpm_4fsk في QRadioLink. |
| dPMR | مُنفَّذ لهذه الوحدة | لا يوجد gr_* في QRadioLink. من ETSI TS 102 658 (متجهات الاختبار وتعليقات الكود). |
| NXDN | مُنفَّذ لهذه الوحدة | لا يوجد gr_* في QRadioLink. من مواصفات NXDN Forum; يشير تعيين الرمز إلى اصطلاح MMDVM. |
| POCSAG | مُنفَّذ لهذه الوحدة | لا يوجد gr_* في QRadioLink. من POCSAG/ITU-R M.584-2; البروتوكول متوافق مع MMDVMHost. |
| D-STAR | مُنفَّذ لهذه الوحدة | لا يوجد gr_* في QRadioLink. من مواصفات D-STAR/JARL (Golay FEC); متوافق مع MMDVMHost. |
| YSF | مُنفَّذ لهذه الوحدة | لا يوجد gr_* في QRadioLink. من توثيق بروتوكول YSF; متوافق مع MMDVMHost. |
| P25 | مُنفَّذ لهذه الوحدة | لا يوجد gr_* في QRadioLink. من P25 Phase 1 TIA-102; متوافق مع MMDVMHost. |
| DSSS (قاعدة) | QRadioLink | تم التحقق منها مقابل QRadioLink gr_demod_dsss/gr_mod_dsss. |
| DSSS (تحسينات), GDSS | هذه الوحدة | DSSS: تحسينات فوق قاعدة QRadioLink. GDSS: من Shakeel et al., Sensors 2023. |
| توجيه ZMQ لـ gr-ident | هذه الوحدة | التشغيل البيني مع gr-ident preamble PUB; ليس من QRadioLink. |
mode_id المُفكَّك على tcp://127.0.0.1:5560 واختيار عائلة كتلة إزالة التعديل/التعديل المطابقة (انظر GRIDENT_ZMQ.md، CODE_MAP.md)
libzmq)demod_block / mod_block على منفذ الرسائل route_out