Merge with master

master
ismagom 10 years ago
commit 90634182ce

@ -32,7 +32,7 @@ endif(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
# Project setup
########################################################################
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
PROJECT (LIBLTE)
PROJECT (SRSLTE)
LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/modules")

@ -1,4 +1,5 @@
Copyright (C) 2013-2014 Ismael Gomez Miguelez, <gomezi@tcd.ie>. All rights reserved.
Copyright (C) 2013-2015 Ismael Gomez Miguelez <gomezi@tcd.ie>,
Paul Sutton <paul@softwareradiosystems.com>. All rights reserved.
The following copyright notices are for libraries used within libLTE:

@ -4,10 +4,10 @@
## # The following are required to uses Dart and the Cdash dashboard
## ENABLE_TESTING()
## INCLUDE(CTest)
set(CTEST_PROJECT_NAME "libLTE")
set(CTEST_PROJECT_NAME "srsLTE")
set(CTEST_NIGHTLY_START_TIME "00:00:00 GMT")
set(CTEST_DROP_METHOD "http")
set(CTEST_DROP_SITE "my.cdash.org")
set(CTEST_DROP_LOCATION "/submit.php?project=libLTE")
set(CTEST_DROP_LOCATION "/submit.php?project=srsLTE")
set(CTEST_DROP_SITE_CDASH TRUE)

@ -30,7 +30,7 @@ Download & Install Instructions
* Mandatory dependencies:
* libfftw
* Optional requirements:
* libsdrgui: for real-time plotting. Download it here: https://github.com/suttonpd/libsdrgui
* srsgui: for real-time plotting. Download it here: https://github.com/srslte/srsgui
* VOLK: if the VOLK library and headers are detected, they will be used for accelerating some signal processing functions.
* Matlab/Octave: if found by CMake, MEX files will also be generated and installed. If you find any compilation issue with MEX and you don't need them, pass -DDisableMex=ON to cmake to disable them.

@ -1,40 +0,0 @@
# - Try to find LIBSDRGUI
# Once done this will define
# LIBSDRGUI_FOUND - System has libsdrgui
# LIBSDRGUI_INCLUDE_DIRS - The libsdrgui include directories
# LIBSDRGUI_LIBRARIES - The libsdrgui library
find_package(PkgConfig)
pkg_check_modules(PC_LIBSDRGUI QUIET libsdrgui)
set(LIBSDRGUI_DEFINITIONS ${PC_LIBSDRGUI_CFLAGS_OTHER})
FIND_PATH(
LIBSDRGUI_INCLUDE_DIRS
NAMES libsdrgui/libsdrgui.h
HINTS ${PC_LIBSDRGUI_INCLUDEDIR}
${PC_LIBSDRGUI_INCLUDE_DIRS}
$ENV{LIBSDRGUI_DIR}/include
PATHS /usr/local/include
/usr/include
)
FIND_LIBRARY(
LIBSDRGUI_LIBRARIES
NAMES sdrgui
HINTS ${PC_LIBSDRGUI_LIBDIR}
${CMAKE_INSTALL_PREFIX}/lib
${CMAKE_INSTALL_PREFIX}/lib64
$ENV{LIBSDRGUI_DIR}/lib
PATHS /usr/local/lib
/usr/local/lib64
/usr/lib
/usr/lib64
)
message(STATUS "LIBSDRGUI LIBRARIES " ${LIBSDRGUI_LIBRARIES})
message(STATUS "LIBSDRGUI INCLUDE DIRS " ${LIBSDRGUI_INCLUDE_DIRS})
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBSDRGUI DEFAULT_MSG LIBSDRGUI_LIBRARIES LIBSDRGUI_INCLUDE_DIRS)
MARK_AS_ADVANCED(LIBSDRGUI_LIBRARIES LIBSDRGUI_INCLUDE_DIRS)

@ -24,7 +24,7 @@
# The original file was copied from an Ubuntu Linux install
# /usr/share/cmake-2.8/Modules/FindMatlab.cmake
set(MATLAB_FOUND 0)
set(MATLAB_FOUND FALSE)
if(WIN32)
# Search for a version of Matlab available, starting from the most modern one to older versions
foreach(MATVER "7.14" "7.11" "7.10" "7.9" "7.8" "7.7" "7.6" "7.5" "7.4")
@ -185,7 +185,7 @@ set(MATLAB_LIBRARIES
)
if(MATLAB_INCLUDE_DIR AND MATLAB_LIBRARIES)
set(MATLAB_FOUND 1)
set(MATLAB_FOUND TRUE)
endif()
# 32-bit or 64-bit mex

@ -0,0 +1,42 @@
# - Try to find SRSGUI
# Once done this will define
# SRSGUI_FOUND - System has srsgui
# SRSGUI_INCLUDE_DIRS - The srsgui include directories
# SRSGUI_LIBRARIES - The srsgui library
find_package(PkgConfig)
pkg_check_modules(PC_SRSGUI QUIET srsgui)
IF(NOT SRSGUI_FOUND)
FIND_PATH(
SRSGUI_INCLUDE_DIRS
NAMES srsgui/srsgui.h
HINTS ${PC_SRSGUI_INCLUDEDIR}
${PC_SRSGUI_INCLUDE_DIRS}
$ENV{SRSGUI_DIR}/include
PATHS /usr/local/include
/usr/include
)
FIND_LIBRARY(
SRSGUI_LIBRARIES
NAMES srsgui
HINTS ${PC_SRSGUI_LIBDIR}
${CMAKE_INSTALL_PREFIX}/lib
${CMAKE_INSTALL_PREFIX}/lib64
$ENV{SRSGUI_DIR}/lib
PATHS /usr/local/lib
/usr/local/lib64
/usr/lib
/usr/lib64
)
message(STATUS "SRSGUI LIBRARIES " ${SRSGUI_LIBRARIES})
message(STATUS "SRSGUI INCLUDE DIRS " ${SRSGUI_INCLUDE_DIRS})
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SRSGUI DEFAULT_MSG SRSGUI_LIBRARIES SRSGUI_INCLUDE_DIRS)
MARK_AS_ADVANCED(SRSGUI_LIBRARIES SRSGUI_INCLUDE_DIRS)
ENDIF(NOT SRSGUI_FOUND)

