Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
DIOT Zynq Ultrascale-based System Board
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
9
Issues
9
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Projects
DIOT Zynq Ultrascale-based System Board
Commits
5fc4e1ac
Commit
5fc4e1ac
authored
Feb 17, 2022
by
Grzegorz Daniluk
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
diot_util: adding csv command
parent
15cc9958
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
91 additions
and
35 deletions
+91
-35
diot_util.c
...t-spec/meta-user/recipes-apps/diot-util/files/diot_util.c
+11
-3
diot_util_sensors.c
...eta-user/recipes-apps/diot-util/files/diot_util_sensors.c
+79
-32
diot_util_sensors.h
...eta-user/recipes-apps/diot-util/files/diot_util_sensors.h
+1
-0
No files found.
sw/petalinux/project-spec/meta-user/recipes-apps/diot-util/files/diot_util.c
View file @
5fc4e1ac
...
...
@@ -43,6 +43,8 @@ struct command_entry {
char
**
command_completion
(
const
char
*
,
int
,
int
);
char
*
command_name_generator
(
const
char
*
,
int
);
int
script_mode
;
/* commands */
int
cmd_print_status
(
char
*
params
);
int
cmd_exit
(
char
*
params
);
...
...
@@ -61,6 +63,7 @@ struct command_entry commands_list[] = {
{
.
cmd_name
=
"sensors_refresh"
,
.
cmd_func
=
cmd_sensors_refresh
,
.
cmd_help_string
=
"Display sensors short version with refresh
\n
"
,
.
cmd_params
=
NULL
},
{
.
cmd_name
=
"clocks"
,
.
cmd_func
=
cmd_clocks
,
.
cmd_help_string
=
"Display info about clocks
\n
"
,
.
cmd_params
=
NULL
},
{
.
cmd_name
=
"pts"
,
.
cmd_func
=
cmd_pts
,
.
cmd_help_string
=
"Run PTS basic checks
\n
"
,
.
cmd_params
=
NULL
},
{
.
cmd_name
=
"csv"
,
.
cmd_func
=
cmd_csv
,
.
cmd_help_string
=
"Display all sensors in csv format
\n
"
,
.
cmd_params
=
NULL
},
{
.
cmd_name
=
NULL
}
};
...
...
@@ -85,7 +88,8 @@ int cmd_help(char *params)
int
cmd_exit
(
char
*
params
)
{
printf
(
"Exiting...
\n
"
);
if
(
!
script_mode
)
printf
(
"Exiting...
\n
"
);
close_gpios
();
exit
(
0
);
...
...
@@ -230,8 +234,7 @@ int main(int argc, char **argv)
char
*
curr_script_cmd
=
NULL
;
int
opt
;
printf
(
"DIOT diagnostic tool
\n\n
"
);
script_mode
=
0
;
while
((
opt
=
getopt
(
argc
,
argv
,
"he:"
))
!=
-
1
)
{
switch
(
opt
)
{
...
...
@@ -242,12 +245,17 @@ int main(int argc, char **argv)
break
;
case
'e'
:
next_script_cmd
=
script_commands
=
strdup
(
optarg
);
script_mode
=
1
;
break
;
default:
break
;
}
}
if
(
!
script_mode
)
printf
(
"DIOT diagnostic tool
\n\n
"
);
ret
=
open_gpios
();
if
(
!
script_commands
)
...
...
sw/petalinux/project-spec/meta-user/recipes-apps/diot-util/files/diot_util_sensors.c
View file @
5fc4e1ac
...
...
@@ -667,16 +667,16 @@ static void print_short_temp_hline(int n)
}
static
void
print_short_vcp_single_sensor
(
char
*
short_name
,
char
*
sensor_name
,
struct
hw_sensor
*
hw_sensors_list
)
struct
hw_sensor
*
hw_sensors_list
,
int
csv
)
{
struct
hw_sensor
*
sensor_p
;
sensor_p
=
find_hw_sensor
(
sensor_name
,
hw_sensors_list
);
if
(
sensor_p
)
{
if
(
isnan
(
sensor_p
->
read_val
))
if
(
!
csv
&&
isnan
(
sensor_p
->
read_val
))
printf
(
"%6s |%7s |"
,
"N/A"
,
"N/A"
);
else
{
else
if
(
!
csv
)
{
if
(
isnan
(
sensor_p
->
read_val
))
printf
(
"%6s |%7s |"
,
"N/A"
,
"N/A"
);
else
{
...
...
@@ -687,6 +687,9 @@ static void print_short_vcp_single_sensor(char *short_name, char *sensor_name,
sensor_p
->
alarm
?
COLOR_OFF
:
""
);
}
}
else
{
printf
(
"%6.2f,"
,
sensor_p
->
read_val
);
}
}
else
{
diot_error_add
(
"BUG: sensor %s not on the sensors list! %s
\n
"
,
short_name
,
sensor_name
);
...
...
@@ -695,42 +698,58 @@ static void print_short_vcp_single_sensor(char *short_name, char *sensor_name,
}
static
void
print_short_vcp
(
struct
short_vcp
*
vcp_list
,
struct
hw_sensor
*
hw_sensors_list
)
struct
hw_sensor
*
hw_sensors_list
,
int
csv
)
{
struct
short_vcp
*
vcp_to_print
=
vcp_list
;
for
(;
vcp_to_print
->
short_name
;
vcp_to_print
++
)
{
printf
(
"%14s |"
,
vcp_to_print
->
short_name
);
print_short_vcp_single_sensor
(
vcp_to_print
->
short_name
,
vcp_to_print
->
voltage_sensor_name
,
hw_sensors_list
);
print_short_vcp_single_sensor
(
vcp_to_print
->
short_name
,
vcp_to_print
->
current_sensor_name
,
hw_sensors_list
);
print_short_vcp_single_sensor
(
vcp_to_print
->
short_name
,
vcp_to_print
->
power_sensor_name
,
hw_sensors_list
);
printf
(
"
\n
"
);
if
(
!
csv
)
{
for
(;
vcp_to_print
->
short_name
;
vcp_to_print
++
)
{
printf
(
"%14s |"
,
vcp_to_print
->
short_name
);
print_short_vcp_single_sensor
(
vcp_to_print
->
short_name
,
vcp_to_print
->
voltage_sensor_name
,
hw_sensors_list
,
csv
);
print_short_vcp_single_sensor
(
vcp_to_print
->
short_name
,
vcp_to_print
->
current_sensor_name
,
hw_sensors_list
,
csv
);
print_short_vcp_single_sensor
(
vcp_to_print
->
short_name
,
vcp_to_print
->
power_sensor_name
,
hw_sensors_list
,
csv
);
printf
(
"
\n
"
);
}
}
else
{
/* CSV format, reduced info */
for
(;
vcp_to_print
->
short_name
;
vcp_to_print
++
)
{
print_short_vcp_single_sensor
(
vcp_to_print
->
short_name
,
vcp_to_print
->
voltage_sensor_name
,
hw_sensors_list
,
csv
);
print_short_vcp_single_sensor
(
vcp_to_print
->
short_name
,
vcp_to_print
->
current_sensor_name
,
hw_sensors_list
,
csv
);
}
}
}
static
void
print_short_temp_print_values
(
struct
sensor_short
*
sensors_print_list
,
struct
hw_sensor
*
hw_sensors_list
)
struct
hw_sensor
*
hw_sensors_list
,
int
csv
)
{
struct
sensor_short
*
sensor_to_read
=
sensors_print_list
;
struct
hw_sensor
*
sensor_p
;
char
sep
=
csv
?
','
:
'|'
;
for
(;
sensor_to_read
->
short_name
;
sensor_to_read
++
)
{
sensor_p
=
find_hw_sensor
(
sensor_to_read
->
sensor_name
,
hw_sensors_list
);
if
(
sensor_p
)
{
if
(
isnan
(
sensor_p
->
read_val
))
printf
(
"%6s
|"
,
"N/A"
);
else
printf
(
"%6s
%c"
,
"N/A"
,
sep
);
else
if
(
!
csv
)
{
printf
(
"%s%6.1f%s |"
,
sensor_p
->
alarm
?
COLOR_RED
:
""
,
sensor_p
->
read_val
,
sensor_p
->
alarm
?
COLOR_OFF
:
""
);
}
else
{
printf
(
"%6.1f,"
,
sensor_p
->
read_val
);
}
}
else
{
diot_error_add
(
"BUG: sensor %s not on the sensors list!
\n
"
,
sensor_to_read
->
short_name
);
...
...
@@ -769,18 +788,22 @@ static double get_max_temp(struct sensor_short *sensors_print_list,
}
static
void
print_short_max_temp
(
struct
sensor_short
*
sensors_print_list
,
struct
hw_sensor
*
hw_sensors_list
)
struct
hw_sensor
*
hw_sensors_list
,
int
csv
)
{
double
max_val
=
NAN
;
int
alarm
=
0
;
char
sep
=
csv
?
','
:
'|'
;
max_val
=
get_max_temp
(
sensors_print_list
,
hw_sensors_list
,
&
alarm
);
if
(
isnan
(
max_val
))
printf
(
"%6s
|"
,
"N/A"
);
else
printf
(
"%6s
%c"
,
"N/A"
,
sep
);
else
if
(
!
csv
)
{
printf
(
"%s%6.1f%s |"
,
alarm
?
COLOR_RED
:
""
,
max_val
,
alarm
?
COLOR_OFF
:
""
);
}
else
{
printf
(
"%6.1f,"
,
max_val
);
}
}
...
...
@@ -815,12 +838,12 @@ static void print_short_temp(void)
printf
(
"
\n
"
);
/* Print sensors' values */
print_short_temp_print_values
(
temp_sensors_list
,
hw_sensors_temp_list
);
print_short_max_temp
(
temp_sensors_irps1_list
,
hw_sensors_temp_list
);
print_short_max_temp
(
temp_sensors_irps2_list
,
hw_sensors_temp_list
);
print_short_max_temp
(
temp_sensors_psu1_list
,
hw_sensors_temp_list
);
print_short_max_temp
(
temp_sensors_psu2_list
,
hw_sensors_temp_list
);
print_short_max_temp
(
temp_sensors_monimod_list
,
hw_sensors_temp_list
);
print_short_temp_print_values
(
temp_sensors_list
,
hw_sensors_temp_list
,
0
);
print_short_max_temp
(
temp_sensors_irps1_list
,
hw_sensors_temp_list
,
0
);
print_short_max_temp
(
temp_sensors_irps2_list
,
hw_sensors_temp_list
,
0
);
print_short_max_temp
(
temp_sensors_psu1_list
,
hw_sensors_temp_list
,
0
);
print_short_max_temp
(
temp_sensors_psu2_list
,
hw_sensors_temp_list
,
0
);
print_short_max_temp
(
temp_sensors_monimod_list
,
hw_sensors_temp_list
,
0
);
printf
(
"
\n
"
);
/* Print line */
...
...
@@ -831,6 +854,16 @@ static void print_short_temp(void)
printf
(
"
\n
"
);
}
static
void
print_csv_temp
(
void
)
{
print_short_temp_print_values
(
temp_sensors_list
,
hw_sensors_temp_list
,
1
);
print_short_max_temp
(
temp_sensors_irps1_list
,
hw_sensors_temp_list
,
1
);
print_short_max_temp
(
temp_sensors_irps2_list
,
hw_sensors_temp_list
,
1
);
print_short_max_temp
(
temp_sensors_psu1_list
,
hw_sensors_temp_list
,
1
);
print_short_max_temp
(
temp_sensors_psu2_list
,
hw_sensors_temp_list
,
1
);
print_short_max_temp
(
temp_sensors_monimod_list
,
hw_sensors_temp_list
,
1
);
}
static
void
print_irps_short
(
void
)
{
printf
(
"Voltage/Current/Power readouts:
\n
"
);
...
...
@@ -838,18 +871,18 @@ static void print_irps_short(void)
printf
(
"IRPS1 | Voltage (V) | Current (A) | Power (W) |
\n
"
);
printf
(
" | read | status | read | status | read | status |
\n
"
);
printf
(
"---------------+-------+--------+-------+--------+-------+--------+
\n
"
);
print_short_vcp
(
irps1_entries
,
hw_sensors_vcp_list
);
print_short_vcp
(
irps1_entries
,
hw_sensors_vcp_list
,
0
);
printf
(
"---------------+----------------+----------------+----------------+
\n
"
);
printf
(
"IRPS2 | Voltage (V) | Current (A) | Power (W) |
\n
"
);
printf
(
" | read | status | read | status | read | status |
\n
"
);
printf
(
"---------------+-------+--------+-------+--------+-------+--------+
\n
"
);
print_short_vcp
(
irps2_entries
,
hw_sensors_vcp_list
);
print_short_vcp
(
irps2_entries
,
hw_sensors_vcp_list
,
0
);
printf
(
"---------------+----------------+----------------+----------------+
\n
"
);
printf
(
"PSU | Voltage (V) | Current (A) | Power (W) |
\n
"
);
printf
(
" | read | status | read | status | read | status |
\n
"
);
printf
(
"---------------+-------+--------+-------+--------+-------+--------+
\n
"
);
print_short_vcp
(
psu1_entries
,
hw_sensors_vcp_list
);
print_short_vcp
(
psu2_entries
,
hw_sensors_vcp_list
);
print_short_vcp
(
psu1_entries
,
hw_sensors_vcp_list
,
0
);
print_short_vcp
(
psu2_entries
,
hw_sensors_vcp_list
,
0
);
printf
(
"---------------+-------+--------+-------+--------+-------+--------+
\n
"
);
printf
(
"
\n
"
);
}
...
...
@@ -932,6 +965,20 @@ int cmd_sensors(char *params)
return
0
;
}
int
cmd_csv
(
char
*
params
)
{
sensors_init
(
NULL
);
read_all_sensors
();
print_csv_temp
();
print_short_vcp
(
irps1_entries
,
hw_sensors_vcp_list
,
1
);
print_short_vcp
(
irps2_entries
,
hw_sensors_vcp_list
,
1
);
sensors_cleanup
();
printf
(
"
\n
"
);
return
0
;
}
int
pts_sensors
(
void
)
{
int
errors_temp
=
0
;
...
...
sw/petalinux/project-spec/meta-user/recipes-apps/diot-util/files/diot_util_sensors.h
View file @
5fc4e1ac
...
...
@@ -13,5 +13,6 @@ int cmd_sensors(char *params);
int
cmd_sensors_expert
(
char
*
params
);
int
cmd_sensors_refresh
(
char
*
params
);
int
pts_sensors
(
void
);
int
cmd_csv
(
char
*
params
);
#endif
/* __DIOT_UTIL_SENSORS_H */
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