mirror of
https://github.com/fairwaves/UHD-Fairwaves.git
synced 2025-11-03 13:33:15 +00:00
Compare commits
10 Commits
1.0.5
...
achemeris/
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a870e8a16f | ||
|
|
3c240a2ab2 | ||
|
|
e4c59df63e | ||
|
|
ad8ff4a345 | ||
|
|
4f909bcfa2 | ||
|
|
9309e3c548 | ||
|
|
6b5ff4a460 | ||
|
|
53e7e5597f | ||
|
|
a89917faae | ||
|
|
b600665303 |
9
debian/changelog
vendored
9
debian/changelog
vendored
@@ -1,3 +1,12 @@
|
|||||||
|
umtrx (1.0.6) trusty; urgency=low
|
||||||
|
|
||||||
|
* host: make boost property tree thread safe
|
||||||
|
* host: support string type in JSON query
|
||||||
|
* debian: build now produces an additional package with debug symbols
|
||||||
|
* umtrx_firmware: fixed typo preventing it from working
|
||||||
|
|
||||||
|
-- Kirill Zakharenko <earwin@gmail.com> Mon, 21 Dec 2015 14:23:56 +0300
|
||||||
|
|
||||||
umtrx (1.0.5) trusty; urgency=low
|
umtrx (1.0.5) trusty; urgency=low
|
||||||
|
|
||||||
* host: disable umtrx_fifo_ctrl cache of spi config
|
* host: disable umtrx_fifo_ctrl cache of spi config
|
||||||
|
|||||||
7
debian/control
vendored
7
debian/control
vendored
@@ -31,3 +31,10 @@ Conflicts: umtrx-uhd
|
|||||||
Replaces: umtrx-uhd
|
Replaces: umtrx-uhd
|
||||||
Description: Fairwaves UmTRX driver - UHD plugin module
|
Description: Fairwaves UmTRX driver - UHD plugin module
|
||||||
The industrial grade dual-channel wide-band SDR transceiver.
|
The industrial grade dual-channel wide-band SDR transceiver.
|
||||||
|
|
||||||
|
Package: umtrx-dbg
|
||||||
|
Section: debug
|
||||||
|
Architecture: any
|
||||||
|
Depends: umtrx, uhd-umtrx, ${misc:Depends}
|
||||||
|
Description: Fairwaves UmTRX driver - debug symbols
|
||||||
|
The industrial grade dual-channel wide-band SDR transceiver.
|
||||||
|
|||||||
3
debian/rules
vendored
3
debian/rules
vendored
@@ -16,3 +16,6 @@ export DH_OPTIONS
|
|||||||
|
|
||||||
override_dh_auto_configure:
|
override_dh_auto_configure:
|
||||||
dh_auto_configure -- -DLIB_SUFFIX="/$(DEB_HOST_MULTIARCH)"
|
dh_auto_configure -- -DLIB_SUFFIX="/$(DEB_HOST_MULTIARCH)"
|
||||||
|
|
||||||
|
override_dh_strip:
|
||||||
|
dh_strip --dbg-package=umtrx-dbg
|
||||||
|
|||||||
@@ -128,6 +128,10 @@ if (UNIX)
|
|||||||
list(APPEND UMTRX_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
|
list(APPEND UMTRX_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
#make boost property tree thread safe
|
||||||
|
#http://stackoverflow.com/questions/8156948/is-boostproperty-treeptree-thread-safe
|
||||||
|
add_definitions(-DBOOST_SPIRIT_THREADSAFE)
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# Helpful compiler flags
|
# Helpful compiler flags
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|||||||
@@ -395,6 +395,10 @@ protected:
|
|||||||
boost::recursive_mutex::scoped_lock l(_mutex);
|
boost::recursive_mutex::scoped_lock l(_mutex);
|
||||||
if (verbosity>0) printf("lms6002d_ctrl_impl::set_tx_vga1dc_i_int(%d)\n", offset);
|
if (verbosity>0) printf("lms6002d_ctrl_impl::set_tx_vga1dc_i_int(%d)\n", offset);
|
||||||
lms.set_tx_vga1dc_i_int(offset);
|
lms.set_tx_vga1dc_i_int(offset);
|
||||||
|
uint8_t old = lms.get_tx_vga1dc_i_int();
|
||||||
|
if (offset != old) {
|
||||||
|
lms.dump();
|
||||||
|
}
|
||||||
return offset;
|
return offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -402,6 +406,10 @@ protected:
|
|||||||
boost::recursive_mutex::scoped_lock l(_mutex);
|
boost::recursive_mutex::scoped_lock l(_mutex);
|
||||||
if (verbosity>0) printf("lms6002d_ctrl_impl::set_tx_vga1dc_q_int(%d)\n", offset);
|
if (verbosity>0) printf("lms6002d_ctrl_impl::set_tx_vga1dc_q_int(%d)\n", offset);
|
||||||
lms.set_tx_vga1dc_q_int(offset);
|
lms.set_tx_vga1dc_q_int(offset);
|
||||||
|
uint8_t old = lms.get_tx_vga1dc_q_int();
|
||||||
|
if (offset != old) {
|
||||||
|
lms.dump();
|
||||||
|
}
|
||||||
return offset;
|
return offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -187,7 +187,8 @@ void umtrx_impl::client_query_handle1(const boost::property_tree::ptree &request
|
|||||||
else if (action == "GET")
|
else if (action == "GET")
|
||||||
{
|
{
|
||||||
const std::string type = request.get("type", "");
|
const std::string type = request.get("type", "");
|
||||||
if (type.empty()) response.put("error", "type field not specified: BOOL, INT, DOUBLE, SENSOR, RANGE");
|
if (type.empty()) response.put("error", "type field not specified: STRING, BOOL, INT, DOUBLE, SENSOR, RANGE");
|
||||||
|
else if (type == "STRING") response.put("result", _tree->access<std::string>(path).get());
|
||||||
else if (type == "BOOL") response.put("result", _tree->access<bool>(path).get());
|
else if (type == "BOOL") response.put("result", _tree->access<bool>(path).get());
|
||||||
else if (type == "INT") response.put("result", _tree->access<int>(path).get());
|
else if (type == "INT") response.put("result", _tree->access<int>(path).get());
|
||||||
else if (type == "DOUBLE") response.put("result", _tree->access<double>(path).get());
|
else if (type == "DOUBLE") response.put("result", _tree->access<double>(path).get());
|
||||||
@@ -218,7 +219,8 @@ void umtrx_impl::client_query_handle1(const boost::property_tree::ptree &request
|
|||||||
else if (action == "SET")
|
else if (action == "SET")
|
||||||
{
|
{
|
||||||
const std::string type = request.get("type", "");
|
const std::string type = request.get("type", "");
|
||||||
if (type.empty()) response.put("error", "type field not specified: BOOL, INT, DOUBLE");
|
if (type.empty()) response.put("error", "type field not specified: STRING, BOOL, INT, DOUBLE");
|
||||||
|
else if (type == "STRING") _tree->access<std::string>(path).set(request.get<std::string>("value"));
|
||||||
else if (type == "BOOL") _tree->access<bool>(path).set(request.get<bool>("value"));
|
else if (type == "BOOL") _tree->access<bool>(path).set(request.get<bool>("value"));
|
||||||
else if (type == "INT") _tree->access<int>(path).set(request.get<int>("value"));
|
else if (type == "INT") _tree->access<int>(path).set(request.get<int>("value"));
|
||||||
else if (type == "DOUBLE") _tree->access<double>(path).set(request.get<double>("value"));
|
else if (type == "DOUBLE") _tree->access<double>(path).set(request.get<double>("value"));
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
case word in
|
case $1 in
|
||||||
flash )
|
flash )
|
||||||
umtrx_net_burner --addr=192.168.10.2 --fpga=/usr/share/umtrx/firmware/u2plus_umtrx_v2.bin --fw=/usr/share/umtrx/firmware/umtrx_txrx_uhd.bin --reset
|
umtrx_net_burner --addr=192.168.10.2 --fpga=/usr/share/umtrx/firmware/u2plus_umtrx_v2.bin --fw=/usr/share/umtrx/firmware/umtrx_txrx_uhd.bin --reset
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -59,6 +59,10 @@ class umtrx_property_tree:
|
|||||||
self._send_request('GET', path, value_type='RANGE')
|
self._send_request('GET', path, value_type='RANGE')
|
||||||
return self._recv_response()
|
return self._recv_response()
|
||||||
|
|
||||||
|
def query_string_raw(self, path):
|
||||||
|
self._send_request('GET', path, value_type='STRING')
|
||||||
|
return self._recv_response()
|
||||||
|
|
||||||
#
|
#
|
||||||
# Getters (value)
|
# Getters (value)
|
||||||
#
|
#
|
||||||
@@ -83,6 +87,10 @@ class umtrx_property_tree:
|
|||||||
res = self.query_range_raw(path)
|
res = self.query_range_raw(path)
|
||||||
return res['result']
|
return res['result']
|
||||||
|
|
||||||
|
def query_string_value(self, path):
|
||||||
|
res = self.query_string_raw(path)
|
||||||
|
return res['result']
|
||||||
|
|
||||||
#
|
#
|
||||||
# Setters
|
# Setters
|
||||||
#
|
#
|
||||||
@@ -99,6 +107,10 @@ class umtrx_property_tree:
|
|||||||
self._send_request('SET', path, value_type='DOUBLE', value=val)
|
self._send_request('SET', path, value_type='DOUBLE', value=val)
|
||||||
return self._recv_response()
|
return self._recv_response()
|
||||||
|
|
||||||
|
def set_string(self, path, val):
|
||||||
|
self._send_request('SET', path, value_type='STRING', value=val)
|
||||||
|
return self._recv_response()
|
||||||
|
|
||||||
#
|
#
|
||||||
# Check path presence and list paths
|
# Check path presence and list paths
|
||||||
#
|
#
|
||||||
|
|||||||
20
host/utils/umtrx_query_versions.py
Executable file
20
host/utils/umtrx_query_versions.py
Executable file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
##########################
|
||||||
|
### Query sensors
|
||||||
|
##########################
|
||||||
|
|
||||||
|
from umtrx_property_tree import umtrx_property_tree
|
||||||
|
|
||||||
|
s = umtrx_property_tree()
|
||||||
|
s.connect()
|
||||||
|
|
||||||
|
mb_path="/mboards/0"
|
||||||
|
fpga_version = s.query_string_value(mb_path+"/fpga_version")
|
||||||
|
fw_version = s.query_string_value(mb_path+"/fw_version")
|
||||||
|
|
||||||
|
print "FPGA bitstream version: %s" % fpga_version
|
||||||
|
print "ZPU firmware version: %s" % fw_version
|
||||||
|
|
||||||
|
s.close()
|
||||||
@@ -46,6 +46,8 @@ class umtrx_vswr:
|
|||||||
gamma = self._gamma
|
gamma = self._gamma
|
||||||
if gamma == 1.0:
|
if gamma == 1.0:
|
||||||
return float("inf")
|
return float("inf")
|
||||||
|
elif gamma > 1.0:
|
||||||
|
return float("nan")
|
||||||
else:
|
else:
|
||||||
return (1+gamma)/(1-gamma)
|
return (1+gamma)/(1-gamma)
|
||||||
|
|
||||||
@@ -54,15 +56,21 @@ class umtrx_vswr:
|
|||||||
gamma = self._gamma
|
gamma = self._gamma
|
||||||
if gamma == 1.0:
|
if gamma == 1.0:
|
||||||
return float("-inf")
|
return float("-inf")
|
||||||
|
elif gamma > 1.0:
|
||||||
|
return float("nan")
|
||||||
else:
|
else:
|
||||||
return -10.0 * math.log(1.0-gamma*gamma, 10)
|
return -10.0 * math.log(1.0-gamma*gamma, 10)
|
||||||
|
|
||||||
def pf_rate(self):
|
def pf_rate(self):
|
||||||
''' Estimated reflected power rate, % '''
|
''' Estimated reflected power rate, % '''
|
||||||
gamma = self._gamma
|
gamma = self._gamma
|
||||||
|
if gamma > 1.0:
|
||||||
|
return float("nan")
|
||||||
return 1.0 - gamma*gamma
|
return 1.0 - gamma*gamma
|
||||||
|
|
||||||
def pr_rate(self):
|
def pr_rate(self):
|
||||||
''' Estimated reflected power rate, % '''
|
''' Estimated reflected power rate, % '''
|
||||||
gamma = self._gamma
|
gamma = self._gamma
|
||||||
|
if gamma > 1.0:
|
||||||
|
return float("nan")
|
||||||
return gamma*gamma
|
return gamma*gamma
|
||||||
|
|||||||
Reference in New Issue
Block a user