@ -37,27 +37,28 @@ if(NOT MATLAB_MEX_PATH)
)
endif()
IF (MATLAB_FOUND)
message(STATUS "Found MATLAB in ${MATLAB_ROOT}")
ENDIF(MATLAB_FOUND)
IF (OCTAVE_FOUND)
message(STATUS "Found OCTAVE in ${OCTAVE_INCLUDE_PATHS}")
ENDIF(OCTAVE_FOUND)
IF (MATLAB_FOUND OR OCTAVE_FOUND)
ADD_LIBRARY(srslte_mex SHARED mexutils.c)
INSTALL(TARGETS srslte_mex DESTINATION ${LIBRARY_DIR})
LIBLTE_SET_PIC(srslte_mex)
if(MATLAB_FOUND)
message(STATUS "Found MATLAB in ${MATLAB_ROOT}")
add_library(srslte_mex SHARED mexutils.c)
install(TARGETS srslte_mex DESTINATION ${LIBRARY_DIR})
liblte_set_pic(srslte_mex)
include_directories(${MATLAB_INCLUDE_DIR})
endif(MATLAB_FOUND)
if(OCTAVE_FOUND)
message(STATUS "Found OCTAVE in ${OCTAVE_INCLUDE_PATHS}")
if (NOT MATLAB_FOUND)
add_library(srslte_mex SHARED mexutils.c)
install(TARGETS srslte_mex DESTINATION ${LIBRARY_DIR})
liblte_set_pic(srslte_mex)
endif (NOT MATLAB_FOUND)
include_directories(${OCTAVE_INCLUDE_DIR})
endif(OCTAVE_FOUND)
ELSEIF (MATLAB_FOUND OR OCTAVE_FOUND)
if(NOT MATLAB_FOUND)
if(NOT OCTAVE_FOUND)
message(STATUS "Could NOT find OCTAVE or MATLAB. MEX files won't be compiled")
ENDIF(MATLAB_FOUND OR OCTAVE_FOUND)
endif(NOT OCTAVE_FOUND)
endif(NOT MATLAB_FOUND)

@ -44,7 +44,7 @@ LINK_DIRECTORIES(${UHD_LIBRARY_DIRS})
#################################################################
# These two can be compiled without UHD or graphics support
# These can be compiled without UHD or graphics support
#################################################################
add_executable(pdsch_ue pdsch_ue.c cuhd_utils.c)
@ -62,13 +62,13 @@ ELSE(${CUHD_FIND} EQUAL -1)
target_link_libraries(pdsch_enodeb cuhd)
ENDIF(${CUHD_FIND} EQUAL -1)
FIND_PACKAGE(LIBSDRGUI)
IF(LIBSDRGUI_FOUND)
include_directories(${LIBSDRGUI_INCLUDE_DIRS})
target_link_libraries(pdsch_ue ${LIBSDRGUI_LIBRARIES})
ELSE(LIBSDRGUI_FOUND)
FIND_PACKAGE(SRSGUI)
IF(SRSGUI_FOUND)
include_directories(${SRSGUI_INCLUDE_DIRS})
target_link_libraries(pdsch_ue ${SRSGUI_LIBRARIES})
ELSE(SRSGUI_FOUND)
SET_TARGET_PROPERTIES(pdsch_ue PROPERTIES COMPILE_DEFINITIONS "DISABLE_GRAPHICS")
ENDIF(LIBSDRGUI_FOUND)
ENDIF(SRSGUI_FOUND)
#################################################################
@ -86,6 +86,9 @@ IF(${CUHD_FIND} GREATER -1)
add_executable(cell_measurement cell_measurement.c cuhd_utils.c)
target_link_libraries(cell_measurement cuhd srslte)
add_executable(usrp_capture usrp_capture.c cuhd_utils.c)
target_link_libraries(usrp_capture cuhd srslte)
MESSAGE(STATUS " UHD examples will be installed.")
ELSE(${CUHD_FIND} GREATER -1)

