2020-03-24 16:19:27 +00:00
|
|
|
/*
|
|
|
|
* Copyright 2020 sysmocom - s.f.m.c. GmbH <info@sysmocom.de>
|
|
|
|
* Author: Eric Wild <ewild@sysmocom.de>
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: 0BSD
|
|
|
|
*
|
|
|
|
* Permission to use, copy, modify, and/or distribute this software for any purpose
|
|
|
|
* with or without fee is hereby granted.THE SOFTWARE IS PROVIDED "AS IS" AND THE
|
|
|
|
* AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
|
|
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
|
|
|
|
* BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
|
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
|
|
|
|
* CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
|
|
|
|
* USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
*/
|
|
|
|
#ifndef IPC_UHDWRAP_H
|
|
|
|
#define IPC_UHDWRAP_H
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
#include "../uhd/UHDDevice.h"
|
|
|
|
|
|
|
|
class uhd_wrap : public uhd_device {
|
|
|
|
public:
|
|
|
|
// std::thread *t;
|
|
|
|
size_t samps_per_buff_rx;
|
|
|
|
size_t samps_per_buff_tx;
|
|
|
|
int channel_count;
|
|
|
|
|
|
|
|
std::vector<std::vector<short> > wrap_rx_buffs;
|
|
|
|
std::vector<std::vector<short> > wrap_tx_buffs;
|
|
|
|
std::vector<short *> wrap_rx_buf_ptrs;
|
|
|
|
std::vector<short *> wrap_tx_buf_ptrs;
|
|
|
|
|
|
|
|
template <typename... Args> uhd_wrap(Args... args) : uhd_device(args...)
|
|
|
|
{
|
|
|
|
// t = new std::thread(magicthread);
|
|
|
|
// give the thread some time to start and set up
|
|
|
|
// std::this_thread::sleep_for(std::chrono::seconds(1));
|
|
|
|
}
|
|
|
|
virtual ~uhd_wrap();
|
|
|
|
|
|
|
|
// void ipc_sock_close() override {};
|
|
|
|
int wrap_read(TIMESTAMP *timestamp);
|
2023-05-10 21:50:38 +00:00
|
|
|
virtual int open() override;
|
2020-03-24 16:19:27 +00:00
|
|
|
|
|
|
|
// bool start() override;
|
|
|
|
// bool stop() override;
|
|
|
|
// virtual TIMESTAMP initialWriteTimestamp() override;
|
|
|
|
// virtual TIMESTAMP initialReadTimestamp() override;
|
|
|
|
|
|
|
|
int getTimingOffset()
|
|
|
|
{
|
|
|
|
return ts_offset;
|
|
|
|
}
|
|
|
|
size_t bufsizerx();
|
|
|
|
size_t bufsizetx();
|
|
|
|
int chancount();
|
|
|
|
};
|
|
|
|
#else
|
|
|
|
void *uhdwrap_open(struct ipc_sk_if_open_req *open_req);
|
|
|
|
|
|
|
|
int32_t uhdwrap_get_bufsizerx(void *dev);
|
|
|
|
|
|
|
|
int32_t uhdwrap_get_timingoffset(void *dev);
|
|
|
|
|
|
|
|
int32_t uhdwrap_read(void *dev, uint32_t num_chans);
|
|
|
|
|
|
|
|
int32_t uhdwrap_write(void *dev, uint32_t num_chans, bool *underrun);
|
|
|
|
|
|
|
|
double uhdwrap_set_freq(void *dev, double f, size_t chan, bool for_tx);
|
|
|
|
|
|
|
|
double uhdwrap_set_gain(void *dev, double f, size_t chan, bool for_tx);
|
|
|
|
|
|
|
|
int32_t uhdwrap_start(void *dev, int chan);
|
|
|
|
|
|
|
|
int32_t uhdwrap_stop(void *dev, int chan);
|
|
|
|
|
|
|
|
void uhdwrap_fill_info_cnf(struct ipc_sk_if *ipc_prim);
|
|
|
|
|
|
|
|
double uhdwrap_set_txatt(void *dev, double a, size_t chan);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif // IPC_B210_H
|