kopia lustrzana https://github.com/cariboulabs/cariboulite
smi read arbitrary size vector read
rodzic
e33f2f2cd7
commit
15fa286dc6
|
@ -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);
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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())
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue