# TODO: these port numbers are hardcoded in c, fix this

# LogRotate: 8001 is a PUSH PULL socket between loggerd and visiond

# all ZMQ pub sub:

# frame syncing packet
frame: [8002, true]
# accel, gyro, and compass
sensorEvents: [8003, true]
# GPS data, also global timestamp
gpsNMEA: [8004, true]
# CPU+MEM+GPU+BAT temps
thermal: [8005, true]
# List(CanData), list of can messages
can: [8006, true]
live100: [8007, true]

# random events we want to log

#liveEvent: [8008, true]
model: [8009, true]
features: [8010, true]
health: [8011, true]
live20: [8012, true]
#liveUI: [8014, true]
encodeIdx: [8015, true]
liveTracks: [8016, true]
sendcan: [8017, true]
logMessage: [8018, true]
liveCalibration: [8019, true]
androidLog: [8020, true]
carState: [8021, true]
# 8022 is reserved for sshd
carControl: [8023, true]
plan: [8024, true]
liveLocation: [8025, true]
gpsLocation: [8026, true]
ethernetData: [8027, true]
navUpdate: [8028, true]
qcomGnss: [8029, true]
lidarPts: [8030, true]
procLog: [8031, true]
gpsLocationExternal: [8032, true]
ubloxGnss: [8033, true]
clocks: [8034, true]
liveMpc: [8035, true]
liveLongitudinalMpc: [8036, true]
plusFrame: [8037, false]
navStatus: [8038, true]
gpsLocationTrimble: [8039, true]
trimbleGnss: [8041, true]
ubloxRaw: [8042, true]
gpsPlannerPoints: [8043, true]
gpsPlannerPlan: [8044, true]
applanixRaw: [8046, true]
orbLocation: [8047, true]
trafficEvents: [8048, true]
liveLocationTiming: [8049, true]
orbslamCorrection: [8050, true]
liveLocationCorrected: [8051, true]
orbObservation: [8052, true]
applanixLocation: [8053, true]
liveLocationKalman: [8054, true]
uiNavigationEvent: [8055, true]
orbOdometry: [8057, true]
orbFeatures: [8058, false]
orbKeyFrame: [8059, true]
uiLayoutState: [8060, true]
frontEncodeIdx: [8061, true]
orbFeaturesSummary: [8062, true]
driverMonitoring: [8063, true]
liveParameters: [8064, true]
liveMapData: [8065, true]

testModel: [8040, false]
testLiveLocation: [8045, false]
testJoystick: [8056, false]

# 8080 is reserved for slave testing daemon
# 8762 is reserved for logserver

# manager -- base process to manage starting and stopping of all others
#   subscribes: health
#   publishes:  thermal

# **** processes that communicate with the outside world ****

# boardd -- communicates with the car
#   subscribes: sendcan
#   publishes:  can, health, ubloxRaw

# sensord -- publishes the IMU and GPS
#   publishes:  sensorEvents, gpsNMEA

# visiond -- talks to the cameras, runs the model, saves the videos
#   subscribes: liveCalibration, sensorEvents, live100
#   publishes:  frame, encodeIdx, model, liveCalibration

# **** stateful data transformers ****

# plannerd -- decides where to drive the car
#   subscribes: carState, model, live20
#   publishes:  plan

# controlsd -- actually drives the car
#   subscribes: can, thermal, plan
#   publishes:  carState, carControl, sendcan, live100

# radard -- processes the radar data
#   blocks:     CarParams
#   subscribes: can, live100, model
#   publishes:  live20, liveTracks

# **** LOGGING SERVICE ****

# loggerd
#   subscribes: EVERYTHING

# **** NON VITAL SERVICES ****

# ui
#   subscribes: live100, live20, liveCalibration, model, (raw frames)

# uploader
#   communicates through file system with loggerd

# logmessaged -- central logging service, can log to cloud
#   publishes:  logMessage

# logcatd -- fetches logcat info from android
#   publishes:  androidLog

# proclogd -- fetches process information
#   publishes: procLog

# tombstoned -- reports native crashes