@ -56,7 +56,7 @@ cell_search_cfg_t cell_detect_config = {
//#define STDOUT_COMPACT
#ifndef DISABLE_GRAPHICS
#include "libsdrgui/libsdrgui.h"
#include "srsgui/srsgui.h"
void init_plots();
pthread_t plot_thread;
sem_t plot_sem;

@ -0,0 +1,150 @@
/**
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the srsLTE library.
*
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* A copy of the GNU Lesser General Public License can be found in
* the LICENSE file in the top-level directory of this distribution
* and at http://www.gnu.org/licenses/.
*
*/
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <unistd.h>
#include <math.h>
#include <time.h>
#include <stdbool.h>
#include "srslte/srslte.h"
#include "srslte/cuhd/cuhd.h"
#include "srslte/io/filesink.h"
static bool keep_running = true;
char *output_file_name;
char *uhd_args="";
float uhd_gain=40.0, uhd_freq=-1.0, uhd_rate=0.96;
int nof_samples = -1;
void int_handler(int dummy) {
keep_running = false;
}
void usage(char *prog) {
printf("Usage: %s [agrnv] -f rx_frequency_hz -o output_file\n", prog);
printf("\t-a UHD args [Default %s]\n", uhd_args);
printf("\t-g UHD Gain [Default %.2f dB]\n", uhd_gain);
printf("\t-r UHD Rate [Default %.6f MHz]\n", uhd_rate);
printf("\t-n nof_samples [Default %d]\n", nof_samples);
printf("\t-v srslte_verbose\n");
}
void parse_args(int argc, char **argv) {
int opt;
while ((opt = getopt(argc, argv, "agrnvfo")) != -1) {
switch (opt) {
case 'o':
output_file_name = argv[optind];
break;
case 'a':
uhd_args = argv[optind];
break;
case 'g':
uhd_gain = atof(argv[optind]);
break;
case 'r':
uhd_rate = atof(argv[optind]);
break;
case 'f':
uhd_freq = atof(argv[optind]);
break;
case 'n':
nof_samples = atoi(argv[optind]);
break;
case 'v':
srslte_verbose++;
break;
default:
usage(argv[0]);
exit(-1);
}
}
if (uhd_freq < 0) {
usage(argv[0]);
exit(-1);
}
}
int main(int argc, char **argv) {
cf_t *buffer;
int sample_count, n;
void *uhd;
srslte_filesink_t sink;
int32_t buflen;
signal(SIGINT, int_handler);
parse_args(argc, argv);
buflen = 4800;
sample_count = 0;
buffer = malloc(sizeof(cf_t) * buflen);
if (!buffer) {
perror("malloc");
exit(-1);
}
srslte_filesink_init(&sink, output_file_name, SRSLTE_COMPLEX_FLOAT_BIN);
printf("Opening UHD device...\n");
if (cuhd_open(uhd_args, &uhd)) {
fprintf(stderr, "Error opening uhd\n");
exit(-1);
}
printf("Set RX freq: %.6f MHz\n", cuhd_set_rx_freq(uhd, uhd_freq) / 1000000);
printf("Set RX gain: %.1f dB\n", cuhd_set_rx_gain(uhd, uhd_gain));
printf("Set RX rate: %.6f MHz\n", cuhd_set_rx_srate(uhd, uhd_rate*1e6) / 1000000);
cuhd_rx_wait_lo_locked(uhd);
cuhd_start_rx_stream(uhd);
while((sample_count < nof_samples || nof_samples == -1)
&& keep_running){
n = cuhd_recv(uhd, buffer, buflen, 1);
if (n < 0) {
fprintf(stderr, "Error receiving samples\n");
exit(-1);
}
srslte_filesink_write(&sink, buffer, buflen);
sample_count += buflen;
}
srslte_filesink_free(&sink);
free(buffer);
cuhd_close(uhd);
printf("Ok - wrote %d samples\n", sample_count);
exit(0);
}

@ -25,7 +25,14 @@
*
*/
/**********************************************************************************************
* File: agc.h
*
* Description: Automatic gain control
* This module is not currently used
*
* Reference:
*********************************************************************************************/
#ifndef AGC_
#define AGC_
@ -36,10 +43,6 @@
#include "srslte/config.h"
/* Automatic Gain Control
*
*/
#define SRSLTE_AGC_DEFAULT_BW (5e-2)
typedef struct SRSLTE_API{

@ -25,7 +25,19 @@
*
*/
/**********************************************************************************************
* File: chest_dl.h
*
* Description: 3GPP LTE Downlink channel estimator and equalizer.
* Estimates the channel in the resource elements transmitting references and
* interpolates for the rest of the resource grid.
* The equalizer uses the channel estimates to produce an estimation of the
* transmitted symbol.
* This object depends on the srslte_refsignal_t object for creating the LTE
* CSR signal.
*
* Reference:
*********************************************************************************************/
#ifndef CHEST_DL_
#define CHEST_DL_
@ -38,15 +50,6 @@
#include "srslte/ch_estimation/refsignal_dl.h"
#include "srslte/common/phy_common.h"
/** 3GPP LTE Downlink channel estimator and equalizer.
* Estimates the channel in the resource elements transmitting references and interpolates for the rest
* of the resource grid.
*
* The equalizer uses the channel estimates to produce an estimation of the transmitted symbol.
*
* This object depends on the srslte_refsignal_t object for creating the LTE CSR signal.
*/
#define SRSLTE_CHEST_MAX_FILTER_FREQ_LEN 10
#define SRSLTE_CHEST_MAX_FILTER_TIME_LEN 4

@ -25,13 +25,17 @@
*
*/
/**********************************************************************************************
* File: refsignal_dl.h
*
* Description: Object to manage downlink reference signals for channel estimation.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 6.10
*********************************************************************************************/
#ifndef SRSLTE_REFSIGNAL_DL_
#define SRSLTE_REFSIGNAL_DL_
/* Object to manage Downlink reference signals for channel estimation.
*
*/
#include "srslte/config.h"
#include "srslte/common/phy_common.h"

@ -25,13 +25,17 @@
*
*/
/**********************************************************************************************
* File: refsignal_ul.h
*
* Description: Object to manage uplink reference signals for channel estimation.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 5.5
*********************************************************************************************/
#ifndef SRSLTE_REFSIGNAL_UL_
#define SRSLTE_REFSIGNAL_UL_
/* Object to manage Downlink reference signals for channel estimation.
*
*/
#include "srslte/config.h"
#include "srslte/phch/pucch.h"
#include "srslte/common/phy_common.h"

@ -25,6 +25,13 @@
*
*/
/**********************************************************************************************
* File: ch_awgn.h
*
* Description: Additive white gaussian noise channel object
*
* Reference:
*********************************************************************************************/
#include <complex.h>
#include <stdint.h>

@ -25,6 +25,13 @@
*
*/
/**********************************************************************************************
* File: phy_common.h
*
* Description: Common parameters and lookup functions for PHY
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10
*********************************************************************************************/
#ifndef _LTEBASE_
#define _LTEBASE_

@ -25,6 +25,15 @@
*
*/
/**********************************************************************************************
* File: sequence.h
*
* Description: Pseudo Random Sequence generation. Sequences are defined by a length-31 Gold
* sequence.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 7.2
*********************************************************************************************/
#ifndef LTESEQ_
#define LTESEQ_

@ -25,6 +25,15 @@
*
*/
/**********************************************************************************************
* File: timestamp.h
*
* Description: A simple timestamp struct with separate variables for full and frac seconds.
* Separate variables are used to avoid loss of precision in our frac seconds.
* Only positive timestamps are supported.
*
* Reference:
*********************************************************************************************/
#ifndef TIMESTAMP_
#define TIMESTAMP_
@ -32,13 +41,6 @@
#include <time.h>
#include "srslte/config.h"
/*!
* A simple timestamp struct with separate variables for full and frac seconds.
*
* Separate variables are used to avoid loss of precision in our frac seconds.
* Only positive timestamps are supported.
*/
typedef struct SRSLTE_API{
time_t full_secs;
double frac_secs;

@ -32,18 +32,23 @@
#include <stdbool.h>
#include "srslte/config.h"
/* Generic DFT module.
/**********************************************************************************************
* File: dft.h
*
* Description: Generic DFT module.
* Supports one-dimensional complex and real transforms. Options are set
* using the dft_plan_set_x functions.
*
* Options (default is false):
*
* mirror - Rearranges negative and positive frequency bins. Swaps after
* transform for FORWARD, swaps before transform for BACKWARD.
* db - Provides output in dB (10*log10(x)).
* norm - Normalizes output (by sqrt(len) for complex, len for real).
* dc - Handles insertion and removal of null DC carrier internally.
*/
*
* Reference:
*********************************************************************************************/
typedef enum {
SRSLTE_DFT_COMPLEX, SRSLTE_REAL

@ -25,6 +25,14 @@
*
*/
/**********************************************************************************************
* File: dft_precoding.h
*
* Description: DFT-based transform precoding object.
* Used in generation of uplink SCFDMA signals.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 5.3.3
*********************************************************************************************/
#ifndef DFTPREC_
#define DFTPREC_

@ -29,6 +29,14 @@
#ifndef LTEFFT_
#define LTEFFT_
/**********************************************************************************************
* File: ofdm.h
*
* Description: OFDM modulation object.
* Used in generation of downlink OFDM signals.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 6
*********************************************************************************************/
#include <strings.h>
#include <stdlib.h>

@ -25,7 +25,15 @@
*
*/
/**********************************************************************************************
* File: convcoder.h
*
* Description: Convolutional encoder.
* LTE uses a tail biting convolutional code with constraint length 7
* and coding rate 1/3.
*
* Reference: 3GPP TS 36.212 version 10.0.0 Release 10 Sec. 5.1.3.1
*********************************************************************************************/
#ifndef CONVCODER_
#define CONVCODER_

@ -25,6 +25,15 @@
*
*/
/**********************************************************************************************
* File: convcoder.h
*
* Description: Cyclic Redundancy Check
* LTE requires CRC lengths 8, 16, 24A and 24B, each with it's own generator
* polynomial.
*
* Reference: 3GPP TS 36.212 version 10.0.0 Release 10 Sec. 5.1.1
*********************************************************************************************/
#ifndef CRC_
#define CRC_

@ -25,6 +25,15 @@
*
*/
/**********************************************************************************************
* File: rm_conv.h
*
* Description: Rate matching for convolutionally coded transport channels and control
* information.
*
* Reference: 3GPP TS 36.212 version 10.0.0 Release 10 Sec. 5.1.4.2
*********************************************************************************************/
#ifndef RM_CONV_
#define RM_CONV_

@ -25,6 +25,14 @@
*
*/
/**********************************************************************************************
* File: rm_turbo.h
*
* Description: Rate matching for turbo coded transport channels.
*
* Reference: 3GPP TS 36.212 version 10.0.0 Release 10 Sec. 5.1.4.1
*********************************************************************************************/
#ifndef RM_TURBO_
#define RM_TURBO_

@ -25,6 +25,14 @@
*
*/
/**********************************************************************************************
* File: tc_interl.h
*
* Description: Turbo code interleaver.
*
* Reference: 3GPP TS 36.212 version 10.0.0 Release 10 Sec. 5.1.3.2.3
*********************************************************************************************/
#ifndef _TC_INTERL_H
#define _TC_INTERL_H

@ -25,6 +25,17 @@
*
*/
/**********************************************************************************************
* File: turbocoder.h
*
* Description: Turbo coder.
* Parallel Concatenated Convolutional Code (PCCC) with two 8-state constituent
* encoders and one turbo code internal interleaver. The coding rate of turbo
* encoder is 1/3.
*
* Reference: 3GPP TS 36.212 version 10.0.0 Release 10 Sec. 5.1.3.2
*********************************************************************************************/
#ifndef TURBOCODER_
#define TURBOCODER_

@ -25,6 +25,18 @@
*
*/
/**********************************************************************************************
* File: turbodecoder.h
*
* Description: Turbo Decoder.
* Parallel Concatenated Convolutional Code (PCCC) with two 8-state constituent
* encoders and one turbo code internal interleaver. The coding rate of turbo
* encoder is 1/3.
* MAP_GEN is the MAX-LOG-MAP generic implementation of the decoder.
*
* Reference: 3GPP TS 36.212 version 10.0.0 Release 10 Sec. 5.1.3.2
*********************************************************************************************/
#ifndef TURBODECODER_
#define TURBODECODER_

@ -25,6 +25,14 @@
*
*/
/******************************************************************************
* File: viterbi.h
*
* Description: Viterbi decoder for convolutionally encoded data.
* Used for decoding of PBCH and PDCCH (type 37 decoder).
*
* Reference:
*****************************************************************************/
#ifndef VITERBI_
#define VITERBI_

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: binsource.h
*
* Description: Pseudo-random binary source.
*
* Reference:
*****************************************************************************/
#ifndef BINSOURCE_
#define BINSOURCE_

@ -25,6 +25,15 @@
*
*/
/******************************************************************************
* File: filesink.h
*
* Description: File sink.
* Supports writing floats, complex floats and complex shorts
* to file in text or binary formats.
*
* Reference:
*****************************************************************************/
#ifndef FILESINK_
#define FILESINK_

@ -25,6 +25,15 @@
*
*/
/******************************************************************************
* File: filesource.h
*
* Description: File source.
* Supports reading floats, complex floats and complex shorts
* from file in text or binary formats.
*
* Reference:
*****************************************************************************/
#ifndef FILESOURCE_
#define FILESOURCE_

@ -25,6 +25,14 @@
*
*/
/******************************************************************************
* File: netsink.h
*
* Description: Network socket sink.
* Supports writing binary data to a TCP or UDP socket.
*
* Reference:
*****************************************************************************/
#ifndef NETSINK_
#define NETSINK_

@ -25,6 +25,14 @@
*
*/
/******************************************************************************
* File: netsource.h
*
* Description: Network socket source.
* Supports reading binary data from a TCP or UDP socket.
*
* Reference:
*****************************************************************************/
#ifndef NETSOURCE_
#define NETSOURCE_

@ -25,6 +25,15 @@
*
*/
/******************************************************************************
* File: layermap.h
*
* Description: MIMO layer mapping and demapping.
* Single antenna, tx diversity and spatial multiplexing are
* supported.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 6.3.3
*****************************************************************************/
#ifndef LAYERMAP_H_
#define LAYERMAP_H_

@ -25,6 +25,15 @@
*
*/
/******************************************************************************
* File: precoding.h
*
* Description: MIMO precoding and deprecoding.
* Single antenna and tx diversity supported.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 6.3.4
*****************************************************************************/
#ifndef PRECODING_H_
#define PRECODING_H_

@ -25,6 +25,14 @@
*
*/
/******************************************************************************
* File: demod_hard.h
*
* Description: Hard demodulator.
* Supports BPSK, QPSK, 16QAM and 64QAM.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 7.1
*****************************************************************************/
#ifndef DEMOD_HARD_
#define DEMOD_HARD_

@ -25,6 +25,14 @@
*
*/
/******************************************************************************
* File: demod_soft.h
*
* Description: Soft demodulator.
* Supports BPSK, QPSK, 16QAM and 64QAM.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 7.1
*****************************************************************************/
#ifndef DEMOD_SOFT_
#define DEMOD_SOFT_

@ -25,6 +25,14 @@
*
*/
/******************************************************************************
* File: mod.h
*
* Description: Modulation.
* Supports BPSK, QPSK, 16QAM and 64QAM.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 7.1
*****************************************************************************/
#ifndef MOD_
#define MOD_

@ -25,7 +25,14 @@
*
*/
/******************************************************************************
* File: modem_table.h
*
* Description: Modem tables used for modulation/demodulation.
* Supports BPSK, QPSK, 16QAM and 64QAM.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 7.1
*****************************************************************************/
#ifndef MODEM_TABLE_
#define MODEM_TABLE_

@ -25,6 +25,14 @@
*
*/
/******************************************************************************
* File: cqi.h
*
* Description: Channel quality indicator message packing.
*
* Reference: 3GPP TS 36.212 version 10.0.0 Release 10 Sec. 5.2.2.6, 5.2.3.3
*****************************************************************************/
#ifndef CQI_
#define CQI_
@ -33,11 +41,6 @@
#include "srslte/config.h"
#include "srslte/common/phy_common.h"
/**
* CQI message generation according to 36.212 Sections 5.2.2.6 and 5.2.3.3
*
*/
/* Table 5.2.2.6.2-1: Fields for channel quality information feedback for higher layer configured subband
CQI reports

@ -25,6 +25,14 @@
*
*/
/******************************************************************************
* File: dci.h
*
* Description: Downlink control information (DCI)
*
* Reference: 3GPP TS 36.212 version 10.0.0 Release 10 Sec. 5.3.3
*****************************************************************************/
#ifndef DCI_
#define DCI_
@ -34,13 +42,6 @@
#include "srslte/common/phy_common.h"
#include "srslte/phch/ra.h"
/**
* DCI message generation according to the formats, as specified in
* 36.212 Section 5.3.3.1
*
*/
#define DCI_MAX_BITS 57
typedef enum {

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: harq.h
*
* Description: Hybrid Automatic Repeat Request (HARQ)
*
* Reference:
*****************************************************************************/
#ifndef HARQ_
#define HARQ_

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: pbch.h
*
* Description: Physical broadcast channel.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 6.6
*****************************************************************************/
#ifndef PBCH_
#define PBCH_

@ -25,6 +25,14 @@
*
*/
/******************************************************************************
* File: pcfich.h
*
* Description: Physical control format indicator channel
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 6.7
*****************************************************************************/
#ifndef PCFICH_
#define PCFICH_

@ -25,6 +25,14 @@
*
*/
/******************************************************************************
* File: pdcch.h
*
* Description: Physical downlink control channel.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 6.8
*****************************************************************************/
#ifndef PDCCH_
#define PDCCH_

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: pdsch.h
*
* Description: Physical downlink shared channel
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 6.4
*****************************************************************************/
#ifndef PDSCH_
#define PDSCH_

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: phich.h
*
* Description: Physical Hybrid ARQ indicator channel.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 6.9
*****************************************************************************/
#ifndef PHICH_
#define PHICH_

@ -25,6 +25,14 @@
*
*/
/******************************************************************************
* File: prach.h
*
* Description: Physical random access channel.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 5.7
*****************************************************************************/
#ifndef PRACH_
#define PRACH_

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: pucch.h
*
* Description: Physical uplink control channel.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 5.4
*****************************************************************************/
#ifndef PUCCH_
#define PUCCH_

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: pusch.h
*
* Description: Physical uplink shared channel.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 5.3
*****************************************************************************/
#ifndef PUSCH_
#define PUSCH_

@ -25,6 +25,14 @@
*
*/
/******************************************************************************
* File: ra.h
*
* Description: Structures and utility functions for DL/UL resource allocation.
*
* Reference: 3GPP TS 36.213 version 10.0.1 Release 10
*****************************************************************************/
#ifndef RB_ALLOC_H_
#define RB_ALLOC_H_
@ -34,10 +42,6 @@
#include "srslte/config.h"
#include "srslte/common/phy_common.h"
/** Structures and utility functions for DL/UL resource
* allocation.
*/
typedef struct SRSLTE_API {
srslte_mod_t mod;
int tbs;

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: regs.h
*
* Description: Resource element mapping functions.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10
*****************************************************************************/
#ifndef _REGS_H_
#define _REGS_H_

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: sch.h
*
* Description: Common UL and DL shared channel encode/decode functions.
*
* Reference: 3GPP TS 36.212 version 10.0.0 Release 10
*****************************************************************************/
#ifndef SCH_
#define SCH_

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: uci.h
*
* Description: Uplink control information.
*
* Reference: 3GPP TS 36.212 version 10.0.0 Release 10 Sec. 5.2.3, 5.2.4
*****************************************************************************/
#ifndef UCI_
#define UCI_

@ -25,6 +25,14 @@
*
*/
/******************************************************************************
* File: decim.h
*
* Description: Integer linear decimation
*
* Reference:
*****************************************************************************/
#ifndef DECIM_H
#define DECIM_H

@ -25,6 +25,14 @@
*
*/
/******************************************************************************
* File: interp.h
*
* Description: Linear and vector interpolation
*
* Reference:
*****************************************************************************/
#ifndef INTERP_H
#define INTERP_H

@ -25,6 +25,16 @@
*
*/
/******************************************************************************
* File: resample_arb.h
*
* Description: Arbitrary rate resampler using a polyphase filter bank
* implementation.
*
* Reference: Multirate Signal Processing for Communication Systems
* fredric j. harris
*****************************************************************************/
#ifndef RESAMPLE_ARB_
#define RESAMPLE_ARB_

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: scrambling.h
*
* Description: Generic scrambling functions used by UL and DL channels.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 5.3.1, 6.3.1
*****************************************************************************/
#ifndef SCRAMBLING_
#define SCRAMBLING_

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: cfo.h
*
* Description: Carrier frequency offset correction using complex exponentials.
*
* Reference:
*****************************************************************************/
#ifndef CFO_
#define CFO_

@ -25,6 +25,23 @@
*
*/
/******************************************************************************
* File: pss.h
*
* Description: Primary synchronization signal (PSS) generation and detection.
*
* The srslte_pss_synch_t object provides functions for fast
* computation of the crosscorrelation between the PSS and received
* signal and CFO estimation. Also, the function srslte_pss_synch_tperiodic()
* is designed to be called periodically every subframe, taking
* care of the correct data alignment with respect to the PSS sequence.
*
* The object is designed to work with signals sampled at 1.92 Mhz
* centered at the carrier frequency. Thus, downsampling is required
* if the signal is sampled at higher frequencies.
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 6.11.1
*****************************************************************************/
#ifndef PSS_
#define PSS_
@ -50,17 +67,6 @@
#define SRSLTE_PSS_RETURN_PSR // If enabled returns peak to side-lobe ratio, otherwise returns absolute peak value
/**
* The srslte_pss_synch_t object provides functions for fast computation of the crosscorrelation
* between the PSS and received signal and CFO estimation. Also, the function srslte_pss_synch_tperiodic() is designed
* to be called periodically every subframe, taking care of the correct data alignment with respect
* to the PSS sequence.
*
* The object is designed to work with signals sampled at 1.92 Mhz centered at the carrier frequency.
* Thus, downsampling is required if the signal is sampled at higher frequencies.
*
*/
/* Low-level API */
typedef struct SRSLTE_API {

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: sfo.h
*
* Description: Sampling frequency offset estimation.
*
* Reference:
*****************************************************************************/
#ifndef SFO_
#define SFO_

@ -25,6 +25,14 @@
*
*/
/******************************************************************************
* File: sss.h
*
* Description: Secondary synchronization signal (SSS) generation and detection.
*
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 6.11.2
*****************************************************************************/
#ifndef SSS_
#define SSS_

@ -25,6 +25,23 @@
*
*/
/******************************************************************************
* File: sync.h
*
* Description: Time and frequency synchronization using the PSS and SSS signals.
*
* The object is designed to work with signals sampled at 1.92 Mhz
* centered at the carrier frequency. Thus, downsampling is required
* if the signal is sampled at higher frequencies.
*
* Correlation peak is detected comparing the maximum at the output
* of the correlator with a threshold. The comparison accepts two
* modes: absolute value or peak-to-mean ratio, which are configured
* with the functions sync_pss_det_absolute() and sync_pss_det_peakmean().
*
*
* Reference: 3GPP TS 36.211 version 10.0.0 Release 10 Sec. 6.11.1, 6.11.2
*****************************************************************************/
#ifndef SYNC_
#define SYNC_
@ -40,18 +57,6 @@
#define SRSLTE_SYNC_FFT_SZ_MIN 64
#define SRSLTE_SYNC_FFT_SZ_MAX 2048
/**
*
* This object performs time and frequency synchronization using the PSS and SSS signals.
*
* The object is designed to work with signals sampled at 1.92 Mhz centered at the carrier frequency.
* Thus, downsampling is required if the signal is sampled at higher frequencies.
*
* Correlation peak is detected comparing the maximum at the output of the correlator with a threshold.
* The comparison accepts two modes: absolute value or peak-to-mean ratio, which are configured with the
* functions sync_pss_det_absolute() and sync_pss_det_peakmean().
*/
typedef enum {SSS_DIFF=0, SSS_PARTIAL_3=2, SSS_FULL=1} sss_alg_t;
typedef struct SRSLTE_API {

@ -25,6 +25,22 @@
*
*/
/******************************************************************************
* File: ue_cell_search.h
*
* Description: Wrapper for the ue_sync object.
*
* This object is a wrapper to the ue_sync object. It receives
* several synchronized frames and obtains the most common cell_id
* and cp length.
*
* The I/O stream device sampling frequency must be set to 1.92 MHz
* (SRSLTE_CS_SAMP_FREQ constant) before calling to
* srslte_ue_cellsearch_scan() functions.
*
* Reference:
*****************************************************************************/
#ifndef UE_CELLSEARCH_
#define UE_CELLSEARCH_
@ -38,17 +54,6 @@
#include "srslte/phch/pbch.h"
#include "srslte/dft/ofdm.h"
/************************************************************
*
* This object is a wrapper to the ue_sync object. It receives
* several synchronized frames and obtains the most common cell_id
* and cp length.
*
* The I/O stream device sampling frequency must be set to 1.92 MHz (SRSLTE_CS_SAMP_FREQ constant)
* before calling to srslte_ue_cellsearch_scan() functions.
*
************************************************************/
/**
* TODO: Check also peak offset
*/

@ -25,16 +25,19 @@
*
*/
#ifndef UEDL_H
#define UEDL_H
/*******************************************************
/******************************************************************************
* File: ue_dl.h
*
* This module is a frontend to all the data and control channels processing
* modules.
********************************************************/
* Description: UE downlink object.
*
* This module is a frontend to all the downlink data and control
* channel processing modules.
*
* Reference:
*****************************************************************************/
#ifndef UEDL_H
#define UEDL_H
#include "srslte/ch_estimation/chest_dl.h"
#include "srslte/dft/ofdm.h"

@ -25,17 +25,14 @@
*
*/
#ifndef UE_MIB_
#define UE_MIB_
/************************************************************
/******************************************************************************
* File: ue_mib.h
*
* This object decodes the MIB from the PBCH of an LTE signal.
* Description: This object decodes the MIB from the PBCH of an LTE signal.
*
* The function srslte_ue_mib_decode() shall be called multiple times,
* each passing a number of samples multiple of 19200, sampled at 1.92 MHz
* (that is, 10 ms of samples).
* The function srslte_ue_mib_decode() shall be called multiple
* times, each passing a number of samples multiple of 19200,
* sampled at 1.92 MHz (that is, 10 ms of samples).
*
* The function uses the sync_t object to find the PSS sequence and
* decode the PBCH to obtain the MIB.
@ -44,7 +41,11 @@
*
* See ue_cell_detect.c for an example.
*
************************************************************/
* Reference:
*****************************************************************************/
#ifndef UE_MIB_
#define UE_MIB_
#include <stdbool.h>

@ -0,0 +1,169 @@
/**
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the srsLTE library.
*
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* A copy of the GNU Lesser General Public License can be found in
* the LICENSE file in the top-level directory of this distribution
* and at http://www.gnu.org/licenses/.
*
*/
/******************************************************************************
* File: ue_phy.h
*
* Description: Top-level class wrapper for PHY layer.
*
* Reference:
*****************************************************************************/
#include "srslte/srslte.h"
#include "srslte/utils/queue.h"
#ifndef UEPHY_H
#define UEPHY_H
#define SYNC_MODE_CV 0
#define SYNC_MODE_CALLBACK 1
#define SYNC_MODE SYNC_MODE_CV
namespace srslte {
typedef _Complex float cf_t;
class ue_phy
{
public:
typedef enum {DOWNLINK, UPLINK} direction_t;
typedef enum {
PDCCH_UL_SEARCH_CRNTI = 0,
PDCCH_UL_SEARCH_RA_PROC,
PDCCH_UL_SEARCH_SPS,
PDCCH_UL_SEARCH_TEMPORAL,
PDCCH_UL_SEARCH_TPC_PUSCH,
PDCCH_UL_SEARCH_TPC_PUCCH
} pdcch_ul_search_t;
typedef enum {
PDCCH_DL_SEARCH_CRNTI = 0,
PDCCH_DL_SEARCH_SIRNTI,
PDCCH_DL_SEARCH_PRNTI,
PDCCH_DL_SEARCH_RARNTI,
PDCCH_DL_SEARCH_TEMPORAL,
PDCCH_DL_SEARCH_SPS
} pdcch_dl_search_t;
/* Uplink/Downlink scheduling grant generated by a successfully decoded PDCCH */
class sched_grant {
public:
uint16_t get_rnti();
uint32_t get_rv();
void set_rv(uint32_t rv);
bool get_ndi();
bool get_cqi_request();
uint32_t get_harq_process();
private:
union {
srslte_ra_pusch_t ul_grant;
srslte_ra_pdsch_t dl_grant;
};
direction_t dir;
};
/* Uplink scheduling assignment. The MAC instructs the PHY to prepare an UL packet (PUSCH or PUCCH)
* for transmission. The MAC must call generate_pusch() to set the packet ready for transmission
*/
class ul_buffer : public queue::element {
public:
ul_buffer(srslte_cell_t cell);
void generate_pusch(sched_grant pusch_grant, uint8_t *payload, srslte_uci_data_t uci_data);
void generate_pucch(srslte_uci_data_t uci_data);
private:
srslte_ue_ul_t ue_ul;
bool signal_generated = false;
cf_t* signal_buffer = NULL;
uint32_t tti = 0;
};
/* Class for the processing of Downlink buffers. The MAC obtains a buffer for a given TTI and then
* gets ul/dl scheduling grants and/or processes phich/pdsch channels
*/
class dl_buffer : public queue::element {
public:
dl_buffer(srslte_cell_t cell);
sched_grant get_ul_grant(pdcch_ul_search_t mode, uint32_t rnti);
sched_grant get_dl_grant(pdcch_dl_search_t mode, uint32_t rnti);
bool decode_phich(srslte_phich_alloc_t assignment);
bool decode_pdsch(sched_grant pdsch_grant, uint8_t *payload); // returns true or false for CRC OK/KO
private:
srslte_ue_dl_t ue_dl;
srslte_phich_t phich;
cf_t *signal_buffer = NULL;
bool sf_symbols_and_ce_done = false;
bool pdcch_llr_extracted = false;
uint32_t tti = 0;
};
#if SYNC_MODE==SYNC_MODE_CALLBACK
typedef (*ue_phy_tti_clock_fcn_t) (void);
ue_phy(ue_phy_tti_clock_fcn_t tti_clock_callback);
#else
ue_phy();
#endif
~ue_phy();
void measure(); // TBD
void dl_bch();
void start_rxtx();
void stop_rxtx();
void init_prach();
void send_prach(/* prach_cfg_t in prach.h with power, seq idx, etc */);
void set_param();
uint32_t get_tti();
#if SYNC_MODE==SYNC_MODE_CV
std::condition_variable tti_cv;
std::mutex tti_mutex;
#endif
ul_buffer get_ul_buffer(uint32_t tti);
dl_buffer get_dl_buffer(uint32_t tti);
private:
enum {
IDLE, MEASURE, RX_BCH, RXTX
} phy_state;
bool prach_initiated = false;
bool prach_ready_to_send = false;
srslte_prach_t prach;
queue ul_buffer_queue;
queue dl_buffer_queue;
pthread_t radio_thread;
void *radio_handler;
};
}
#endif

@ -25,6 +25,28 @@
*
*/
/******************************************************************************
* File: ue_sync.h
*
* Description: This object automatically manages the cell synchronization
* procedure.
*
* The main function is srslte_ue_sync_get_buffer(), which returns
* a pointer to the aligned subframe of samples (before FFT). This
* function should be called regularly, returning every 1 ms.
* It reads from the USRP, aligns the samples to the subframe and
* performs time/freq synch.
*
* It is also possible to read the signal from a file using the
* init function srslte_ue_sync_init_file(). The sampling frequency
* is derived from the number of PRB.
*
* The function returns 1 when the signal is correctly acquired and
* the returned buffer is aligned with the subframe.
*
* Reference:
*****************************************************************************/
#ifndef UE_SYNC_
#define UE_SYNC_
@ -39,22 +61,6 @@
#include "srslte/common/timestamp.h"
#include "srslte/io/filesource.h"
/**************************************************************
*
* This object automatically manages the cell synchronization procedure.
*
* The main function is srslte_ue_sync_get_buffer(), which returns a pointer
* to the aligned subframe of samples (before FFT). This function
* should be called regularly, returning every 1 ms. It reads from the
* USRP, aligns the samples to the subframe and performs time/freq synch.
*
* It is also possible to read the signal from a file using the init function
* srslte_ue_sync_init_file(). The sampling frequency is derived from the number of PRB.
*
* The function returns 1 when the signal is correctly acquired and the
* returned buffer is aligned with the subframe.
*
*************************************************************/
typedef enum SRSLTE_API { SF_FIND, SF_TRACK} srslte_ue_sync_state_t;

@ -25,15 +25,19 @@
*
*/
#ifndef UEUL_H
#define UEUL_H
/*******************************************************
/******************************************************************************
* File: ue_ul.h
*
* Description: UE uplink object.
*
* This module is a frontend to all the data and control channels processing
* modules.
********************************************************/
* This module is a frontend to all the uplink data and control
* channel processing modules.
*
* Reference:
*****************************************************************************/
#ifndef UEUL_H
#define UEUL_H
#include "srslte/common/phy_common.h"
#include "srslte/ch_estimation/chest_dl.h"

@ -26,6 +26,13 @@
*/
#include <stdint.h>
/******************************************************************************
* File: queue.h
*
* Description: Queue used at interface of PHY/MAC
*
* Reference:
*****************************************************************************/
#ifndef QUEUE_H
#define QUEUE_H
@ -85,5 +92,7 @@ private:
};
}
}
#endif

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: bit.h
*
* Description: Bit-level utilities.
*
* Reference:
*****************************************************************************/
#ifndef BIT_
#define BIT_

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: cexptab.h
*
* Description: Utility module for generation of complex exponential tables.
*
* Reference:
*****************************************************************************/
#ifndef CEXPTAB_
#define CEXPTAB_

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: convolution.h
*
* Description: Utility module for fast convolution using FFT.
*
* Reference:
*****************************************************************************/
#ifndef CONVOLUTION_H_
#define CONVOLUTION_H_

@ -25,6 +25,14 @@
*
*/
/******************************************************************************
* File: debug.h
*
* Description: Debug output utilities.
*
* Reference:
*****************************************************************************/
#ifndef DEBUG_H
#define DEBUG_H

@ -25,6 +25,13 @@
*
*/
/******************************************************************************
* File: vector.h
*
* Description: Vector functions using SIMD instructions where possible.
*
* Reference:
*****************************************************************************/
#ifndef VECTOR_
#define VECTOR_

@ -38,7 +38,7 @@ ELSE(${DISABLE_VOLK})
FIND_PACKAGE(Volk)
ENDIF(${DISABLE_VOLK})
FIND_PACKAGE(LIBSDRGUI)
FIND_PACKAGE(SRSGUI)
########################################################################
# Recurse subdirectories and compile all source files into the same lib

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

@ -2,19 +2,19 @@
*
* \section COPYRIGHT
*
* Copyright 2013-2014 The libLTE Developers. See the
* Copyright 2013-2014 The srsLTE Developers. See the
* COPYRIGHT file at the top-level directory of this distribution.
*
* \section LICENSE
*
* This file is part of the libLTE library.
* This file is part of the srsLTE library.
*
* libLTE is free software: you can redistribute it and/or modify
* srsLTE is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* libLTE is distributed in the hope that it will be useful,
* srsLTE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save