diff options
Diffstat (limited to 'python-dmr-kaitai.spec')
| -rw-r--r-- | python-dmr-kaitai.spec | 397 |
1 files changed, 397 insertions, 0 deletions
diff --git a/python-dmr-kaitai.spec b/python-dmr-kaitai.spec new file mode 100644 index 0000000..1e59c6d --- /dev/null +++ b/python-dmr-kaitai.spec @@ -0,0 +1,397 @@ +%global _empty_manifest_terminate_build 0 +Name: python-dmr-kaitai +Version: 1.0 +Release: 1 +Summary: Various DMR related protocols implemented with kaitai-first approach +License: AGPL-3.0 +URL: https://github.com/OK-DMR/dmr-kaitai +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/eb/26/c806388a26c30af2ffc4b4aa879d970d6e7eab4edde8922fb47ffcc9197a/dmr-kaitai-1.0.tar.gz +BuildArch: noarch + +Requires: python3-kaitaistruct + +%description +# DMR Kaitai protocols + + + + + + + + + +This repository contains [Kaitai-IO](https://kaitai.io/) definitions of various protocols that can be met in DMR +networks, both amateur and professional + +## Contributing + +Please follow these steps + +1. Add or update `.ksy` definition file +2. Run re-compilation script `./rebuild-all.sh` (generates .py from .ksy and formats them using *black* formatter) +3. Provide at least one example dataset to check the implementation with + +And specifically avoid these mistakes: + +1. Modifying generated python sources / dissectors after generating + +## Supported + +- ETSI + - CSBK (all from TS 102 361-2) + - Data Blocks (Rate 1, 1/2, 3/4 confirmed and unconfirmed) + - Data Headers (UDT, Response, Unconfirmed, Confirmed, Short Data Defined, Short Status Precoded, Proprietary) + - UDP IPv4 Compressed header + - FULL LC (Full Link Control, Group/Individual voice, GPS Info, Talker Alias + continuation blocks) +- HAM + - Homebrew 2015 (per DL5DI, G4KLX, DG1HT 2015) + - Mmdvm 2020 (with non-standardized features in mmdvm-host, dmr-gateway, hblink and others) +- Hytera + - Data Delivery States + - Data Transmit Protocol + - GPS Data + - HDAP (Hytera DMR Application Protocol) + - HRNP (Hytera Radio Network Protocol) + - HSTRP (Hytera Simple Transport Reliability Protocol) + - IPSC (with separate definition for IPSC Heartbeat) + - LP (Location Protocol) + - RCP (Radio Control Protocol) + - RRS (Radio Registration Service) + - RTTP (Real-time Transport Protocol) + - TP (Telemetry Protocol) + - TMP (Text Message Protocol) +- Motorola + - ARS (Automatic Registration Service) + - MBXML (Motorola Binary XML) - only partially supported now + - TMP (Text Message Protocol) + +## Testing + +run `make test` (or pytest directly like this `env PYTHONPATH=. pytest -vrpP`) + +## Tools + +If you install through `pip3 install dmr-kaitai` or manually from repo using `python3 setup.py install`, you should be +provided with command-line tools, +to pass hex payloads of various protocols to and see what is inside. Tools support multiple hex payloads, each hex +string is treated as separate PDU to parse and pretty-print + +Usage example + +``` +> debug-hytera-hrnp 7e0400002010000100189b6002040005006400000001c403 +{'block': 0, + 'checksum': 39776, + 'data': {'checksum': 196, + 'data': {'data': {'data': b'd\x00\x00\x00\x01'}, + 'message_length': 5, + 'service_type': <ServiceTypes.radio_identification_request: 4>}, + 'is_reliable_message': False, + 'message_footer': b'\x03', + 'message_header': <MessageHeaderTypes.radio_control_protocol: 2>}, + 'destination_id': 16, + 'header_identifier': b'~', + 'hrnp_packet_length': 24, + 'opcode': <Opcodes.data: 0>, + 'packet_number': 1, + 'source_id': 32, + 'version': 4} +``` + +Full listing of available tools + +- debug-homebrew +- debug-mmdvm +- debug-hytera-rcp +- debug-hytera-hdap +- debug-hytera-hrnp +- debug-hytera-hstrp +- debug-hytera-tmp +- debug-hytera-lp +- debug-hytera-ipsc +- debug-hytera-rrs +- debug-hytera-dds +- debug-hytera-dtp +- debug-motorola-ars +- debug-motorola-tmp + +## License + +AGPLv3.0 see LICENSE file for more info + + +%package -n python3-dmr-kaitai +Summary: Various DMR related protocols implemented with kaitai-first approach +Provides: python-dmr-kaitai +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-dmr-kaitai +# DMR Kaitai protocols + + + + + + + + + +This repository contains [Kaitai-IO](https://kaitai.io/) definitions of various protocols that can be met in DMR +networks, both amateur and professional + +## Contributing + +Please follow these steps + +1. Add or update `.ksy` definition file +2. Run re-compilation script `./rebuild-all.sh` (generates .py from .ksy and formats them using *black* formatter) +3. Provide at least one example dataset to check the implementation with + +And specifically avoid these mistakes: + +1. Modifying generated python sources / dissectors after generating + +## Supported + +- ETSI + - CSBK (all from TS 102 361-2) + - Data Blocks (Rate 1, 1/2, 3/4 confirmed and unconfirmed) + - Data Headers (UDT, Response, Unconfirmed, Confirmed, Short Data Defined, Short Status Precoded, Proprietary) + - UDP IPv4 Compressed header + - FULL LC (Full Link Control, Group/Individual voice, GPS Info, Talker Alias + continuation blocks) +- HAM + - Homebrew 2015 (per DL5DI, G4KLX, DG1HT 2015) + - Mmdvm 2020 (with non-standardized features in mmdvm-host, dmr-gateway, hblink and others) +- Hytera + - Data Delivery States + - Data Transmit Protocol + - GPS Data + - HDAP (Hytera DMR Application Protocol) + - HRNP (Hytera Radio Network Protocol) + - HSTRP (Hytera Simple Transport Reliability Protocol) + - IPSC (with separate definition for IPSC Heartbeat) + - LP (Location Protocol) + - RCP (Radio Control Protocol) + - RRS (Radio Registration Service) + - RTTP (Real-time Transport Protocol) + - TP (Telemetry Protocol) + - TMP (Text Message Protocol) +- Motorola + - ARS (Automatic Registration Service) + - MBXML (Motorola Binary XML) - only partially supported now + - TMP (Text Message Protocol) + +## Testing + +run `make test` (or pytest directly like this `env PYTHONPATH=. pytest -vrpP`) + +## Tools + +If you install through `pip3 install dmr-kaitai` or manually from repo using `python3 setup.py install`, you should be +provided with command-line tools, +to pass hex payloads of various protocols to and see what is inside. Tools support multiple hex payloads, each hex +string is treated as separate PDU to parse and pretty-print + +Usage example + +``` +> debug-hytera-hrnp 7e0400002010000100189b6002040005006400000001c403 +{'block': 0, + 'checksum': 39776, + 'data': {'checksum': 196, + 'data': {'data': {'data': b'd\x00\x00\x00\x01'}, + 'message_length': 5, + 'service_type': <ServiceTypes.radio_identification_request: 4>}, + 'is_reliable_message': False, + 'message_footer': b'\x03', + 'message_header': <MessageHeaderTypes.radio_control_protocol: 2>}, + 'destination_id': 16, + 'header_identifier': b'~', + 'hrnp_packet_length': 24, + 'opcode': <Opcodes.data: 0>, + 'packet_number': 1, + 'source_id': 32, + 'version': 4} +``` + +Full listing of available tools + +- debug-homebrew +- debug-mmdvm +- debug-hytera-rcp +- debug-hytera-hdap +- debug-hytera-hrnp +- debug-hytera-hstrp +- debug-hytera-tmp +- debug-hytera-lp +- debug-hytera-ipsc +- debug-hytera-rrs +- debug-hytera-dds +- debug-hytera-dtp +- debug-motorola-ars +- debug-motorola-tmp + +## License + +AGPLv3.0 see LICENSE file for more info + + +%package help +Summary: Development documents and examples for dmr-kaitai +Provides: python3-dmr-kaitai-doc +%description help +# DMR Kaitai protocols + + + + + + + + + +This repository contains [Kaitai-IO](https://kaitai.io/) definitions of various protocols that can be met in DMR +networks, both amateur and professional + +## Contributing + +Please follow these steps + +1. Add or update `.ksy` definition file +2. Run re-compilation script `./rebuild-all.sh` (generates .py from .ksy and formats them using *black* formatter) +3. Provide at least one example dataset to check the implementation with + +And specifically avoid these mistakes: + +1. Modifying generated python sources / dissectors after generating + +## Supported + +- ETSI + - CSBK (all from TS 102 361-2) + - Data Blocks (Rate 1, 1/2, 3/4 confirmed and unconfirmed) + - Data Headers (UDT, Response, Unconfirmed, Confirmed, Short Data Defined, Short Status Precoded, Proprietary) + - UDP IPv4 Compressed header + - FULL LC (Full Link Control, Group/Individual voice, GPS Info, Talker Alias + continuation blocks) +- HAM + - Homebrew 2015 (per DL5DI, G4KLX, DG1HT 2015) + - Mmdvm 2020 (with non-standardized features in mmdvm-host, dmr-gateway, hblink and others) +- Hytera + - Data Delivery States + - Data Transmit Protocol + - GPS Data + - HDAP (Hytera DMR Application Protocol) + - HRNP (Hytera Radio Network Protocol) + - HSTRP (Hytera Simple Transport Reliability Protocol) + - IPSC (with separate definition for IPSC Heartbeat) + - LP (Location Protocol) + - RCP (Radio Control Protocol) + - RRS (Radio Registration Service) + - RTTP (Real-time Transport Protocol) + - TP (Telemetry Protocol) + - TMP (Text Message Protocol) +- Motorola + - ARS (Automatic Registration Service) + - MBXML (Motorola Binary XML) - only partially supported now + - TMP (Text Message Protocol) + +## Testing + +run `make test` (or pytest directly like this `env PYTHONPATH=. pytest -vrpP`) + +## Tools + +If you install through `pip3 install dmr-kaitai` or manually from repo using `python3 setup.py install`, you should be +provided with command-line tools, +to pass hex payloads of various protocols to and see what is inside. Tools support multiple hex payloads, each hex +string is treated as separate PDU to parse and pretty-print + +Usage example + +``` +> debug-hytera-hrnp 7e0400002010000100189b6002040005006400000001c403 +{'block': 0, + 'checksum': 39776, + 'data': {'checksum': 196, + 'data': {'data': {'data': b'd\x00\x00\x00\x01'}, + 'message_length': 5, + 'service_type': <ServiceTypes.radio_identification_request: 4>}, + 'is_reliable_message': False, + 'message_footer': b'\x03', + 'message_header': <MessageHeaderTypes.radio_control_protocol: 2>}, + 'destination_id': 16, + 'header_identifier': b'~', + 'hrnp_packet_length': 24, + 'opcode': <Opcodes.data: 0>, + 'packet_number': 1, + 'source_id': 32, + 'version': 4} +``` + +Full listing of available tools + +- debug-homebrew +- debug-mmdvm +- debug-hytera-rcp +- debug-hytera-hdap +- debug-hytera-hrnp +- debug-hytera-hstrp +- debug-hytera-tmp +- debug-hytera-lp +- debug-hytera-ipsc +- debug-hytera-rrs +- debug-hytera-dds +- debug-hytera-dtp +- debug-motorola-ars +- debug-motorola-tmp + +## License + +AGPLv3.0 see LICENSE file for more info + + +%prep +%autosetup -n dmr-kaitai-1.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-dmr-kaitai -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon May 29 2023 Python_Bot <Python_Bot@openeuler.org> - 1.0-1 +- Package Spec generated |
