diff --git a/rover/system_statuses/msg/JetsonInfo.msg b/rover/system_statuses/msg/JetsonInfo.msg
index 7762b80..8440c13 100644
--- a/rover/system_statuses/msg/JetsonInfo.msg
+++ b/rover/system_statuses/msg/JetsonInfo.msg
@@ -1,4 +1,4 @@
float64 jetson_CPU
float64 jetson_RAM
-int8 jetson_EMMC
-int8 jetson_NVME_SSD
\ No newline at end of file
+float64 jetson_EMMC
+float64 jetson_NVME_SSD
\ No newline at end of file
diff --git a/rover/system_statuses/scripts/.idea/workspace.xml b/rover/system_statuses/scripts/.idea/workspace.xml
index a5b3cee..a8afe6f 100644
--- a/rover/system_statuses/scripts/.idea/workspace.xml
+++ b/rover/system_statuses/scripts/.idea/workspace.xml
@@ -11,29 +11,29 @@
-
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
-
+
+
@@ -56,8 +56,8 @@
-
+
@@ -68,10 +68,10 @@
DEFINITION_ORDER
-
-
-
-
+
+
+
+
@@ -88,7 +88,6 @@
-
@@ -100,6 +99,7 @@
+
@@ -137,8 +137,7 @@
-
-
+
@@ -146,7 +145,7 @@
-
+
@@ -175,18 +174,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
@@ -210,28 +235,28 @@
-
+
-
-
+
+
-
-
-
-
-
-
-
+
-
-
+
+
+
+
+
+
+
+
diff --git a/rover/system_statuses/scripts/system_statuses_node.py b/rover/system_statuses/scripts/system_statuses_node.py
index bb7c5b9..3cd5ea5 100755
--- a/rover/system_statuses/scripts/system_statuses_node.py
+++ b/rover/system_statuses/scripts/system_statuses_node.py
@@ -2,6 +2,7 @@
import rospy
import os.path
import psutil
+import subprocess
from system_statuses.msg import CameraStatuses, BogieStatuses, FrSkyStatus, GPSInfo, MiscStatuses, JetsonInfo
@@ -16,6 +17,13 @@ class SystemStatuses:
'/dev/rover/camera_main_navigation'
]
+ # filesystem paths for EMMC [0] and NVME_SSD [1]
+ # -- UPDATE [1] FOR JETSON --
+ self.file_systems_EMMC_NVMe_SSD = [
+ '/',
+ '/dev/shm'
+ ]
+
rospy.init_node('SystemStatuses')
# init all publisher functions
@@ -99,8 +107,20 @@ class SystemStatuses:
self.jetson_msg.jetson_CPU = psutil.cpu_percent()
mem = psutil.virtual_memory()
self.jetson_msg.jetson_RAM = mem.percent
- self.jetson_msg.jetson_EMMC = 0
- self.jetson_msg.jetson_NVME_SSD = 0
+ self.jetson_msg.jetson_EMMC = self.__used_percent_fs(self.file_systems_EMMC_NVMe_SSD[0])
+ self.jetson_msg.jetson_NVME_SSD = self.__used_percent_fs(self.file_systems_EMMC_NVMe_SSD[1])
+
+ # EMMC and NVMe_SSD used % calculation
+ def __used_percent_fs(self, pathname):
+ statvfs = os.statvfs(pathname)
+ # percentage :: USED:
+ # used amount: blocks - bfree
+ # used%: used_amount / (used_amount + bavail)
+ used_available = (statvfs.f_frsize * statvfs.f_blocks / 1024) - (statvfs.f_frsize * statvfs.f_bfree / 1024.0)
+ used_percent = used_available / (used_available + (statvfs.f_frsize * statvfs.f_bavail / 1024.0))
+ # Round 4 for 2 decimal accuracy
+ value = 100 * round(used_percent, 4)
+ return value
# Check FrSky Controller Connection Status (WIP)
def __set_frsky_controller_connection_status(self):