bug_fixes_integration_tx
meexmachina 2021-10-15 23:00:17 +03:00
rodzic 72d6cca083
commit 49dabcdfa8
31 zmienionych plików z 20837 dodań i 20944 usunięć

Wyświetl plik

@ -88,6 +88,11 @@ module smi_ctrl
// Tell the RPI that data is pending in either of the two fifos
assign o_smi_read_req = !i_fifo_09_empty || !i_fifo_24_empty /*|| i_smi_test*/;
//assign o_smi_read_req = (!i_fifo_09_empty && (i_smi_a == smi_address_read_900)) ||
// (!i_fifo_24_empty && (i_smi_a == smi_address_read_2400));
//assign o_smi_read_req = 1'b1;
//!i_fifo_09_empty || !i_fifo_24_empty;
reg [4:0] int_cnt_09;
reg [4:0] int_cnt_24;

Plik diff jest za duży Load Diff

Plik binarny nie jest wyświetlany.

Plik diff jest za duży Load Diff

Wyświetl plik

@ -374,7 +374,7 @@ module top(
assign w_smi_test = 1'b0;
assign w_smi_addr = {i_smi_a3, i_smi_a2, i_smi_a1};
assign io_smi_data = (w_smi_writing)?w_smi_data_output:1'bZ;
assign io_smi_data = (w_smi_writing)?w_smi_data_output:8'bZ;
assign w_smi_data_input = io_smi_data;
assign o_smi_write_req = (w_smi_writing)?w_smi_write_req:1'bZ;
assign o_smi_read_req = (w_smi_writing)?w_smi_read_req:1'bZ;

Wyświetl plik

@ -52,9 +52,9 @@ if(CMAKE_COMPILER_IS_GNUCXX)
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" HAS_STD_CXX11)
if(HAS_STD_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3")
else(HAS_STD_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -O3")
endif()
#Thread support enabled (not the same as -lpthread)
list(APPEND SOAPY_CARIBOULITE_LIBRARIES)

Wyświetl plik

@ -228,6 +228,14 @@ signal.h
time.h
-
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/Cariboulite.cpp
math.h
-
Cariboulite.hpp
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/Cariboulite.hpp
cariboulite_config/cariboulite_config_default.h
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/cariboulite_config/cariboulite_config_default.h
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/Cariboulite.hpp
SoapySDR/Device.hpp
-
@ -262,9 +270,37 @@ cariboulite_setup.h
cariboulite_radios.h
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/cariboulite_radios.h
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/CaribouliteSampleQueue.cpp
Cariboulite.hpp
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/Cariboulite.hpp
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/CaribouliteSensors.cpp
Cariboulite.hpp
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/Cariboulite.hpp
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/CaribouliteSession.cpp
Cariboulite.hpp
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/Cariboulite.hpp
cariboulite_config/cariboulite_config_default.h
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/cariboulite_config/cariboulite_config_default.h
SoapySDR/Logger.hpp
-
mutex
-
cstddef
-
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/CaribouliteStream.cpp
Cariboulite.hpp
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/Cariboulite.hpp
cariboulite_config/cariboulite_config_default.h
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/cariboulite_config/cariboulite_config_default.h
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/SoapyCariboulite.cpp
SoapySDR/Device.hpp
-
SoapySDR/Registry.hpp
-
Cariboulite.hpp
/home/pi/projects/cariboulite/software/libcariboulite/src/soapy_api/Cariboulite.hpp

Wyświetl plik

@ -6,5 +6,5 @@ CXX_DEFINES = -DSoapyCariboulite_EXPORTS
CXX_INCLUDES = -I/home/pi/projects/cariboulite/software/libcariboulite/. -I/home/pi/projects/cariboulite/software/libcariboulite/./include -I/home/pi/projects/cariboulite/software/libcariboulite/src -I/home/pi/projects/cariboulite/software/libcariboulite -I/home/pi/projects/cariboulite/software/libcariboulite/src/datatypes -I/home/pi/projects/cariboulite/software/libcariboulite/src/ustimer -I/home/pi/projects/cariboulite/software/libcariboulite/src/latticeice40 -I/home/pi/projects/cariboulite/software/libcariboulite/src/io_utils -I/home/pi/projects/cariboulite/software/libcariboulite/src/zf_log
CXX_FLAGS = -std=c++11 -O3 -DNDEBUG -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Wno-unused-parameter -Wno-missing-field-initializers -Wno-parentheses -Wno-psabi -Wall -Wextra -Wno-unused-variable -Wno-missing-braces -Wnon-virtual-dtor
CXX_FLAGS = -std=c++11 -O3 -O3 -DNDEBUG -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Wno-unused-parameter -Wno-missing-field-initializers -Wno-parentheses -Wno-psabi -Wall -Wextra -Wno-unused-variable -Wno-missing-braces -Wnon-virtual-dtor

Wyświetl plik

@ -1 +1 @@
/usr/bin/c++ -fPIC -std=c++11 -O3 -DNDEBUG -shared -o libSoapyCariboulite.so CMakeFiles/SoapyCariboulite.dir/src/soapy_api/SoapyCariboulite.cpp.o CMakeFiles/SoapyCariboulite.dir/src/soapy_api/Cariboulite.cpp.o CMakeFiles/SoapyCariboulite.dir/src/soapy_api/CaribouliteStream.cpp.o CMakeFiles/SoapyCariboulite.dir/src/soapy_api/CaribouliteSampleQueue.cpp.o CMakeFiles/SoapyCariboulite.dir/src/soapy_api/CaribouliteSession.cpp.o CMakeFiles/SoapyCariboulite.dir/src/soapy_api/CaribouliteSensors.cpp.o -Wl,-rpath,/usr/local/lib: libcariboulite.a /usr/local/lib/libSoapySDR.so.0.8.1 -Wl,--no-undefined src/datatypes/libdatatypes.a src/ustimer/libustimer.a src/caribou_fpga/libcaribou_fpga.a src/at86rf215/libat86rf215.a src/rffc507x/librffc507x.a src/caribou_smi/libcaribou_smi.a src/latticeice40/liblatticeice40.a src/io_utils/libio_utils.a src/cariboulite_config/libcariboulite_config.a src/cariboulite_eeprom/libcariboulite_eeprom.a src/zf_log/libzf_log.a -pthread
/usr/bin/c++ -fPIC -std=c++11 -O3 -O3 -DNDEBUG -shared -o libSoapyCariboulite.so CMakeFiles/SoapyCariboulite.dir/src/soapy_api/SoapyCariboulite.cpp.o CMakeFiles/SoapyCariboulite.dir/src/soapy_api/Cariboulite.cpp.o CMakeFiles/SoapyCariboulite.dir/src/soapy_api/CaribouliteStream.cpp.o CMakeFiles/SoapyCariboulite.dir/src/soapy_api/CaribouliteSampleQueue.cpp.o CMakeFiles/SoapyCariboulite.dir/src/soapy_api/CaribouliteSession.cpp.o CMakeFiles/SoapyCariboulite.dir/src/soapy_api/CaribouliteSensors.cpp.o -Wl,-rpath,/usr/local/lib: libcariboulite.a /usr/local/lib/libSoapySDR.so.0.8.1 -Wl,--no-undefined src/datatypes/libdatatypes.a src/ustimer/libustimer.a src/caribou_fpga/libcaribou_fpga.a src/at86rf215/libat86rf215.a src/rffc507x/librffc507x.a src/caribou_smi/libcaribou_smi.a src/latticeice40/liblatticeice40.a src/io_utils/libio_utils.a src/cariboulite_config/libcariboulite_config.a src/cariboulite_eeprom/libcariboulite_eeprom.a src/zf_log/libzf_log.a -pthread

Wyświetl plik

@ -6,6 +6,42 @@
#IncludeRegexTransform:
../src/at86rf215/at86rf215.h
at86rf215_common.h
../src/at86rf215/at86rf215_common.h
at86rf215_radio.h
../src/at86rf215/at86rf215_radio.h
../src/at86rf215/at86rf215_common.h
stdio.h
-
stdint.h
-
math.h
-
string.h
-
stdbool.h
-
stdio.h
-
io_utils/io_utils.h
../src/at86rf215/io_utils/io_utils.h
io_utils/io_utils_spi.h
../src/at86rf215/io_utils/io_utils_spi.h
at86rf215_regs.h
../src/at86rf215/at86rf215_regs.h
../src/at86rf215/at86rf215_radio.h
stdio.h
-
stdint.h
-
at86rf215_common.h
../src/at86rf215/at86rf215_common.h
../src/at86rf215/at86rf215_regs.h
../src/caribou_fpga/caribou_fpga.h
stdio.h
-
@ -156,6 +192,16 @@ at86rf215_common.h
/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_regs.h
/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_fpga/caribou_fpga.h
stdio.h
-
stdint.h
-
io_utils/io_utils.h
/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_fpga/io_utils/io_utils.h
io_utils/io_utils_spi.h
/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_fpga/io_utils/io_utils_spi.h
/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_smi/caribou_smi.h
pthread.h
-
@ -182,10 +228,30 @@ io_utils/io_utils_sys_info.h
ustimer/ustimer.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_config/ustimer/ustimer.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_config/cariboulite_config_default.h
cariboulite_config.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_config/cariboulite_config.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_events.c
zf_log/zf_log.h
/home/pi/projects/cariboulite/software/libcariboulite/src/zf_log/zf_log.h
cariboulite_config/cariboulite_config_default.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_config/cariboulite_config_default.h
cariboulite_events.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_events.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_events.h
caribou_smi/caribou_smi.h
/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_smi/caribou_smi.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_fpga_firmware.h
stdio.h
-
stdint.h
-
time.h
-
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_radios.c
zf_log/zf_log.h
/home/pi/projects/cariboulite/software/libcariboulite/src/zf_log/zf_log.h
@ -214,5 +280,145 @@ cariboulite_config/cariboulite_config.h
at86rf215/at86rf215.h
/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_setup.c
zf_log/zf_log.h
/home/pi/projects/cariboulite/software/libcariboulite/src/zf_log/zf_log.h
stdio.h
-
cariboulite_setup.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_setup.h
cariboulite_events.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_events.h
cariboulite_fpga_firmware.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_fpga_firmware.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_setup.h
cariboulite_radios.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_radios.h
latticeice40/latticeice40.h
/home/pi/projects/cariboulite/software/libcariboulite/src/latticeice40/latticeice40.h
caribou_fpga/caribou_fpga.h
/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_fpga/caribou_fpga.h
at86rf215/at86rf215.h
/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215.h
rffc507x/rffc507x.h
/home/pi/projects/cariboulite/software/libcariboulite/src/rffc507x/rffc507x.h
caribou_smi/caribou_smi.h
/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_smi/caribou_smi.h
io_utils/io_utils.h
/home/pi/projects/cariboulite/software/libcariboulite/src/io_utils/io_utils.h
io_utils/io_utils_spi.h
/home/pi/projects/cariboulite/software/libcariboulite/src/io_utils/io_utils_spi.h
io_utils/io_utils_sys_info.h
/home/pi/projects/cariboulite/software/libcariboulite/src/io_utils/io_utils_sys_info.h
ustimer/ustimer.h
/home/pi/projects/cariboulite/software/libcariboulite/src/ustimer/ustimer.h
cariboulite_config/cariboulite_config.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_config/cariboulite_config.h
/home/pi/projects/cariboulite/software/libcariboulite/src/io_utils/io_utils.h
stdio.h
-
string.h
-
stdint.h
-
stdlib.h
-
pigpio/pigpio.h
/home/pi/projects/cariboulite/software/libcariboulite/src/io_utils/pigpio/pigpio.h
/home/pi/projects/cariboulite/software/libcariboulite/src/io_utils/io_utils_spi.h
stdio.h
-
stdint.h
-
pthread.h
-
io_utils.h
/home/pi/projects/cariboulite/software/libcariboulite/src/io_utils/io_utils.h
/home/pi/projects/cariboulite/software/libcariboulite/src/io_utils/io_utils_sys_info.h
stdio.h
-
string.h
-
stdint.h
-
stdlib.h
-
unistd.h
-
fcntl.h
-
signal.h
-
string.h
-
sys/ioctl.h
-
sys/mman.h
-
/home/pi/projects/cariboulite/software/libcariboulite/src/io_utils/pigpio/pigpio.h
stddef.h
-
stdint.h
-
pthread.h
-
stdio.h
-
pigpio.h
-
stdio.h
-
pigpio.h
/home/pi/projects/cariboulite/software/libcariboulite/src/io_utils/pigpio/pigpio.h
stdio.h
-
pigpio.h
-
stdio.h
-
pigpio.h
-
stdio.h
-
pigpio.h
-
/home/pi/projects/cariboulite/software/libcariboulite/src/latticeice40/latticeice40.h
stdint.h
-
linux/types.h
-
io_utils/io_utils.h
/home/pi/projects/cariboulite/software/libcariboulite/src/latticeice40/io_utils/io_utils.h
io_utils/io_utils_spi.h
/home/pi/projects/cariboulite/software/libcariboulite/src/latticeice40/io_utils/io_utils_spi.h
/home/pi/projects/cariboulite/software/libcariboulite/src/rffc507x/rffc507x.h
stdio.h
-
stdint.h
-
io_utils/io_utils.h
/home/pi/projects/cariboulite/software/libcariboulite/src/rffc507x/io_utils/io_utils.h
io_utils/io_utils_spi.h
/home/pi/projects/cariboulite/software/libcariboulite/src/rffc507x/io_utils/io_utils_spi.h
/home/pi/projects/cariboulite/software/libcariboulite/src/ustimer/ustimer.h
stdlib.h
-
unistd.h
-
stdio.h
-
signal.h
-
time.h
-
/home/pi/projects/cariboulite/software/libcariboulite/src/zf_log/zf_log.h

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -134,14 +134,6 @@ io_utils/io_utils_spi.h
at86rf215_regs.h
/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_regs.h
/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_events.c
stdio.h
-
zf_log/zf_log.h
/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/zf_log/zf_log.h
at86rf215_common.h
/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_common.h
/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_radio.c
stdint.h
-

Wyświetl plik

@ -6,5 +6,5 @@ C_DEFINES =
C_INCLUDES = -I/home/pi/projects/cariboulite/software/libcariboulite/. -I/home/pi/projects/cariboulite/software/libcariboulite/./include -I/home/pi/projects/cariboulite/software/libcariboulite/src -I/. -I/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_smi/..
C_FLAGS = -O3 -DNDEBUG -Wall -Wextra -Wno-unused-parameter -Wno-missing-braces
C_FLAGS = -O3 -DNDEBUG -Wall -Wextra -Wno-unused-parameter -Wno-missing-braces -O3

Wyświetl plik

@ -6,5 +6,5 @@ C_DEFINES =
C_INCLUDES = -I/home/pi/projects/cariboulite/software/libcariboulite/. -I/home/pi/projects/cariboulite/software/libcariboulite/./include -I/home/pi/projects/cariboulite/software/libcariboulite/src -I/. -I/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_smi/..
C_FLAGS = -O3 -DNDEBUG -Wall -Wextra -Wno-unused-parameter -Wno-missing-braces
C_FLAGS = -O3 -DNDEBUG -Wall -Wextra -Wno-unused-parameter -Wno-missing-braces -O3

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -78,27 +78,27 @@ typedef enum
typedef enum
{
at86rf215_radio_rx_bw_BW160KHZ_IF250KHZ = 0x0,
at86rf215_radio_rx_bw_BW200KHZ_IF250KHZ = 0x1,
at86rf215_radio_rx_bw_BW250KHZ_IF250KHZ = 0x2,
at86rf215_radio_rx_bw_BW320KHZ_IF500KHZ = 0x3,
at86rf215_radio_rx_bw_BW400KHZ_IF500KHZ = 0x4,
at86rf215_radio_rx_bw_BW500KHZ_IF500KHZ = 0x5,
at86rf215_radio_rx_bw_BW630KHZ_IF1000KHZ = 0x6,
at86rf215_radio_rx_bw_BW800KHZ_IF1000KHZ = 0x7,
at86rf215_radio_rx_bw_BW1000KHZ_IF1000KHZ = 0x8,
at86rf215_radio_rx_bw_BW1250KHZ_IF2000KHZ = 0x9,
at86rf215_radio_rx_bw_BW1600KHZ_IF2000KHZ = 0xA,
at86rf215_radio_rx_bw_BW2000KHZ_IF2000KHZ = 0xB,
at86rf215_radio_rx_bw_BW160KHZ_IF250KHZ = 0x0, // at86rf215_radio_rx_f_cut_0_25_half_fs
at86rf215_radio_rx_bw_BW200KHZ_IF250KHZ = 0x1, // at86rf215_radio_rx_f_cut_0_25_half_fs
at86rf215_radio_rx_bw_BW250KHZ_IF250KHZ = 0x2, // at86rf215_radio_rx_f_cut_0_25_half_fs
at86rf215_radio_rx_bw_BW320KHZ_IF500KHZ = 0x3, // at86rf215_radio_rx_f_cut_0_25_half_fs
at86rf215_radio_rx_bw_BW400KHZ_IF500KHZ = 0x4, // at86rf215_radio_rx_f_cut_0_25_half_fs
at86rf215_radio_rx_bw_BW500KHZ_IF500KHZ = 0x5, // at86rf215_radio_rx_f_cut_0_25_half_fs
at86rf215_radio_rx_bw_BW630KHZ_IF1000KHZ = 0x6, // at86rf215_radio_rx_f_cut_0_375_half_fs
at86rf215_radio_rx_bw_BW800KHZ_IF1000KHZ = 0x7, // at86rf215_radio_rx_f_cut_0_5_half_fs
at86rf215_radio_rx_bw_BW1000KHZ_IF1000KHZ = 0x8, // at86rf215_radio_rx_f_cut_0_5_half_fs
at86rf215_radio_rx_bw_BW1250KHZ_IF2000KHZ = 0x9, // at86rf215_radio_rx_f_cut_0_75_half_fs
at86rf215_radio_rx_bw_BW1600KHZ_IF2000KHZ = 0xA, // at86rf215_radio_rx_f_cut_half_fs
at86rf215_radio_rx_bw_BW2000KHZ_IF2000KHZ = 0xB, // at86rf215_radio_rx_f_cut_half_fs
} at86rf215_radio_rx_bw_en;
typedef enum
{
at86rf215_radio_rx_f_cut_0_25_half_fs = 0,
at86rf215_radio_rx_f_cut_0_375_half_fs = 1,
at86rf215_radio_rx_f_cut_0_5_half_fs = 2,
at86rf215_radio_rx_f_cut_0_75_half_fs = 3,
at86rf215_radio_rx_f_cut_half_fs = 4,
at86rf215_radio_rx_f_cut_0_25_half_fs = 0, // whan 4MSPS => 500 KHz
at86rf215_radio_rx_f_cut_0_375_half_fs = 1, // whan 4MSPS => 750 KHz
at86rf215_radio_rx_f_cut_0_5_half_fs = 2, // whan 4MSPS => 1000 KHz
at86rf215_radio_rx_f_cut_0_75_half_fs = 3, // whan 4MSPS => 1500 KHz
at86rf215_radio_rx_f_cut_half_fs = 4, // whan 4MSPS => 2000 KHz
} at86rf215_radio_f_cut_en;
typedef enum

Wyświetl plik

@ -167,7 +167,7 @@ int test_at86rf215_continues_iq_loopback (at86rf215_st* dev, at86rf215_rf_channe
#define TEST_VERSIONS 1
#define TEST_FREQ_SWEEP 0
#define TEST_IQ_RX_WIND 1
#define TEST_IQ_RX_WIND_RAD 0
#define TEST_IQ_RX_WIND_RAD 1
#define TEST_IQ_LB_WIND 0
// -----------------------------------------------------------------------------------------

Wyświetl plik

@ -6,5 +6,5 @@ C_DEFINES =
C_INCLUDES = -I/. -I/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_fpga/..
C_FLAGS = -O3 -DNDEBUG
C_FLAGS = -O3 -DNDEBUG -Wall -Wextra -Wno-unused-parameter -Wno-missing-braces

Wyświetl plik

@ -56,6 +56,18 @@ stdio.h
pigpio.h
-
../../zf_log/zf_log.h
/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_fpga/caribou_fpga.c
zf_log/zf_log.h
/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_fpga/zf_log/zf_log.h
stdio.h
-
string.h
-
caribou_fpga.h
/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_fpga/caribou_fpga.h
/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_fpga/caribou_fpga.h
stdio.h
-

Wyświetl plik

@ -6,5 +6,5 @@ C_DEFINES =
C_INCLUDES = -I/. -I/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_fpga/..
C_FLAGS = -O3 -DNDEBUG
C_FLAGS = -O3 -DNDEBUG -Wall -Wextra -Wno-unused-parameter -Wno-missing-braces

Wyświetl plik

@ -12,7 +12,7 @@ set(SOURCES_LIB caribou_smi.c)
set(SOURCES ${SOURCES_LIB} test_caribou_smi.c)
set(EXTERN_LIBS ${SUPER_DIR}/io_utils/build/libio_utils.a ${SUPER_DIR}/zf_log/build/libzf_log.a)
#add_compile_options(-Wall -Wextra -pedantic -Werror)
add_compile_options(-Wall -Wextra -Wno-unused-parameter -Wno-missing-braces)
add_compile_options(-Wall -Wextra -Wno-unused-parameter -Wno-missing-braces -O3)
#Generate the static library from the sources
add_library(caribou_smi STATIC ${SOURCES_LIB})

Wyświetl plik

@ -137,7 +137,7 @@ int caribou_smi_timeout_read(caribou_smi_st* dev,
ZF_LOGE("failed setting smi address (idle / %d) to device", source);
return -1;
}
printf("Set address to %d\n", source);
dev->current_address = source;
}
}
@ -153,6 +153,7 @@ int caribou_smi_timeout_read(caribou_smi_st* dev,
int num_sec = timeout_num_millisec / 1000;
timeout.tv_sec = num_sec;
timeout.tv_usec = (timeout_num_millisec - num_sec*1000) * 1000;
//printf("tv_sec = %d, tv_usec = %d\n", timeout.tv_sec, timeout.tv_usec);
again:
rv = select(dev->filedesc + 1, &set, NULL, NULL, &timeout);
@ -318,7 +319,7 @@ void* caribou_smi_thread(void *arg)
if (!st->running)
{
//ZF_LOGD("1");
usleep(200000);
usleep(100000);
//ZF_LOGD("2");
continue;
}

Wyświetl plik

@ -253,13 +253,29 @@ int cariboulite_set_rx_bandwidth(cariboulite_radios_st* radios,
at86rf215_radio_rx_bw_en rx_bw)
{
cariboulite_radio_state_st* rad = GET_RADIO_PTR(radios,channel);
at86rf215_radio_f_cut_en fcut = at86rf215_radio_rx_f_cut_half_fs;
// Automatically calculate the digital f_cut
if (rx_bw >= at86rf215_radio_rx_bw_BW160KHZ_IF250KHZ && rx_bw <= at86rf215_radio_rx_bw_BW500KHZ_IF500KHZ)
fcut = at86rf215_radio_rx_f_cut_0_25_half_fs;
else if (rx_bw >= at86rf215_radio_rx_bw_BW630KHZ_IF1000KHZ && rx_bw <= at86rf215_radio_rx_bw_BW630KHZ_IF1000KHZ)
fcut = at86rf215_radio_rx_f_cut_0_375_half_fs;
else if (rx_bw >= at86rf215_radio_rx_bw_BW800KHZ_IF1000KHZ && rx_bw <= at86rf215_radio_rx_bw_BW1000KHZ_IF1000KHZ)
fcut = at86rf215_radio_rx_f_cut_0_5_half_fs;
else if (rx_bw >= at86rf215_radio_rx_bw_BW1250KHZ_IF2000KHZ && rx_bw <= at86rf215_radio_rx_bw_BW1250KHZ_IF2000KHZ)
fcut = at86rf215_radio_rx_f_cut_0_75_half_fs;
else
fcut = at86rf215_radio_rx_f_cut_half_fs;
rad->rx_fcut = fcut;
at86rf215_radio_set_rx_bw_samp_st cfg =
{
.inverter_sign_if = 0,
.shift_if_freq = 0, // A value of one configures the receiver to shift the IF frequency
.shift_if_freq = 1, // A value of one configures the receiver to shift the IF frequency
// by factor of 1.25. This is useful to place the image frequency according
// to channel scheme.
// to channel scheme. This increases the IF frequency to max 2.5MHz
// thus places the internal LO fasr away from the signal => lower noise
.bw = rx_bw,
.fcut = rad->rx_fcut, // keep the same
.fs = rad->rx_fs, // keep the same
@ -294,8 +310,9 @@ int cariboulite_set_rx_samp_cutoff(cariboulite_radios_st* radios,
at86rf215_radio_set_rx_bw_samp_st cfg =
{
.inverter_sign_if = 0,
.shift_if_freq = 0, // A value of one configures the receiver to shift the IF frequency
.inverter_sign_if = 0, // A value of one configures the receiver to implement the inverted-sign
// IF frequency. Use default setting for normal operation
.shift_if_freq = 1, // A value of one configures the receiver to shift the IF frequency
// by factor of 1.25. This is useful to place the image frequency according
// to channel scheme.
.bw = rad->rx_bw, // keep the same
@ -486,12 +503,12 @@ int cariboulite_get_rand_val(cariboulite_radios_st* radios, cariboulite_channel_
//=================================================
#define CARIBOULITE_MIN_MIX (20.0e6) // 30
#define CARIBOULITE_MIN_MIX (1.0e6) // 30
#define CARIBOULITE_MAX_MIX (6000.0e6) // 6000
#define CARIBOULITE_MIN_LO (85.0e6)
#define CARIBOULITE_MAX_LO (4200.0e6)
#define CARIBOULITE_2G4_MIN (2380.0e6) // 2400
#define CARIBOULITE_2G4_MAX (2495.0e6) // 2483.5
#define CARIBOULITE_2G4_MIN (2385.0e6) // 2400
#define CARIBOULITE_2G4_MAX (2490.0e6) // 2483.5
#define CARIBOULITE_S1G_MIN1 (389.5e6)
#define CARIBOULITE_S1G_MAX1 (510.0e6)
#define CARIBOULITE_S1G_MIN2 (779.0e6)
@ -725,7 +742,7 @@ int cariboulite_set_frequency( cariboulite_radios_st* radios,
if (freq) *freq = act_freq;
// activate the channel according to the new configuration
//cariboulite_activate_channel(radios, channel);
cariboulite_activate_channel(radios, channel, 1);
}
if (error >= 0)
@ -755,6 +772,7 @@ int cariboulite_activate_channel(cariboulite_radios_st* radios,
{
cariboulite_radio_state_st* rad = GET_RADIO_PTR(radios,channel);
ZF_LOGD("Activating channel %d", channel);
// if the channel state is active, turn it off before reactivating
if (rad->state != at86rf215_radio_state_cmd_tx_prep)
{
@ -762,6 +780,7 @@ int cariboulite_activate_channel(cariboulite_radios_st* radios,
GET_CH(channel),
at86rf215_radio_state_cmd_tx_prep);
rad->state = at86rf215_radio_state_cmd_tx_prep;
ZF_LOGD("Setup Modem state tx_prep");
}
if (!active)
@ -770,6 +789,7 @@ int cariboulite_activate_channel(cariboulite_radios_st* radios,
GET_CH(channel),
at86rf215_radio_state_cmd_trx_off);
rad->state = at86rf215_radio_state_cmd_trx_off;
ZF_LOGD("Setup Modem state trx_off");
return 0;
}
@ -780,6 +800,7 @@ int cariboulite_activate_channel(cariboulite_radios_st* radios,
at86rf215_radio_set_state( &rad->cariboulite_sys->modem,
GET_CH(channel),
at86rf215_radio_state_cmd_rx);
ZF_LOGD("Setup Modem state cmd_rx");
}
else if (rad->channel_direction == cariboulite_channel_dir_tx)
{

Wyświetl plik

@ -26,7 +26,7 @@ enum Cariboulite_Format
};
#define BUFFER_SIZE_MS ( 5 )
#define NUM_SAMPLEQUEUE_BUFS ( 10 )
#define NUM_SAMPLEQUEUE_BUFS ( 50 )
#define NUM_BYTES_PER_CPLX_ELEM ( 4 )
#define GET_MTU_MS(ms) ( 4096*(ms) )
#define GET_MTU_MS_BYTES(ms) ( GET_MTU_MS(ms) * NUM_BYTES_PER_CPLX_ELEM )
@ -56,22 +56,22 @@ typedef struct
// associated with CS32 - total 8 bytes / element
typedef struct
{
int32_t i; // LSB
int32_t q; // MSB
int32_t q; // LSB
int32_t i; // MSB
} sample_complex_int32;
// associated with CF32 - total 8 bytes / element
typedef struct
{
float i; // LSB
float q; // MSB
float q; // LSB
float i; // MSB
} sample_complex_float;
// associated with CF64 - total 16 bytes / element
typedef struct
{
double i; // LSB
double q; // MSB
double q; // LSB
double i; // MSB
} sample_complex_double;
#pragma pack()

Wyświetl plik

@ -1,6 +1,27 @@
#include "Cariboulite.hpp"
//==============================================
void print_iq(uint32_t* array, int len)
{
printf("Values I/Q:\n");
for (int i=0; i<len; i++)
{
unsigned int v = array[i];
//swap_little_big (&v);
int16_t q_val = (v>> 1) & (0x1FFF);
int16_t i_val = (v>>17) & (0x1FFF);
if (q_val >= 0x1000) q_val-=0x2000;
if (i_val >= 0x1000) i_val-=0x2000;
float fi = i_val, fq = q_val;
float mod = sqrt(fi*fi + fq*fq);
float arg = atan2(fq, fi);
printf("(%d, %d), ", i_val, q_val);
if ((i % 32) == 0) printf("\n");
}
}
//=================================================================
SampleQueue::SampleQueue(int mtu_bytes, int num_buffers)
{
@ -151,6 +172,7 @@ int SampleQueue::Read(uint8_t *buffer, size_t length, uint32_t *meta, long timeo
//=================================================================
int SampleQueue::ReadSamples(sample_complex_int16* buffer, size_t num_elements, long timeout_us)
{
static int once = 1;
// this is the native method
int tot_length = num_elements * sizeof(sample_complex_int16);
int res = Read((uint8_t *)buffer, tot_length, NULL, timeout_us);
@ -159,14 +181,18 @@ int SampleQueue::ReadSamples(sample_complex_int16* buffer, size_t num_elements,
// todo!!
return res;
}
/*if (once)
{
print_iq((uint32_t*) buffer, num_elements);
once--;
}*/
int tot_read_elements = res / sizeof(sample_complex_int16);
for (int i = 0; i < tot_read_elements; i++)
{
buffer[i].i >>= 1;
buffer[i].q >>= 1;
if (buffer[i].i > (int16_t)0x1000) buffer[i].i -= (int16_t)0x2000;
if (buffer[i].q > (int16_t)0x1000) buffer[i].q -= (int16_t)0x2000;
if (buffer[i].i >= (int16_t)0x1000) buffer[i].i -= (int16_t)0x2000;
if (buffer[i].q >= (int16_t)0x1000) buffer[i].q -= (int16_t)0x2000;
}
return tot_read_elements;
@ -191,12 +217,12 @@ int SampleQueue::ReadSamples(sample_complex_float* buffer, size_t num_elements,
return res;
}
float max_val = (float)((1<<12) - 1);
float max_val = (float)(4095);
for (int i = 0; i < res; i++)
{
buffer[i].i = (float)interm_native_buffer[i].q / max_val;
buffer[i].q = (float)interm_native_buffer[i].i / max_val;
buffer[i].i = (float)interm_native_buffer[i].i / max_val;
buffer[i].q = (float)interm_native_buffer[i].q / max_val;
}
return res;
@ -221,12 +247,12 @@ int SampleQueue::ReadSamples(sample_complex_double* buffer, size_t num_elements,
return res;
}
double max_val = (double)((1<<12) - 1);
double max_val = (double)(4095);
for (int i = 0; i < res; i++)
{
buffer[i].i = (double)interm_native_buffer[i].q / max_val;
buffer[i].q = (double)interm_native_buffer[i].i / max_val;
buffer[i].i = (double)interm_native_buffer[i].i / max_val;
buffer[i].q = (double)interm_native_buffer[i].q / max_val;
}
return res;
@ -253,8 +279,8 @@ int SampleQueue::ReadSamples(sample_complex_int8* buffer, size_t num_elements, l
for (int i = 0; i < res; i++)
{
buffer[i].i = (int8_t)((interm_native_buffer[i].q >> 5)&0x00FF);
buffer[i].q = (int8_t)((interm_native_buffer[i].i >> 5)&0x00FF);
buffer[i].i = (int8_t)((interm_native_buffer[i].i >> 5)&0x00FF);
buffer[i].q = (int8_t)((interm_native_buffer[i].q >> 5)&0x00FF);
}
return res;