bug fix in tsqueue, screenshots

bug_fixes_integration_tx
meexmachina 2021-10-22 15:00:04 +03:00
rodzic c57291a935
commit f92b202abf
12 zmienionych plików z 192 dodań i 184 usunięć

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 1.8 MiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 951 KiB

Wyświetl plik

@ -78,10 +78,6 @@ io_utils/io_utils_sys_info.h
ustimer/ustimer.h
../src/cariboulite_config/ustimer/ustimer.h
../src/cariboulite_config/cariboulite_config_default.h
cariboulite_config.h
../src/cariboulite_config/cariboulite_config.h
../src/cariboulite_radios.h
cariboulite_config/cariboulite_config.h
../src/cariboulite_config/cariboulite_config.h
@ -228,14 +224,6 @@ 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
-
@ -274,33 +262,3 @@ cariboulite_radios.h
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,120 +6,6 @@
#IncludeRegexTransform:
../src/caribou_fpga/caribou_fpga.h
stdio.h
-
stdint.h
-
io_utils/io_utils.h
../src/caribou_fpga/io_utils/io_utils.h
io_utils/io_utils_spi.h
../src/caribou_fpga/io_utils/io_utils_spi.h
../src/io_utils/io_utils.h
stdio.h
-
string.h
-
stdint.h
-
stdlib.h
-
pigpio/pigpio.h
../src/io_utils/pigpio/pigpio.h
../src/io_utils/io_utils_spi.h
stdio.h
-
stdint.h
-
pthread.h
-
io_utils.h
../src/io_utils/io_utils.h
../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
-
../src/io_utils/pigpio/pigpio.h
stddef.h
-
stdint.h
-
pthread.h
-
stdio.h
-
pigpio.h
-
stdio.h
-
pigpio.h
../src/io_utils/pigpio/pigpio.h
stdio.h
-
pigpio.h
-
stdio.h
-
pigpio.h
-
stdio.h
-
pigpio.h
-
../src/latticeice40/latticeice40.h
stdint.h
-
linux/types.h
-
io_utils/io_utils.h
../src/latticeice40/io_utils/io_utils.h
io_utils/io_utils_spi.h
../src/latticeice40/io_utils/io_utils_spi.h
../src/rffc507x/rffc507x.h
stdio.h
-
stdint.h
-
io_utils/io_utils.h
../src/rffc507x/io_utils/io_utils.h
io_utils/io_utils_spi.h
../src/rffc507x/io_utils/io_utils_spi.h
../src/ustimer/ustimer.h
stdlib.h
-
unistd.h
-
stdio.h
-
signal.h
-
time.h
-
/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215.h
at86rf215_common.h
/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_common.h
@ -156,6 +42,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
-
@ -186,27 +82,13 @@ ustimer/ustimer.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_radios.c
zf_log/zf_log.h
/home/pi/projects/cariboulite/software/libcariboulite/src/zf_log/zf_log.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_fpga_firmware.h
stdio.h
-
stdlib.h
stdint.h
-
unistd.h
time.h
-
fcntl.h
-
string.h
-
linux/random.h
-
sys/ioctl.h
-
cariboulite_radios.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_radios.h
cariboulite_events.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_events.h
/home/pi/projects/cariboulite/software/libcariboulite/src/cariboulite_radios.h
cariboulite_config/cariboulite_config.h
@ -214,5 +96,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.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -323,6 +323,8 @@ int cariboulite_release_submodules(cariboulite_st* sys)
//=================================================
int cariboulite_init_driver(cariboulite_st *sys, void* signal_handler_cb, cariboulite_board_info_st *info)
{
zf_log_set_output_level(ZF_LOG_ERROR);
ZF_LOGI("driver initializing");
if (info == NULL)
{

Wyświetl plik

@ -85,9 +85,9 @@ int tsqueue_release(tsqueue_st* q)
}
//=======================================================================
int tsqueue_insert_push_item(tsqueue_st* q, tsqueue_item_st* item, int timeout_us)
int tsqueue_insert_push_item(tsqueue_st* q, tsqueue_item_st* item, int timeout_us, int override)
{
return tsqueue_insert_push_buffer(q, item->data, item->length, item->metadata, timeout_us);
return tsqueue_insert_push_buffer(q, item->data, item->length, item->metadata, timeout_us, override);
}
@ -145,14 +145,20 @@ int tsqueue_wait_on_sem(sem_t* sem, int timeout_us)
}
//=======================================================================
int tsqueue_insert_push_buffer(tsqueue_st* q, uint8_t* buffer, int length, uint32_t metadata, int timeout_us)
int tsqueue_insert_push_buffer(tsqueue_st* q, uint8_t* buffer, int length, uint32_t metadata, int timeout_us, int override)
{
int error = 0;
if (q == NULL) return TSQUEUE_NOT_INITIALIZED;
int res = tsqueue_wait_on_sem(&q->empty, timeout_us);
if (res < 0) return res;
if (!override)
{
// wait until empty rises => someone poped an item thus some place was
// freed for a new item. immediatelly after catching the event, decrease empty (notice it is full)
// in the case of override - no waiting is needed
int res = tsqueue_wait_on_sem(&q->empty, timeout_us);
if (res < 0) return res;
}
// acquire the mutex lock
pthread_mutex_lock(&q->mutex);
@ -173,7 +179,26 @@ int tsqueue_insert_push_buffer(tsqueue_st* q, uint8_t* buffer, int length, uint3
if (q->head >= q->max_num_items) q->head = 0;
q->current_num_of_items ++;
}
else
else if (override)
{
int res = tsqueue_wait_on_sem(&q->full, timeout_us);
if (res < 0) return res;
int data_size = length;
q->items[q->head].metadata = metadata;
if (data_size > q->item_size_bytes)
{
printf("Incorrect item data size\n");
data_size = q->item_size_bytes;
}
memcpy (q->items[q->head].data, buffer, data_size);
q->items[q->head].length = data_size;
q->head ++;
if (q->head >= q->max_num_items) q->head = 0;
q->tail ++;
if (q->tail >= q->max_num_items) q->tail = 0;
}
else
{
error = TSQUEUE_FAILED_FULL;
}

Wyświetl plik

@ -68,14 +68,14 @@ int tsqueue_release(tsqueue_st* q);
* be changed by letting the function block until space is freed up in the queue. When there is not
* sufficient space in the queue, the item is dropped and the "dropped" counter is increased.
*/
int tsqueue_insert_push_item(tsqueue_st* q, tsqueue_item_st* item, int timeout_us);
int tsqueue_insert_push_item(tsqueue_st* q, tsqueue_item_st* item, int timeout_us, int override);
/*
* Push a buffer to the queue
* The same as before, but rather than an "item", a specific buffer, length and metadata are
* cloned into the internal item local copy, and pushed to the queue
*/
int tsqueue_insert_push_buffer(tsqueue_st* q, uint8_t* buffer, int length, uint32_t metadata, int timeout_us);
int tsqueue_insert_push_buffer(tsqueue_st* q, uint8_t* buffer, int length, uint32_t metadata, int timeout_us, int override);
/*
* Pop an item from the queue with timeout

Wyświetl plik

@ -29,7 +29,7 @@ enum Cariboulite_Format
};
#define BUFFER_SIZE_MS ( 10 )
#define NUM_SAMPLEQUEUE_BUFS ( 10 )
#define NUM_SAMPLEQUEUE_BUFS ( 30 )
#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 )

Wyświetl plik

@ -85,7 +85,8 @@ int SampleQueue::Write(uint8_t *buffer, size_t length, uint32_t meta, long timeo
int res = tsqueue_insert_push_buffer(&queue,
buffer + offset,
current_length,
meta, timeout_us);
meta, timeout_us,
true);
switch (res)
{
case TSQUEUE_NOT_INITIALIZED: