smi read arbitrary size vector read

pull/146/head
David Michaeli 2023-10-01 23:19:11 +00:00
rodzic e33f2f2cd7
commit 15fa286dc6
5 zmienionych plików z 27 dodań i 24 usunięć

Wyświetl plik

@ -980,7 +980,7 @@ static ssize_t smi_stream_write_file(struct file *f, const char __user *user_ptr
static unsigned int smi_stream_poll(struct file *filp, struct poll_table_struct *wait)
{
__poll_t mask = 0;
//dev_info(inst->dev, "poll_waiting");
poll_wait(filp, &inst->poll_event, wait);

Wyświetl plik

@ -61,7 +61,9 @@ int main ()
// start receiving until enter pressed on 900MHz
s1g->SetFrequency(900000000);
s1g->StartReceiving(receivedSamples, 20000);
s1g->SetRxGain(50);
s1g->SetAgc(false);
s1g->StartReceiving(receivedSamples);
getchar();

Wyświetl plik

@ -161,10 +161,10 @@ public:
float GetFrequencyResolution(void);
// Activation
void StartReceiving(std::function<void(CaribouLiteRadio*, const std::complex<float>*, CaribouLiteMeta*, size_t)> on_data_ready, size_t samples_per_chunk);
void StartReceiving(std::function<void(CaribouLiteRadio*, const std::complex<float>*, size_t)> on_data_ready, size_t samples_per_chunk);
void StartReceiving(std::function<void(CaribouLiteRadio*, const CaribouLiteComplexInt*, CaribouLiteMeta*, size_t)> on_data_ready, size_t samples_per_chunk);
void StartReceiving(std::function<void(CaribouLiteRadio*, const CaribouLiteComplexInt*, size_t)> on_data_ready, size_t samples_per_chunk);
void StartReceiving(std::function<void(CaribouLiteRadio*, const std::complex<float>*, CaribouLiteMeta*, size_t)> on_data_ready, size_t samples_per_chunk = 0);
void StartReceiving(std::function<void(CaribouLiteRadio*, const std::complex<float>*, size_t)> on_data_ready, size_t samples_per_chunk = 0);
void StartReceiving(std::function<void(CaribouLiteRadio*, const CaribouLiteComplexInt*, CaribouLiteMeta*, size_t)> on_data_ready, size_t samples_per_chunk = 0);
void StartReceiving(std::function<void(CaribouLiteRadio*, const CaribouLiteComplexInt*, size_t)> on_data_ready, size_t samples_per_chunk = 0);
void StartReceivingInternal(size_t samples_per_chunk);
void StopReceiving(void);
void StartTransmitting(std::function<void(CaribouLiteRadio*, std::complex<float>*, const bool*, size_t*)> on_data_request, size_t samples_per_chunk);

Wyświetl plik

@ -407,7 +407,7 @@ float CaribouLiteRadio::GetFrequencyResolution()
//==================================================================
void CaribouLiteRadio::StartReceivingInternal(size_t samples_per_chunk)
{
_rx_samples_per_chunk = samples_per_chunk;
_rx_samples_per_chunk = (samples_per_chunk==0)?GetNativeMtuSample():samples_per_chunk;
if (_rx_samples_per_chunk > GetNativeMtuSample())
{

Wyświetl plik

@ -466,25 +466,26 @@ static int caribou_smi_timeout_read(caribou_smi_st* dev,
size_t len,
uint32_t timeout_num_millisec)
{
int res = caribou_smi_poll(dev, timeout_num_millisec, smi_stream_dir_device_to_smi);
if (res < 0)
{
ZF_LOGD("poll error");
return -1;
}
else if (res == 0) // timeout
{
//ZF_LOGD("===> smi read fd timeout");
return 0;
}
// try reading the file
int ret = read(dev->filedesc, buffer, len);
if (ret <= 0)
{
int res = caribou_smi_poll(dev, timeout_num_millisec, smi_stream_dir_device_to_smi);
/*if (ret > 16)
{
smi_utils_dump_hex(buffer, 16);
}*/
if (res < 0)
{
ZF_LOGD("poll error");
return -1;
}
else if (res == 0) // timeout
{
//ZF_LOGD("===> smi read fd timeout");
return 0;
}
return read(dev->filedesc, buffer, len);
}
return ret;
}