-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
restructured project for building with CMake
- Loading branch information
1 parent
7e6db35
commit 5b38fdd
Showing
44 changed files
with
51,694 additions
and
48,281 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
ARDOPOFDM is an experimental extension to ARDOP2. The higher speed PSK and QAM modes of ARDOP2 are replaced with OFDM modes. There are two bandwidths, 500 and 2500 and 4 modes within each bandwidth (2PSK, 4PSK 8PSK and 16PSK or 16QAM). The code uses a modulation rate and carrier spacing of 55.555 Hz. The 500 mode uses 9 carriers and the 2500 mode 43 carriers. There isn't a 200 wide version. | ||
|
||
The code runs on Windows, Linux and my Teensy TNC. | ||
|
||
ARDOPOFDM has one new configuration parameter, ENABLEOFDM, with a default of TRUE. Apart from the new data frames it has two new CONREQ frames, OCONREQ500 and OCONREQ2500 and a new ACK, OFDMACK. If ENABLEOFDM is set it will send and accept the OCONREQ frames and the OFDM data frames. For compatibility with ARDOP2 stations if it receives a normal CONREQ frame it will disable the use of the OFDM data frames. If ENABLEOFDM is set to FALSE it will use normal CONREQ frames and reject OCONREQ, so it can connect to ARDOP2 stations. ARDOPOFDM acks each carrier separately, so only carriers that have failed to decode are repeated. If all carriers are ok a normal DataACK or DataACKHQ frame is sent, if not a slightly longer OFDMACK is sent which indicates which carriers need to be repeated. | ||
|
||
I haven't been able to evaluate it under a wide range of radio conditions, but initial testing looks promising. Under ideal conditions it is a bit over twice as fast as normal ARDOP (about 80% of the speed of VARA). Data frame length is a little under 5 seconds. Under ideal conditions performance in 2500 mode is | ||
|
||
16OFDM 80 bytes/carrier, 3440 bytes per frame, approx 4600 BPS Net | ||
8OFDM 60 bytes/carrier, 2580 bytes per frame, approx 3440 BPS Net | ||
4OFDM 40 bytes/carrier, 1720 bytes per frame, approx 2300 BPS Net | ||
2OFDM 19 bytes/carrier, 817 bytes per frame, approx 1100 BPS Net | ||
|
||
For Comparison 16QAM.2500.100 (10 Carriers) | ||
|
||
120 bytes/carrier, 1200 bytes per frame, approx 2225 BPS Net | ||
|
||
As mentioned earlier this a experimental and modulation details and frame formats are likely to change as testing proceeds. It is really only suitable for people who a used to testing software. | ||
|
||
Software can be downloaded from | ||
|
||
http://www.cantab.net/users/john.wiseman/Downloads/Beta/ARDOPOFDM.exe | ||
http://www.cantab.net/users/john.wiseman/Downloads/Beta/ardopofdm | ||
http://www.cantab.net/users/john.wiseman/Downloads/Beta/piardopofdm | ||
http://www.cantab.net/users/john.wiseman/Downloads/Beta/TeensyProjects.zip | ||
|
||
|
||
The software has only been tested with BPQ32/LinBPQ and Winlink Express in PTC Emulation mode. You need to install the latest Beta BPQ32 or linbpq to use it. It may work with RMS Express in normal mode and Trimode, but this hasn't been tested and may result in slow running or data corruption due to changes in flow control thresholds. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,165 @@ | ||
|
||
|
||
######################################################################## | ||
# Project setup | ||
######################################################################## | ||
|
||
CMAKE_MINIMUM_REQUIRED(VERSION 2.6) | ||
PROJECT(ardop2ofdm C) | ||
|
||
INCLUDE(GNUInstallDirs) | ||
|
||
# CMP0075 Include file check macros honor CMAKE_REQUIRED_LIBRARIES | ||
IF (POLICY CMP0075) | ||
CMAKE_POLICY(SET CMP0075 NEW) | ||
ENDIF () | ||
|
||
# select the "Release" build type by default to get optimization flags | ||
IF (NOT CMAKE_BUILD_TYPE) | ||
SET(CMAKE_BUILD_TYPE "Release") | ||
MESSAGE(STATUS "Build type not specified: defaulting to Release.") | ||
ENDIF (NOT CMAKE_BUILD_TYPE) | ||
SET(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "") | ||
|
||
LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules) | ||
|
||
IF (NOT LIB_INSTALL_DIR) | ||
SET(LIB_INSTALL_DIR lib) | ||
ENDIF () | ||
|
||
# Set the version information here | ||
# | ||
# 2.0.3.40-BPQ-OFDM | ||
#SET(VERSION_INFO_MAJOR_VERSION 0) # increment major on api compatibility changes | ||
#SET(VERSION_INFO_MINOR_VERSION 1) # increment minor on feature-level changes | ||
#SET(VERSION_INFO_PATCH_VERSION git) # increment patch for bug fixes and docs | ||
#INCLUDE(Version) # setup version info | ||
|
||
|
||
# Set our own version info here... | ||
# "2.0.3.40-BPQ-OFDM" | ||
|
||
SET(VER_MAJOR 2) | ||
SET(VER_MINOR 0) | ||
SET(VER_PATCH 3) | ||
SET(VER_SUBPATCH 40) | ||
SET(VER_SUFFIX "BPQ-OFDM") | ||
|
||
SET(VER_STRING "${VER_MAJOR}.${VER_MINOR}.${VER_PATCH}.${VER_SUBPATCH}-${VER_SUFFIX}") | ||
|
||
SET(ARDOP_TCP_PORT 8515) | ||
SET(ARDOP_CAT_TTY_DEVICE /dev/ttyUSB0) | ||
|
||
|
||
######################################################################## | ||
# Compiler specific setup | ||
######################################################################## | ||
|
||
IF (CMAKE_COMPILER_IS_GNUCC AND NOT WIN32) | ||
ADD_DEFINITIONS(-Wall) | ||
ADD_DEFINITIONS(-Wextra) | ||
ADD_DEFINITIONS(-Wno-unused-parameter) | ||
ADD_DEFINITIONS(-Wno-unused) | ||
ADD_DEFINITIONS(-Wsign-compare) | ||
ADD_DEFINITIONS(-Wdeclaration-after-statement) | ||
# http://gcc.gnu.org/wiki/Visibility | ||
ADD_DEFINITIONS(-fvisibility=hidden) | ||
ENDIF () | ||
|
||
ADD_COMPILE_DEFINITIONS(VERSION_FROM_BUILD_SYSTEM) | ||
|
||
|
||
|
||
######################################################################## | ||
# Find build dependencies | ||
######################################################################## | ||
|
||
FIND_PACKAGE(PkgConfig) | ||
FIND_PACKAGE(Threads) | ||
FIND_PACKAGE(ALSA REQUIRED) | ||
|
||
|
||
IF (NOT THREADS_FOUND) | ||
MESSAGE(FATAL_ERROR "pthreads required to compile ardop1ofdm") | ||
ENDIF () | ||
|
||
|
||
######################################################################## | ||
# Setup the include and linker paths | ||
######################################################################## | ||
|
||
INCLUDE_DIRECTORIES( | ||
${CMAKE_SOURCE_DIR}/include | ||
${THREADS_PTHREADS_INCLUDE_DIR} | ||
${ALSA_INCLUDE_DIRS} | ||
${CMAKE_CURRENT_BINARY_DIR} | ||
) | ||
|
||
#link_directories( | ||
# ... | ||
#) | ||
|
||
# Set component parameters | ||
#set(INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include CACHE INTERNAL "" FORCE) | ||
|
||
|
||
######################################################################## | ||
# Create uninstall target | ||
######################################################################## | ||
|
||
CONFIGURE_FILE( | ||
${CMAKE_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in | ||
${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake | ||
@ONLY | ||
) | ||
|
||
ADD_CUSTOM_TARGET(uninstall ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) | ||
|
||
|
||
######################################################################## | ||
# Add subdirectories | ||
######################################################################## | ||
|
||
ADD_SUBDIRECTORY(include) | ||
ADD_SUBDIRECTORY(src) | ||
|
||
|
||
######################################################################## | ||
# Create other files | ||
######################################################################## | ||
|
||
CONFIGURE_FILE( | ||
${CMAKE_SOURCE_DIR}/include/Version.h.in | ||
${CMAKE_CURRENT_BINARY_DIR}/Version.h | ||
@ONLY | ||
) | ||
|
||
CONFIGURE_FILE( | ||
${CMAKE_SOURCE_DIR}/cmake/ardop.service.in | ||
${CMAKE_CURRENT_BINARY_DIR}/ardop.service | ||
@ONLY | ||
) | ||
|
||
CONFIGURE_FILE( | ||
${CMAKE_SOURCE_DIR}/cmake/Doxyfile.in | ||
${CMAKE_CURRENT_BINARY_DIR}/Doxyfile | ||
@ONLY | ||
) | ||
|
||
|
||
#SET(prefix ${CMAKE_INSTALL_PREFIX}) | ||
#SET(exec_prefix \${prefix}) | ||
#SET(libdir \${exec_prefix}/${LIB_INSTALL_DIR}) | ||
#SET(includedir \${prefix}/include) | ||
|
||
|
||
|
||
|
||
|
||
######################################################################## | ||
# Print Summary | ||
######################################################################## | ||
|
||
#MESSAGE(STATUS "Building for version: ${VERSION} / ${LIBVER}") | ||
MESSAGE(STATUS "Building version: ${VER_STRING}") | ||
MESSAGE(STATUS "Using install prefix: ${CMAKE_INSTALL_PREFIX}") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# ardop2ofdm # | ||
|
||
ARDOP 2 modem with OFDM extensions. |
Oops, something went wrong.