Lab041: add session and restart safety
@@ -361,3 +361,27 @@ git version 2.51.1.windows.1
|
|||||||
- Подтверждение сброса не восстанавливает старую команду движения.
|
- Подтверждение сброса не восстанавливает старую команду движения.
|
||||||
- Движение требует новой явной команды оператора.
|
- Движение требует новой явной команды оператора.
|
||||||
- Следующий этап посвящён сеансам связи, перезапускам устройств и защите от пакетов предыдущего сеанса.
|
- Следующий этап посвящён сеансам связи, перезапускам устройств и защите от пакетов предыдущего сеанса.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 016
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
5 августа 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Завершение Lab041: сеансы связи, безопасный запуск и защита от пакетов предыдущего сеанса.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Lab041 вводит идентификаторы сеанса станции, запуска ровера и периода управления.
|
||||||
|
- Одного номера сообщения недостаточно после перезапуска.
|
||||||
|
- В основном режиме все 2807 введённых старых пакетов были отклонены.
|
||||||
|
- Ошибочно принятых старых пакетов не было.
|
||||||
|
- Исходный режим без идентификаторов принял все старые пакеты.
|
||||||
|
- После перезапуска движение запрещено до нового согласования, подтверждения разрешения и новой команды оператора.
|
||||||
|
- Аварийное намерение наземной станции сохраняется после перезапуска.
|
||||||
|
- Неоднозначная разность номеров 2^31 отклоняется.
|
||||||
|
- Следующий этап посвящён криптографической проверке подлинности управляющих сообщений и защите от намеренной подделки.
|
||||||
|
|||||||
BIN
data/processed/lab041/lab041_authorization_time.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
data/processed/lab041/lab041_emergency_intent.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
181
data/processed/lab041/lab041_load_metrics.csv
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
architecture,channel_condition,scenario,repetitions,control_state_packet_bytes,control_state_messages_per_second,control_state_load_kbps,application_header_fraction,lab040_control_load_kbps,control_load_increase_kbps,session_load_kbps,authorization_load_kbps,emergency_load_kbps,retry_load_kbps,episodic_service_load_kbps,video_offered_load_kbps,telemetry_offered_load_kbps,full_offered_load_kbps,control_delivered_fraction,telemetry_delivered_fraction,video_published_fraction,maximum_queue_packets
|
||||||
|
no_session_ids,no_loss,normal_start,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,ground_restart_moving,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,rover_restart_moving,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,both_restart,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,ground_restart_emergency,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,rover_restart_latched,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,long_link_break,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,old_ground_session_control,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,old_rover_boot_control,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,old_control_epoch,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,sequence_reset_new_session,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,sequence_wrap,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,duplicate_hello,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,lost_session_status,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,lost_authorize_ack,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,lost_emergency_ack,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0528,0.0528,0.1056,243.39286666666666,7.68,262.0584666666667,0.9987914666666666,0.9993957333333333,0.9981872,22
|
||||||
|
no_session_ids,no_loss,lost_reset_ack,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.062,0.062,0.124,243.39286666666666,7.68,262.0768666666667,0.9987853333333333,0.9993926666666667,0.998178,22
|
||||||
|
no_session_ids,no_loss,old_reset_request,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,late_positive_after_emergency,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,restart_after_reset_before_ack,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,260_200,normal_start,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,ground_restart_moving,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,rover_restart_moving,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,both_restart,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,ground_restart_emergency,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,rover_restart_latched,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,long_link_break,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,old_ground_session_control,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,old_rover_boot_control,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,old_control_epoch,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,sequence_reset_new_session,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,sequence_wrap,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,duplicate_hello,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,lost_session_status,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,lost_authorize_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,lost_emergency_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0528,0.057288,0.110088,243.39286666666666,7.68,262.0629546666667,0.9786038123076922,0.981301906153846,0.9079057184615386,36
|
||||||
|
no_session_ids,260_200,lost_reset_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.062,0.065318,0.12731800000000001,243.39286666666666,7.68,262.0801846666667,0.978597185384615,0.9812985926923079,0.9078957780769232,36
|
||||||
|
no_session_ids,260_200,old_reset_request,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,late_positive_after_emergency,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,restart_after_reset_before_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,230_1000,normal_start,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,ground_restart_moving,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,rover_restart_moving,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,both_restart,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,ground_restart_emergency,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,rover_restart_latched,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,long_link_break,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,old_ground_session_control,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,old_rover_boot_control,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,old_control_epoch,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,sequence_reset_new_session,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,sequence_wrap,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,duplicate_hello,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,lost_session_status,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,lost_authorize_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,lost_emergency_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0528,0.11536800000000001,0.168168,243.39286666666666,7.68,262.1210346666667,0.978396448695652,0.9791982243478259,0.8605946730434781,46
|
||||||
|
no_session_ids,230_1000,lost_reset_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.062,0.075272,0.137272,243.39286666666666,7.68,262.0901386666667,0.9784098817391305,0.9792049408695651,0.8606148226086957,46
|
||||||
|
no_session_ids,230_1000,old_reset_request,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,late_positive_after_emergency,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,restart_after_reset_before_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.0,0.0,0.0,0.0,0.0,243.39286666666666,7.68,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
session_safe_boot,no_loss,normal_start,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,ground_restart_moving,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,rover_restart_moving,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,both_restart,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,ground_restart_emergency,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.0,0.0,0.0,0.054,243.39286666666666,7.68,262.00686666666667,0.9988086666666667,0.9994043333333333,0.998213,21
|
||||||
|
session_safe_boot,no_loss,rover_restart_latched,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.0,0.0,0.0,0.054,243.39286666666666,7.68,262.00686666666667,0.9988086666666667,0.9994043333333333,0.998213,21
|
||||||
|
session_safe_boot,no_loss,long_link_break,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,old_ground_session_control,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,old_rover_boot_control,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,old_control_epoch,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,sequence_reset_new_session,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,sequence_wrap,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,duplicate_hello,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.054,0.16119999999999998,243.39286666666666,7.68,262.1140666666667,0.9987729333333333,0.9993864666666666,0.9981594,21
|
||||||
|
session_safe_boot,no_loss,lost_session_status,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.054,0.16119999999999998,243.39286666666666,7.68,262.1140666666667,0.9987729333333333,0.9993864666666666,0.9981594,22
|
||||||
|
session_safe_boot,no_loss,lost_authorize_ack,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.053200000000000004,0.16040000000000001,243.39286666666666,7.68,262.1132666666667,0.9987732,0.9993866,0.9981598,22
|
||||||
|
session_safe_boot,no_loss,lost_emergency_ack,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0528,0.0528,0.21280000000000002,243.39286666666666,7.68,262.1656666666667,0.9987557333333333,0.9993778666666666,0.9981336,22
|
||||||
|
session_safe_boot,no_loss,lost_reset_ack,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.062,0.062,0.2312,243.39286666666666,7.68,262.1840666666667,0.9987496,0.9993748,0.9981244,22
|
||||||
|
session_safe_boot,no_loss,old_reset_request,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,late_positive_after_emergency,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,restart_after_reset_before_ack,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,260_200,normal_start,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9786049230769228,0.9813024615384619,0.9079073846153847,31
|
||||||
|
session_safe_boot,260_200,ground_restart_moving,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9786049230769228,0.9813024615384619,0.9079073846153847,31
|
||||||
|
session_safe_boot,260_200,rover_restart_moving,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0013199999999999998,0.10852,243.39286666666666,7.68,262.0613866666667,0.9786044153846152,0.9813022076923079,0.9079066230769232,36
|
||||||
|
session_safe_boot,260_200,both_restart,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.002904,0.110104,243.39286666666666,7.68,262.0629706666667,0.9786038061538459,0.9813019030769234,0.9079057092307693,36
|
||||||
|
session_safe_boot,260_200,ground_restart_emergency,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.0,0.0,0.0,0.054,243.39286666666666,7.68,262.00686666666667,0.9786253846153845,0.9813126923076924,0.9079380769230773,31
|
||||||
|
session_safe_boot,260_200,rover_restart_latched,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.0,0.0,0.0,0.054,243.39286666666666,7.68,262.00686666666667,0.9786253846153845,0.9813126923076924,0.9079380769230773,31
|
||||||
|
session_safe_boot,260_200,long_link_break,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0062759999999999995,0.113476,243.39286666666666,7.68,262.0663426666667,0.9786025092307691,0.9813012546153849,0.907903763846154,36
|
||||||
|
session_safe_boot,260_200,old_ground_session_control,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0007920000000000001,0.107992,243.39286666666666,7.68,262.0608586666667,0.9786046184615382,0.9813023092307697,0.9079069276923077,35
|
||||||
|
session_safe_boot,260_200,old_rover_boot_control,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.000528,0.10772799999999999,243.39286666666666,7.68,262.0605946666667,0.9786047199999998,0.9813023600000003,0.9079070800000001,34
|
||||||
|
session_safe_boot,260_200,old_control_epoch,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9786049230769228,0.9813024615384619,0.9079073846153847,31
|
||||||
|
session_safe_boot,260_200,sequence_reset_new_session,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0027719999999999997,0.10997200000000001,243.39286666666666,7.68,262.0628386666667,0.9786038569230766,0.9813019284615387,0.9079057853846154,36
|
||||||
|
session_safe_boot,260_200,sequence_wrap,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9786049230769228,0.9813024615384619,0.9079073846153847,31
|
||||||
|
session_safe_boot,260_200,duplicate_hello,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.054,0.16119999999999998,243.39286666666666,7.68,262.1140666666667,0.9785841538461537,0.9812920769230772,0.907876230769231,31
|
||||||
|
session_safe_boot,260_200,lost_session_status,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.055056,0.162256,243.39286666666666,7.68,262.1151226666667,0.9785837476923075,0.9812918738461539,0.9078756215384618,36
|
||||||
|
session_safe_boot,260_200,lost_authorize_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.053200000000000004,0.16040000000000001,243.39286666666666,7.68,262.1132666666667,0.9785844615384616,0.981292230769231,0.9078766923076921,32
|
||||||
|
session_safe_boot,260_200,lost_emergency_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0528,0.058476,0.21847600000000003,243.39286666666666,7.68,262.1713426666667,0.9785621246153846,0.9812810623076923,0.9078431869230771,36
|
||||||
|
session_safe_boot,260_200,lost_reset_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.062,0.06626599999999999,0.23546599999999998,243.39286666666666,7.68,262.18833266666667,0.9785555899999997,0.9812777950000001,0.907833385,36
|
||||||
|
session_safe_boot,260_200,old_reset_request,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0007920000000000001,0.107992,243.39286666666666,7.68,262.0608586666667,0.9786046184615382,0.9813023092307697,0.9079069276923077,36
|
||||||
|
session_safe_boot,260_200,late_positive_after_emergency,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0026399999999999996,0.10984000000000001,243.39286666666666,7.68,262.0627066666667,0.9786039076923074,0.9813019538461542,0.9079058615384616,36
|
||||||
|
session_safe_boot,260_200,restart_after_reset_before_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.000132,0.107332,243.39286666666666,7.68,262.0601986666667,0.9786048723076921,0.9813024361538464,0.9079073084615384,32
|
||||||
|
session_safe_boot,230_1000,normal_start,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,ground_restart_moving,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,rover_restart_moving,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,both_restart,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0063360000000000005,0.11353599999999998,243.39286666666666,7.68,262.0664026666667,0.9784202017391302,0.9792101008695654,0.860630302608696,46
|
||||||
|
session_safe_boot,230_1000,ground_restart_emergency,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.0,0.0,0.0,0.054,243.39286666666666,7.68,262.00686666666667,0.9784460869565217,0.9792230434782607,0.8606691304347825,41
|
||||||
|
session_safe_boot,230_1000,rover_restart_latched,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.0,0.0,0.0,0.054,243.39286666666666,7.68,262.00686666666667,0.9784460869565217,0.9792230434782607,0.8606691304347825,41
|
||||||
|
session_safe_boot,230_1000,long_link_break,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.022174,0.129374,243.39286666666666,7.68,262.0822406666667,0.9784133156521737,0.9792066578260871,0.860619973478261,46
|
||||||
|
session_safe_boot,230_1000,old_ground_session_control,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,old_rover_boot_control,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,old_control_epoch,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,sequence_reset_new_session,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.001452,0.108652,243.39286666666666,7.68,262.0615186666667,0.978422325217391,0.9792111626086958,0.8606334878260873,46
|
||||||
|
session_safe_boot,230_1000,sequence_wrap,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,duplicate_hello,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.054,0.16119999999999998,243.39286666666666,7.68,262.1140666666667,0.9783994782608693,0.9791997391304347,0.8605992173913043,41
|
||||||
|
session_safe_boot,230_1000,lost_session_status,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.054,0.16119999999999998,243.39286666666666,7.68,262.1140666666667,0.9783994782608693,0.9791997391304347,0.8605992173913043,42
|
||||||
|
session_safe_boot,230_1000,lost_authorize_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.053200000000000004,0.16040000000000001,243.39286666666666,7.68,262.1132666666667,0.9783998260869565,0.9791999130434783,0.8605997391304347,42
|
||||||
|
session_safe_boot,230_1000,lost_emergency_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0528,0.07378799999999999,0.23378800000000002,243.39286666666666,7.68,262.1866546666667,0.9783679182608697,0.979183959130435,0.8605518773913041,46
|
||||||
|
session_safe_boot,230_1000,lost_reset_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.062,0.077852,0.247052,243.39286666666666,7.68,262.1999186666667,0.9783621513043473,0.9791810756521738,0.8605432269565216,46
|
||||||
|
session_safe_boot,230_1000,old_reset_request,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,late_positive_after_emergency,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,restart_after_reset_before_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
persistent_emergency,no_loss,normal_start,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,ground_restart_moving,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,rover_restart_moving,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,both_restart,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,ground_restart_emergency,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.0,0.0,0.0,0.054,243.39286666666666,7.68,262.00686666666667,0.9988086666666667,0.9994043333333333,0.998213,21
|
||||||
|
persistent_emergency,no_loss,rover_restart_latched,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.0,0.0,0.0,0.054,243.39286666666666,7.68,262.00686666666667,0.9988086666666667,0.9994043333333333,0.998213,21
|
||||||
|
persistent_emergency,no_loss,long_link_break,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,old_ground_session_control,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,old_rover_boot_control,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,old_control_epoch,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,sequence_reset_new_session,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,sequence_wrap,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,duplicate_hello,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.054,0.16119999999999998,243.39286666666666,7.68,262.1140666666667,0.9987729333333333,0.9993864666666666,0.9981594,21
|
||||||
|
persistent_emergency,no_loss,lost_session_status,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.054,0.16119999999999998,243.39286666666666,7.68,262.1140666666667,0.9987729333333333,0.9993864666666666,0.9981594,22
|
||||||
|
persistent_emergency,no_loss,lost_authorize_ack,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.053200000000000004,0.16040000000000001,243.39286666666666,7.68,262.1132666666667,0.9987732,0.9993866,0.9981598,22
|
||||||
|
persistent_emergency,no_loss,lost_emergency_ack,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0528,0.0528,0.21280000000000002,243.39286666666666,7.68,262.1656666666667,0.9987557333333333,0.9993778666666666,0.9981336,22
|
||||||
|
persistent_emergency,no_loss,lost_reset_ack,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.062,0.062,0.2312,243.39286666666666,7.68,262.1840666666667,0.9987496,0.9993748,0.9981244,22
|
||||||
|
persistent_emergency,no_loss,old_reset_request,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,late_positive_after_emergency,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,restart_after_reset_before_ack,1,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,260_200,normal_start,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.000132,0.107332,243.39286666666666,7.68,262.0601986666667,0.9786048723076921,0.9813024361538464,0.9079073084615384,32
|
||||||
|
persistent_emergency,260_200,ground_restart_moving,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.001056,0.108256,243.39286666666666,7.68,262.0611226666667,0.9786045169230766,0.9813022584615387,0.9079067753846155,35
|
||||||
|
persistent_emergency,260_200,rover_restart_moving,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.001716,0.10891600000000001,243.39286666666666,7.68,262.0617826666667,0.9786042630769228,0.9813021315384617,0.9079063946153846,36
|
||||||
|
persistent_emergency,260_200,both_restart,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.000528,0.10772799999999999,243.39286666666666,7.68,262.0605946666667,0.9786047199999998,0.9813023600000003,0.9079070800000001,33
|
||||||
|
persistent_emergency,260_200,ground_restart_emergency,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.0,0.0,0.0,0.054,243.39286666666666,7.68,262.00686666666667,0.9786253846153845,0.9813126923076924,0.9079380769230773,31
|
||||||
|
persistent_emergency,260_200,rover_restart_latched,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.0,0.0,0.0,0.054,243.39286666666666,7.68,262.00686666666667,0.9786253846153845,0.9813126923076924,0.9079380769230773,31
|
||||||
|
persistent_emergency,260_200,long_link_break,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.004794,0.111994,243.39286666666666,7.68,262.0648606666667,0.9786030792307691,0.981301539615385,0.9079046188461538,36
|
||||||
|
persistent_emergency,260_200,old_ground_session_control,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.00039600000000000003,0.107596,243.39286666666666,7.68,262.0604626666667,0.9786047707692305,0.9813023853846157,0.9079071561538461,33
|
||||||
|
persistent_emergency,260_200,old_rover_boot_control,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0006599999999999999,0.10785999999999998,243.39286666666666,7.68,262.0607266666667,0.9786046692307689,0.981302334615385,0.9079070038461539,34
|
||||||
|
persistent_emergency,260_200,old_control_epoch,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.000924,0.108124,243.39286666666666,7.68,262.06099066666667,0.9786045676923075,0.981302283846154,0.9079068515384615,36
|
||||||
|
persistent_emergency,260_200,sequence_reset_new_session,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0037,0.11090000000000001,243.39286666666666,7.68,262.0637666666667,0.9786034999999998,0.9813017500000004,0.90790525,36
|
||||||
|
persistent_emergency,260_200,sequence_wrap,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0013199999999999998,0.10852,243.39286666666666,7.68,262.0613866666667,0.9786044153846152,0.981302207692308,0.9079066230769232,36
|
||||||
|
persistent_emergency,260_200,duplicate_hello,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.054,0.16119999999999998,243.39286666666666,7.68,262.1140666666667,0.9785841538461537,0.9812920769230772,0.907876230769231,31
|
||||||
|
persistent_emergency,260_200,lost_session_status,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.054268,0.16146800000000003,243.39286666666666,7.68,262.1143346666667,0.9785840507692305,0.9812920253846156,0.9078760761538465,34
|
||||||
|
persistent_emergency,260_200,lost_authorize_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.058744000000000005,0.165944,243.39286666666666,7.68,262.1188106666667,0.9785823292307694,0.9812911646153849,0.9078734938461537,36
|
||||||
|
persistent_emergency,260_200,lost_emergency_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0528,0.059267999999999994,0.21926799999999996,243.39286666666666,7.68,262.1721346666667,0.9785618199999999,0.9812809099999998,0.9078427300000002,36
|
||||||
|
persistent_emergency,260_200,lost_reset_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.062,0.067428,0.236628,243.39286666666666,7.68,262.1894946666667,0.9785551430769229,0.9812775715384617,0.9078327146153846,36
|
||||||
|
persistent_emergency,260_200,old_reset_request,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.001452,0.108652,243.39286666666666,7.68,262.0615186666667,0.9786043646153842,0.9813021823076926,0.9079065469230769,36
|
||||||
|
persistent_emergency,260_200,late_positive_after_emergency,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0015840000000000001,0.10878399999999999,243.39286666666666,7.68,262.0616506666667,0.9786043138461537,0.9813021569230773,0.9079064707692308,36
|
||||||
|
persistent_emergency,260_200,restart_after_reset_before_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.000264,0.10746400000000002,243.39286666666666,7.68,262.0603306666667,0.9786048215384614,0.9813024107692311,0.9079072323076923,33
|
||||||
|
persistent_emergency,230_1000,normal_start,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
persistent_emergency,230_1000,ground_restart_moving,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.003432,0.110632,243.39286666666666,7.68,262.0634986666667,0.978421464347826,0.9792107321739132,0.8606321965217394,46
|
||||||
|
persistent_emergency,230_1000,rover_restart_moving,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.004488000000000001,0.11168800000000002,243.39286666666666,7.68,262.0645546666667,0.9784210052173912,0.9792105026086958,0.8606315078260871,46
|
||||||
|
persistent_emergency,230_1000,both_restart,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.002112,0.10931199999999998,243.39286666666666,7.68,262.0621786666667,0.9784220382608695,0.979211019130435,0.8606330573913047,46
|
||||||
|
persistent_emergency,230_1000,ground_restart_emergency,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.0,0.0,0.0,0.054,243.39286666666666,7.68,262.00686666666667,0.9784460869565217,0.9792230434782607,0.8606691304347825,41
|
||||||
|
persistent_emergency,230_1000,rover_restart_latched,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.0,0.0,0.0,0.054,243.39286666666666,7.68,262.00686666666667,0.9784460869565217,0.9792230434782607,0.8606691304347825,41
|
||||||
|
persistent_emergency,230_1000,long_link_break,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.009782,0.116982,243.39286666666666,7.68,262.0698486666667,0.9784187034782608,0.9792093517391307,0.8606280552173916,46
|
||||||
|
persistent_emergency,230_1000,old_ground_session_control,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
persistent_emergency,230_1000,old_rover_boot_control,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
persistent_emergency,230_1000,old_control_epoch,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.005412,0.11261199999999999,243.39286666666666,7.68,262.0654786666667,0.9784206034782608,0.9792103017391307,0.8606309052173916,46
|
||||||
|
persistent_emergency,230_1000,sequence_reset_new_session,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.001206,0.10840599999999999,243.39286666666666,7.68,262.0612726666667,0.9784224321739129,0.9792112160869567,0.8606336482608699,46
|
||||||
|
persistent_emergency,230_1000,sequence_wrap,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.003564,0.11076400000000002,243.39286666666666,7.68,262.0636306666667,0.9784214069565215,0.979210703478261,0.8606321104347829,46
|
||||||
|
persistent_emergency,230_1000,duplicate_hello,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.054,0.16119999999999998,243.39286666666666,7.68,262.1140666666667,0.9783994782608693,0.9791997391304347,0.8605992173913043,41
|
||||||
|
persistent_emergency,230_1000,lost_session_status,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.054,0.16119999999999998,243.39286666666666,7.68,262.1140666666667,0.9783994782608693,0.9791997391304347,0.8605992173913043,42
|
||||||
|
persistent_emergency,230_1000,lost_authorize_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.053200000000000004,0.16040000000000001,243.39286666666666,7.68,262.1132666666667,0.9783998260869565,0.9791999130434783,0.8605997391304347,42
|
||||||
|
persistent_emergency,230_1000,lost_emergency_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0528,0.059664,0.219664,243.39286666666666,7.68,262.1725306666667,0.9783740591304348,0.9791870295652177,0.860561088695652,46
|
||||||
|
persistent_emergency,230_1000,lost_reset_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.062,0.08226599999999999,0.25146599999999997,243.39286666666666,7.68,262.2043326666667,0.9783602321739128,0.9791801160869563,0.8605403482608694,46
|
||||||
|
persistent_emergency,230_1000,old_reset_request,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
persistent_emergency,230_1000,late_positive_after_emergency,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
persistent_emergency,230_1000,restart_after_reset_before_ack,200,68,20.0,10.88,0.7222222222222222,7.36,3.5200000000000005,0.054,0.053200000000000004,0.0,0.0,0.1072,243.39286666666666,7.68,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
BIN
data/processed/lab041/lab041_old_packet_rejection.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
data/processed/lab041/lab041_protection_load.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
181
data/processed/lab041/lab041_rejection_metrics.csv
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
architecture,channel_condition,scenario,repetitions,old_packets_injected,old_packets_rejected,old_packets_erroneously_accepted,rejected_ground_session,rejected_rover_boot,rejected_control_epoch,rejected_sequence,rejected_emergency_event,rejected_reset_request,ambiguous_sequence_rejected
|
||||||
|
no_session_ids,no_loss,normal_start,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,ground_restart_moving,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,rover_restart_moving,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,both_restart,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,ground_restart_emergency,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,rover_restart_latched,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,long_link_break,1,1,0,1,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,old_ground_session_control,1,1,0,1,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,old_rover_boot_control,1,1,0,1,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,old_control_epoch,1,1,0,1,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,sequence_reset_new_session,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,sequence_wrap,1,1,0,1,0,0,0,0,0,0,1
|
||||||
|
no_session_ids,no_loss,duplicate_hello,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,lost_session_status,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,lost_authorize_ack,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,lost_emergency_ack,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,lost_reset_ack,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,old_reset_request,1,1,0,1,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,late_positive_after_emergency,1,1,0,1,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,restart_after_reset_before_ack,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,normal_start,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,ground_restart_moving,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,rover_restart_moving,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,both_restart,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,ground_restart_emergency,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,rover_restart_latched,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,long_link_break,200,200,0,200,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,old_ground_session_control,200,200,0,200,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,old_rover_boot_control,200,200,0,200,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,old_control_epoch,200,200,0,200,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,sequence_reset_new_session,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,sequence_wrap,200,200,0,200,0,0,0,0,0,0,200
|
||||||
|
no_session_ids,260_200,duplicate_hello,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,lost_session_status,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,lost_authorize_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,lost_emergency_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,lost_reset_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,old_reset_request,200,200,0,200,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,late_positive_after_emergency,200,200,0,200,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,restart_after_reset_before_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,normal_start,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,ground_restart_moving,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,rover_restart_moving,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,both_restart,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,ground_restart_emergency,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,rover_restart_latched,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,long_link_break,200,200,0,200,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,old_ground_session_control,200,200,0,200,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,old_rover_boot_control,200,200,0,200,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,old_control_epoch,200,200,0,200,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,sequence_reset_new_session,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,sequence_wrap,200,200,0,200,0,0,0,0,0,0,200
|
||||||
|
no_session_ids,230_1000,duplicate_hello,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,lost_session_status,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,lost_authorize_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,lost_emergency_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,lost_reset_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,old_reset_request,200,200,0,200,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,late_positive_after_emergency,200,200,0,200,0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,restart_after_reset_before_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,normal_start,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,ground_restart_moving,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,rover_restart_moving,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,both_restart,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,ground_restart_emergency,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,rover_restart_latched,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,long_link_break,1,1,1,0,0,0,0,1,0,0,0
|
||||||
|
session_safe_boot,no_loss,old_ground_session_control,1,1,1,0,1,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,old_rover_boot_control,1,1,1,0,0,1,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,old_control_epoch,1,1,1,0,0,0,1,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,sequence_reset_new_session,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,sequence_wrap,1,1,1,0,0,0,0,1,0,0,1
|
||||||
|
session_safe_boot,no_loss,duplicate_hello,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,lost_session_status,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,lost_authorize_ack,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,lost_emergency_ack,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,lost_reset_ack,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,old_reset_request,1,1,1,0,0,0,0,0,0,1,0
|
||||||
|
session_safe_boot,no_loss,late_positive_after_emergency,1,1,1,0,0,0,0,0,1,0,0
|
||||||
|
session_safe_boot,no_loss,restart_after_reset_before_ack,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,normal_start,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,ground_restart_moving,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,rover_restart_moving,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,both_restart,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,ground_restart_emergency,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,rover_restart_latched,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,long_link_break,200,200,200,0,0,0,0,200,0,0,0
|
||||||
|
session_safe_boot,260_200,old_ground_session_control,200,200,200,0,200,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,old_rover_boot_control,200,200,200,0,0,200,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,old_control_epoch,200,200,200,0,0,0,200,0,0,0,0
|
||||||
|
session_safe_boot,260_200,sequence_reset_new_session,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,sequence_wrap,200,200,200,0,0,0,0,200,0,0,200
|
||||||
|
session_safe_boot,260_200,duplicate_hello,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,lost_session_status,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,lost_authorize_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,lost_emergency_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,lost_reset_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,old_reset_request,200,200,200,0,0,0,0,0,0,200,0
|
||||||
|
session_safe_boot,260_200,late_positive_after_emergency,200,200,200,0,0,0,0,0,200,0,0
|
||||||
|
session_safe_boot,260_200,restart_after_reset_before_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,normal_start,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,ground_restart_moving,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,rover_restart_moving,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,both_restart,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,ground_restart_emergency,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,rover_restart_latched,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,long_link_break,200,200,200,0,0,0,0,200,0,0,0
|
||||||
|
session_safe_boot,230_1000,old_ground_session_control,200,200,200,0,200,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,old_rover_boot_control,200,200,200,0,0,200,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,old_control_epoch,200,200,200,0,0,0,200,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,sequence_reset_new_session,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,sequence_wrap,200,200,200,0,0,0,0,200,0,0,200
|
||||||
|
session_safe_boot,230_1000,duplicate_hello,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,lost_session_status,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,lost_authorize_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,lost_emergency_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,lost_reset_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,old_reset_request,200,200,200,0,0,0,0,0,0,200,0
|
||||||
|
session_safe_boot,230_1000,late_positive_after_emergency,200,200,200,0,0,0,0,0,200,0,0
|
||||||
|
session_safe_boot,230_1000,restart_after_reset_before_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,normal_start,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,ground_restart_moving,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,rover_restart_moving,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,both_restart,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,ground_restart_emergency,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,rover_restart_latched,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,long_link_break,1,1,1,0,0,0,0,1,0,0,0
|
||||||
|
persistent_emergency,no_loss,old_ground_session_control,1,1,1,0,1,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,old_rover_boot_control,1,1,1,0,0,1,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,old_control_epoch,1,1,1,0,0,0,1,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,sequence_reset_new_session,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,sequence_wrap,1,1,1,0,0,0,0,1,0,0,1
|
||||||
|
persistent_emergency,no_loss,duplicate_hello,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,lost_session_status,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,lost_authorize_ack,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,lost_emergency_ack,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,lost_reset_ack,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,old_reset_request,1,1,1,0,0,0,0,0,0,1,0
|
||||||
|
persistent_emergency,no_loss,late_positive_after_emergency,1,1,1,0,0,0,0,0,1,0,0
|
||||||
|
persistent_emergency,no_loss,restart_after_reset_before_ack,1,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,normal_start,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,ground_restart_moving,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,rover_restart_moving,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,both_restart,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,ground_restart_emergency,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,rover_restart_latched,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,long_link_break,200,200,200,0,0,0,0,200,0,0,0
|
||||||
|
persistent_emergency,260_200,old_ground_session_control,200,200,200,0,200,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,old_rover_boot_control,200,200,200,0,0,200,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,old_control_epoch,200,200,200,0,0,0,200,0,0,0,0
|
||||||
|
persistent_emergency,260_200,sequence_reset_new_session,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,sequence_wrap,200,200,200,0,0,0,0,200,0,0,200
|
||||||
|
persistent_emergency,260_200,duplicate_hello,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,lost_session_status,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,lost_authorize_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,lost_emergency_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,lost_reset_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,old_reset_request,200,200,200,0,0,0,0,0,0,200,0
|
||||||
|
persistent_emergency,260_200,late_positive_after_emergency,200,200,200,0,0,0,0,0,200,0,0
|
||||||
|
persistent_emergency,260_200,restart_after_reset_before_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,normal_start,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,ground_restart_moving,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,rover_restart_moving,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,both_restart,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,ground_restart_emergency,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,rover_restart_latched,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,long_link_break,200,200,200,0,0,0,0,200,0,0,0
|
||||||
|
persistent_emergency,230_1000,old_ground_session_control,200,200,200,0,200,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,old_rover_boot_control,200,200,200,0,0,200,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,old_control_epoch,200,200,200,0,0,0,200,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,sequence_reset_new_session,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,sequence_wrap,200,200,200,0,0,0,0,200,0,0,200
|
||||||
|
persistent_emergency,230_1000,duplicate_hello,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,lost_session_status,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,lost_authorize_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,lost_emergency_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,lost_reset_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,old_reset_request,200,200,200,0,0,0,0,0,0,200,0
|
||||||
|
persistent_emergency,230_1000,late_positive_after_emergency,200,200,200,0,0,0,0,0,200,0,0
|
||||||
|
persistent_emergency,230_1000,restart_after_reset_before_ack,200,0,0,0,0,0,0,0,0,0,0
|
||||||
|
335
data/processed/lab041/lab041_report.txt
Normal file
@@ -0,0 +1,335 @@
|
|||||||
|
Lab041 — сеансы связи, безопасный запуск и защита от пакетов предыдущего сеанса
|
||||||
|
|
||||||
|
Исходное состояние
|
||||||
|
- Корень: C:/Users/user/Desktop/projects/SDR_Rover
|
||||||
|
- Ветка: main.
|
||||||
|
- Исходный HEAD: 88addff5b615dd7c13506b6e4c83c131a6a4bb39.
|
||||||
|
- Рабочее дерево и индекс были чистыми; расхождение с локально известной origin/main составляло 0/0.
|
||||||
|
- Коммиты Lab039 и Lab040 присутствовали; сетевые команды Git не выполнялись.
|
||||||
|
|
||||||
|
Форматы прикладных сообщений
|
||||||
|
- Общий прикладной заголовок: !BBQQII, 26 байт, сетевой порядок, без неявного выравнивания.
|
||||||
|
- Поля заголовка: версия, тип, ground_session_id, rover_boot_id, control_epoch и sequence_number.
|
||||||
|
- Типы: SESSION_HELLO, SESSION_STATUS, MOVEMENT_AUTHORIZE_REQUEST, MOVEMENT_AUTHORIZE_ACK, CONTROL_STATE, EMERGENCY_STOP, EMERGENCY_ACK, RESET_REQUEST, RESET_ACK и SESSION_REJECT.
|
||||||
|
- CONTROL_STATE содержит скорость float32, поворот float32, торможение uint8 и разрешение движения uint8; выполняется смысловая проверка диапазонов и сочетаний.
|
||||||
|
- Идентификаторы запуска имеют 64 бита; период управления и номер сообщения — 32 бита; идентификаторы аварии и сброса — 64 бита.
|
||||||
|
- Отдельная контрольная сумма не добавлена: контрольная сумма общего пакета Lab033 уже охватывает всю полезную нагрузку. Успешная проверка суммы не заменяет смысловую проверку.
|
||||||
|
- тип | прикладной заголовок, байт | специализированная часть, байт | прикладное сообщение, байт | заголовок Lab033, байт | передаётся всего, байт
|
||||||
|
- SESSION_HELLO | 26 | 9 | 35 | 32 | 67
|
||||||
|
- SESSION_STATUS | 26 | 10 | 36 | 32 | 68
|
||||||
|
- MOVEMENT_AUTHORIZE_REQUEST | 26 | 8 | 34 | 32 | 66
|
||||||
|
- MOVEMENT_AUTHORIZE_ACK | 26 | 9 | 35 | 32 | 67
|
||||||
|
- CONTROL_STATE | 26 | 10 | 36 | 32 | 68
|
||||||
|
- EMERGENCY_STOP | 26 | 8 | 34 | 32 | 66
|
||||||
|
- EMERGENCY_ACK | 26 | 8 | 34 | 32 | 66
|
||||||
|
- RESET_REQUEST | 26 | 21 | 47 | 32 | 79
|
||||||
|
- RESET_ACK | 26 | 18 | 44 | 32 | 76
|
||||||
|
- SESSION_REJECT | 26 | 2 | 28 | 32 | 60
|
||||||
|
|
||||||
|
Постоянная нагрузка управления
|
||||||
|
- CONTROL_STATE: 68 передаваемых байт × 20 сообщений/с = 10.88000 кбит/с.
|
||||||
|
- За 20 с передаётся 400 команд, или 27200 байт.
|
||||||
|
- Прикладной заголовок занимает 72.222% прикладного сообщения и 38.235% всего передаваемого пакета команды.
|
||||||
|
- В Lab040 пакет команды занимал 46 байт и создавал 7.36000 кбит/с; рост составляет 3.52000 кбит/с, или 47.826%.
|
||||||
|
- Один исходный обмен SESSION_HELLO и SESSION_STATUS: 135 байт, что соответствует 0.05400 кбит/с при усреднении по одному опыту.
|
||||||
|
- Один исходный обмен разрешения движения: 133 байт, или 0.05320 кбит/с при усреднении по одному опыту.
|
||||||
|
- Аварийная команда с подтверждением: 132 байт; запрос сброса с подтверждением: 155 байт.
|
||||||
|
|
||||||
|
Обоснование идентификаторов
|
||||||
|
- Одного sequence_number недостаточно: после перезапуска он может снова начаться с нуля, а задержанный большой номер прежнего запуска будет выглядеть допустимым без границы сеанса.
|
||||||
|
- ground_session_id отделяет запуски наземной станции; rover_boot_id немедленно делает недействительными команды, адресованные предыдущему запуску ровера.
|
||||||
|
- control_epoch отделён от сеанса, потому что внутри одного соединения движение может быть повторно запрещено и разрешено после остановки или сброса.
|
||||||
|
- 64 бита выбраны как минимально требуемая ширина с практически большим пространством случайных значений; в воспроизводимой модели значения выводятся из фиксированного начального значения. Источник для реального изделия должен быть определён отдельно.
|
||||||
|
|
||||||
|
Автоматы сторон
|
||||||
|
- Наземная станция: GROUND_BOOT → GROUND_SYNCING → GROUND_SAFE_SYNCHRONIZED → GROUND_MOVEMENT_AUTH_REQUESTED → GROUND_ACTIVE.
|
||||||
|
- Аварийная ветвь станции: GROUND_EMERGENCY_REQUESTED → GROUND_EMERGENCY_CONFIRMED → GROUND_RESET_REQUESTED → безопасное согласованное состояние.
|
||||||
|
- Ровер: ROVER_BOOT_SAFE → ROVER_SESSION_SYNCED_SAFE → ROVER_MOVEMENT_AUTHORIZED; состояния STAGE1_DECELERATION, STAGE2_BRAKING и EMERGENCY_LATCHED сохранены.
|
||||||
|
- После запуска ровер запрещает движение, потому что его программное состояние и происхождение ранее сохранённой команды больше нельзя считать достоверными.
|
||||||
|
- SESSION_STATUS и MOVEMENT_AUTHORIZE_ACK подтверждают этапы протокола, но сами не являются командой движения.
|
||||||
|
- После сброса или перезапуска старая команда не восстанавливается: требуется новое действие оператора и новая CONTROL_STATE текущего периода управления.
|
||||||
|
|
||||||
|
Сравнение sequence_number
|
||||||
|
- delta = (new - old) modulo 2^32; сообщение новее только при 0 < delta < 2^31.
|
||||||
|
- delta = 0 означает дубликат или старое сообщение; delta > 2^31 означает старый номер; delta = 2^31 неоднозначно и всегда отклоняется.
|
||||||
|
- Правило применяется только при совпадении ground_session_id, rover_boot_id, control_epoch и stream_id.
|
||||||
|
|
||||||
|
Ограничение модели
|
||||||
|
- Исследуются задержки, дубликаты, перестановка, старые пакеты и потеря оперативного состояния при перезапуске.
|
||||||
|
- Намеренная подделка не моделируется. Идентификаторы сеанса не доказывают отправителя, поэтому эта защита не заменяет криптографическую аутентификацию.
|
||||||
|
|
||||||
|
Матрица 180 сочетаний
|
||||||
|
архитектура | канал | сценарий | повторы | безопасный сеанс, % | разрешение, % | нарушения, % | старые пакеты приняты, % | потеря намерения, % | управление, кбит/с | эпизодическая служебная, кбит/с | полный поток, кбит/с
|
||||||
|
Без идентификаторов сеанса | Без потерь | Обычный запуск обеих сторон | 1 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Перезапуск наземной станции при движении | 1 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Перезапуск ровера при движении | 1 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Одновременный перезапуск | 1 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Перезапуск наземной станции при аварийном намерении | 1 | 0.000 | 100.000 | 100.000 | 0.000 | 100.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Перезапуск ровера в аварийной фиксации | 1 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Длительный перерыв связи | 1 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Старая команда прежнего сеанса станции | 1 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Старая команда прежнего запуска ровера | 1 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Старый период управления | 1 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Номер сообщения с нуля в новом сеансе | 1 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Переполнение 32-битного номера | 1 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Дубликат приветствия сеанса | 1 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Потеря состояния сеанса | 1 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Потеря подтверждения разрешения | 1 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Потеря подтверждения аварии | 1 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10560 | 262.05847
|
||||||
|
Без идентификаторов сеанса | Без потерь | Потеря подтверждения сброса | 1 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.12400 | 262.07687
|
||||||
|
Без идентификаторов сеанса | Без потерь | Старый запрос сброса | 1 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Поздняя положительная команда после аварии | 1 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | Без потерь | Перезапуск после сброса до подтверждения | 1 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Обычный запуск обеих сторон | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Перезапуск наземной станции при движении | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Перезапуск ровера при движении | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Одновременный перезапуск | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Перезапуск наземной станции при аварийном намерении | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 100.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Перезапуск ровера в аварийной фиксации | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Длительный перерыв связи | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Старая команда прежнего сеанса станции | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Старая команда прежнего запуска ровера | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Старый период управления | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Номер сообщения с нуля в новом сеансе | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Переполнение 32-битного номера | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Дубликат приветствия сеанса | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Потеря состояния сеанса | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Потеря подтверждения разрешения | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Потеря подтверждения аварии | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11009 | 262.06295
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Потеря подтверждения сброса | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.12732 | 262.08018
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Старый запрос сброса | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Поздняя положительная команда после аварии | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 260 кбит/с, помеха 200 мс | Перезапуск после сброса до подтверждения | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Обычный запуск обеих сторон | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Перезапуск наземной станции при движении | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Перезапуск ровера при движении | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Одновременный перезапуск | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Перезапуск наземной станции при аварийном намерении | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 100.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Перезапуск ровера в аварийной фиксации | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Длительный перерыв связи | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Старая команда прежнего сеанса станции | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Старая команда прежнего запуска ровера | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Старый период управления | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Номер сообщения с нуля в новом сеансе | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Переполнение 32-битного номера | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Дубликат приветствия сеанса | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Потеря состояния сеанса | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Потеря подтверждения разрешения | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Потеря подтверждения аварии | 200 | 0.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16817 | 262.12103
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Потеря подтверждения сброса | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.13727 | 262.09014
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Старый запрос сброса | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Поздняя положительная команда после аварии | 200 | 0.000 | 100.000 | 100.000 | 100.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Без идентификаторов сеанса | 230 кбит/с, помеха 1000 мс | Перезапуск после сброса до подтверждения | 200 | 0.000 | 100.000 | 100.000 | 0.000 | 0.000 | 10.88000 | 0.00000 | 261.95287
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Обычный запуск обеих сторон | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Перезапуск наземной станции при движении | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Перезапуск ровера при движении | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Одновременный перезапуск | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Перезапуск наземной станции при аварийном намерении | 1 | 100.000 | 0.000 | 0.000 | 0.000 | 100.000 | 10.88000 | 0.05400 | 262.00687
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Перезапуск ровера в аварийной фиксации | 1 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Длительный перерыв связи | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Старая команда прежнего сеанса станции | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Старая команда прежнего запуска ровера | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Старый период управления | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Номер сообщения с нуля в новом сеансе | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Переполнение 32-битного номера | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Дубликат приветствия сеанса | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Потеря состояния сеанса | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Потеря подтверждения разрешения | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16040 | 262.11327
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Потеря подтверждения аварии | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.21280 | 262.16567
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Потеря подтверждения сброса | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.23120 | 262.18407
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Старый запрос сброса | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Поздняя положительная команда после аварии | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | Без потерь | Перезапуск после сброса до подтверждения | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Обычный запуск обеих сторон | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Перезапуск наземной станции при движении | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Перезапуск ровера при движении | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10852 | 262.06139
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Одновременный перезапуск | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11010 | 262.06297
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Перезапуск наземной станции при аварийном намерении | 200 | 100.000 | 0.000 | 0.000 | 0.000 | 100.000 | 10.88000 | 0.05400 | 262.00687
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Перезапуск ровера в аварийной фиксации | 200 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Длительный перерыв связи | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11348 | 262.06634
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Старая команда прежнего сеанса станции | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10799 | 262.06086
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Старая команда прежнего запуска ровера | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10773 | 262.06059
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Старый период управления | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Номер сообщения с нуля в новом сеансе | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10997 | 262.06284
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Переполнение 32-битного номера | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Дубликат приветствия сеанса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Потеря состояния сеанса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16226 | 262.11512
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Потеря подтверждения разрешения | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16040 | 262.11327
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Потеря подтверждения аварии | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.21848 | 262.17134
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Потеря подтверждения сброса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.23547 | 262.18833
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Старый запрос сброса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10799 | 262.06086
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Поздняя положительная команда после аварии | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10984 | 262.06271
|
||||||
|
Идентификаторы и безопасный запуск | 260 кбит/с, помеха 200 мс | Перезапуск после сброса до подтверждения | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10733 | 262.06020
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Обычный запуск обеих сторон | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Перезапуск наземной станции при движении | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Перезапуск ровера при движении | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Одновременный перезапуск | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11354 | 262.06640
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Перезапуск наземной станции при аварийном намерении | 200 | 100.000 | 0.000 | 0.000 | 0.000 | 100.000 | 10.88000 | 0.05400 | 262.00687
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Перезапуск ровера в аварийной фиксации | 200 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Длительный перерыв связи | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.12937 | 262.08224
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Старая команда прежнего сеанса станции | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Старая команда прежнего запуска ровера | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Старый период управления | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Номер сообщения с нуля в новом сеансе | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10865 | 262.06152
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Переполнение 32-битного номера | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Дубликат приветствия сеанса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Потеря состояния сеанса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Потеря подтверждения разрешения | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16040 | 262.11327
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Потеря подтверждения аварии | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.23379 | 262.18665
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Потеря подтверждения сброса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.24705 | 262.19992
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Старый запрос сброса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Поздняя положительная команда после аварии | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы и безопасный запуск | 230 кбит/с, помеха 1000 мс | Перезапуск после сброса до подтверждения | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Обычный запуск обеих сторон | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Перезапуск наземной станции при движении | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Перезапуск ровера при движении | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Одновременный перезапуск | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Перезапуск наземной станции при аварийном намерении | 1 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Перезапуск ровера в аварийной фиксации | 1 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Длительный перерыв связи | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Старая команда прежнего сеанса станции | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Старая команда прежнего запуска ровера | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Старый период управления | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Номер сообщения с нуля в новом сеансе | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Переполнение 32-битного номера | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Дубликат приветствия сеанса | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Потеря состояния сеанса | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Потеря подтверждения разрешения | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16040 | 262.11327
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Потеря подтверждения аварии | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.21280 | 262.16567
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Потеря подтверждения сброса | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.23120 | 262.18407
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Старый запрос сброса | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Поздняя положительная команда после аварии | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | Без потерь | Перезапуск после сброса до подтверждения | 1 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Обычный запуск обеих сторон | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10733 | 262.06020
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Перезапуск наземной станции при движении | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10826 | 262.06112
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Перезапуск ровера при движении | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10892 | 262.06178
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Одновременный перезапуск | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10773 | 262.06059
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Перезапуск наземной станции при аварийном намерении | 200 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Перезапуск ровера в аварийной фиксации | 200 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Длительный перерыв связи | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11199 | 262.06486
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Старая команда прежнего сеанса станции | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10760 | 262.06046
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Старая команда прежнего запуска ровера | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10786 | 262.06073
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Старый период управления | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10812 | 262.06099
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Номер сообщения с нуля в новом сеансе | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11090 | 262.06377
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Переполнение 32-битного номера | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10852 | 262.06139
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Дубликат приветствия сеанса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Потеря состояния сеанса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16147 | 262.11433
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Потеря подтверждения разрешения | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16594 | 262.11881
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Потеря подтверждения аварии | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.21927 | 262.17213
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Потеря подтверждения сброса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.23663 | 262.18949
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Старый запрос сброса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10865 | 262.06152
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Поздняя положительная команда после аварии | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10878 | 262.06165
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 260 кбит/с, помеха 200 мс | Перезапуск после сброса до подтверждения | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10746 | 262.06033
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Обычный запуск обеих сторон | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Перезапуск наземной станции при движении | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11063 | 262.06350
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Перезапуск ровера при движении | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11169 | 262.06455
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Одновременный перезапуск | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10931 | 262.06218
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Перезапуск наземной станции при аварийном намерении | 200 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Перезапуск ровера в аварийной фиксации | 200 | 100.000 | 0.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.05400 | 262.00687
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Длительный перерыв связи | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11698 | 262.06985
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Старая команда прежнего сеанса станции | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Старая команда прежнего запуска ровера | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Старый период управления | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11261 | 262.06548
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Номер сообщения с нуля в новом сеансе | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10841 | 262.06127
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Переполнение 32-битного номера | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.11076 | 262.06363
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Дубликат приветствия сеанса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Потеря состояния сеанса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16120 | 262.11407
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Потеря подтверждения разрешения | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.16040 | 262.11327
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Потеря подтверждения аварии | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.21966 | 262.17253
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Потеря подтверждения сброса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.25147 | 262.20433
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Старый запрос сброса | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Поздняя положительная команда после аварии | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
Идентификаторы, безопасный запуск и сохранённое намерение | 230 кбит/с, помеха 1000 мс | Перезапуск после сброса до подтверждения | 200 | 100.000 | 100.000 | 0.000 | 0.000 | 0.000 | 10.88000 | 0.10720 | 262.06007
|
||||||
|
|
||||||
|
Перезапуски и безопасное состояние
|
||||||
|
- В основном режиме движение до синхронизации: 0; до подтверждения разрешения: 0; без новой команды оператора: 0.
|
||||||
|
- Максимальный путь после перезапуска в основном режиме: 9.7737 м; это путь безопасного торможения, а не продолжение старой команды.
|
||||||
|
- Продолжение движения после перезапуска: 0; запуск по старой команде: 0.
|
||||||
|
|
||||||
|
Пакеты предыдущего сеанса
|
||||||
|
- Основной режим: введено 2807, отклонено 2807, ошибочно принято 0.
|
||||||
|
- Отрицательный уровень без идентификаторов: ошибочно принято 2807 старых пакетов.
|
||||||
|
- Причины отказа основного режима: сеанс станции=401, запуск ровера=401, период управления=401, номер сообщения=802, событие аварии=401, запрос сброса=401.
|
||||||
|
- Неоднозначных delta=2^31 отклонено: 401.
|
||||||
|
|
||||||
|
Аварийное намерение и сброс
|
||||||
|
- Сохранение emergency_intent на станции сохраняет намерение оператора; ROVER_BOOT_SAFE независимо защищает физическое движение ровера после его перезапуска. Это разные задачи.
|
||||||
|
- В основном режиме потерь аварийного намерения: 0; восстановлений намерения: 401.
|
||||||
|
- Ошибочно принятых старых запросов сброса: 0; движений до RESET_ACK: 0; автоматических восстановлений движения: 0.
|
||||||
|
- Потеря EMERGENCY_ACK не снимает аварийное намерение; потеря RESET_ACK вызывает повтор того же идемпотентного запроса.
|
||||||
|
|
||||||
|
Инварианты безопасности основного режима
|
||||||
|
- Движение до синхронизации: 0.
|
||||||
|
- Движение до подтверждения разрешения: 0.
|
||||||
|
- Движение без новой команды оператора: 0.
|
||||||
|
- Принятие команды старого сеанса станции: 0.
|
||||||
|
- Принятие команды старого запуска ровера: 0.
|
||||||
|
- Использование старого периода управления: 0.
|
||||||
|
- Снятие аварийной фиксации обычной командой: 0.
|
||||||
|
- Потеря аварийного намерения после перезапуска станции: 0.
|
||||||
|
- Движение до подтверждения сброса: 0.
|
||||||
|
- Автоматическое восстановление старой команды после сброса: 0.
|
||||||
|
- Принятие старого запроса сброса: 0.
|
||||||
|
- Принятие неоднозначного номера: 0.
|
||||||
|
- Отрицательная скорость: 0.
|
||||||
|
- Превышение разрешённой скорости: 0.
|
||||||
|
|
||||||
|
Учёт нагрузки
|
||||||
|
- Постоянное управление: 10.88000 кбит/с во всех сочетаниях.
|
||||||
|
- Исходные сообщения согласования: в среднем 0.05400 кбит/с; разрешение движения: 0.04788 кбит/с.
|
||||||
|
- Аварийные сообщения и сброс: в среднем 0.00574 кбит/с; повторы и повторные подтверждения: 0.01536 кбит/с.
|
||||||
|
- Эпизодическая служебная нагрузка основного режима: средняя 0.12298 кбит/с, максимум 0.25147 кбит/с. Именно к этой величине относились прежние значения 0,12298–0,25147 кбит/с.
|
||||||
|
- Постоянные исходные потоки: видео 243.39287, телеметрия 7.68000, управление 10.88000 кбит/с.
|
||||||
|
- Полный предложенный поток основного режима: средний 262.07584 кбит/с, максимум 262.20433 кбит/с.
|
||||||
|
- Доставка управления не ниже 97.836%, телеметрии не ниже 97.918%, публикация видео не ниже 86.054%.
|
||||||
|
- Максимальная очередь: 46 пакетов.
|
||||||
|
|
||||||
|
Функциональные проверки
|
||||||
|
- ПРОЙДЕНО — 01. Сериализация всех сообщений: все десять типов имеют однозначное двоичное представление
|
||||||
|
- ПРОЙДЕНО — 02. Отклонение неверной версии: неверная версия отклонена
|
||||||
|
- ПРОЙДЕНО — 03. Отклонение неизвестного типа: неизвестный тип отклонён
|
||||||
|
- ПРОЙДЕНО — 04. Допустимые диапазоны управления: диапазоны и сочетания полей управления проверены
|
||||||
|
- ПРОЙДЕНО — 05. Номер ноль в новом сеансе: новый сеанс принимает начальный номер ноль
|
||||||
|
- ПРОЙДЕНО — 06. Старый сеанс станции: старый сеанс наземной станции отклонён
|
||||||
|
- ПРОЙДЕНО — 07. Старый запуск ровера: старый идентификатор запуска ровера отклонён
|
||||||
|
- ПРОЙДЕНО — 08. Старый период управления: старый период управления отклонён
|
||||||
|
- ПРОЙДЕНО — 09. Переполнение номера сообщения: переход от 0xFFFFFFFF к нулю принят как новый
|
||||||
|
- ПРОЙДЕНО — 10. Неоднозначная половина диапазона: неоднозначная половина диапазона отклонена
|
||||||
|
- ПРОЙДЕНО — 11. Безопасное состояние после запуска: после запуска движение запрещено с обеих сторон
|
||||||
|
- ПРОЙДЕНО — 12. Состояние сеанса не запускает движение: состояние сеанса и дубликат приветствия не разрешают движение
|
||||||
|
- ПРОЙДЕНО — 13. Подтверждение разрешения не восстанавливает движение: подтверждение разрешения сохраняет нулевое состояние
|
||||||
|
- ПРОЙДЕНО — 14. Новая команда оператора обязательна: движение начинается только по новой команде оператора
|
||||||
|
- ПРОЙДЕНО — 15. Безопасный перезапуск ровера: перезапуск ровера немедленно создаёт безопасное состояние
|
||||||
|
- ПРОЙДЕНО — 16. Прекращение старого потока станции: новый сеанс прекращает старый поток команд
|
||||||
|
- ПРОЙДЕНО — 17. Восстановление аварийного намерения: сохранённое аварийное намерение восстановлено
|
||||||
|
- ПРОЙДЕНО — 18. Подтверждение не снимает аварийное намерение: подтверждение аварии не снимает намерение
|
||||||
|
- ПРОЙДЕНО — 19. Отклонение старого запроса сброса: запрос сброса старого сеанса отклонён
|
||||||
|
- ПРОЙДЕНО — 20. Повтор после потери подтверждения сброса: без подтверждения тот же запрос сброса передаётся повторно
|
||||||
|
- ПРОЙДЕНО — 21. Повторное подтверждение дубликата сброса: дубликат не повторяет сброс и получает подтверждение
|
||||||
|
- ПРОЙДЕНО — 22. Аварийная фиксация не снимается обычной командой: обычная команда не снимает аварийную фиксацию
|
||||||
|
- ПРОЙДЕНО — 23. Воспроизводимость: помехи и 64-битные идентификаторы воспроизводимы
|
||||||
|
- ПРОЙДЕНО — 24. Постоянная нагрузка команд управления: поток управления совпадает с размером 68 байт, частотой 20 Гц и длительностью опыта
|
||||||
|
|
||||||
|
Созданные файлы
|
||||||
|
- protocol/control_messages.py
|
||||||
|
- protocol/session_state.py
|
||||||
|
- tests/lab041_session_restart_safety.py
|
||||||
|
- data/processed/lab041/lab041_summary.csv
|
||||||
|
- data/processed/lab041/lab041_session_metrics.csv
|
||||||
|
- data/processed/lab041/lab041_rejection_metrics.csv
|
||||||
|
- data/processed/lab041/lab041_restart_metrics.csv
|
||||||
|
- data/processed/lab041/lab041_load_metrics.csv
|
||||||
|
- data/processed/lab041/lab041_report.txt
|
||||||
|
- data/processed/lab041/lab041_session_time.png
|
||||||
|
- data/processed/lab041/lab041_authorization_time.png
|
||||||
|
- data/processed/lab041/lab041_old_packet_rejection.png
|
||||||
|
- data/processed/lab041/lab041_restart_distance.png
|
||||||
|
- data/processed/lab041/lab041_emergency_intent.png
|
||||||
|
- data/processed/lab041/lab041_safety_violations.png
|
||||||
|
- data/processed/lab041/lab041_protection_load.png
|
||||||
|
- data/processed/lab041/lab041_traffic_impact.png
|
||||||
|
|
||||||
|
Ограничения
|
||||||
|
- Модель не включает криптографическую аутентификацию и не рассматривает намеренного нарушителя.
|
||||||
|
- Размеры идентификаторов и источник случайности для реального изделия должны быть закреплены отдельным проектным решением.
|
||||||
|
- Lab041 не добавлена в индекс и не закоммичена; результаты Lab028–Lab040 не изменены.
|
||||||
BIN
data/processed/lab041/lab041_restart_distance.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
181
data/processed/lab041/lab041_restart_metrics.csv
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
architecture,channel_condition,scenario,repetitions,restart_cases,mean_restart_to_safe_ms,p95_restart_to_safe_ms,mean_distance_after_restart_m,max_distance_after_restart_m,continued_movement_after_restart,startup_from_old_command,emergency_latch_removed,emergency_intent_lost,unsafe_movement_authorizations,emergency_intent_restored,zero_commands_continued,mean_emergency_refixed_ms,emergency_event_misclassified,old_reset_erroneously_accepted,movement_before_reset_ack,automatic_motion_after_reset,negative_speed_cases,speed_limit_exceeded_cases
|
||||||
|
no_session_ids,no_loss,normal_start,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,ground_restart_moving,1,1,0.0,0.0,416.6666666666667,416.6666666666667,1,1,0,0,1,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,rover_restart_moving,1,1,0.0,0.0,416.6666666666667,416.6666666666667,1,1,0,0,1,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,both_restart,1,1,0.0,0.0,416.6666666666667,416.6666666666667,1,1,0,0,1,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,ground_restart_emergency,1,1,0.0,0.0,416.6666666666667,416.6666666666667,1,1,0,1,1,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,rover_restart_latched,1,1,0.0,0.0,416.6666666666667,416.6666666666667,1,1,1,0,1,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,long_link_break,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,old_ground_session_control,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,old_rover_boot_control,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,old_control_epoch,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,sequence_reset_new_session,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,sequence_wrap,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,duplicate_hello,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,lost_session_status,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,lost_authorize_ack,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,lost_emergency_ack,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,lost_reset_ack,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,1,1,0,0
|
||||||
|
no_session_ids,no_loss,old_reset_request,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,1,1,0,0,0,0
|
||||||
|
no_session_ids,no_loss,late_positive_after_emergency,1,0,0.0,0.0,0.0,0.0,0,0,1,0,0,0,0,0.0,1,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,restart_after_reset_before_ack,1,1,0.0,0.0,416.6666666666667,416.6666666666667,1,1,0,0,1,0,0,0.0,0,0,1,1,0,0
|
||||||
|
no_session_ids,260_200,normal_start,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,ground_restart_moving,200,200,0.0,0.0,416.66666666666674,416.6666666666667,200,200,0,0,200,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,rover_restart_moving,200,200,0.0,0.0,416.66666666666674,416.6666666666667,200,200,0,0,200,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,both_restart,200,200,0.0,0.0,416.66666666666674,416.6666666666667,200,200,0,0,200,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,ground_restart_emergency,200,200,0.0,0.0,416.66666666666674,416.6666666666667,200,200,0,200,200,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,rover_restart_latched,200,200,0.0,0.0,416.66666666666674,416.6666666666667,200,200,200,0,200,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,long_link_break,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,old_ground_session_control,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,old_rover_boot_control,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,old_control_epoch,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,sequence_reset_new_session,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,sequence_wrap,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,duplicate_hello,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,lost_session_status,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,lost_authorize_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,lost_emergency_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,lost_reset_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,200,200,0,0
|
||||||
|
no_session_ids,260_200,old_reset_request,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,200,200,0,0,0,0
|
||||||
|
no_session_ids,260_200,late_positive_after_emergency,200,0,0.0,0.0,0.0,0.0,0,0,200,0,0,0,0,0.0,200,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,restart_after_reset_before_ack,200,200,0.0,0.0,416.66666666666674,416.6666666666667,200,200,0,0,200,0,0,0.0,0,0,200,200,0,0
|
||||||
|
no_session_ids,230_1000,normal_start,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,ground_restart_moving,200,200,0.0,0.0,416.66666666666674,416.6666666666667,200,200,0,0,200,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,rover_restart_moving,200,200,0.0,0.0,416.66666666666674,416.6666666666667,200,200,0,0,200,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,both_restart,200,200,0.0,0.0,416.66666666666674,416.6666666666667,200,200,0,0,200,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,ground_restart_emergency,200,200,0.0,0.0,416.66666666666674,416.6666666666667,200,200,0,200,200,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,rover_restart_latched,200,200,0.0,0.0,416.66666666666674,416.6666666666667,200,200,200,0,200,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,long_link_break,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,old_ground_session_control,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,old_rover_boot_control,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,old_control_epoch,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,sequence_reset_new_session,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,sequence_wrap,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,duplicate_hello,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,lost_session_status,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,lost_authorize_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,lost_emergency_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,lost_reset_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,200,200,0,0
|
||||||
|
no_session_ids,230_1000,old_reset_request,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,200,200,0,0,0,0
|
||||||
|
no_session_ids,230_1000,late_positive_after_emergency,200,0,0.0,0.0,0.0,0.0,0,0,200,0,0,0,0,0.0,200,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,restart_after_reset_before_ack,200,200,0.0,0.0,416.66666666666674,416.6666666666667,200,200,0,0,200,0,0,0.0,0,0,200,200,0,0
|
||||||
|
session_safe_boot,no_loss,normal_start,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,ground_restart_moving,1,1,3.6,3.6,9.77366255144033,9.77366255144033,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,rover_restart_moving,1,1,0.0,0.0,8.037551440329219,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,both_restart,1,1,0.0,0.0,8.037551440329219,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,ground_restart_emergency,1,1,0.0,0.0,0.0,0.0,0,0,0,1,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,rover_restart_latched,1,1,0.0,0.0,8.037551440329219,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,long_link_break,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,old_ground_session_control,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,old_rover_boot_control,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,old_control_epoch,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,sequence_reset_new_session,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,sequence_wrap,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,duplicate_hello,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,lost_session_status,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,lost_authorize_ack,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,lost_emergency_ack,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,lost_reset_ack,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,old_reset_request,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,late_positive_after_emergency,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,restart_after_reset_before_ack,1,1,0.0,0.0,8.037551440329219,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,normal_start,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,ground_restart_moving,200,200,4.153846153846154,4.153846153846154,9.773662551440328,9.77366255144033,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,rover_restart_moving,200,200,0.0,0.0,8.03755144032922,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,both_restart,200,200,0.0,0.0,8.03755144032922,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,ground_restart_emergency,200,200,0.0,0.0,0.0,0.0,0,0,0,200,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,rover_restart_latched,200,200,0.0,0.0,8.03755144032922,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,long_link_break,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,old_ground_session_control,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,old_rover_boot_control,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,old_control_epoch,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,sequence_reset_new_session,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,sequence_wrap,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,duplicate_hello,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,lost_session_status,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,lost_authorize_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,lost_emergency_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,lost_reset_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,old_reset_request,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,late_positive_after_emergency,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,restart_after_reset_before_ack,200,200,0.0,0.0,8.03755144032922,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,normal_start,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,ground_restart_moving,200,200,4.695652173913045,4.695652173913044,9.773662551440328,9.77366255144033,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,rover_restart_moving,200,200,0.0,0.0,8.03755144032922,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,both_restart,200,200,0.0,0.0,8.03755144032922,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,ground_restart_emergency,200,200,0.0,0.0,0.0,0.0,0,0,0,200,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,rover_restart_latched,200,200,0.0,0.0,8.03755144032922,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,long_link_break,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,old_ground_session_control,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,old_rover_boot_control,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,old_control_epoch,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,sequence_reset_new_session,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,sequence_wrap,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,duplicate_hello,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,lost_session_status,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,lost_authorize_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,lost_emergency_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,lost_reset_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,old_reset_request,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,late_positive_after_emergency,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,restart_after_reset_before_ack,200,200,0.0,0.0,8.03755144032922,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,normal_start,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,ground_restart_moving,1,1,3.6,3.6,9.77366255144033,9.77366255144033,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,rover_restart_moving,1,1,0.0,0.0,8.037551440329219,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,both_restart,1,1,0.0,0.0,8.037551440329219,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,ground_restart_emergency,1,1,0.0,0.0,0.0,0.0,0,0,0,0,0,1,1,3.6,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,rover_restart_latched,1,1,0.0,0.0,8.037551440329219,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,long_link_break,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,old_ground_session_control,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,old_rover_boot_control,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,old_control_epoch,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,sequence_reset_new_session,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,sequence_wrap,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,duplicate_hello,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,lost_session_status,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,lost_authorize_ack,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,lost_emergency_ack,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,lost_reset_ack,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,old_reset_request,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,late_positive_after_emergency,1,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,restart_after_reset_before_ack,1,1,0.0,0.0,8.037551440329219,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,normal_start,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,ground_restart_moving,200,200,4.153846153846154,4.153846153846154,9.773662551440328,9.77366255144033,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,rover_restart_moving,200,200,0.0,0.0,8.03755144032922,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,both_restart,200,200,0.0,0.0,8.03755144032922,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,ground_restart_emergency,200,200,0.0,0.0,0.0,0.0,0,0,0,0,0,200,200,4.153846153846154,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,rover_restart_latched,200,200,0.0,0.0,8.03755144032922,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,long_link_break,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,old_ground_session_control,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,old_rover_boot_control,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,old_control_epoch,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,sequence_reset_new_session,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,sequence_wrap,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,duplicate_hello,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,lost_session_status,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,lost_authorize_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,lost_emergency_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,lost_reset_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,old_reset_request,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,late_positive_after_emergency,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,restart_after_reset_before_ack,200,200,0.0,0.0,8.03755144032922,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,normal_start,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,ground_restart_moving,200,200,4.695652173913045,4.695652173913044,9.773662551440328,9.77366255144033,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,rover_restart_moving,200,200,0.0,0.0,8.03755144032922,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,both_restart,200,200,0.0,0.0,8.03755144032922,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,ground_restart_emergency,200,200,0.0,0.0,0.0,0.0,0,0,0,0,0,200,200,4.695652173913045,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,rover_restart_latched,200,200,0.0,0.0,8.03755144032922,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,long_link_break,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,old_ground_session_control,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,old_rover_boot_control,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,old_control_epoch,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,sequence_reset_new_session,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,sequence_wrap,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,duplicate_hello,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,lost_session_status,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,lost_authorize_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,lost_emergency_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,lost_reset_ack,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,old_reset_request,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,late_positive_after_emergency,200,0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,restart_after_reset_before_ack,200,200,0.0,0.0,8.03755144032922,8.037551440329219,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0
|
||||||
|
BIN
data/processed/lab041/lab041_safety_violations.png
Normal file
|
After Width: | Height: | Size: 82 KiB |
181
data/processed/lab041/lab041_session_metrics.csv
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
architecture,channel_condition,scenario,repetitions,mean_safe_sync_ms,p95_safe_sync_ms,mean_session_hello,mean_session_status,mean_lost_messages,mean_retries,mean_duplicates,mean_session_rejects,mean_ground_safe_ms,mean_rover_safe_ms,mean_authorize_ack_ms,mean_authorization_repeats,mean_authorization_acks_lost,mean_ack_to_operator_ms,mean_actual_motion_ms,movement_before_sync,movement_before_authorize_ack,movement_without_new_operator,automatic_old_command_restorations,old_control_epoch_uses
|
||||||
|
no_session_ids,no_loss,normal_start,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,ground_restart_moving,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,1,1,1,0
|
||||||
|
no_session_ids,no_loss,rover_restart_moving,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,1,1,1,0
|
||||||
|
no_session_ids,no_loss,both_restart,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,1,1,1,0
|
||||||
|
no_session_ids,no_loss,ground_restart_emergency,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0,1,1,0
|
||||||
|
no_session_ids,no_loss,rover_restart_latched,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0,1,1,0
|
||||||
|
no_session_ids,no_loss,long_link_break,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,old_ground_session_control,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,old_rover_boot_control,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,old_control_epoch,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,1
|
||||||
|
no_session_ids,no_loss,sequence_reset_new_session,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,sequence_wrap,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,duplicate_hello,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,lost_session_status,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,lost_authorize_ack,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,1,0,0,0
|
||||||
|
no_session_ids,no_loss,lost_emergency_ack,1,0.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,lost_reset_ack,1,0.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,old_reset_request,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,late_positive_after_emergency,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,no_loss,restart_after_reset_before_ack,1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1,0,1,1,0
|
||||||
|
no_session_ids,260_200,normal_start,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,ground_restart_moving,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,200,200,200,0
|
||||||
|
no_session_ids,260_200,rover_restart_moving,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,200,200,200,0
|
||||||
|
no_session_ids,260_200,both_restart,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,200,200,200,0
|
||||||
|
no_session_ids,260_200,ground_restart_emergency,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,0,200,200,0
|
||||||
|
no_session_ids,260_200,rover_restart_latched,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,0,200,200,0
|
||||||
|
no_session_ids,260_200,long_link_break,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,old_ground_session_control,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,old_rover_boot_control,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,old_control_epoch,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,200
|
||||||
|
no_session_ids,260_200,sequence_reset_new_session,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,sequence_wrap,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,duplicate_hello,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,lost_session_status,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,lost_authorize_ack,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,200,0,0,0
|
||||||
|
no_session_ids,260_200,lost_emergency_ack,200,0.0,0.0,0.0,0.0,1.17,1.17,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,lost_reset_ack,200,0.0,0.0,0.0,0.0,1.105,1.105,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,old_reset_request,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,late_positive_after_emergency,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,260_200,restart_after_reset_before_ack,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,0,200,200,0
|
||||||
|
no_session_ids,230_1000,normal_start,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,ground_restart_moving,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,200,200,200,0
|
||||||
|
no_session_ids,230_1000,rover_restart_moving,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,200,200,200,0
|
||||||
|
no_session_ids,230_1000,both_restart,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,200,200,200,0
|
||||||
|
no_session_ids,230_1000,ground_restart_emergency,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,0,200,200,0
|
||||||
|
no_session_ids,230_1000,rover_restart_latched,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,0,200,200,0
|
||||||
|
no_session_ids,230_1000,long_link_break,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,old_ground_session_control,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,old_rover_boot_control,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,old_control_epoch,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,200
|
||||||
|
no_session_ids,230_1000,sequence_reset_new_session,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,sequence_wrap,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,duplicate_hello,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,lost_session_status,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,lost_authorize_ack,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,200,0,0,0
|
||||||
|
no_session_ids,230_1000,lost_emergency_ack,200,0.0,0.0,0.0,0.0,3.37,3.37,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,lost_reset_ack,200,0.0,0.0,0.0,0.0,1.42,1.42,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,old_reset_request,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,late_positive_after_emergency,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
no_session_ids,230_1000,restart_after_reset_before_ack,200,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,200,0,200,200,0
|
||||||
|
session_safe_boot,no_loss,normal_start,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,ground_restart_moving,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,rover_restart_moving,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,both_restart,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,ground_restart_emergency,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,rover_restart_latched,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,long_link_break,1,5003.6,5003.6,1.0,1.0,0.0,0.0,0.0,1.0,5003.6,5001.786666666667,103.54666666666645,0.0,0.0,200.0,5307.146666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,old_ground_session_control,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,old_rover_boot_control,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,old_control_epoch,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,sequence_reset_new_session,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,sequence_wrap,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,duplicate_hello,1,3.6,3.6,2.0,2.0,0.0,0.0,1.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,lost_session_status,1,53.6,53.6,2.0,2.0,1.0,1.0,1.0,0.0,53.6,51.78666666666667,103.54666666666668,0.0,0.0,200.0,357.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,lost_authorize_ack,1,3.6,3.6,1.0,1.0,1.0,1.0,1.0,0.0,3.6,1.7866666666666666,153.54666666666668,1.0,1.0,200.0,357.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,lost_emergency_ack,1,3.6,3.6,1.0,1.0,1.0,1.0,1.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,lost_reset_ack,1,3.6,3.6,1.0,1.0,1.0,1.0,1.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,old_reset_request,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,late_positive_after_emergency,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,no_loss,restart_after_reset_before_ack,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,normal_start,200,4.153846153846154,4.153846153846154,1.0,1.0,0.0,0.0,0.0,0.0,4.153846153846154,2.0615384615384613,104.0923076923077,0.0,0.0,200.0,308.2461538461539,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,ground_restart_moving,200,4.153846153846154,4.153846153846154,1.0,1.0,0.0,0.0,0.0,0.0,4.153846153846154,2.0615384615384613,104.0923076923077,0.0,0.0,200.0,308.2461538461539,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,rover_restart_moving,200,4.153846153846154,4.153846153846154,1.0,1.0,0.05,0.05,0.0,0.0,4.153846153846154,2.0615384615384613,106.59230769230771,0.05,0.0,200.0,310.7461538461539,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,both_restart,200,4.153846153846154,4.153846153846154,1.0,1.0,0.11,0.11,0.0,0.0,4.153846153846154,2.0615384615384613,109.5923076923077,0.11,0.0,200.0,313.7461538461539,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,ground_restart_emergency,200,4.153846153846154,4.153846153846154,1.0,1.0,0.0,0.0,0.0,0.0,4.153846153846154,2.0615384615384613,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,rover_restart_latched,200,4.153846153846154,4.153846153846154,1.0,1.0,0.0,0.0,0.0,0.0,4.153846153846154,2.0615384615384613,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,long_link_break,200,5013.1538461538485,5004.153846153846,1.18,1.0,0.235,0.235,0.0,1.0,5013.1538461538485,5011.061538461539,106.84230769230771,0.055,0.0,200.0,5319.996153846155,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,old_ground_session_control,200,4.153846153846154,4.153846153846154,1.0,1.0,0.03,0.03,0.0,1.0,4.153846153846154,2.0615384615384613,105.5923076923077,0.03,0.0,200.0,309.7461538461539,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,old_rover_boot_control,200,4.153846153846154,4.153846153846154,1.0,1.0,0.02,0.02,0.0,1.0,4.153846153846154,2.0615384615384613,105.09230769230768,0.02,0.0,200.0,309.24615384615396,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,old_control_epoch,200,4.153846153846154,4.153846153846154,1.0,1.0,0.0,0.0,0.0,1.0,4.153846153846154,2.0615384615384613,104.0923076923077,0.0,0.0,200.0,308.2461538461539,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,sequence_reset_new_session,200,4.153846153846154,4.153846153846154,1.0,1.0,0.105,0.105,0.0,0.0,4.153846153846154,2.0615384615384613,109.3423076923077,0.105,0.0,200.0,313.4961538461539,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,sequence_wrap,200,4.153846153846154,4.153846153846154,1.0,1.0,0.0,0.0,0.0,1.0,4.153846153846154,2.0615384615384613,104.0923076923077,0.0,0.0,200.0,308.2461538461539,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,duplicate_hello,200,4.153846153846154,4.153846153846154,2.0,2.0,0.0,0.0,1.0,0.0,4.153846153846154,2.0615384615384613,104.0923076923077,0.0,0.0,200.0,308.2461538461539,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,lost_session_status,200,54.15384615384614,54.15384615384615,2.0,2.0,1.04,1.04,1.0,0.0,54.15384615384614,52.061538461538476,106.0923076923077,0.04,0.0,200.0,360.2461538461539,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,lost_authorize_ack,200,4.153846153846154,4.153846153846154,1.0,1.0,1.0,1.0,1.0,0.0,4.153846153846154,2.0615384615384613,154.09230769230768,1.0,1.0,200.0,358.24615384615385,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,lost_emergency_ack,200,4.153846153846154,4.153846153846154,1.0,1.0,1.215,1.215,1.0,0.0,4.153846153846154,2.0615384615384613,104.8423076923077,0.015,0.0,200.0,308.9961538461539,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,lost_reset_ack,200,4.153846153846154,4.153846153846154,1.0,1.0,1.145,1.145,1.005,0.0,4.153846153846154,2.0615384615384613,108.5923076923077,0.09,0.0,200.0,312.74615384615396,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,old_reset_request,200,4.153846153846154,4.153846153846154,1.0,1.0,0.03,0.03,0.0,1.0,4.153846153846154,2.0615384615384613,105.5923076923077,0.03,0.0,200.0,309.7461538461539,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,late_positive_after_emergency,200,4.153846153846154,4.153846153846154,1.0,1.0,0.1,0.1,0.0,1.0,4.153846153846154,2.0615384615384613,109.09230769230771,0.1,0.0,200.0,313.2461538461539,0,0,0,0,0
|
||||||
|
session_safe_boot,260_200,restart_after_reset_before_ack,200,4.153846153846154,4.153846153846154,1.0,1.0,0.005,0.005,0.0,0.0,4.153846153846154,2.0615384615384613,104.3423076923077,0.005,0.0,200.0,308.4961538461539,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,normal_start,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,ground_restart_moving,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,rover_restart_moving,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,both_restart,200,4.695652173913045,4.695652173913044,1.0,1.0,0.24,0.24,0.0,0.0,4.695652173913045,2.330434782608696,116.62608695652172,0.24,0.0,200.0,321.3217391304348,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,ground_restart_emergency,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,rover_restart_latched,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,long_link_break,200,5037.445652173914,5004.695652173913,1.655,1.0,0.83,0.83,0.0,1.0,5037.445652173914,5035.080434782608,113.37608695652165,0.175,0.0,200.0,5350.821739130435,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,old_ground_session_control,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,old_rover_boot_control,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,old_control_epoch,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,sequence_reset_new_session,200,4.695652173913045,4.695652173913044,1.0,1.0,0.055,0.055,0.0,0.0,4.695652173913045,2.330434782608696,107.37608695652172,0.055,0.0,200.0,312.0717391304348,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,sequence_wrap,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,duplicate_hello,200,4.695652173913045,4.695652173913044,2.0,2.0,0.0,0.0,1.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,lost_session_status,200,54.69565217391304,54.69565217391304,2.0,2.0,1.0,1.0,1.0,0.0,54.69565217391304,52.3304347826087,104.62608695652172,0.0,0.0,200.0,359.3217391304347,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,lost_authorize_ack,200,4.695652173913045,4.695652173913044,1.0,1.0,1.0,1.0,1.0,0.0,4.695652173913045,2.330434782608696,154.62608695652173,1.0,1.0,200.0,359.3217391304347,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,lost_emergency_ack,200,4.695652173913045,4.695652173913044,1.0,1.0,1.795,1.795,1.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,lost_reset_ack,200,4.695652173913045,4.695652173913044,1.0,1.0,1.565,1.565,1.0,0.0,4.695652173913045,2.330434782608696,123.87608695652172,0.385,0.0,200.0,328.5717391304348,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,old_reset_request,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,late_positive_after_emergency,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
session_safe_boot,230_1000,restart_after_reset_before_ack,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,normal_start,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,ground_restart_moving,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,rover_restart_moving,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,both_restart,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,ground_restart_emergency,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,rover_restart_latched,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,long_link_break,1,5003.6,5003.6,1.0,1.0,0.0,0.0,0.0,1.0,5003.6,5001.786666666667,103.54666666666645,0.0,0.0,200.0,5307.146666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,old_ground_session_control,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,old_rover_boot_control,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,old_control_epoch,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,sequence_reset_new_session,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,sequence_wrap,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,duplicate_hello,1,3.6,3.6,2.0,2.0,0.0,0.0,1.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,lost_session_status,1,53.6,53.6,2.0,2.0,1.0,1.0,1.0,0.0,53.6,51.78666666666667,103.54666666666668,0.0,0.0,200.0,357.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,lost_authorize_ack,1,3.6,3.6,1.0,1.0,1.0,1.0,1.0,0.0,3.6,1.7866666666666666,153.54666666666668,1.0,1.0,200.0,357.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,lost_emergency_ack,1,3.6,3.6,1.0,1.0,1.0,1.0,1.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,lost_reset_ack,1,3.6,3.6,1.0,1.0,1.0,1.0,1.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,old_reset_request,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,late_positive_after_emergency,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,1.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,no_loss,restart_after_reset_before_ack,1,3.6,3.6,1.0,1.0,0.0,0.0,0.0,0.0,3.6,1.7866666666666666,103.54666666666668,0.0,0.0,200.0,307.1466666666667,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,normal_start,200,4.153846153846154,4.153846153846154,1.0,1.0,0.005,0.005,0.0,0.0,4.153846153846154,2.0615384615384613,104.3423076923077,0.005,0.0,200.0,308.4961538461539,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,ground_restart_moving,200,4.153846153846154,4.153846153846154,1.0,1.0,0.04,0.04,0.0,0.0,4.153846153846154,2.0615384615384613,106.0923076923077,0.04,0.0,200.0,310.2461538461539,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,rover_restart_moving,200,4.153846153846154,4.153846153846154,1.0,1.0,0.065,0.065,0.0,0.0,4.153846153846154,2.0615384615384613,107.3423076923077,0.065,0.0,200.0,311.4961538461539,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,both_restart,200,4.153846153846154,4.153846153846154,1.0,1.0,0.02,0.02,0.0,0.0,4.153846153846154,2.0615384615384613,105.09230769230768,0.02,0.0,200.0,309.24615384615396,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,ground_restart_emergency,200,4.153846153846154,4.153846153846154,1.0,1.0,0.0,0.0,0.0,0.0,4.153846153846154,2.0615384615384613,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,rover_restart_latched,200,4.153846153846154,4.153846153846154,1.0,1.0,0.0,0.0,0.0,0.0,4.153846153846154,2.0615384615384613,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,long_link_break,200,5009.403846153848,5004.153846153846,1.105,1.0,0.18,0.18,0.0,1.0,5009.403846153848,5007.311538461539,107.84230769230771,0.075,0.0,200.0,5317.246153846156,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,old_ground_session_control,200,4.153846153846154,4.153846153846154,1.0,1.0,0.015,0.015,0.0,1.0,4.153846153846154,2.0615384615384613,104.84230769230768,0.015,0.0,200.0,308.9961538461539,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,old_rover_boot_control,200,4.153846153846154,4.153846153846154,1.0,1.0,0.025,0.025,0.0,1.0,4.153846153846154,2.0615384615384613,105.3423076923077,0.025,0.0,200.0,309.4961538461539,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,old_control_epoch,200,4.153846153846154,4.153846153846154,1.0,1.0,0.035,0.035,0.0,1.0,4.153846153846154,2.0615384615384613,105.84230769230768,0.035,0.0,200.0,309.9961538461539,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,sequence_reset_new_session,200,4.653846153846154,4.153846153846154,1.01,1.0,0.14,0.14,0.0,0.0,4.653846153846154,2.5615384615384618,110.5923076923077,0.13,0.0,200.0,315.2461538461539,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,sequence_wrap,200,4.153846153846154,4.153846153846154,1.0,1.0,0.05,0.05,0.0,1.0,4.153846153846154,2.0615384615384613,106.5923076923077,0.05,0.0,200.0,310.7461538461539,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,duplicate_hello,200,4.153846153846154,4.153846153846154,2.0,2.0,0.0,0.0,1.0,0.0,4.153846153846154,2.0615384615384613,104.0923076923077,0.0,0.0,200.0,308.2461538461539,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,lost_session_status,200,54.653846153846146,54.15384615384615,2.01,2.0,1.01,1.01,1.0,0.0,54.653846153846146,52.56153846153848,104.0923076923077,0.0,0.0,200.0,358.7461538461539,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,lost_authorize_ack,200,4.153846153846154,4.153846153846154,1.0,1.0,1.21,1.21,1.0,0.0,4.153846153846154,2.0615384615384613,164.5923076923077,1.21,1.0,200.0,368.74615384615385,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,lost_emergency_ack,200,4.153846153846154,4.153846153846154,1.0,1.0,1.245,1.245,1.0,0.0,4.153846153846154,2.0615384615384613,112.59230769230768,0.17,0.0,200.0,316.74615384615396,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,lost_reset_ack,200,4.153846153846154,4.153846153846154,1.0,1.0,1.18,1.18,1.0,0.0,4.153846153846154,2.0615384615384613,106.5923076923077,0.05,0.0,200.0,310.7461538461539,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,old_reset_request,200,4.153846153846154,4.153846153846154,1.0,1.0,0.055,0.055,0.0,1.0,4.153846153846154,2.0615384615384613,106.8423076923077,0.055,0.0,200.0,310.9961538461539,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,late_positive_after_emergency,200,4.153846153846154,4.153846153846154,1.0,1.0,0.06,0.06,0.0,1.0,4.153846153846154,2.0615384615384613,107.09230769230768,0.06,0.0,200.0,311.24615384615396,0,0,0,0,0
|
||||||
|
persistent_emergency,260_200,restart_after_reset_before_ack,200,4.153846153846154,4.153846153846154,1.0,1.0,0.01,0.01,0.0,0.0,4.153846153846154,2.0615384615384613,104.59230769230768,0.01,0.0,200.0,308.74615384615396,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,normal_start,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,ground_restart_moving,200,4.695652173913045,4.695652173913044,1.0,1.0,0.13,0.13,0.0,0.0,4.695652173913045,2.330434782608696,111.1260869565217,0.13,0.0,200.0,315.8217391304348,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,rover_restart_moving,200,4.695652173913045,4.695652173913044,1.0,1.0,0.17,0.17,0.0,0.0,4.695652173913045,2.330434782608696,113.1260869565217,0.17,0.0,200.0,317.82173913043476,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,both_restart,200,4.695652173913045,4.695652173913044,1.0,1.0,0.08,0.08,0.0,0.0,4.695652173913045,2.330434782608696,108.62608695652172,0.08,0.0,200.0,313.3217391304348,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,ground_restart_emergency,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,rover_restart_latched,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,long_link_break,200,5022.945652173914,5004.695652173913,1.365,1.0,0.365,0.365,0.0,1.0,5022.945652173914,5020.580434782608,104.62608695652165,0.0,0.0,200.0,5327.571739130434,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,old_ground_session_control,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,old_rover_boot_control,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,old_control_epoch,200,4.695652173913045,4.695652173913044,1.0,1.0,0.205,0.205,0.0,1.0,4.695652173913045,2.330434782608696,114.87608695652173,0.205,0.0,200.0,319.5717391304349,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,sequence_reset_new_session,200,6.945652173913045,4.695652173913044,1.045,1.0,0.045,0.045,0.0,0.0,6.945652173913045,4.580434782608696,104.62608695652172,0.0,0.0,200.0,311.57173913043476,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,sequence_wrap,200,4.695652173913045,4.695652173913044,1.0,1.0,0.135,0.135,0.0,1.0,4.695652173913045,2.330434782608696,111.37608695652172,0.135,0.0,200.0,316.0717391304348,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,duplicate_hello,200,4.695652173913045,4.695652173913044,2.0,2.0,0.0,0.0,1.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,lost_session_status,200,54.69565217391304,54.69565217391304,2.0,2.0,1.0,1.0,1.0,0.0,54.69565217391304,52.3304347826087,104.62608695652172,0.0,0.0,200.0,359.3217391304347,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,lost_authorize_ack,200,4.695652173913045,4.695652173913044,1.0,1.0,1.0,1.0,1.0,0.0,4.695652173913045,2.330434782608696,154.62608695652173,1.0,1.0,200.0,359.3217391304347,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,lost_emergency_ack,200,4.695652173913045,4.695652173913044,1.0,1.0,1.26,1.26,1.0,0.0,4.695652173913045,2.330434782608696,111.37608695652172,0.135,0.0,200.0,316.0717391304348,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,lost_reset_ack,200,4.695652173913045,4.695652173913044,1.0,1.0,1.68,1.68,1.0,0.0,4.695652173913045,2.330434782608696,116.37608695652173,0.235,0.0,200.0,321.0717391304348,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,old_reset_request,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,late_positive_after_emergency,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,1.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
persistent_emergency,230_1000,restart_after_reset_before_ack,200,4.695652173913045,4.695652173913044,1.0,1.0,0.0,0.0,0.0,0.0,4.695652173913045,2.330434782608696,104.62608695652172,0.0,0.0,200.0,309.3217391304348,0,0,0,0,0
|
||||||
|
BIN
data/processed/lab041/lab041_session_time.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
181
data/processed/lab041/lab041_summary.csv
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
architecture,channel_condition,scenario,repetitions,safe_session_fraction,authorization_fraction,unsafe_event_fraction,old_packet_acceptance_fraction,emergency_intent_loss_fraction,control_state_load_kbps,episodic_service_load_kbps,full_offered_load_kbps,control_delivered_fraction,telemetry_delivered_fraction,video_published_fraction,maximum_queue_packets
|
||||||
|
no_session_ids,no_loss,normal_start,1,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,ground_restart_moving,1,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,rover_restart_moving,1,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,both_restart,1,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,ground_restart_emergency,1,0.0,1.0,1.0,0.0,1.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,rover_restart_latched,1,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,long_link_break,1,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,old_ground_session_control,1,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,old_rover_boot_control,1,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,old_control_epoch,1,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,sequence_reset_new_session,1,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,sequence_wrap,1,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,duplicate_hello,1,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,lost_session_status,1,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,lost_authorize_ack,1,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,lost_emergency_ack,1,0.0,1.0,0.0,0.0,0.0,10.88,0.1056,262.0584666666667,0.9987914666666666,0.9993957333333333,0.9981872,22
|
||||||
|
no_session_ids,no_loss,lost_reset_ack,1,0.0,1.0,1.0,0.0,0.0,10.88,0.124,262.0768666666667,0.9987853333333333,0.9993926666666667,0.998178,22
|
||||||
|
no_session_ids,no_loss,old_reset_request,1,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,late_positive_after_emergency,1,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,no_loss,restart_after_reset_before_ack,1,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9988266666666666,0.9994133333333334,0.99824,21
|
||||||
|
no_session_ids,260_200,normal_start,200,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,ground_restart_moving,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,rover_restart_moving,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,both_restart,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,ground_restart_emergency,200,0.0,1.0,1.0,0.0,1.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,rover_restart_latched,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,long_link_break,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,old_ground_session_control,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,old_rover_boot_control,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,old_control_epoch,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,sequence_reset_new_session,200,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,sequence_wrap,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,duplicate_hello,200,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,lost_session_status,200,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,lost_authorize_ack,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,lost_emergency_ack,200,0.0,1.0,0.0,0.0,0.0,10.88,0.110088,262.0629546666667,0.9786038123076922,0.981301906153846,0.9079057184615386,36
|
||||||
|
no_session_ids,260_200,lost_reset_ack,200,0.0,1.0,1.0,0.0,0.0,10.88,0.12731800000000001,262.0801846666667,0.978597185384615,0.9812985926923079,0.9078957780769232,36
|
||||||
|
no_session_ids,260_200,old_reset_request,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,late_positive_after_emergency,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,260_200,restart_after_reset_before_ack,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9786461538461536,0.9813230769230771,0.9079692307692306,31
|
||||||
|
no_session_ids,230_1000,normal_start,200,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,ground_restart_moving,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,rover_restart_moving,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,both_restart,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,ground_restart_emergency,200,0.0,1.0,1.0,0.0,1.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,rover_restart_latched,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,long_link_break,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,old_ground_session_control,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,old_rover_boot_control,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,old_control_epoch,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,sequence_reset_new_session,200,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,sequence_wrap,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,duplicate_hello,200,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,lost_session_status,200,0.0,1.0,0.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,lost_authorize_ack,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,lost_emergency_ack,200,0.0,1.0,0.0,0.0,0.0,10.88,0.168168,262.1210346666667,0.978396448695652,0.9791982243478259,0.8605946730434781,46
|
||||||
|
no_session_ids,230_1000,lost_reset_ack,200,0.0,1.0,1.0,0.0,0.0,10.88,0.137272,262.0901386666667,0.9784098817391305,0.9792049408695651,0.8606148226086957,46
|
||||||
|
no_session_ids,230_1000,old_reset_request,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,late_positive_after_emergency,200,0.0,1.0,1.0,1.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
no_session_ids,230_1000,restart_after_reset_before_ack,200,0.0,1.0,1.0,0.0,0.0,10.88,0.0,261.9528666666667,0.9784695652173915,0.9792347826086959,0.8607043478260868,41
|
||||||
|
session_safe_boot,no_loss,normal_start,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,ground_restart_moving,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,rover_restart_moving,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,both_restart,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,ground_restart_emergency,1,1.0,0.0,0.0,0.0,1.0,10.88,0.054,262.00686666666667,0.9988086666666667,0.9994043333333333,0.998213,21
|
||||||
|
session_safe_boot,no_loss,rover_restart_latched,1,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9988086666666667,0.9994043333333333,0.998213,21
|
||||||
|
session_safe_boot,no_loss,long_link_break,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,old_ground_session_control,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,old_rover_boot_control,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,old_control_epoch,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,sequence_reset_new_session,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,sequence_wrap,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,duplicate_hello,1,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9987729333333333,0.9993864666666666,0.9981594,21
|
||||||
|
session_safe_boot,no_loss,lost_session_status,1,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9987729333333333,0.9993864666666666,0.9981594,22
|
||||||
|
session_safe_boot,no_loss,lost_authorize_ack,1,1.0,1.0,0.0,0.0,0.0,10.88,0.16040000000000001,262.1132666666667,0.9987732,0.9993866,0.9981598,22
|
||||||
|
session_safe_boot,no_loss,lost_emergency_ack,1,1.0,1.0,0.0,0.0,0.0,10.88,0.21280000000000002,262.1656666666667,0.9987557333333333,0.9993778666666666,0.9981336,22
|
||||||
|
session_safe_boot,no_loss,lost_reset_ack,1,1.0,1.0,0.0,0.0,0.0,10.88,0.2312,262.1840666666667,0.9987496,0.9993748,0.9981244,22
|
||||||
|
session_safe_boot,no_loss,old_reset_request,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,late_positive_after_emergency,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,no_loss,restart_after_reset_before_ack,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
session_safe_boot,260_200,normal_start,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9786049230769228,0.9813024615384619,0.9079073846153847,31
|
||||||
|
session_safe_boot,260_200,ground_restart_moving,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9786049230769228,0.9813024615384619,0.9079073846153847,31
|
||||||
|
session_safe_boot,260_200,rover_restart_moving,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10852,262.0613866666667,0.9786044153846152,0.9813022076923079,0.9079066230769232,36
|
||||||
|
session_safe_boot,260_200,both_restart,200,1.0,1.0,0.0,0.0,0.0,10.88,0.110104,262.0629706666667,0.9786038061538459,0.9813019030769234,0.9079057092307693,36
|
||||||
|
session_safe_boot,260_200,ground_restart_emergency,200,1.0,0.0,0.0,0.0,1.0,10.88,0.054,262.00686666666667,0.9786253846153845,0.9813126923076924,0.9079380769230773,31
|
||||||
|
session_safe_boot,260_200,rover_restart_latched,200,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9786253846153845,0.9813126923076924,0.9079380769230773,31
|
||||||
|
session_safe_boot,260_200,long_link_break,200,1.0,1.0,0.0,0.0,0.0,10.88,0.113476,262.0663426666667,0.9786025092307691,0.9813012546153849,0.907903763846154,36
|
||||||
|
session_safe_boot,260_200,old_ground_session_control,200,1.0,1.0,0.0,0.0,0.0,10.88,0.107992,262.0608586666667,0.9786046184615382,0.9813023092307697,0.9079069276923077,35
|
||||||
|
session_safe_boot,260_200,old_rover_boot_control,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10772799999999999,262.0605946666667,0.9786047199999998,0.9813023600000003,0.9079070800000001,34
|
||||||
|
session_safe_boot,260_200,old_control_epoch,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9786049230769228,0.9813024615384619,0.9079073846153847,31
|
||||||
|
session_safe_boot,260_200,sequence_reset_new_session,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10997200000000001,262.0628386666667,0.9786038569230766,0.9813019284615387,0.9079057853846154,36
|
||||||
|
session_safe_boot,260_200,sequence_wrap,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9786049230769228,0.9813024615384619,0.9079073846153847,31
|
||||||
|
session_safe_boot,260_200,duplicate_hello,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9785841538461537,0.9812920769230772,0.907876230769231,31
|
||||||
|
session_safe_boot,260_200,lost_session_status,200,1.0,1.0,0.0,0.0,0.0,10.88,0.162256,262.1151226666667,0.9785837476923075,0.9812918738461539,0.9078756215384618,36
|
||||||
|
session_safe_boot,260_200,lost_authorize_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16040000000000001,262.1132666666667,0.9785844615384616,0.981292230769231,0.9078766923076921,32
|
||||||
|
session_safe_boot,260_200,lost_emergency_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.21847600000000003,262.1713426666667,0.9785621246153846,0.9812810623076923,0.9078431869230771,36
|
||||||
|
session_safe_boot,260_200,lost_reset_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.23546599999999998,262.18833266666667,0.9785555899999997,0.9812777950000001,0.907833385,36
|
||||||
|
session_safe_boot,260_200,old_reset_request,200,1.0,1.0,0.0,0.0,0.0,10.88,0.107992,262.0608586666667,0.9786046184615382,0.9813023092307697,0.9079069276923077,36
|
||||||
|
session_safe_boot,260_200,late_positive_after_emergency,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10984000000000001,262.0627066666667,0.9786039076923074,0.9813019538461542,0.9079058615384616,36
|
||||||
|
session_safe_boot,260_200,restart_after_reset_before_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.107332,262.0601986666667,0.9786048723076921,0.9813024361538464,0.9079073084615384,32
|
||||||
|
session_safe_boot,230_1000,normal_start,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,ground_restart_moving,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,rover_restart_moving,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,both_restart,200,1.0,1.0,0.0,0.0,0.0,10.88,0.11353599999999998,262.0664026666667,0.9784202017391302,0.9792101008695654,0.860630302608696,46
|
||||||
|
session_safe_boot,230_1000,ground_restart_emergency,200,1.0,0.0,0.0,0.0,1.0,10.88,0.054,262.00686666666667,0.9784460869565217,0.9792230434782607,0.8606691304347825,41
|
||||||
|
session_safe_boot,230_1000,rover_restart_latched,200,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9784460869565217,0.9792230434782607,0.8606691304347825,41
|
||||||
|
session_safe_boot,230_1000,long_link_break,200,1.0,1.0,0.0,0.0,0.0,10.88,0.129374,262.0822406666667,0.9784133156521737,0.9792066578260871,0.860619973478261,46
|
||||||
|
session_safe_boot,230_1000,old_ground_session_control,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,old_rover_boot_control,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,old_control_epoch,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,sequence_reset_new_session,200,1.0,1.0,0.0,0.0,0.0,10.88,0.108652,262.0615186666667,0.978422325217391,0.9792111626086958,0.8606334878260873,46
|
||||||
|
session_safe_boot,230_1000,sequence_wrap,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,duplicate_hello,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9783994782608693,0.9791997391304347,0.8605992173913043,41
|
||||||
|
session_safe_boot,230_1000,lost_session_status,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9783994782608693,0.9791997391304347,0.8605992173913043,42
|
||||||
|
session_safe_boot,230_1000,lost_authorize_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16040000000000001,262.1132666666667,0.9783998260869565,0.9791999130434783,0.8605997391304347,42
|
||||||
|
session_safe_boot,230_1000,lost_emergency_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.23378800000000002,262.1866546666667,0.9783679182608697,0.979183959130435,0.8605518773913041,46
|
||||||
|
session_safe_boot,230_1000,lost_reset_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.247052,262.1999186666667,0.9783621513043473,0.9791810756521738,0.8605432269565216,46
|
||||||
|
session_safe_boot,230_1000,old_reset_request,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,late_positive_after_emergency,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
session_safe_boot,230_1000,restart_after_reset_before_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
persistent_emergency,no_loss,normal_start,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,ground_restart_moving,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,rover_restart_moving,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,both_restart,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,ground_restart_emergency,1,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9988086666666667,0.9994043333333333,0.998213,21
|
||||||
|
persistent_emergency,no_loss,rover_restart_latched,1,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9988086666666667,0.9994043333333333,0.998213,21
|
||||||
|
persistent_emergency,no_loss,long_link_break,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,old_ground_session_control,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,old_rover_boot_control,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,old_control_epoch,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,sequence_reset_new_session,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,sequence_wrap,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,duplicate_hello,1,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9987729333333333,0.9993864666666666,0.9981594,21
|
||||||
|
persistent_emergency,no_loss,lost_session_status,1,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9987729333333333,0.9993864666666666,0.9981594,22
|
||||||
|
persistent_emergency,no_loss,lost_authorize_ack,1,1.0,1.0,0.0,0.0,0.0,10.88,0.16040000000000001,262.1132666666667,0.9987732,0.9993866,0.9981598,22
|
||||||
|
persistent_emergency,no_loss,lost_emergency_ack,1,1.0,1.0,0.0,0.0,0.0,10.88,0.21280000000000002,262.1656666666667,0.9987557333333333,0.9993778666666666,0.9981336,22
|
||||||
|
persistent_emergency,no_loss,lost_reset_ack,1,1.0,1.0,0.0,0.0,0.0,10.88,0.2312,262.1840666666667,0.9987496,0.9993748,0.9981244,22
|
||||||
|
persistent_emergency,no_loss,old_reset_request,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,late_positive_after_emergency,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,no_loss,restart_after_reset_before_ack,1,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.9987909333333334,0.9993954666666667,0.9981864,21
|
||||||
|
persistent_emergency,260_200,normal_start,200,1.0,1.0,0.0,0.0,0.0,10.88,0.107332,262.0601986666667,0.9786048723076921,0.9813024361538464,0.9079073084615384,32
|
||||||
|
persistent_emergency,260_200,ground_restart_moving,200,1.0,1.0,0.0,0.0,0.0,10.88,0.108256,262.0611226666667,0.9786045169230766,0.9813022584615387,0.9079067753846155,35
|
||||||
|
persistent_emergency,260_200,rover_restart_moving,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10891600000000001,262.0617826666667,0.9786042630769228,0.9813021315384617,0.9079063946153846,36
|
||||||
|
persistent_emergency,260_200,both_restart,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10772799999999999,262.0605946666667,0.9786047199999998,0.9813023600000003,0.9079070800000001,33
|
||||||
|
persistent_emergency,260_200,ground_restart_emergency,200,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9786253846153845,0.9813126923076924,0.9079380769230773,31
|
||||||
|
persistent_emergency,260_200,rover_restart_latched,200,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9786253846153845,0.9813126923076924,0.9079380769230773,31
|
||||||
|
persistent_emergency,260_200,long_link_break,200,1.0,1.0,0.0,0.0,0.0,10.88,0.111994,262.0648606666667,0.9786030792307691,0.981301539615385,0.9079046188461538,36
|
||||||
|
persistent_emergency,260_200,old_ground_session_control,200,1.0,1.0,0.0,0.0,0.0,10.88,0.107596,262.0604626666667,0.9786047707692305,0.9813023853846157,0.9079071561538461,33
|
||||||
|
persistent_emergency,260_200,old_rover_boot_control,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10785999999999998,262.0607266666667,0.9786046692307689,0.981302334615385,0.9079070038461539,34
|
||||||
|
persistent_emergency,260_200,old_control_epoch,200,1.0,1.0,0.0,0.0,0.0,10.88,0.108124,262.06099066666667,0.9786045676923075,0.981302283846154,0.9079068515384615,36
|
||||||
|
persistent_emergency,260_200,sequence_reset_new_session,200,1.0,1.0,0.0,0.0,0.0,10.88,0.11090000000000001,262.0637666666667,0.9786034999999998,0.9813017500000004,0.90790525,36
|
||||||
|
persistent_emergency,260_200,sequence_wrap,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10852,262.0613866666667,0.9786044153846152,0.981302207692308,0.9079066230769232,36
|
||||||
|
persistent_emergency,260_200,duplicate_hello,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9785841538461537,0.9812920769230772,0.907876230769231,31
|
||||||
|
persistent_emergency,260_200,lost_session_status,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16146800000000003,262.1143346666667,0.9785840507692305,0.9812920253846156,0.9078760761538465,34
|
||||||
|
persistent_emergency,260_200,lost_authorize_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.165944,262.1188106666667,0.9785823292307694,0.9812911646153849,0.9078734938461537,36
|
||||||
|
persistent_emergency,260_200,lost_emergency_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.21926799999999996,262.1721346666667,0.9785618199999999,0.9812809099999998,0.9078427300000002,36
|
||||||
|
persistent_emergency,260_200,lost_reset_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.236628,262.1894946666667,0.9785551430769229,0.9812775715384617,0.9078327146153846,36
|
||||||
|
persistent_emergency,260_200,old_reset_request,200,1.0,1.0,0.0,0.0,0.0,10.88,0.108652,262.0615186666667,0.9786043646153842,0.9813021823076926,0.9079065469230769,36
|
||||||
|
persistent_emergency,260_200,late_positive_after_emergency,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10878399999999999,262.0616506666667,0.9786043138461537,0.9813021569230773,0.9079064707692308,36
|
||||||
|
persistent_emergency,260_200,restart_after_reset_before_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10746400000000002,262.0603306666667,0.9786048215384614,0.9813024107692311,0.9079072323076923,33
|
||||||
|
persistent_emergency,230_1000,normal_start,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
persistent_emergency,230_1000,ground_restart_moving,200,1.0,1.0,0.0,0.0,0.0,10.88,0.110632,262.0634986666667,0.978421464347826,0.9792107321739132,0.8606321965217394,46
|
||||||
|
persistent_emergency,230_1000,rover_restart_moving,200,1.0,1.0,0.0,0.0,0.0,10.88,0.11168800000000002,262.0645546666667,0.9784210052173912,0.9792105026086958,0.8606315078260871,46
|
||||||
|
persistent_emergency,230_1000,both_restart,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10931199999999998,262.0621786666667,0.9784220382608695,0.979211019130435,0.8606330573913047,46
|
||||||
|
persistent_emergency,230_1000,ground_restart_emergency,200,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9784460869565217,0.9792230434782607,0.8606691304347825,41
|
||||||
|
persistent_emergency,230_1000,rover_restart_latched,200,1.0,0.0,0.0,0.0,0.0,10.88,0.054,262.00686666666667,0.9784460869565217,0.9792230434782607,0.8606691304347825,41
|
||||||
|
persistent_emergency,230_1000,long_link_break,200,1.0,1.0,0.0,0.0,0.0,10.88,0.116982,262.0698486666667,0.9784187034782608,0.9792093517391307,0.8606280552173916,46
|
||||||
|
persistent_emergency,230_1000,old_ground_session_control,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
persistent_emergency,230_1000,old_rover_boot_control,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
persistent_emergency,230_1000,old_control_epoch,200,1.0,1.0,0.0,0.0,0.0,10.88,0.11261199999999999,262.0654786666667,0.9784206034782608,0.9792103017391307,0.8606309052173916,46
|
||||||
|
persistent_emergency,230_1000,sequence_reset_new_session,200,1.0,1.0,0.0,0.0,0.0,10.88,0.10840599999999999,262.0612726666667,0.9784224321739129,0.9792112160869567,0.8606336482608699,46
|
||||||
|
persistent_emergency,230_1000,sequence_wrap,200,1.0,1.0,0.0,0.0,0.0,10.88,0.11076400000000002,262.0636306666667,0.9784214069565215,0.979210703478261,0.8606321104347829,46
|
||||||
|
persistent_emergency,230_1000,duplicate_hello,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9783994782608693,0.9791997391304347,0.8605992173913043,41
|
||||||
|
persistent_emergency,230_1000,lost_session_status,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16119999999999998,262.1140666666667,0.9783994782608693,0.9791997391304347,0.8605992173913043,42
|
||||||
|
persistent_emergency,230_1000,lost_authorize_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.16040000000000001,262.1132666666667,0.9783998260869565,0.9791999130434783,0.8605997391304347,42
|
||||||
|
persistent_emergency,230_1000,lost_emergency_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.219664,262.1725306666667,0.9783740591304348,0.9791870295652177,0.860561088695652,46
|
||||||
|
persistent_emergency,230_1000,lost_reset_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.25146599999999997,262.2043326666667,0.9783602321739128,0.9791801160869563,0.8605403482608694,46
|
||||||
|
persistent_emergency,230_1000,old_reset_request,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
persistent_emergency,230_1000,late_positive_after_emergency,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
persistent_emergency,230_1000,restart_after_reset_before_ack,200,1.0,1.0,0.0,0.0,0.0,10.88,0.1072,262.06006666666667,0.978422956521739,0.9792114782608698,0.8606344347826089,41
|
||||||
|
BIN
data/processed/lab041/lab041_traffic_impact.png
Normal file
|
After Width: | Height: | Size: 110 KiB |
434
protocol/control_messages.py
Normal file
@@ -0,0 +1,434 @@
|
|||||||
|
"""Прикладные сообщения безопасного сеанса Lab041.
|
||||||
|
|
||||||
|
Общий заголовок полезной нагрузки имеет формат ``!BBQQII``: версия, тип
|
||||||
|
сообщения, 64-битные идентификаторы запуска наземной станции и ровера,
|
||||||
|
32-битный период управления и 32-битный номер сообщения. Порядок байтов
|
||||||
|
сетевой, неявного выравнивания нет.
|
||||||
|
|
||||||
|
Отдельная контрольная сумма намеренно не добавляется: контрольная сумма
|
||||||
|
общего пакета Lab033 уже защищает заголовок и всю прикладную нагрузку. После
|
||||||
|
проверки этой суммы всё равно требуется приведённая здесь смысловая проверка.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from enum import IntEnum
|
||||||
|
import math
|
||||||
|
import struct
|
||||||
|
from typing import Union
|
||||||
|
|
||||||
|
|
||||||
|
MESSAGE_VERSION = 1
|
||||||
|
COMMON_FORMAT = "!BBQQII"
|
||||||
|
COMMON_SIZE = struct.calcsize(COMMON_FORMAT)
|
||||||
|
UINT32_MODULUS = 1 << 32
|
||||||
|
UINT32_HALF_RANGE = 1 << 31
|
||||||
|
MAX_CONTROL_SPEED_MPS = 15.0
|
||||||
|
MAX_ABS_TURN = 1.0
|
||||||
|
|
||||||
|
|
||||||
|
class ControlMessageError(ValueError):
|
||||||
|
"""Ошибка формата или смысловой проверки прикладного сообщения."""
|
||||||
|
|
||||||
|
|
||||||
|
class MessageType(IntEnum):
|
||||||
|
SESSION_HELLO = 1
|
||||||
|
SESSION_STATUS = 2
|
||||||
|
MOVEMENT_AUTHORIZE_REQUEST = 3
|
||||||
|
MOVEMENT_AUTHORIZE_ACK = 4
|
||||||
|
CONTROL_STATE = 5
|
||||||
|
EMERGENCY_STOP = 6
|
||||||
|
EMERGENCY_ACK = 7
|
||||||
|
RESET_REQUEST = 8
|
||||||
|
RESET_ACK = 9
|
||||||
|
SESSION_REJECT = 10
|
||||||
|
|
||||||
|
|
||||||
|
class RoverSafetyCode(IntEnum):
|
||||||
|
ROVER_BOOT_SAFE = 1
|
||||||
|
ROVER_SESSION_SYNCED_SAFE = 2
|
||||||
|
ROVER_MOVEMENT_AUTHORIZED = 3
|
||||||
|
STAGE1_DECELERATION = 4
|
||||||
|
STAGE2_BRAKING = 5
|
||||||
|
EMERGENCY_LATCHED = 6
|
||||||
|
|
||||||
|
|
||||||
|
class SessionRejectReason(IntEnum):
|
||||||
|
ACCEPTED = 0
|
||||||
|
GROUND_SESSION_ID = 1
|
||||||
|
ROVER_BOOT_ID = 2
|
||||||
|
CONTROL_EPOCH = 3
|
||||||
|
SEQUENCE_NUMBER = 4
|
||||||
|
EMERGENCY_EVENT_ID = 5
|
||||||
|
RESET_REQUEST_ID = 6
|
||||||
|
NOT_SYNCHRONIZED = 7
|
||||||
|
MOVEMENT_NOT_AUTHORIZED = 8
|
||||||
|
|
||||||
|
|
||||||
|
class SequenceComparison(IntEnum):
|
||||||
|
NOT_NEWER = 0
|
||||||
|
NEWER = 1
|
||||||
|
AMBIGUOUS = 2
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class MessageContext:
|
||||||
|
ground_session_id: int
|
||||||
|
rover_boot_id: int
|
||||||
|
control_epoch: int
|
||||||
|
sequence_number: int
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class SessionHello:
|
||||||
|
context: MessageContext
|
||||||
|
emergency_intent: bool
|
||||||
|
emergency_event_id: int
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class SessionStatus:
|
||||||
|
context: MessageContext
|
||||||
|
safety_state: RoverSafetyCode
|
||||||
|
emergency_latched: bool
|
||||||
|
emergency_event_id: int
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class MovementAuthorizeRequest:
|
||||||
|
context: MessageContext
|
||||||
|
authorization_id: int
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class MovementAuthorizeAck:
|
||||||
|
context: MessageContext
|
||||||
|
authorization_id: int
|
||||||
|
accepted: bool
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class ControlStateMessage:
|
||||||
|
context: MessageContext
|
||||||
|
desired_speed_mps: float
|
||||||
|
desired_turn: float
|
||||||
|
braking: bool
|
||||||
|
movement_permitted: bool
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class EmergencyStop:
|
||||||
|
context: MessageContext
|
||||||
|
emergency_event_id: int
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class EmergencyAck:
|
||||||
|
context: MessageContext
|
||||||
|
emergency_event_id: int
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class ResetRequest:
|
||||||
|
context: MessageContext
|
||||||
|
emergency_event_id: int
|
||||||
|
reset_request_id: int
|
||||||
|
requested_speed_mps: float
|
||||||
|
movement_permitted: bool
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class ResetAck:
|
||||||
|
context: MessageContext
|
||||||
|
emergency_event_id: int
|
||||||
|
reset_request_id: int
|
||||||
|
accepted: bool
|
||||||
|
reason: SessionRejectReason
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class SessionReject:
|
||||||
|
context: MessageContext
|
||||||
|
rejected_type: MessageType
|
||||||
|
reason: SessionRejectReason
|
||||||
|
|
||||||
|
|
||||||
|
ControlMessage = Union[
|
||||||
|
SessionHello,
|
||||||
|
SessionStatus,
|
||||||
|
MovementAuthorizeRequest,
|
||||||
|
MovementAuthorizeAck,
|
||||||
|
ControlStateMessage,
|
||||||
|
EmergencyStop,
|
||||||
|
EmergencyAck,
|
||||||
|
ResetRequest,
|
||||||
|
ResetAck,
|
||||||
|
SessionReject,
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
_TYPE_BY_CLASS = {
|
||||||
|
SessionHello: MessageType.SESSION_HELLO,
|
||||||
|
SessionStatus: MessageType.SESSION_STATUS,
|
||||||
|
MovementAuthorizeRequest: MessageType.MOVEMENT_AUTHORIZE_REQUEST,
|
||||||
|
MovementAuthorizeAck: MessageType.MOVEMENT_AUTHORIZE_ACK,
|
||||||
|
ControlStateMessage: MessageType.CONTROL_STATE,
|
||||||
|
EmergencyStop: MessageType.EMERGENCY_STOP,
|
||||||
|
EmergencyAck: MessageType.EMERGENCY_ACK,
|
||||||
|
ResetRequest: MessageType.RESET_REQUEST,
|
||||||
|
ResetAck: MessageType.RESET_ACK,
|
||||||
|
SessionReject: MessageType.SESSION_REJECT,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def _unsigned(value: int, maximum: int, name: str) -> int:
|
||||||
|
if not isinstance(value, int) or isinstance(value, bool) or not 0 <= value <= maximum:
|
||||||
|
raise ControlMessageError(f"{name} выходит за допустимый беззнаковый диапазон")
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
def validate_context(context: MessageContext) -> MessageContext:
|
||||||
|
if not isinstance(context, MessageContext):
|
||||||
|
raise TypeError("требуется MessageContext")
|
||||||
|
_unsigned(context.ground_session_id, 0xFFFFFFFFFFFFFFFF, "ground_session_id")
|
||||||
|
_unsigned(context.rover_boot_id, 0xFFFFFFFFFFFFFFFF, "rover_boot_id")
|
||||||
|
_unsigned(context.control_epoch, 0xFFFFFFFF, "control_epoch")
|
||||||
|
_unsigned(context.sequence_number, 0xFFFFFFFF, "sequence_number")
|
||||||
|
return context
|
||||||
|
|
||||||
|
|
||||||
|
def compare_sequence(new: int, old: int) -> SequenceComparison:
|
||||||
|
"""Сравнить 32-битные номера по модулю с неоднозначной серединой."""
|
||||||
|
|
||||||
|
_unsigned(new, 0xFFFFFFFF, "new sequence_number")
|
||||||
|
_unsigned(old, 0xFFFFFFFF, "old sequence_number")
|
||||||
|
delta = (new - old) % UINT32_MODULUS
|
||||||
|
if delta == UINT32_HALF_RANGE:
|
||||||
|
return SequenceComparison.AMBIGUOUS
|
||||||
|
if 0 < delta < UINT32_HALF_RANGE:
|
||||||
|
return SequenceComparison.NEWER
|
||||||
|
return SequenceComparison.NOT_NEWER
|
||||||
|
|
||||||
|
|
||||||
|
def _common(message_type: MessageType, context: MessageContext) -> bytes:
|
||||||
|
validate_context(context)
|
||||||
|
return struct.pack(
|
||||||
|
COMMON_FORMAT,
|
||||||
|
MESSAGE_VERSION,
|
||||||
|
int(message_type),
|
||||||
|
context.ground_session_id,
|
||||||
|
context.rover_boot_id,
|
||||||
|
context.control_epoch,
|
||||||
|
context.sequence_number,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _boolean(value: bool, name: str) -> int:
|
||||||
|
if not isinstance(value, bool):
|
||||||
|
raise ControlMessageError(f"{name} должен быть логическим значением")
|
||||||
|
return int(value)
|
||||||
|
|
||||||
|
|
||||||
|
def _finite(value: float, name: str) -> float:
|
||||||
|
value = float(value)
|
||||||
|
if not math.isfinite(value):
|
||||||
|
raise ControlMessageError(f"{name} должен быть конечным числом")
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
def encode_message(message: ControlMessage) -> bytes:
|
||||||
|
"""Проверить и сериализовать одно прикладное сообщение."""
|
||||||
|
|
||||||
|
message_type = _TYPE_BY_CLASS.get(type(message))
|
||||||
|
if message_type is None:
|
||||||
|
raise TypeError("неподдерживаемый класс прикладного сообщения")
|
||||||
|
prefix = _common(message_type, message.context)
|
||||||
|
if isinstance(message, SessionHello):
|
||||||
|
event = _unsigned(message.emergency_event_id, 0xFFFFFFFFFFFFFFFF, "emergency_event_id")
|
||||||
|
return prefix + struct.pack("!BQ", _boolean(message.emergency_intent, "emergency_intent"), event)
|
||||||
|
if isinstance(message, SessionStatus):
|
||||||
|
try:
|
||||||
|
state = RoverSafetyCode(message.safety_state)
|
||||||
|
except ValueError as error:
|
||||||
|
raise ControlMessageError("неизвестное состояние безопасности ровера") from error
|
||||||
|
event = _unsigned(message.emergency_event_id, 0xFFFFFFFFFFFFFFFF, "emergency_event_id")
|
||||||
|
return prefix + struct.pack("!BBQ", int(state), _boolean(message.emergency_latched, "emergency_latched"), event)
|
||||||
|
if isinstance(message, MovementAuthorizeRequest):
|
||||||
|
return prefix + struct.pack("!Q", _unsigned(message.authorization_id, 0xFFFFFFFFFFFFFFFF, "authorization_id"))
|
||||||
|
if isinstance(message, MovementAuthorizeAck):
|
||||||
|
return prefix + struct.pack(
|
||||||
|
"!QB",
|
||||||
|
_unsigned(message.authorization_id, 0xFFFFFFFFFFFFFFFF, "authorization_id"),
|
||||||
|
_boolean(message.accepted, "accepted"),
|
||||||
|
)
|
||||||
|
if isinstance(message, ControlStateMessage):
|
||||||
|
speed = _finite(message.desired_speed_mps, "desired_speed_mps")
|
||||||
|
turn = _finite(message.desired_turn, "desired_turn")
|
||||||
|
if not 0.0 <= speed <= MAX_CONTROL_SPEED_MPS:
|
||||||
|
raise ControlMessageError("требуемая скорость вне диапазона 0…15 м/с")
|
||||||
|
if not -MAX_ABS_TURN <= turn <= MAX_ABS_TURN:
|
||||||
|
raise ControlMessageError("требуемый поворот вне диапазона -1…1")
|
||||||
|
braking = _boolean(message.braking, "braking")
|
||||||
|
permitted = _boolean(message.movement_permitted, "movement_permitted")
|
||||||
|
if (braking or not permitted) and speed != 0.0:
|
||||||
|
raise ControlMessageError("при торможении или запрете движения скорость должна быть нулевой")
|
||||||
|
if braking and permitted:
|
||||||
|
raise ControlMessageError("торможение несовместимо с разрешением движения")
|
||||||
|
return prefix + struct.pack("!ffBB", speed, turn, braking, permitted)
|
||||||
|
if isinstance(message, (EmergencyStop, EmergencyAck)):
|
||||||
|
event = _unsigned(message.emergency_event_id, 0xFFFFFFFFFFFFFFFF, "emergency_event_id")
|
||||||
|
return prefix + struct.pack("!Q", event)
|
||||||
|
if isinstance(message, ResetRequest):
|
||||||
|
event = _unsigned(message.emergency_event_id, 0xFFFFFFFFFFFFFFFF, "emergency_event_id")
|
||||||
|
request = _unsigned(message.reset_request_id, 0xFFFFFFFFFFFFFFFF, "reset_request_id")
|
||||||
|
speed = _finite(message.requested_speed_mps, "requested_speed_mps")
|
||||||
|
permitted = _boolean(message.movement_permitted, "movement_permitted")
|
||||||
|
if speed != 0.0 or permitted:
|
||||||
|
raise ControlMessageError("безопасный сброс требует нулевой скорости и запрета движения")
|
||||||
|
return prefix + struct.pack("!QQfB", event, request, speed, permitted)
|
||||||
|
if isinstance(message, ResetAck):
|
||||||
|
try:
|
||||||
|
reason = SessionRejectReason(message.reason)
|
||||||
|
except ValueError as error:
|
||||||
|
raise ControlMessageError("неизвестная причина подтверждения сброса") from error
|
||||||
|
return prefix + struct.pack(
|
||||||
|
"!QQBB",
|
||||||
|
_unsigned(message.emergency_event_id, 0xFFFFFFFFFFFFFFFF, "emergency_event_id"),
|
||||||
|
_unsigned(message.reset_request_id, 0xFFFFFFFFFFFFFFFF, "reset_request_id"),
|
||||||
|
_boolean(message.accepted, "accepted"),
|
||||||
|
int(reason),
|
||||||
|
)
|
||||||
|
if isinstance(message, SessionReject):
|
||||||
|
try:
|
||||||
|
rejected_type = MessageType(message.rejected_type)
|
||||||
|
reason = SessionRejectReason(message.reason)
|
||||||
|
except ValueError as error:
|
||||||
|
raise ControlMessageError("неизвестный код отказа сеанса") from error
|
||||||
|
return prefix + struct.pack("!BB", int(rejected_type), int(reason))
|
||||||
|
raise AssertionError("необработанный тип сообщения")
|
||||||
|
|
||||||
|
|
||||||
|
def _decode_bool(value: int, name: str) -> bool:
|
||||||
|
if value not in (0, 1):
|
||||||
|
raise ControlMessageError(f"{name} должен быть равен нулю или единице")
|
||||||
|
return bool(value)
|
||||||
|
|
||||||
|
|
||||||
|
def _unpack_exact(body: bytes, format_string: str) -> tuple[object, ...]:
|
||||||
|
expected = struct.calcsize(format_string)
|
||||||
|
if len(body) != expected:
|
||||||
|
raise ControlMessageError(f"неверная длина тела сообщения: {len(body)}, ожидается {expected}")
|
||||||
|
return struct.unpack(format_string, body)
|
||||||
|
|
||||||
|
|
||||||
|
def decode_message(payload: bytes) -> ControlMessage:
|
||||||
|
"""Разобрать сообщение и выполнить полную смысловую проверку."""
|
||||||
|
|
||||||
|
if not isinstance(payload, (bytes, bytearray)):
|
||||||
|
raise TypeError("полезная нагрузка должна быть последовательностью байтов")
|
||||||
|
payload = bytes(payload)
|
||||||
|
if len(payload) < COMMON_SIZE:
|
||||||
|
raise ControlMessageError("сообщение короче общего заголовка")
|
||||||
|
version, raw_type, ground, rover, epoch, sequence = struct.unpack(COMMON_FORMAT, payload[:COMMON_SIZE])
|
||||||
|
if version != MESSAGE_VERSION:
|
||||||
|
raise ControlMessageError("неподдерживаемая версия прикладного сообщения")
|
||||||
|
try:
|
||||||
|
message_type = MessageType(raw_type)
|
||||||
|
except ValueError as error:
|
||||||
|
raise ControlMessageError("неизвестный тип прикладного сообщения") from error
|
||||||
|
context = MessageContext(ground, rover, epoch, sequence)
|
||||||
|
body = payload[COMMON_SIZE:]
|
||||||
|
if message_type is MessageType.SESSION_HELLO:
|
||||||
|
intent, event = _unpack_exact(body, "!BQ")
|
||||||
|
message: ControlMessage = SessionHello(context, _decode_bool(intent, "emergency_intent"), event)
|
||||||
|
elif message_type is MessageType.SESSION_STATUS:
|
||||||
|
state, latched, event = _unpack_exact(body, "!BBQ")
|
||||||
|
try:
|
||||||
|
safety_state = RoverSafetyCode(state)
|
||||||
|
except ValueError as error:
|
||||||
|
raise ControlMessageError("неизвестное состояние безопасности ровера") from error
|
||||||
|
message = SessionStatus(context, safety_state, _decode_bool(latched, "emergency_latched"), event)
|
||||||
|
elif message_type is MessageType.MOVEMENT_AUTHORIZE_REQUEST:
|
||||||
|
(authorization,) = _unpack_exact(body, "!Q")
|
||||||
|
message = MovementAuthorizeRequest(context, authorization)
|
||||||
|
elif message_type is MessageType.MOVEMENT_AUTHORIZE_ACK:
|
||||||
|
authorization, accepted = _unpack_exact(body, "!QB")
|
||||||
|
message = MovementAuthorizeAck(context, authorization, _decode_bool(accepted, "accepted"))
|
||||||
|
elif message_type is MessageType.CONTROL_STATE:
|
||||||
|
speed, turn, braking, permitted = _unpack_exact(body, "!ffBB")
|
||||||
|
message = ControlStateMessage(
|
||||||
|
context,
|
||||||
|
speed,
|
||||||
|
turn,
|
||||||
|
_decode_bool(braking, "braking"),
|
||||||
|
_decode_bool(permitted, "movement_permitted"),
|
||||||
|
)
|
||||||
|
elif message_type is MessageType.EMERGENCY_STOP:
|
||||||
|
(event,) = _unpack_exact(body, "!Q")
|
||||||
|
message = EmergencyStop(context, event)
|
||||||
|
elif message_type is MessageType.EMERGENCY_ACK:
|
||||||
|
(event,) = _unpack_exact(body, "!Q")
|
||||||
|
message = EmergencyAck(context, event)
|
||||||
|
elif message_type is MessageType.RESET_REQUEST:
|
||||||
|
event, request, speed, permitted = _unpack_exact(body, "!QQfB")
|
||||||
|
message = ResetRequest(context, event, request, speed, _decode_bool(permitted, "movement_permitted"))
|
||||||
|
elif message_type is MessageType.RESET_ACK:
|
||||||
|
event, request, accepted, reason = _unpack_exact(body, "!QQBB")
|
||||||
|
try:
|
||||||
|
reset_reason = SessionRejectReason(reason)
|
||||||
|
except ValueError as error:
|
||||||
|
raise ControlMessageError("неизвестная причина подтверждения сброса") from error
|
||||||
|
message = ResetAck(context, event, request, _decode_bool(accepted, "accepted"), reset_reason)
|
||||||
|
else:
|
||||||
|
rejected_type, reason = _unpack_exact(body, "!BB")
|
||||||
|
try:
|
||||||
|
message = SessionReject(context, MessageType(rejected_type), SessionRejectReason(reason))
|
||||||
|
except ValueError as error:
|
||||||
|
raise ControlMessageError("неизвестный код отказа сеанса") from error
|
||||||
|
return decode_validated_message(message)
|
||||||
|
|
||||||
|
|
||||||
|
def decode_validated_message(message: ControlMessage) -> ControlMessage:
|
||||||
|
"""Повторно применить смысловую проверку к разобранному объекту."""
|
||||||
|
|
||||||
|
return decode_without_recursion(encode_message(message))
|
||||||
|
|
||||||
|
|
||||||
|
def decode_without_recursion(payload: bytes) -> ControlMessage:
|
||||||
|
"""Внутренний разбор уже проверенного представления."""
|
||||||
|
|
||||||
|
version, raw_type, ground, rover, epoch, sequence = struct.unpack(COMMON_FORMAT, payload[:COMMON_SIZE])
|
||||||
|
assert version == MESSAGE_VERSION
|
||||||
|
message_type = MessageType(raw_type)
|
||||||
|
context = MessageContext(ground, rover, epoch, sequence)
|
||||||
|
body = payload[COMMON_SIZE:]
|
||||||
|
if message_type is MessageType.SESSION_HELLO:
|
||||||
|
intent, event = struct.unpack("!BQ", body)
|
||||||
|
return SessionHello(context, bool(intent), event)
|
||||||
|
if message_type is MessageType.SESSION_STATUS:
|
||||||
|
state, latched, event = struct.unpack("!BBQ", body)
|
||||||
|
return SessionStatus(context, RoverSafetyCode(state), bool(latched), event)
|
||||||
|
if message_type is MessageType.MOVEMENT_AUTHORIZE_REQUEST:
|
||||||
|
return MovementAuthorizeRequest(context, struct.unpack("!Q", body)[0])
|
||||||
|
if message_type is MessageType.MOVEMENT_AUTHORIZE_ACK:
|
||||||
|
authorization, accepted = struct.unpack("!QB", body)
|
||||||
|
return MovementAuthorizeAck(context, authorization, bool(accepted))
|
||||||
|
if message_type is MessageType.CONTROL_STATE:
|
||||||
|
speed, turn, braking, permitted = struct.unpack("!ffBB", body)
|
||||||
|
return ControlStateMessage(context, speed, turn, bool(braking), bool(permitted))
|
||||||
|
if message_type is MessageType.EMERGENCY_STOP:
|
||||||
|
return EmergencyStop(context, struct.unpack("!Q", body)[0])
|
||||||
|
if message_type is MessageType.EMERGENCY_ACK:
|
||||||
|
return EmergencyAck(context, struct.unpack("!Q", body)[0])
|
||||||
|
if message_type is MessageType.RESET_REQUEST:
|
||||||
|
event, request, speed, permitted = struct.unpack("!QQfB", body)
|
||||||
|
return ResetRequest(context, event, request, speed, bool(permitted))
|
||||||
|
if message_type is MessageType.RESET_ACK:
|
||||||
|
event, request, accepted, reason = struct.unpack("!QQBB", body)
|
||||||
|
return ResetAck(context, event, request, bool(accepted), SessionRejectReason(reason))
|
||||||
|
rejected_type, reason = struct.unpack("!BB", body)
|
||||||
|
return SessionReject(context, MessageType(rejected_type), SessionRejectReason(reason))
|
||||||
|
|
||||||
|
|
||||||
|
assert COMMON_SIZE == 26
|
||||||
422
protocol/session_state.py
Normal file
@@ -0,0 +1,422 @@
|
|||||||
|
"""Автоматы безопасного сеанса наземной станции и ровера для Lab041."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from enum import Enum
|
||||||
|
import hashlib
|
||||||
|
|
||||||
|
from protocol.control_messages import (
|
||||||
|
ControlStateMessage,
|
||||||
|
EmergencyAck,
|
||||||
|
EmergencyStop,
|
||||||
|
MessageContext,
|
||||||
|
MessageType,
|
||||||
|
MovementAuthorizeAck,
|
||||||
|
MovementAuthorizeRequest,
|
||||||
|
ResetAck,
|
||||||
|
ResetRequest,
|
||||||
|
RoverSafetyCode,
|
||||||
|
SequenceComparison,
|
||||||
|
SessionHello,
|
||||||
|
SessionRejectReason,
|
||||||
|
SessionStatus,
|
||||||
|
compare_sequence,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class GroundSessionState(str, Enum):
|
||||||
|
GROUND_BOOT = "ground_boot"
|
||||||
|
GROUND_SYNCING = "ground_syncing"
|
||||||
|
GROUND_SAFE_SYNCHRONIZED = "ground_safe_synchronized"
|
||||||
|
GROUND_MOVEMENT_AUTH_REQUESTED = "ground_movement_auth_requested"
|
||||||
|
GROUND_ACTIVE = "ground_active"
|
||||||
|
GROUND_EMERGENCY_REQUESTED = "ground_emergency_requested"
|
||||||
|
GROUND_EMERGENCY_CONFIRMED = "ground_emergency_confirmed"
|
||||||
|
GROUND_RESET_REQUESTED = "ground_reset_requested"
|
||||||
|
|
||||||
|
|
||||||
|
class RoverSessionState(str, Enum):
|
||||||
|
ROVER_BOOT_SAFE = "rover_boot_safe"
|
||||||
|
ROVER_SESSION_SYNCED_SAFE = "rover_session_synced_safe"
|
||||||
|
ROVER_MOVEMENT_AUTHORIZED = "rover_movement_authorized"
|
||||||
|
STAGE1_DECELERATION = "stage1_deceleration"
|
||||||
|
STAGE2_BRAKING = "stage2_braking"
|
||||||
|
EMERGENCY_LATCHED = "emergency_latched"
|
||||||
|
|
||||||
|
|
||||||
|
class RejectionCause(str, Enum):
|
||||||
|
GROUND_SESSION_ID = "ground_session_id"
|
||||||
|
ROVER_BOOT_ID = "rover_boot_id"
|
||||||
|
CONTROL_EPOCH = "control_epoch"
|
||||||
|
SEQUENCE_NUMBER = "sequence_number"
|
||||||
|
EMERGENCY_EVENT_ID = "emergency_event_id"
|
||||||
|
RESET_REQUEST_ID = "reset_request_id"
|
||||||
|
NOT_SYNCHRONIZED = "not_synchronized"
|
||||||
|
MOVEMENT_NOT_AUTHORIZED = "movement_not_authorized"
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class ControlDecision:
|
||||||
|
accepted: bool
|
||||||
|
reason: RejectionCause | None
|
||||||
|
ambiguous_sequence: bool = False
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class ResetDecision:
|
||||||
|
acknowledgement: ResetAck
|
||||||
|
performed: bool
|
||||||
|
duplicate: bool
|
||||||
|
|
||||||
|
|
||||||
|
def deterministic_identifier(seed: int, purpose: str) -> int:
|
||||||
|
"""Получить воспроизводимый ненулевой 64-битный идентификатор."""
|
||||||
|
|
||||||
|
if not isinstance(seed, int):
|
||||||
|
raise TypeError("начальное значение генератора должно быть целым")
|
||||||
|
digest = hashlib.blake2b(f"Lab041:{purpose}:{seed}".encode("utf-8"), digest_size=8).digest()
|
||||||
|
return int.from_bytes(digest, "big") or 1
|
||||||
|
|
||||||
|
|
||||||
|
class GroundSessionController:
|
||||||
|
"""Наземный автомат без автоматического восстановления движения."""
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
seed: int,
|
||||||
|
*,
|
||||||
|
persisted_emergency_intent: bool = False,
|
||||||
|
persisted_emergency_event_id: int = 0,
|
||||||
|
) -> None:
|
||||||
|
self.ground_session_id = deterministic_identifier(seed, "ground")
|
||||||
|
self.rover_boot_id = 0
|
||||||
|
self.control_epoch = 0
|
||||||
|
self.sequence_number = 0
|
||||||
|
self.state = GroundSessionState.GROUND_BOOT
|
||||||
|
self.emergency_intent = bool(persisted_emergency_intent)
|
||||||
|
self.emergency_event_id = persisted_emergency_event_id if self.emergency_intent else 0
|
||||||
|
self.authorization_id = 0
|
||||||
|
self.reset_request_id = 0
|
||||||
|
self.last_operator_sequence: int | None = None
|
||||||
|
self.movement_permitted = False
|
||||||
|
self.current_speed_mps = 0.0
|
||||||
|
self.zero_commands_after_restart = 0
|
||||||
|
|
||||||
|
def _next_sequence(self) -> int:
|
||||||
|
value = self.sequence_number
|
||||||
|
self.sequence_number = (self.sequence_number + 1) & 0xFFFFFFFF
|
||||||
|
return value
|
||||||
|
|
||||||
|
def _context(self, *, epoch: int | None = None) -> MessageContext:
|
||||||
|
return MessageContext(
|
||||||
|
self.ground_session_id,
|
||||||
|
self.rover_boot_id,
|
||||||
|
self.control_epoch if epoch is None else epoch,
|
||||||
|
self._next_sequence(),
|
||||||
|
)
|
||||||
|
|
||||||
|
def start_synchronization(self) -> SessionHello:
|
||||||
|
if self.state is not GroundSessionState.GROUND_BOOT:
|
||||||
|
raise RuntimeError("синхронизацию можно начать только после запуска")
|
||||||
|
self.state = GroundSessionState.GROUND_SYNCING
|
||||||
|
self.movement_permitted = False
|
||||||
|
self.current_speed_mps = 0.0
|
||||||
|
return SessionHello(self._context(epoch=0), self.emergency_intent, self.emergency_event_id)
|
||||||
|
|
||||||
|
def repeat_hello(self) -> SessionHello:
|
||||||
|
if self.state is not GroundSessionState.GROUND_SYNCING:
|
||||||
|
raise RuntimeError("повтор приветствия допустим только при синхронизации")
|
||||||
|
return SessionHello(self._context(epoch=0), self.emergency_intent, self.emergency_event_id)
|
||||||
|
|
||||||
|
def receive_status(self, status: SessionStatus) -> bool:
|
||||||
|
if self.state is not GroundSessionState.GROUND_SYNCING:
|
||||||
|
return False
|
||||||
|
if status.context.ground_session_id != self.ground_session_id:
|
||||||
|
return False
|
||||||
|
if status.context.rover_boot_id == 0:
|
||||||
|
return False
|
||||||
|
self.rover_boot_id = status.context.rover_boot_id
|
||||||
|
self.control_epoch = 0
|
||||||
|
self.movement_permitted = False
|
||||||
|
self.current_speed_mps = 0.0
|
||||||
|
if self.emergency_intent:
|
||||||
|
self.state = GroundSessionState.GROUND_EMERGENCY_REQUESTED
|
||||||
|
else:
|
||||||
|
self.state = GroundSessionState.GROUND_SAFE_SYNCHRONIZED
|
||||||
|
return True
|
||||||
|
|
||||||
|
def request_movement_authorization(self, authorization_id: int) -> MovementAuthorizeRequest:
|
||||||
|
if self.state is not GroundSessionState.GROUND_SAFE_SYNCHRONIZED:
|
||||||
|
raise RuntimeError("разрешение движения требует безопасного согласованного сеанса")
|
||||||
|
if self.emergency_intent:
|
||||||
|
raise RuntimeError("при аварийном намерении движение запрещено")
|
||||||
|
if not 0 <= authorization_id <= 0xFFFFFFFFFFFFFFFF:
|
||||||
|
raise ValueError("authorization_id вне диапазона uint64")
|
||||||
|
self.authorization_id = authorization_id
|
||||||
|
self.state = GroundSessionState.GROUND_MOVEMENT_AUTH_REQUESTED
|
||||||
|
return MovementAuthorizeRequest(self._context(epoch=0), authorization_id)
|
||||||
|
|
||||||
|
def receive_movement_authorize_ack(self, acknowledgement: MovementAuthorizeAck) -> bool:
|
||||||
|
if self.state is not GroundSessionState.GROUND_MOVEMENT_AUTH_REQUESTED:
|
||||||
|
return False
|
||||||
|
context = acknowledgement.context
|
||||||
|
if (
|
||||||
|
context.ground_session_id != self.ground_session_id
|
||||||
|
or context.rover_boot_id != self.rover_boot_id
|
||||||
|
or acknowledgement.authorization_id != self.authorization_id
|
||||||
|
or not acknowledgement.accepted
|
||||||
|
or context.control_epoch == 0
|
||||||
|
):
|
||||||
|
return False
|
||||||
|
self.control_epoch = context.control_epoch
|
||||||
|
self.state = GroundSessionState.GROUND_ACTIVE
|
||||||
|
self.movement_permitted = False
|
||||||
|
self.current_speed_mps = 0.0
|
||||||
|
self.last_operator_sequence = None
|
||||||
|
return True
|
||||||
|
|
||||||
|
def new_operator_control(self, speed_mps: float, turn: float = 0.0) -> ControlStateMessage:
|
||||||
|
if self.state is not GroundSessionState.GROUND_ACTIVE:
|
||||||
|
raise RuntimeError("новая команда движения возможна только в активном сеансе")
|
||||||
|
if speed_mps <= 0.0:
|
||||||
|
raise ValueError("скорость новой команды должна быть положительной")
|
||||||
|
context = self._context()
|
||||||
|
self.last_operator_sequence = context.sequence_number
|
||||||
|
self.movement_permitted = True
|
||||||
|
self.current_speed_mps = speed_mps
|
||||||
|
return ControlStateMessage(context, speed_mps, turn, False, True)
|
||||||
|
|
||||||
|
def safe_zero_control(self) -> ControlStateMessage:
|
||||||
|
self.zero_commands_after_restart += 1
|
||||||
|
return ControlStateMessage(self._context(), 0.0, 0.0, True, False)
|
||||||
|
|
||||||
|
def request_emergency(self, emergency_event_id: int) -> EmergencyStop:
|
||||||
|
if not 0 < emergency_event_id <= 0xFFFFFFFFFFFFFFFF:
|
||||||
|
raise ValueError("emergency_event_id должен быть ненулевым uint64")
|
||||||
|
self.emergency_intent = True
|
||||||
|
self.emergency_event_id = emergency_event_id
|
||||||
|
self.movement_permitted = False
|
||||||
|
self.current_speed_mps = 0.0
|
||||||
|
self.state = GroundSessionState.GROUND_EMERGENCY_REQUESTED
|
||||||
|
return EmergencyStop(self._context(), emergency_event_id)
|
||||||
|
|
||||||
|
def receive_emergency_ack(self, acknowledgement: EmergencyAck) -> bool:
|
||||||
|
if acknowledgement.context.ground_session_id != self.ground_session_id:
|
||||||
|
return False
|
||||||
|
if acknowledgement.emergency_event_id != self.emergency_event_id:
|
||||||
|
return False
|
||||||
|
if self.state is GroundSessionState.GROUND_EMERGENCY_REQUESTED:
|
||||||
|
self.state = GroundSessionState.GROUND_EMERGENCY_CONFIRMED
|
||||||
|
return True
|
||||||
|
|
||||||
|
def request_reset(self, reset_request_id: int) -> ResetRequest:
|
||||||
|
if not self.emergency_intent:
|
||||||
|
raise RuntimeError("сброс требует аварийного намерения")
|
||||||
|
if not 0 < reset_request_id <= 0xFFFFFFFFFFFFFFFF:
|
||||||
|
raise ValueError("reset_request_id должен быть ненулевым uint64")
|
||||||
|
self.reset_request_id = reset_request_id
|
||||||
|
self.state = GroundSessionState.GROUND_RESET_REQUESTED
|
||||||
|
return ResetRequest(self._context(), self.emergency_event_id, reset_request_id, 0.0, False)
|
||||||
|
|
||||||
|
def receive_reset_ack(self, acknowledgement: ResetAck) -> bool:
|
||||||
|
if self.state is not GroundSessionState.GROUND_RESET_REQUESTED:
|
||||||
|
return False
|
||||||
|
if (
|
||||||
|
acknowledgement.context.ground_session_id != self.ground_session_id
|
||||||
|
or acknowledgement.context.rover_boot_id != self.rover_boot_id
|
||||||
|
or acknowledgement.emergency_event_id != self.emergency_event_id
|
||||||
|
or acknowledgement.reset_request_id != self.reset_request_id
|
||||||
|
or not acknowledgement.accepted
|
||||||
|
):
|
||||||
|
return False
|
||||||
|
self.emergency_intent = False
|
||||||
|
self.emergency_event_id = 0
|
||||||
|
self.movement_permitted = False
|
||||||
|
self.current_speed_mps = 0.0
|
||||||
|
self.control_epoch = 0
|
||||||
|
self.state = GroundSessionState.GROUND_SAFE_SYNCHRONIZED
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
class RoverSessionController:
|
||||||
|
"""Ровер, который после каждого запуска начинает с безопасного запрета."""
|
||||||
|
|
||||||
|
def __init__(self, seed: int) -> None:
|
||||||
|
self.rover_boot_id = deterministic_identifier(seed, "rover")
|
||||||
|
self.ground_session_id = 0
|
||||||
|
self.control_epoch = 0
|
||||||
|
self.state = RoverSessionState.ROVER_BOOT_SAFE
|
||||||
|
self.speed_mps = 0.0
|
||||||
|
self.movement_permitted = False
|
||||||
|
self.emergency_event_id = 0
|
||||||
|
self.last_sequences: dict[tuple[int, int, int, int], int] = {}
|
||||||
|
self.accepted_reset_keys: set[tuple[int, int, int, int]] = set()
|
||||||
|
self.duplicate_hellos = 0
|
||||||
|
self.duplicate_resets = 0
|
||||||
|
|
||||||
|
@property
|
||||||
|
def safe(self) -> bool:
|
||||||
|
return self.speed_mps == 0.0 and not self.movement_permitted
|
||||||
|
|
||||||
|
def _status_context(self, sequence_number: int = 0) -> MessageContext:
|
||||||
|
return MessageContext(self.ground_session_id, self.rover_boot_id, self.control_epoch, sequence_number)
|
||||||
|
|
||||||
|
def receive_hello(self, hello: SessionHello) -> SessionStatus:
|
||||||
|
if hello.context.ground_session_id == 0:
|
||||||
|
raise ValueError("ground_session_id должен быть ненулевым")
|
||||||
|
if hello.context.ground_session_id == self.ground_session_id:
|
||||||
|
self.duplicate_hellos += 1
|
||||||
|
else:
|
||||||
|
self.ground_session_id = hello.context.ground_session_id
|
||||||
|
self.control_epoch = 0
|
||||||
|
self.last_sequences.clear()
|
||||||
|
self.movement_permitted = False
|
||||||
|
self.speed_mps = 0.0
|
||||||
|
self.state = RoverSessionState.ROVER_SESSION_SYNCED_SAFE
|
||||||
|
if hello.emergency_intent:
|
||||||
|
self.emergency_event_id = hello.emergency_event_id
|
||||||
|
self.state = RoverSessionState.EMERGENCY_LATCHED
|
||||||
|
code = {
|
||||||
|
RoverSessionState.ROVER_BOOT_SAFE: RoverSafetyCode.ROVER_BOOT_SAFE,
|
||||||
|
RoverSessionState.ROVER_SESSION_SYNCED_SAFE: RoverSafetyCode.ROVER_SESSION_SYNCED_SAFE,
|
||||||
|
RoverSessionState.ROVER_MOVEMENT_AUTHORIZED: RoverSafetyCode.ROVER_MOVEMENT_AUTHORIZED,
|
||||||
|
RoverSessionState.STAGE1_DECELERATION: RoverSafetyCode.STAGE1_DECELERATION,
|
||||||
|
RoverSessionState.STAGE2_BRAKING: RoverSafetyCode.STAGE2_BRAKING,
|
||||||
|
RoverSessionState.EMERGENCY_LATCHED: RoverSafetyCode.EMERGENCY_LATCHED,
|
||||||
|
}[self.state]
|
||||||
|
return SessionStatus(
|
||||||
|
self._status_context(hello.context.sequence_number),
|
||||||
|
code,
|
||||||
|
self.state is RoverSessionState.EMERGENCY_LATCHED,
|
||||||
|
self.emergency_event_id,
|
||||||
|
)
|
||||||
|
|
||||||
|
def authorize_movement(self, request: MovementAuthorizeRequest) -> MovementAuthorizeAck:
|
||||||
|
accepted = (
|
||||||
|
self.state is RoverSessionState.ROVER_SESSION_SYNCED_SAFE
|
||||||
|
and request.context.ground_session_id == self.ground_session_id
|
||||||
|
and request.context.rover_boot_id == self.rover_boot_id
|
||||||
|
and self.emergency_event_id == 0
|
||||||
|
)
|
||||||
|
if accepted:
|
||||||
|
self.control_epoch = (self.control_epoch + 1) & 0xFFFFFFFF
|
||||||
|
if self.control_epoch == 0:
|
||||||
|
self.control_epoch = 1
|
||||||
|
self.state = RoverSessionState.ROVER_MOVEMENT_AUTHORIZED
|
||||||
|
self.speed_mps = 0.0
|
||||||
|
self.movement_permitted = False
|
||||||
|
return MovementAuthorizeAck(
|
||||||
|
MessageContext(self.ground_session_id, self.rover_boot_id, self.control_epoch, request.context.sequence_number),
|
||||||
|
request.authorization_id,
|
||||||
|
accepted,
|
||||||
|
)
|
||||||
|
|
||||||
|
def receive_control(self, message: ControlStateMessage, stream_id: int) -> ControlDecision:
|
||||||
|
context = message.context
|
||||||
|
if context.ground_session_id != self.ground_session_id:
|
||||||
|
return ControlDecision(False, RejectionCause.GROUND_SESSION_ID)
|
||||||
|
if context.rover_boot_id != self.rover_boot_id:
|
||||||
|
return ControlDecision(False, RejectionCause.ROVER_BOOT_ID)
|
||||||
|
if context.control_epoch != self.control_epoch:
|
||||||
|
return ControlDecision(False, RejectionCause.CONTROL_EPOCH)
|
||||||
|
if self.state is RoverSessionState.EMERGENCY_LATCHED:
|
||||||
|
return ControlDecision(False, RejectionCause.MOVEMENT_NOT_AUTHORIZED)
|
||||||
|
if self.state is not RoverSessionState.ROVER_MOVEMENT_AUTHORIZED:
|
||||||
|
return ControlDecision(False, RejectionCause.MOVEMENT_NOT_AUTHORIZED)
|
||||||
|
key = (context.ground_session_id, context.rover_boot_id, context.control_epoch, stream_id)
|
||||||
|
old = self.last_sequences.get(key)
|
||||||
|
if old is not None:
|
||||||
|
comparison = compare_sequence(context.sequence_number, old)
|
||||||
|
if comparison is SequenceComparison.AMBIGUOUS:
|
||||||
|
return ControlDecision(False, RejectionCause.SEQUENCE_NUMBER, True)
|
||||||
|
if comparison is not SequenceComparison.NEWER:
|
||||||
|
return ControlDecision(False, RejectionCause.SEQUENCE_NUMBER)
|
||||||
|
self.last_sequences[key] = context.sequence_number
|
||||||
|
self.speed_mps = message.desired_speed_mps
|
||||||
|
self.movement_permitted = message.movement_permitted
|
||||||
|
return ControlDecision(True, None)
|
||||||
|
|
||||||
|
def receive_emergency(self, message: EmergencyStop) -> EmergencyAck | None:
|
||||||
|
if (
|
||||||
|
message.context.ground_session_id != self.ground_session_id
|
||||||
|
or message.context.rover_boot_id != self.rover_boot_id
|
||||||
|
):
|
||||||
|
return None
|
||||||
|
self.emergency_event_id = message.emergency_event_id
|
||||||
|
self.state = RoverSessionState.EMERGENCY_LATCHED
|
||||||
|
self.speed_mps = 0.0
|
||||||
|
self.movement_permitted = False
|
||||||
|
return EmergencyAck(
|
||||||
|
MessageContext(self.ground_session_id, self.rover_boot_id, self.control_epoch, message.context.sequence_number),
|
||||||
|
message.emergency_event_id,
|
||||||
|
)
|
||||||
|
|
||||||
|
def receive_reset(self, request: ResetRequest) -> ResetDecision:
|
||||||
|
context = request.context
|
||||||
|
reason = SessionRejectReason.NOT_SYNCHRONIZED
|
||||||
|
if context.ground_session_id != self.ground_session_id:
|
||||||
|
reason = SessionRejectReason.GROUND_SESSION_ID
|
||||||
|
elif context.rover_boot_id != self.rover_boot_id:
|
||||||
|
reason = SessionRejectReason.ROVER_BOOT_ID
|
||||||
|
elif request.emergency_event_id != self.emergency_event_id:
|
||||||
|
reason = SessionRejectReason.EMERGENCY_EVENT_ID
|
||||||
|
elif self.speed_mps != 0.0:
|
||||||
|
reason = SessionRejectReason.MOVEMENT_NOT_AUTHORIZED
|
||||||
|
else:
|
||||||
|
reason = SessionRejectReason.RESET_REQUEST_ID
|
||||||
|
key = (
|
||||||
|
context.ground_session_id,
|
||||||
|
context.rover_boot_id,
|
||||||
|
request.emergency_event_id,
|
||||||
|
request.reset_request_id,
|
||||||
|
)
|
||||||
|
if key in self.accepted_reset_keys:
|
||||||
|
self.duplicate_resets += 1
|
||||||
|
acknowledgement = ResetAck(context, request.emergency_event_id, request.reset_request_id, True, SessionRejectReason.ACCEPTED)
|
||||||
|
return ResetDecision(acknowledgement, False, True)
|
||||||
|
accepted = (
|
||||||
|
context.ground_session_id == self.ground_session_id
|
||||||
|
and context.rover_boot_id == self.rover_boot_id
|
||||||
|
and self.state is RoverSessionState.EMERGENCY_LATCHED
|
||||||
|
and request.emergency_event_id == self.emergency_event_id
|
||||||
|
and request.requested_speed_mps == 0.0
|
||||||
|
and not request.movement_permitted
|
||||||
|
and self.speed_mps == 0.0
|
||||||
|
)
|
||||||
|
if accepted:
|
||||||
|
self.accepted_reset_keys.add(key)
|
||||||
|
self.emergency_event_id = 0
|
||||||
|
self.state = RoverSessionState.ROVER_SESSION_SYNCED_SAFE
|
||||||
|
self.speed_mps = 0.0
|
||||||
|
self.movement_permitted = False
|
||||||
|
reason = SessionRejectReason.ACCEPTED
|
||||||
|
acknowledgement = ResetAck(context, request.emergency_event_id, request.reset_request_id, accepted, reason)
|
||||||
|
return ResetDecision(acknowledgement, accepted, False)
|
||||||
|
|
||||||
|
def enter_watchdog_stage1(self) -> None:
|
||||||
|
if self.state is RoverSessionState.ROVER_MOVEMENT_AUTHORIZED:
|
||||||
|
self.state = RoverSessionState.STAGE1_DECELERATION
|
||||||
|
self.movement_permitted = False
|
||||||
|
|
||||||
|
def enter_watchdog_stage2(self) -> None:
|
||||||
|
if self.state in (RoverSessionState.ROVER_MOVEMENT_AUTHORIZED, RoverSessionState.STAGE1_DECELERATION):
|
||||||
|
self.state = RoverSessionState.STAGE2_BRAKING
|
||||||
|
self.movement_permitted = False
|
||||||
|
|
||||||
|
|
||||||
|
def rejection_reason_for_message(reason: RejectionCause) -> SessionRejectReason:
|
||||||
|
return {
|
||||||
|
RejectionCause.GROUND_SESSION_ID: SessionRejectReason.GROUND_SESSION_ID,
|
||||||
|
RejectionCause.ROVER_BOOT_ID: SessionRejectReason.ROVER_BOOT_ID,
|
||||||
|
RejectionCause.CONTROL_EPOCH: SessionRejectReason.CONTROL_EPOCH,
|
||||||
|
RejectionCause.SEQUENCE_NUMBER: SessionRejectReason.SEQUENCE_NUMBER,
|
||||||
|
RejectionCause.EMERGENCY_EVENT_ID: SessionRejectReason.EMERGENCY_EVENT_ID,
|
||||||
|
RejectionCause.RESET_REQUEST_ID: SessionRejectReason.RESET_REQUEST_ID,
|
||||||
|
RejectionCause.NOT_SYNCHRONIZED: SessionRejectReason.NOT_SYNCHRONIZED,
|
||||||
|
RejectionCause.MOVEMENT_NOT_AUTHORIZED: SessionRejectReason.MOVEMENT_NOT_AUTHORIZED,
|
||||||
|
}[reason]
|
||||||
|
|
||||||
|
|
||||||
|
assert len({state.value for state in GroundSessionState}) == len(GroundSessionState)
|
||||||
|
assert len({state.value for state in RoverSessionState}) == len(RoverSessionState)
|
||||||