Skip to content
Snippets Groups Projects
Commit 6a82c1f4 authored by Daniel van der Schuur's avatar Daniel van der Schuur
Browse files

-Increased buffer sized as recommended by Pieter D (this fixed a segfault)

-Added BF weight read/write arguments and funcitons.
parent 94d034df
No related branches found
No related tags found
No related merge requests found
...@@ -50,7 +50,7 @@ public: ...@@ -50,7 +50,7 @@ public:
int n_beamsets; int n_beamsets;
}; };
#define MAX_DATA_SIZE 32800 // Size of data array in cCmd and cReply. #define MAX_DATA_SIZE 65536 // Size of data array in cCmd and cReply.
#define MAX_ADDR_SIZE 128 // Size of rel_addr in cCmd. #define MAX_ADDR_SIZE 128 // Size of rel_addr in cCmd.
#define MAX_TYPE_SIZE 8 // Size of rel_addr in cCmd. #define MAX_TYPE_SIZE 8 // Size of rel_addr in cCmd.
......
...@@ -90,10 +90,8 @@ static UA_StatusCode ua_read_DataSource(UA_Server *server, ...@@ -90,10 +90,8 @@ static UA_StatusCode ua_read_DataSource(UA_Server *server,
char *regname = new char[nodeId->identifier.string.length + 1]; char *regname = new char[nodeId->identifier.string.length + 1];
memcpy((void *)regname, (void *)nodeId->identifier.string.data, nodeId->identifier.string.length); memcpy((void *)regname, (void *)nodeId->identifier.string.data, nodeId->identifier.string.length);
regname[nodeId->identifier.string.length] = 0; // add end of string char regname[nodeId->identifier.string.length] = 0; // add end of string char
UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND, UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND,
"ua_read_DataSource: reading from %s",regname); "ua_read_DataSource: reading from %s",regname);
UA_NodeId currentNodeId = UA_NODEID_STRING(mUaLofarNameSpace, (char *)regname); UA_NodeId currentNodeId = UA_NODEID_STRING(mUaLofarNameSpace, (char *)regname);
UA_NodeId ntype; UA_NodeId ntype;
//UA_StatusCode st = //UA_StatusCode st =
......
...@@ -349,6 +349,7 @@ bool Periph_fpga::read(TermOutput& termout, const string addr, ...@@ -349,6 +349,7 @@ bool Periph_fpga::read(TermOutput& termout, const string addr,
} }
else if (addr == "fpga/bf_weights_xy_yx") { else if (addr == "fpga/bf_weights_xy_yx") {
retval = read_bf_weights_xy_yx(termout, format); retval = read_bf_weights_xy_yx(termout, format);
}
else if (addr == "fpga/pps_expected_cnt") { else if (addr == "fpga/pps_expected_cnt") {
retval = read_pps_expected_cnt(termout, format); retval = read_pps_expected_cnt(termout, format);
} }
......
...@@ -54,9 +54,9 @@ class TermOutput { ...@@ -54,9 +54,9 @@ class TermOutput {
public: public:
#define SIZE400K 400000 #define SIZE400K 400000
#define SIZE800K 800000
char val[SIZE800K];
char val[SIZE400K];
unsigned int nof_vals; unsigned int nof_vals;
int datatype; int datatype;
...@@ -66,7 +66,7 @@ public: ...@@ -66,7 +66,7 @@ public:
void clear(void) { void clear(void) {
nof_vals = 0; nof_vals = 0;
datatype = 0; datatype = 0;
std::memset((void *)val, 0, SIZE400K); std::memset((void *)val, 0, SIZE800K);
} }
}; };
......
...@@ -42,9 +42,10 @@ sys.path.insert(0, "..") ...@@ -42,9 +42,10 @@ sys.path.insert(0, "..")
Temp_only = True Temp_only = True
N_NODES = 16 N_NODES = 16
N_BEAMSETS = 1 N_BEAMSETS = 2
S_PN = 12 S_PN = 12
N_SUB = 512 N_SUB = 512
S_SUB_BF = 488
# #
...@@ -455,6 +456,28 @@ def set_beamlet_stream(obj, stream_on=False): ...@@ -455,6 +456,28 @@ def set_beamlet_stream(obj, stream_on=False):
var.set_value(ua.Variant(value=list(enable), varianttype=ua.VariantType.Boolean)) var.set_value(ua.Variant(value=list(enable), varianttype=ua.VariantType.Boolean))
def read_bf_weights(obj, subset):
"""
Read BeamFormer weights.
. 12 antennas * 2 beamsets * 488 weights per node.
"""
print("Reading weights subset:", subset)
var = obj.get_child("2:FPGA_bf_weights_xx_yy_R")
vals = var.get_value()
pp.pprint(vals, compact=True)
def write_bf_weights(obj, weight):
"""
Write BeamFormer weights.
. 12 antennas * 2 beamsets * 488 weights per node.
"""
weights = [weight] * N_NODES * S_PN * N_BEAMSETS * S_SUB_BF
print("len(weights): %d" %len(weights))
var = obj.get_child("2:FPGA_bf_weights_xx_yy_RW")
var.set_value(ua.Variant(value=list(weights), varianttype=ua.VariantType.UInt32))
if __name__ == "__main__": if __name__ == "__main__":
# Parse command line arguments # Parse command line arguments
parser = argparse.ArgumentParser(description="opcua client command line argument parser") parser = argparse.ArgumentParser(description="opcua client command line argument parser")
...@@ -467,6 +490,8 @@ if __name__ == "__main__": ...@@ -467,6 +490,8 @@ if __name__ == "__main__":
parser.add_argument('--wg', dest='wg_mode', type=str, choices=['OFF', 'XST', 'SIN'], help="turn wg off/on for xst") parser.add_argument('--wg', dest='wg_mode', type=str, choices=['OFF', 'XST', 'SIN'], help="turn wg off/on for xst")
parser.add_argument('--set-sb-weights', dest='set_sb_weights', type=int, help="set subband weights") parser.add_argument('--set-sb-weights', dest='set_sb_weights', type=int, help="set subband weights")
parser.add_argument('--get-sb-weights', dest='get_sb_weights', action='store_true', help="get subband weights") parser.add_argument('--get-sb-weights', dest='get_sb_weights', action='store_true', help="get subband weights")
parser.add_argument('--set-bf-weights', dest='set_bf_weights', type=int, help="set beamformer weights")
parser.add_argument('--get-bf-weights', dest='get_bf_weights', type=str, choices=['XX_YY'], help="get beamformer weights")
parser.add_argument('--freq', dest='wg_freq', type=float, default=1e6, help="set wg freq") parser.add_argument('--freq', dest='wg_freq', type=float, default=1e6, help="set wg freq")
parser.add_argument('--ampl', dest='wg_ampl', type=float, default=1.0, help="set wg ampl") parser.add_argument('--ampl', dest='wg_ampl', type=float, default=1.0, help="set wg ampl")
parser.add_argument('--phase', dest='wg_phase', type=float, default=0.0, help="set wg phase") parser.add_argument('--phase', dest='wg_phase', type=float, default=0.0, help="set wg phase")
...@@ -514,6 +539,7 @@ if __name__ == "__main__": ...@@ -514,6 +539,7 @@ if __name__ == "__main__":
print("\n=============================") print("\n=============================")
Object = client.get_objects_node() Object = client.get_objects_node()
fpga_mask = get_fpga_mask(Object) # get active fpga_mask fpga_mask = get_fpga_mask(Object) # get active fpga_mask
write_fpga_mask(Object, nodes=node_list) write_fpga_mask(Object, nodes=node_list)
...@@ -585,6 +611,10 @@ if __name__ == "__main__": ...@@ -585,6 +611,10 @@ if __name__ == "__main__":
if args.plot == 'HIST': if args.plot == 'HIST':
plot_histogram(Object, nodes=node_list, inputs=input_list) plot_histogram(Object, nodes=node_list, inputs=input_list)
if args.get_bf_weights is not None:
read_bf_weights(Object, args.get_bf_weights)
if args.set_bf_weights is not None:
write_bf_weights(Object, args.set_bf_weights)
# ############################## # ##############################
# TEST AREA (for new functions) # TEST AREA (for new functions)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment