summaryrefslogtreecommitdiff
path: root/python-dmr-kaitai.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-dmr-kaitai.spec')
-rw-r--r--python-dmr-kaitai.spec397
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
+
+![.github/workflows/sanity.yml](https://img.shields.io/github/workflow/status/OK-DMR/dmr-kaitai/Sanity?style=flat-square)
+![Code Style: Python Black](https://img.shields.io/badge/code%20style-black-000000.svg?style=flat-square)
+![License](https://img.shields.io/pypi/l/dmr-kaitai?style=flat-square)
+![Last released version](https://img.shields.io/pypi/v/dmr-kaitai?style=flat-square)
+![PyPI downloads](https://img.shields.io/pypi/dm/dmr-kaitai?style=flat-square)
+![Python versions](https://img.shields.io/pypi/pyversions/dmr-kaitai?style=flat-square)
+![Wheel](https://img.shields.io/pypi/wheel/dmr-kaitai?style=flat-square)
+
+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
+
+![.github/workflows/sanity.yml](https://img.shields.io/github/workflow/status/OK-DMR/dmr-kaitai/Sanity?style=flat-square)
+![Code Style: Python Black](https://img.shields.io/badge/code%20style-black-000000.svg?style=flat-square)
+![License](https://img.shields.io/pypi/l/dmr-kaitai?style=flat-square)
+![Last released version](https://img.shields.io/pypi/v/dmr-kaitai?style=flat-square)
+![PyPI downloads](https://img.shields.io/pypi/dm/dmr-kaitai?style=flat-square)
+![Python versions](https://img.shields.io/pypi/pyversions/dmr-kaitai?style=flat-square)
+![Wheel](https://img.shields.io/pypi/wheel/dmr-kaitai?style=flat-square)
+
+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
+
+![.github/workflows/sanity.yml](https://img.shields.io/github/workflow/status/OK-DMR/dmr-kaitai/Sanity?style=flat-square)
+![Code Style: Python Black](https://img.shields.io/badge/code%20style-black-000000.svg?style=flat-square)
+![License](https://img.shields.io/pypi/l/dmr-kaitai?style=flat-square)
+![Last released version](https://img.shields.io/pypi/v/dmr-kaitai?style=flat-square)
+![PyPI downloads](https://img.shields.io/pypi/dm/dmr-kaitai?style=flat-square)
+![Python versions](https://img.shields.io/pypi/pyversions/dmr-kaitai?style=flat-square)
+![Wheel](https://img.shields.io/pypi/wheel/dmr-kaitai?style=flat-square)
+
+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