mirror of
https://github.com/infiniteCable2/openpilot.git
synced 2026-08-05 16:26:10 +08:00
+2
-2
@@ -1132,7 +1132,7 @@ struct EncodeIndex {
|
||||
}
|
||||
}
|
||||
|
||||
struct AndroidLogEntry {
|
||||
struct OperatingSystemLogEntry {
|
||||
id @0 :UInt8;
|
||||
ts @1 :UInt64;
|
||||
priority @2 :UInt8;
|
||||
@@ -2517,7 +2517,7 @@ struct Event {
|
||||
rawAudioData @147 :AudioData;
|
||||
|
||||
# systems stuff
|
||||
androidLog @20 :AndroidLogEntry;
|
||||
operatingSystemLog @20 :OperatingSystemLogEntry;
|
||||
managerState @78 :ManagerState;
|
||||
procLog @33 :ProcLog;
|
||||
clocks @35 :Clocks;
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@ _services: dict[str, tuple] = {
|
||||
"liveCalibration": (True, 4., 4),
|
||||
"liveTorqueParameters": (True, 4., 1),
|
||||
"liveDelay": (True, 4., 1),
|
||||
"androidLog": (True, 0.),
|
||||
"operatingSystemLog": (True, 0.),
|
||||
"carState": (True, 100., 10),
|
||||
"carControl": (True, 100., 10),
|
||||
"carOutput": (True, 100., 10),
|
||||
|
||||
+4
-4
@@ -7,7 +7,7 @@ from openpilot.common.swaglog import cloudlog
|
||||
|
||||
|
||||
def main():
|
||||
pm = messaging.PubMaster(['androidLog'])
|
||||
pm = messaging.PubMaster(['operatingSystemLog'])
|
||||
cmd = ['journalctl', '-f', '-o', 'json']
|
||||
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, text=True)
|
||||
assert proc.stdout is not None
|
||||
@@ -22,8 +22,8 @@ def main():
|
||||
cloudlog.exception("failed to parse journalctl output")
|
||||
continue
|
||||
|
||||
msg = messaging.new_message('androidLog')
|
||||
entry = msg.androidLog
|
||||
msg = messaging.new_message('operatingSystemLog')
|
||||
entry = msg.operatingSystemLog
|
||||
entry.ts = int(kv.get('__REALTIME_TIMESTAMP', 0))
|
||||
entry.message = json.dumps(kv)
|
||||
if '_PID' in kv:
|
||||
@@ -33,7 +33,7 @@ def main():
|
||||
if 'SYSLOG_IDENTIFIER' in kv:
|
||||
entry.tag = kv['SYSLOG_IDENTIFIER']
|
||||
|
||||
pm.send('androidLog', msg)
|
||||
pm.send('operatingSystemLog', msg)
|
||||
finally:
|
||||
proc.terminate()
|
||||
proc.wait()
|
||||
|
||||
@@ -143,7 +143,7 @@ struct CameraFeedIndex {
|
||||
|
||||
enum class LogOrigin : uint8_t {
|
||||
Log,
|
||||
Android,
|
||||
OperatingSystem,
|
||||
Alert,
|
||||
};
|
||||
|
||||
|
||||
@@ -432,7 +432,7 @@ std::array<uint8_t, 3> parse_color(std::string_view color) {
|
||||
return out;
|
||||
}
|
||||
|
||||
uint8_t android_priority_to_level(uint8_t priority) {
|
||||
uint8_t operating_system_priority_to_level(uint8_t priority) {
|
||||
switch (priority) {
|
||||
case 2:
|
||||
case 3:
|
||||
@@ -491,7 +491,7 @@ void append_timeline_entry(std::vector<TimelineEntry> *timeline, double mono_tim
|
||||
});
|
||||
}
|
||||
|
||||
double android_wall_time_seconds(uint64_t timestamp) {
|
||||
double operating_system_wall_time_seconds(uint64_t timestamp) {
|
||||
if (timestamp == 0) return 0.0;
|
||||
if (timestamp > 1000000000000ULL) return static_cast<double>(timestamp) / 1.0e9;
|
||||
if (timestamp > 1000000000ULL) return static_cast<double>(timestamp) / 1.0e6;
|
||||
@@ -609,13 +609,13 @@ void append_log_event(cereal::Event::Which which,
|
||||
logs->push_back(std::move(entry));
|
||||
break;
|
||||
}
|
||||
case cereal::Event::Which::ANDROID_LOG: {
|
||||
const auto android = event.getAndroidLog();
|
||||
auto entry = make_entry(LogOrigin::Android, android_priority_to_level(android.getPriority()));
|
||||
entry.wall_time = android_wall_time_seconds(android.getTs());
|
||||
entry.source = android.hasTag() ? android.getTag().cStr() : "android";
|
||||
entry.message = android.hasMessage() ? android.getMessage().cStr() : std::string();
|
||||
entry.context = "pid=" + std::to_string(android.getPid()) + ", tid=" + std::to_string(android.getTid());
|
||||
case cereal::Event::Which::OPERATING_SYSTEM_LOG: {
|
||||
const auto operating_system_log = event.getOperatingSystemLog();
|
||||
auto entry = make_entry(LogOrigin::OperatingSystem, operating_system_priority_to_level(operating_system_log.getPriority()));
|
||||
entry.wall_time = operating_system_wall_time_seconds(operating_system_log.getTs());
|
||||
entry.source = operating_system_log.hasTag() ? operating_system_log.getTag().cStr() : "operating_system";
|
||||
entry.message = operating_system_log.hasMessage() ? operating_system_log.getMessage().cStr() : std::string();
|
||||
entry.context = "pid=" + std::to_string(operating_system_log.getPid()) + ", tid=" + std::to_string(operating_system_log.getTid());
|
||||
if (!entry.message.empty()) {
|
||||
std::string err;
|
||||
if (const auto p = json11::Json::parse(entry.message, err); err.empty() && p.is_object()) {
|
||||
@@ -623,10 +623,10 @@ void append_log_event(cereal::Event::Which which,
|
||||
if (p["SYSLOG_IDENTIFIER"].is_string() && !p["SYSLOG_IDENTIFIER"].string_value().empty())
|
||||
entry.source = p["SYSLOG_IDENTIFIER"].string_value();
|
||||
if (auto pri = json_int_value(p["PRIORITY"]); pri.has_value())
|
||||
entry.level = android_priority_to_level(*pri);
|
||||
entry.level = operating_system_priority_to_level(*pri);
|
||||
if (auto ts = json_u64_value(p["__REALTIME_TIMESTAMP"]); ts.has_value())
|
||||
entry.wall_time = android_wall_time_seconds(*ts);
|
||||
entry.context = format_journal_context(p, android.getPid(), android.getTid());
|
||||
entry.wall_time = operating_system_wall_time_seconds(*ts);
|
||||
entry.context = format_journal_context(p, operating_system_log.getPid(), operating_system_log.getTid());
|
||||
}
|
||||
}
|
||||
logs->push_back(std::move(entry));
|
||||
|
||||
@@ -13,7 +13,7 @@ LEVELS = {
|
||||
"CRITICAL": 50,
|
||||
}
|
||||
|
||||
ANDROID_LOG_SOURCE = {
|
||||
OPERATING_SYSTEM_LOG_SOURCE = {
|
||||
0: "MAIN",
|
||||
1: "RADIO",
|
||||
2: "EVENTS",
|
||||
@@ -34,8 +34,8 @@ def print_logmessage(t, msg, min_level):
|
||||
print(f"[{t / 1e9:.6f}] decode error: {msg}")
|
||||
|
||||
|
||||
def print_androidlog(t, msg):
|
||||
source = ANDROID_LOG_SOURCE[msg.id]
|
||||
def print_operating_system_log(t, msg):
|
||||
source = msg.tag or OPERATING_SYSTEM_LOG_SOURCE.get(msg.id, "SYSTEM")
|
||||
try:
|
||||
m = json.loads(msg.message)['MESSAGE']
|
||||
except Exception:
|
||||
@@ -65,15 +65,15 @@ if __name__ == "__main__":
|
||||
print_logmessage(m.logMonoTime-st, m.logMessage, min_level)
|
||||
elif m.which() == 'errorLogMessage':
|
||||
print_logmessage(m.logMonoTime-st, m.errorLogMessage, min_level)
|
||||
elif m.which() == 'androidLog':
|
||||
print_androidlog(m.logMonoTime-st, m.androidLog)
|
||||
elif m.which() == 'operatingSystemLog':
|
||||
print_operating_system_log(m.logMonoTime-st, m.operatingSystemLog)
|
||||
else:
|
||||
sm = messaging.SubMaster(['logMessage', 'androidLog'], addr=args.addr)
|
||||
sm = messaging.SubMaster(['logMessage', 'operatingSystemLog'], addr=args.addr)
|
||||
while True:
|
||||
sm.update()
|
||||
|
||||
if sm.updated['logMessage']:
|
||||
print_logmessage(sm.logMonoTime['logMessage'], sm['logMessage'], min_level)
|
||||
|
||||
if sm.updated['androidLog']:
|
||||
print_androidlog(sm.logMonoTime['androidLog'], sm['androidLog'])
|
||||
if sm.updated['operatingSystemLog']:
|
||||
print_operating_system_log(sm.logMonoTime['operatingSystemLog'], sm['operatingSystemLog'])
|
||||
|
||||
Reference in New Issue
Block a user