Skip to content

Commit

Permalink
Merge branch 'master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
robotastic authored Dec 15, 2024
2 parents af31a28 + 0447881 commit ac0ef4b
Show file tree
Hide file tree
Showing 112 changed files with 5,961 additions and 4,269 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,5 @@ top_block.py
debug_recorder.py
/cmake_build/
/.cache/
.gitmodules
user_plugins/*/
38 changes: 29 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@
########################################################################

cmake_minimum_required(VERSION 3.12)
project(Trunk-Recorder LANGUAGES CXX C VERSION "4.7.1")

project(Trunk-Recorder LANGUAGES CXX C VERSION "5.0.0")


configure_file(cmake.h.in "${PROJECT_BINARY_DIR}/cmake.h" @ONLY)
add_definitions(-DMANUAL_GITINFO="${MANUAL_GITINFO}")
Expand Down Expand Up @@ -219,12 +221,14 @@ link_directories(
${OPENSSL_ROOT_DIR}/lib
)

set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wno-unused-local-typedef -Wno-deprecated-declarations -Wno-error=deprecated-declarations -g3")
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wno-deprecated-declarations -Wno-error=deprecated-declarations -g3")

SET(CMAKE_CXX_STANDARD 17)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -Wno-narrowing -fvisibility=hidden -fPIC")
# The D_GLIBCXX_ASSERTIONS flag will cause a crash when an error is detected, making it easier to catch bugs
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -Wno-narrowing -fvisibility=hidden -fPIC -D_GLIBCXX_ASSERTIONS")

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -Wno-narrowing -fvisibility=hidden -fPIC")


list(APPEND trunk_recorder_sources
Expand All @@ -250,6 +254,8 @@ list(APPEND trunk_recorder_sources
trunk-recorder/sources/iq_file_source.cc
trunk-recorder/csv_helper.cc
trunk-recorder/config.cc
trunk-recorder/setup_systems.cc
trunk-recorder/monitor_systems.cc
trunk-recorder/talkgroup.cc
trunk-recorder/talkgroups.cc
trunk-recorder/unit_tag.cc
Expand All @@ -272,8 +278,13 @@ list(APPEND trunk_recorder_sources
trunk-recorder/gr_blocks/decoder_wrapper_impl.cc
trunk-recorder/gr_blocks/plugin_wrapper_impl.cc
trunk-recorder/gr_blocks/selector_impl.cc
trunk-recorder/gr_blocks/pwr_squelch_cc_impl.cc
trunk-recorder/gr_blocks/squelch_base_cc_impl.cc
trunk-recorder/gr_blocks/wavfile_gr3.8.cc
trunk-recorder/gr_blocks/rms_agc.cc
trunk-recorder/gr_blocks/channelizer.cc
trunk-recorder/gr_blocks/xlat_channelizer.cc
trunk-recorder/gr_blocks/signal_detector_cvf_impl.cc
)


Expand Down Expand Up @@ -337,19 +348,28 @@ install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/lib/json.hpp" # source file
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/trunk-recorder" # target directory
)


# Add built-in plugins located in /plugins
add_subdirectory(plugins/openmhz_uploader)

add_subdirectory(plugins/stat_socket)

add_subdirectory(plugins/broadcastify_uploader)

add_subdirectory(plugins/unit_script)

add_subdirectory(plugins/rdioscanner_uploader)

add_subdirectory(plugins/simplestream)

# Add user plugins located in /user_plugins
# Matching: /user_plugins/${plugin_dir}/CMakeLists.txt
file(GLOB plugin_dirs "user_plugins/*")
foreach(plugin_dir ${plugin_dirs})
if(IS_DIRECTORY ${plugin_dir})
file(GLOB cmakelists "${plugin_dir}/CMakeLists.txt")
if(cmakelists)
add_subdirectory(${plugin_dir})
get_filename_component(dir_name ${plugin_dir} NAME)
message(STATUS "Added user plugin: ${dir_name}")
endif()
endif()
endforeach()

add_executable(trunk-recorder trunk-recorder/main.cc) # ${trunk_recorder_sources})

target_link_libraries(trunk-recorder git trunk_recorder_library gnuradio-op25_repeater ${CMAKE_DL_LIBS} ssl crypto ${CURL_LIBRARIES} ${Boost_LIBRARIES} ${GNURADIO_PMT_LIBRARIES} ${GNURADIO_RUNTIME_LIBRARIES} ${GNURADIO_FILTER_LIBRARIES} ${GNURADIO_DIGITAL_LIBRARIES} ${GNURADIO_ANALOG_LIBRARIES} ${GNURADIO_AUDIO_LIBRARIES} ${GNURADIO_UHD_LIBRARIES} ${UHD_LIBRARIES} ${GNURADIO_BLOCKS_LIBRARIES} ${GNURADIO_OSMOSDR_LIBRARIES} ) # gRPC::grpc++_reflection protobuf::libprotobuf)
Expand Down
40 changes: 22 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,48 +1,52 @@
Trunk Recorder - v4.7.1
=======================
![Trunk Recorder](./docs/media/trunk-recorder-header.png)
---
[![Discord](./docs/media/discord.jpg)](https://discord.gg/btJAhESnks)   


## Sponsors
**Do you find Trunk Recorder and OpenMHz useful?**
Become a [Sponsor](https://github.com/sponsors/robotastic) to help support continued development and operation!
Thank you to everyone who has contributed!

## 🎉 V5.0 Our Best Release Yet!!
Thanks to everyone who contributed, tested and helped collect cored dumps!

## Overview
Need help? Got something working? Share it!

[Discord Server](https://discord.gg/btJAhESnks) - and don't forget the [Wiki](https://github.com/robotastic/trunk-recorder/wiki)

[Documentation](https://trunkrecorder.com/docs/intro)
- [Discord Server](https://discord.gg/btJAhESnks)

- [Documentation](https://trunkrecorder.com/docs/intro)

- ... and don't forget the [Wiki](https://github.com/robotastic/trunk-recorder/wiki)

![screenshot](./docs/media/screenshot.jpg)

Trunk Recorder is able to record the calls on trunked and conventional radio systems. It uses 1 or more Software Defined Radios (SDRs) to do this. The SDRs capture large swathes of RF and then use software to process what was received. [GNU Radio](https://gnuradio.org/) is used to do this processing because it provides lots of convenient RF blocks that can be pieced together to allow for complex RF processing. The libraries from the amazing [OP25](http://op25.osmocom.org/trac/wiki) project are used for a lot of the P25 functionality. Multiple radio systems can be recorded at the same time.


Trunk Recorder currently supports the following:

- Trunked P25 & SmartNet Systems
- Conventional P25 & analog systems, where each group has a dedicated RF channel
- Conventional P25, DMR & analog systems, where each talkgroup has a dedicated RF channel
- P25 Phase 1, P25 Phase 2 & Analog voice channels

Supported platforms:
### Supported platforms

**Ubuntu** (18.04, 20.04, 21.04, 22.04, 23.04); **Raspberry Pi** (Raspberry OS/Raspbian & Ubuntu 21.04, 22.04); **Arch Linux** (2021.09.20); **Debian** (9.x); **macOS**
- **Ubuntu** (18.04, 20.04, 21.04, 22.04, 23.04)
- **Raspberry Pi** (Raspberry OS/Raspbian & Ubuntu 21.04, 22.04)
- **Arch Linux** (2021.09.20)
- **Debian** (9.x)
- **macOS**

GNU Radio 3.7 - 3.10

...and SDRs:
### SDRs

RTL-SDR dongles; HackRF; Ettus USRP B200, B210, B205; BladeRF; Airspy; SDRplay


## Version Notes
### v4.7
- The talkgroup file format was updated and Column headers are now required. Details are [here](docs/CONFIGURE.md#talkgroupsfile).
### v4.0
- The executable generated has changed from `recorder` to `trunk-recorder` to help differentiate it from other applications that maybe installed.
- A new method is used to detect the end of call. Instead of waiting for a timeout after the last trunking message is received, the voice channel is monitored for messages announcing the end of a transmission. Each transmission is stored in a separate file and then merged together after a talkgroup stops using a frequency.
- The format for audio filenames has changed slightly.
It is now: [ Talkgroup ID ]\_[ Unix Timestamp ]-[ Frequency ]-call\_[ Call Counter ].wav


## Install

### Linux
Expand Down
Loading

0 comments on commit ac0ef4b

Please sign in to comment.