Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
常顺宇
OpenXG-RAN
Commits
806b6a95
Commit
806b6a95
authored
May 25, 2016
by
Cedric Roux
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove remote_old.c
parent
187e7906
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
0 additions
and
462 deletions
+0
-462
common/utils/T/tracer/Makefile.remote
common/utils/T/tracer/Makefile.remote
+0
-3
common/utils/T/tracer/remote_old.c
common/utils/T/tracer/remote_old.c
+0
-459
No files found.
common/utils/T/tracer/Makefile.remote
View file @
806b6a95
...
...
@@ -5,9 +5,6 @@ CFLAGS=-Wall -g -pthread -DT_TRACER -I.
LIBS
=
-lX11
-lm
-lpng
-lXft
tracer_remote
:
remote_old.o plot.o database.o gui.o utils.o gui/gui.a
$(CC)
$(CFLAGS)
-o
tracer_remote
$^
$(LIBS)
textlog
:
utils.o textlog.o database.o event.o handler.o
\
event_selector.o view/view.a gui/gui.a logger/logger.a
$(CC)
$(CFLAGS)
-o
textlog
$^
$(LIBS)
...
...
common/utils/T/tracer/remote_old.c
deleted
100644 → 0
View file @
187e7906
#include <stdio.h>
#include <string.h>
#include <netinet/ip.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <math.h>
#include <pthread.h>
#include "defs.h"
#include "database.h"
#define DEFAULT_REMOTE_PORT 2020
#define T_ID(x) x
#include "../T_IDs.h"
#include "../T_defs.h"
#define BLUE "#0c0c72"
#define RED "#d72828"
void
*
ul_plot
;
void
*
chest_plot
;
void
*
pusch_iq_plot
;
void
*
pucch_iq_plot
;
void
*
pucch_plot
;
#define GET fullread
int
fullread
(
int
fd
,
void
*
_buf
,
int
count
)
{
char
*
buf
=
_buf
;
int
ret
=
0
;
int
l
;
while
(
count
)
{
l
=
read
(
fd
,
buf
,
count
);
if
(
l
<=
0
)
{
printf
(
"read socket problem
\n
"
);
abort
();
}
count
-=
l
;
buf
+=
l
;
ret
+=
l
;
}
return
ret
;
}
int
get_connection
(
char
*
addr
,
int
port
)
{
struct
sockaddr_in
a
;
socklen_t
alen
;
int
s
,
t
;
printf
(
"waiting for connection on %s:%d
\n
"
,
addr
,
port
);
s
=
socket
(
AF_INET
,
SOCK_STREAM
,
0
);
if
(
s
==
-
1
)
{
perror
(
"socket"
);
exit
(
1
);
}
t
=
1
;
if
(
setsockopt
(
s
,
SOL_SOCKET
,
SO_REUSEADDR
,
&
t
,
sizeof
(
int
)))
{
perror
(
"setsockopt"
);
exit
(
1
);
}
a
.
sin_family
=
AF_INET
;
a
.
sin_port
=
htons
(
port
);
a
.
sin_addr
.
s_addr
=
inet_addr
(
addr
);
if
(
bind
(
s
,
(
struct
sockaddr
*
)
&
a
,
sizeof
(
a
)))
{
perror
(
"bind"
);
exit
(
1
);
}
if
(
listen
(
s
,
5
))
{
perror
(
"bind"
);
exit
(
1
);
}
alen
=
sizeof
(
a
);
t
=
accept
(
s
,
(
struct
sockaddr
*
)
&
a
,
&
alen
);
if
(
t
==
-
1
)
{
perror
(
"accept"
);
exit
(
1
);
}
close
(
s
);
printf
(
"connected
\n
"
);
return
t
;
}
void
get_string
(
int
s
,
char
*
out
)
{
while
(
1
)
{
if
(
GET
(
s
,
out
,
1
)
!=
1
)
abort
();
if
(
*
out
==
0
)
break
;
out
++
;
}
}
void
get_message
(
int
s
)
{
#define S(x, y) do { \
char str[T_BUFFER_MAX]; \
get_string(s, str); \
printf("["x"]["y"] %s", str); \
} while (0)
int32_t
size
;
int
m
;
#ifdef T_SEND_TIME
struct
timespec
t
;
#endif
if
(
GET
(
s
,
&
size
,
4
)
!=
4
)
abort
();
#ifdef T_SEND_TIME
if
(
GET
(
s
,
&
t
,
sizeof
(
struct
timespec
))
!=
sizeof
(
struct
timespec
))
abort
();
#endif
if
(
GET
(
s
,
&
m
,
sizeof
(
int
))
!=
sizeof
(
int
))
abort
();
switch
(
m
)
{
case
T_first
:
{
char
str
[
T_BUFFER_MAX
];
get_string
(
s
,
str
);
printf
(
"%s"
,
str
);
break
;
}
case
T_LEGACY_MAC_INFO
:
S
(
"MAC"
,
"INFO"
);
break
;
case
T_LEGACY_MAC_ERROR
:
S
(
"MAC"
,
"ERROR"
);
break
;
case
T_LEGACY_MAC_WARNING
:
S
(
"MAC"
,
"WARNING"
);
break
;
case
T_LEGACY_MAC_DEBUG
:
S
(
"MAC"
,
"DEBUG"
);
break
;
case
T_LEGACY_MAC_TRACE
:
S
(
"MAC"
,
"TRACE"
);
break
;
case
T_LEGACY_PHY_INFO
:
S
(
"PHY"
,
"INFO"
);
break
;
case
T_LEGACY_PHY_ERROR
:
S
(
"PHY"
,
"ERROR"
);
break
;
case
T_LEGACY_PHY_WARNING
:
S
(
"PHY"
,
"WARNING"
);
break
;
case
T_LEGACY_PHY_DEBUG
:
S
(
"PHY"
,
"DEBUG"
);
break
;
case
T_LEGACY_PHY_TRACE
:
S
(
"PHY"
,
"TRACE"
);
break
;
case
T_LEGACY_S1AP_INFO
:
S
(
"S1AP"
,
"INFO"
);
break
;
case
T_LEGACY_S1AP_ERROR
:
S
(
"S1AP"
,
"ERROR"
);
break
;
case
T_LEGACY_S1AP_WARNING
:
S
(
"S1AP"
,
"WARNING"
);
break
;
case
T_LEGACY_S1AP_DEBUG
:
S
(
"S1AP"
,
"DEBUG"
);
break
;
case
T_LEGACY_S1AP_TRACE
:
S
(
"S1AP"
,
"TRACE"
);
break
;
case
T_LEGACY_RRC_INFO
:
S
(
"RRC"
,
"INFO"
);
break
;
case
T_LEGACY_RRC_ERROR
:
S
(
"RRC"
,
"ERROR"
);
break
;
case
T_LEGACY_RRC_WARNING
:
S
(
"RRC"
,
"WARNING"
);
break
;
case
T_LEGACY_RRC_DEBUG
:
S
(
"RRC"
,
"DEBUG"
);
break
;
case
T_LEGACY_RRC_TRACE
:
S
(
"RRC"
,
"TRACE"
);
break
;
case
T_LEGACY_RLC_INFO
:
S
(
"RLC"
,
"INFO"
);
break
;
case
T_LEGACY_RLC_ERROR
:
S
(
"RLC"
,
"ERROR"
);
break
;
case
T_LEGACY_RLC_WARNING
:
S
(
"RLC"
,
"WARNING"
);
break
;
case
T_LEGACY_RLC_DEBUG
:
S
(
"RLC"
,
"DEBUG"
);
break
;
case
T_LEGACY_RLC_TRACE
:
S
(
"RLC"
,
"TRACE"
);
break
;
case
T_LEGACY_PDCP_INFO
:
S
(
"PDCP"
,
"INFO"
);
break
;
case
T_LEGACY_PDCP_ERROR
:
S
(
"PDCP"
,
"ERROR"
);
break
;
case
T_LEGACY_PDCP_WARNING
:
S
(
"PDCP"
,
"WARNING"
);
break
;
case
T_LEGACY_PDCP_DEBUG
:
S
(
"PDCP"
,
"DEBUG"
);
break
;
case
T_LEGACY_PDCP_TRACE
:
S
(
"PDCP"
,
"TRACE"
);
break
;
case
T_LEGACY_ENB_APP_INFO
:
S
(
"ENB_APP"
,
"INFO"
);
break
;
case
T_LEGACY_ENB_APP_ERROR
:
S
(
"ENB_APP"
,
"ERROR"
);
break
;
case
T_LEGACY_ENB_APP_WARNING
:
S
(
"ENB_APP"
,
"WARNING"
);
break
;
case
T_LEGACY_ENB_APP_DEBUG
:
S
(
"ENB_APP"
,
"DEBUG"
);
break
;
case
T_LEGACY_ENB_APP_TRACE
:
S
(
"ENB_APP"
,
"TRACE"
);
break
;
case
T_LEGACY_SCTP_INFO
:
S
(
"SCTP"
,
"INFO"
);
break
;
case
T_LEGACY_SCTP_ERROR
:
S
(
"SCTP"
,
"ERROR"
);
break
;
case
T_LEGACY_SCTP_WARNING
:
S
(
"SCTP"
,
"WARNING"
);
break
;
case
T_LEGACY_SCTP_DEBUG
:
S
(
"SCTP"
,
"DEBUG"
);
break
;
case
T_LEGACY_SCTP_TRACE
:
S
(
"SCTP"
,
"TRACE"
);
break
;
case
T_LEGACY_UDP__INFO
:
S
(
"UDP"
,
"INFO"
);
break
;
case
T_LEGACY_UDP__ERROR
:
S
(
"UDP"
,
"ERROR"
);
break
;
case
T_LEGACY_UDP__WARNING
:
S
(
"UDP"
,
"WARNING"
);
break
;
case
T_LEGACY_UDP__DEBUG
:
S
(
"UDP"
,
"DEBUG"
);
break
;
case
T_LEGACY_UDP__TRACE
:
S
(
"UDP"
,
"TRACE"
);
break
;
case
T_LEGACY_NAS_INFO
:
S
(
"NAS"
,
"INFO"
);
break
;
case
T_LEGACY_NAS_ERROR
:
S
(
"NAS"
,
"ERROR"
);
break
;
case
T_LEGACY_NAS_WARNING
:
S
(
"NAS"
,
"WARNING"
);
break
;
case
T_LEGACY_NAS_DEBUG
:
S
(
"NAS"
,
"DEBUG"
);
break
;
case
T_LEGACY_NAS_TRACE
:
S
(
"NAS"
,
"TRACE"
);
break
;
case
T_LEGACY_HW_INFO
:
S
(
"HW"
,
"INFO"
);
break
;
case
T_LEGACY_HW_ERROR
:
S
(
"HW"
,
"ERROR"
);
break
;
case
T_LEGACY_HW_WARNING
:
S
(
"HW"
,
"WARNING"
);
break
;
case
T_LEGACY_HW_DEBUG
:
S
(
"HW"
,
"DEBUG"
);
break
;
case
T_LEGACY_HW_TRACE
:
S
(
"HW"
,
"TRACE"
);
break
;
case
T_LEGACY_EMU_INFO
:
S
(
"EMU"
,
"INFO"
);
break
;
case
T_LEGACY_EMU_ERROR
:
S
(
"EMU"
,
"ERROR"
);
break
;
case
T_LEGACY_EMU_WARNING
:
S
(
"EMU"
,
"WARNING"
);
break
;
case
T_LEGACY_EMU_DEBUG
:
S
(
"EMU"
,
"DEBUG"
);
break
;
case
T_LEGACY_EMU_TRACE
:
S
(
"EMU"
,
"TRACE"
);
break
;
case
T_LEGACY_OTG_INFO
:
S
(
"OTG"
,
"INFO"
);
break
;
case
T_LEGACY_OTG_ERROR
:
S
(
"OTG"
,
"ERROR"
);
break
;
case
T_LEGACY_OTG_WARNING
:
S
(
"OTG"
,
"WARNING"
);
break
;
case
T_LEGACY_OTG_DEBUG
:
S
(
"OTG"
,
"DEBUG"
);
break
;
case
T_LEGACY_OTG_TRACE
:
S
(
"OTG"
,
"TRACE"
);
break
;
case
T_LEGACY_OCG_INFO
:
S
(
"OCG"
,
"INFO"
);
break
;
case
T_LEGACY_OCG_ERROR
:
S
(
"OCG"
,
"ERROR"
);
break
;
case
T_LEGACY_OCG_WARNING
:
S
(
"OCG"
,
"WARNING"
);
break
;
case
T_LEGACY_OCG_DEBUG
:
S
(
"OCG"
,
"DEBUG"
);
break
;
case
T_LEGACY_OCG_TRACE
:
S
(
"OCG"
,
"TRACE"
);
break
;
case
T_LEGACY_OCM_INFO
:
S
(
"OCM"
,
"INFO"
);
break
;
case
T_LEGACY_OCM_ERROR
:
S
(
"OCM"
,
"ERROR"
);
break
;
case
T_LEGACY_OCM_WARNING
:
S
(
"OCM"
,
"WARNING"
);
break
;
case
T_LEGACY_OCM_DEBUG
:
S
(
"OCM"
,
"DEBUG"
);
break
;
case
T_LEGACY_OCM_TRACE
:
S
(
"OCM"
,
"TRACE"
);
break
;
case
T_LEGACY_OMG_INFO
:
S
(
"OMG"
,
"INFO"
);
break
;
case
T_LEGACY_OMG_ERROR
:
S
(
"OMG"
,
"ERROR"
);
break
;
case
T_LEGACY_OMG_WARNING
:
S
(
"OMG"
,
"WARNING"
);
break
;
case
T_LEGACY_OMG_DEBUG
:
S
(
"OMG"
,
"DEBUG"
);
break
;
case
T_LEGACY_OMG_TRACE
:
S
(
"OMG"
,
"TRACE"
);
break
;
case
T_LEGACY_OIP_INFO
:
S
(
"OIP"
,
"INFO"
);
break
;
case
T_LEGACY_OIP_ERROR
:
S
(
"OIP"
,
"ERROR"
);
break
;
case
T_LEGACY_OIP_WARNING
:
S
(
"OIP"
,
"WARNING"
);
break
;
case
T_LEGACY_OIP_DEBUG
:
S
(
"OIP"
,
"DEBUG"
);
break
;
case
T_LEGACY_OIP_TRACE
:
S
(
"OIP"
,
"TRACE"
);
break
;
case
T_LEGACY_GTPU_INFO
:
S
(
"GTPU"
,
"INFO"
);
break
;
case
T_LEGACY_GTPU_ERROR
:
S
(
"GTPU"
,
"ERROR"
);
break
;
case
T_LEGACY_GTPU_WARNING
:
S
(
"GTPU"
,
"WARNING"
);
break
;
case
T_LEGACY_GTPU_DEBUG
:
S
(
"GTPU"
,
"DEBUG"
);
break
;
case
T_LEGACY_GTPU_TRACE
:
S
(
"GTPU"
,
"TRACE"
);
break
;
case
T_LEGACY_TMR_INFO
:
S
(
"TMR"
,
"INFO"
);
break
;
case
T_LEGACY_TMR_ERROR
:
S
(
"TMR"
,
"ERROR"
);
break
;
case
T_LEGACY_TMR_WARNING
:
S
(
"TMR"
,
"WARNING"
);
break
;
case
T_LEGACY_TMR_DEBUG
:
S
(
"TMR"
,
"DEBUG"
);
break
;
case
T_LEGACY_TMR_TRACE
:
S
(
"TMR"
,
"TRACE"
);
break
;
case
T_LEGACY_OSA_INFO
:
S
(
"OSA"
,
"INFO"
);
break
;
case
T_LEGACY_OSA_ERROR
:
S
(
"OSA"
,
"ERROR"
);
break
;
case
T_LEGACY_OSA_WARNING
:
S
(
"OSA"
,
"WARNING"
);
break
;
case
T_LEGACY_OSA_DEBUG
:
S
(
"OSA"
,
"DEBUG"
);
break
;
case
T_LEGACY_OSA_TRACE
:
S
(
"OSA"
,
"TRACE"
);
break
;
case
T_LEGACY_component_INFO
:
S
(
"XXX"
,
"INFO"
);
break
;
case
T_LEGACY_component_ERROR
:
S
(
"XXX"
,
"ERROR"
);
break
;
case
T_LEGACY_component_WARNING
:
S
(
"XXX"
,
"WARNING"
);
break
;
case
T_LEGACY_component_DEBUG
:
S
(
"XXX"
,
"DEBUG"
);
break
;
case
T_LEGACY_component_TRACE
:
S
(
"XXX"
,
"TRACE"
);
break
;
case
T_LEGACY_componentP_INFO
:
S
(
"XXX"
,
"INFO"
);
break
;
case
T_LEGACY_componentP_ERROR
:
S
(
"XXX"
,
"ERROR"
);
break
;
case
T_LEGACY_componentP_WARNING
:
S
(
"XXX"
,
"WARNING"
);
break
;
case
T_LEGACY_componentP_DEBUG
:
S
(
"XXX"
,
"DEBUG"
);
break
;
case
T_LEGACY_componentP_TRACE
:
S
(
"XXX"
,
"TRACE"
);
break
;
case
T_LEGACY_CLI_INFO
:
S
(
"CLI"
,
"INFO"
);
break
;
case
T_LEGACY_CLI_ERROR
:
S
(
"CLI"
,
"ERROR"
);
break
;
case
T_LEGACY_CLI_WARNING
:
S
(
"CLI"
,
"WARNING"
);
break
;
case
T_LEGACY_CLI_DEBUG
:
S
(
"CLI"
,
"DEBUG"
);
break
;
case
T_LEGACY_CLI_TRACE
:
S
(
"CLI"
,
"TRACE"
);
break
;
case
T_ENB_INPUT_SIGNAL
:
{
unsigned
char
buf
[
T_BUFFER_MAX
];
int
size
;
int
eNB
,
frame
,
subframe
,
antenna
;
GET
(
s
,
&
eNB
,
sizeof
(
int
));
GET
(
s
,
&
frame
,
sizeof
(
int
));
GET
(
s
,
&
subframe
,
sizeof
(
int
));
GET
(
s
,
&
antenna
,
sizeof
(
int
));
GET
(
s
,
&
size
,
sizeof
(
int
));
GET
(
s
,
buf
,
size
);
#if 0
printf("got T_ENB_INPUT_SIGNAL eNB %d frame %d subframe %d antenna "
"%d size %d %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x "
"%2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x\n",
eNB, frame, subframe, antenna, size, buf[0],buf[1],buf[2],
buf[3],buf[4],buf[5],buf[6],buf[7],buf[8],buf[9],buf[10],
buf[11],buf[12],buf[13],buf[14],buf[15]);
#endif
if
(
size
!=
4
*
7680
)
{
printf
(
"bad T_ENB_INPUT_SIGNAL, only 7680 samples allowed "
"(received %d bytes = %d samples)
\n
"
,
size
,
size
/
4
);
abort
();}
if
(
ul_plot
)
iq_plot_set
(
ul_plot
,
(
short
*
)
buf
,
7680
,
subframe
*
7680
,
0
);
t_gui_set_input_signal
(
eNB
,
frame
,
subframe
,
antenna
,
size
,
buf
);
break
;
}
case
T_ENB_UL_CHANNEL_ESTIMATE
:
{
unsigned
char
buf
[
T_BUFFER_MAX
];
int
size
;
int
eNB
,
UE
,
frame
,
subframe
,
antenna
;
GET
(
s
,
&
eNB
,
sizeof
(
int
));
GET
(
s
,
&
UE
,
sizeof
(
int
));
GET
(
s
,
&
frame
,
sizeof
(
int
));
GET
(
s
,
&
subframe
,
sizeof
(
int
));
GET
(
s
,
&
antenna
,
sizeof
(
int
));
GET
(
s
,
&
size
,
sizeof
(
int
));
GET
(
s
,
buf
,
size
);
if
(
size
!=
512
*
4
)
{
printf
(
"bad T_ENB_UL_CHANNEL_ESTIMATE, only 512 samples allowed
\n
"
);
abort
();}
if
(
chest_plot
)
iq_plot_set
(
chest_plot
,
(
short
*
)
buf
,
512
,
0
,
0
);
break
;
}
case
T_PUSCH_IQ
:
{
unsigned
char
buf
[
T_BUFFER_MAX
];
int
size
;
int
eNB
,
UE
,
frame
,
subframe
,
nb_rb
;
GET
(
s
,
&
eNB
,
sizeof
(
int
));
GET
(
s
,
&
UE
,
sizeof
(
int
));
GET
(
s
,
&
frame
,
sizeof
(
int
));
GET
(
s
,
&
subframe
,
sizeof
(
int
));
GET
(
s
,
&
nb_rb
,
sizeof
(
int
));
GET
(
s
,
&
size
,
sizeof
(
int
));
GET
(
s
,
buf
,
size
);
if
(
size
!=
12
*
25
*
14
*
4
)
{
printf
(
"bad T_PUSCH_IQ, we want 25 RBs and 14 symbols/TTI
\n
"
);
abort
();}
if
(
pusch_iq_plot
)
{
uint32_t
*
src
,
*
dst
;
int
i
,
l
;
dst
=
(
uint32_t
*
)
buf
;
for
(
l
=
0
;
l
<
14
;
l
++
)
{
src
=
(
uint32_t
*
)
buf
+
l
*
12
*
25
;
for
(
i
=
0
;
i
<
nb_rb
*
12
;
i
++
)
*
dst
++
=
*
src
++
;
}
iq_plot_set_sized
(
pusch_iq_plot
,
(
short
*
)
buf
,
nb_rb
*
12
*
14
,
0
);
}
break
;
}
case
T_PUCCH_1AB_IQ
:
{
int
eNB
,
UE
,
frame
,
subframe
,
I
,
Q
;
GET
(
s
,
&
eNB
,
sizeof
(
int
));
GET
(
s
,
&
UE
,
sizeof
(
int
));
GET
(
s
,
&
frame
,
sizeof
(
int
));
GET
(
s
,
&
subframe
,
sizeof
(
int
));
GET
(
s
,
&
I
,
sizeof
(
int
));
GET
(
s
,
&
Q
,
sizeof
(
int
));
if
(
pucch_iq_plot
)
iq_plot_add_iq_point_loop
(
pucch_iq_plot
,
I
*
10
,
Q
*
10
,
0
);
break
;
}
case
T_PUCCH_1_ENERGY
:
{
int
eNB
,
UE
,
frame
,
subframe
,
e
,
t
;
GET
(
s
,
&
eNB
,
sizeof
(
int
));
GET
(
s
,
&
UE
,
sizeof
(
int
));
GET
(
s
,
&
frame
,
sizeof
(
int
));
GET
(
s
,
&
subframe
,
sizeof
(
int
));
GET
(
s
,
&
e
,
sizeof
(
int
));
GET
(
s
,
&
t
,
sizeof
(
int
));
//printf("t %d e %d\n", t, (int)(10*log10(e)));
if
(
pucch_plot
)
{
iq_plot_add_energy_point_loop
(
pucch_plot
,
t
,
0
);
iq_plot_add_energy_point_loop
(
pucch_plot
,
10
*
log10
(
e
),
1
);
}
break
;
}
case
T_buf_test
:
{
unsigned
char
buf
[
T_BUFFER_MAX
];
int
size
;
GET
(
s
,
&
size
,
sizeof
(
int
));
GET
(
s
,
buf
,
size
);
printf
(
"got buffer size %d %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x"
" %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x
\n
"
,
size
,
buf
[
0
],
buf
[
1
],
buf
[
2
],
buf
[
3
],
buf
[
4
],
buf
[
5
],
buf
[
6
],
buf
[
7
],
buf
[
8
],
buf
[
9
],
buf
[
10
],
buf
[
11
],
buf
[
12
],
buf
[
13
],
buf
[
14
],
buf
[
15
]);
break
;
}
default:
printf
(
"unkown message type %d
\n
"
,
m
);
abort
();
}
}
void
usage
(
void
)
{
printf
(
"tracer - remote side
\n
"
"options:
\n
"
" -d <database file> this option is mandatory
\n
"
" -li print IDs in the database
\n
"
" -lg print GROUPs in the database
\n
"
" -dump dump the database
\n
"
" -x run with XFORMS (revisited)
\n
"
" -T run with T GUI
\n
"
" -on <GROUP or ID> turn log ON for given GROUP or ID
\n
"
" -off <GROUP or ID> turn log OFF for given GROUP or ID
\n
"
" -ON turn all logs ON
\n
"
" -OFF turn all logs OFF
\n
"
"note: you may pass several -on/-off/-ON/-OFF, they will be processed in order
\n
"
" by default, all is off
\n
"
" -r <port> remote side: use given port (default %d)
\n
"
,
DEFAULT_REMOTE_PORT
);
exit
(
1
);
}
int
main
(
int
n
,
char
**
v
)
{
char
*
database_filename
=
NULL
;
void
*
database
;
int
s
;
int
l
;
char
t
;
int
i
;
int
do_list_ids
=
0
;
int
do_list_groups
=
0
;
int
do_dump_database
=
0
;
int
do_xforms
=
0
;
int
do_T_gui
=
0
;
char
**
on_off_name
;
int
*
on_off_action
;
int
on_off_n
=
0
;
int
is_on
[
T_NUMBER_OF_IDS
];
int
port
=
DEFAULT_REMOTE_PORT
;
memset
(
is_on
,
0
,
sizeof
(
is_on
));
on_off_name
=
malloc
(
n
*
sizeof
(
char
*
));
if
(
on_off_name
==
NULL
)
abort
();
on_off_action
=
malloc
(
n
*
sizeof
(
int
));
if
(
on_off_action
==
NULL
)
abort
();
for
(
i
=
1
;
i
<
n
;
i
++
)
{
if
(
!
strcmp
(
v
[
i
],
"-h"
)
||
!
strcmp
(
v
[
i
],
"--help"
))
usage
();
if
(
!
strcmp
(
v
[
i
],
"-d"
))
{
if
(
i
>
n
-
2
)
usage
();
database_filename
=
v
[
++
i
];
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-li"
))
{
do_list_ids
=
1
;
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-lg"
))
{
do_list_groups
=
1
;
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-dump"
))
{
do_dump_database
=
1
;
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-x"
))
{
do_xforms
=
1
;
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-T"
))
{
do_T_gui
=
1
;
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-on"
))
{
if
(
i
>
n
-
2
)
usage
();
on_off_name
[
on_off_n
]
=
v
[
++
i
];
on_off_action
[
on_off_n
++
]
=
1
;
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-off"
))
{
if
(
i
>
n
-
2
)
usage
();
on_off_name
[
on_off_n
]
=
v
[
++
i
];
on_off_action
[
on_off_n
++
]
=
0
;
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-ON"
))
{
on_off_name
[
on_off_n
]
=
NULL
;
on_off_action
[
on_off_n
++
]
=
1
;
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-OFF"
))
{
on_off_name
[
on_off_n
]
=
NULL
;
on_off_action
[
on_off_n
++
]
=
0
;
continue
;
}
if
(
!
strcmp
(
v
[
i
],
"-r"
))
{
if
(
i
>
n
-
2
)
usage
();
port
=
atoi
(
v
[
++
i
]);
continue
;
}
printf
(
"ERROR: unknown option %s
\n
"
,
v
[
i
]);
usage
();
}
/* TODO: setup 'secure' connection with remote part */
if
(
database_filename
==
NULL
)
{
printf
(
"ERROR: provide a database file (-d)
\n
"
);
exit
(
1
);
}
database
=
parse_database
(
database_filename
);
if
(
do_list_ids
+
do_list_groups
+
do_dump_database
>
1
)
usage
();
if
(
do_list_ids
)
{
list_ids
(
database
);
return
0
;
}
if
(
do_list_groups
)
{
list_groups
(
database
);
return
0
;
}
if
(
do_dump_database
)
{
dump_database
(
database
);
return
0
;
}
for
(
i
=
0
;
i
<
on_off_n
;
i
++
)
on_off
(
database
,
on_off_name
[
i
],
is_on
,
on_off_action
[
i
]);
if
(
do_xforms
)
{
ul_plot
=
make_plot
(
512
,
100
,
"UL Input Signal"
,
1
,
7680
*
10
,
PLOT_VS_TIME
,
BLUE
);
chest_plot
=
make_plot
(
512
,
100
,
"UL Channel Estimate UE 0"
,
1
,
512
,
PLOT_VS_TIME
,
BLUE
);
pusch_iq_plot
=
make_plot
(
100
,
100
,
"PUSCH IQ"
,
1
,
12
*
25
*
14
,
PLOT_IQ_POINTS
,
BLUE
);
pucch_iq_plot
=
make_plot
(
100
,
100
,
"PUCCH IQ"
,
1
,
1000
,
PLOT_IQ_POINTS
,
BLUE
);
pucch_plot
=
make_plot
(
512
,
100
,
"PUCCH 1 energy (SR)"
,
2
,
/* threshold */
10240
,
PLOT_MINMAX
,
RED
,
/* pucch 1 */
10240
,
PLOT_MINMAX
,
BLUE
);
}
if
(
do_T_gui
)
{
t_gui_start
();
}
s
=
get_connection
(
"127.0.0.1"
,
port
);
/* send the first message - activate selected traces */
t
=
0
;
if
(
write
(
s
,
&
t
,
1
)
!=
1
)
abort
();
l
=
0
;
for
(
i
=
0
;
i
<
T_NUMBER_OF_IDS
;
i
++
)
if
(
is_on
[
i
])
l
++
;
if
(
write
(
s
,
&
l
,
sizeof
(
int
))
!=
sizeof
(
int
))
abort
();
for
(
l
=
0
;
l
<
T_NUMBER_OF_IDS
;
l
++
)
if
(
is_on
[
l
])
if
(
write
(
s
,
&
l
,
sizeof
(
int
))
!=
sizeof
(
int
))
abort
();
/* read messages */
while
(
1
)
{
get_message
(
s
);
}
return
0
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment