nm->nodes[nm->my_id].state = NM_MAIN_LOGIN;
nm->tv.tv_sec = 0;
- nm->tv.tv_usec = NM_USECS_OTHER_TURN;
+ nm->tv.tv_usec = NM_USECS_NODE_AWOL;
return nm;
}
break;
}
} while (id != nm->my_id);
+
+ if (nm->nodes[nm->my_id].next == nm->my_id) {
+ /* Uh oh, we're the only one left. */
+
+ /* TODO */
+ nm->nodes[nm->my_id].state = NM_MAIN_LOGIN;
+
+ /* TODO: Timeout 140ms (RCD 310) */
+ }
}
* connectivity.
*/
nm->tv.tv_sec = 0;
- nm->tv.tv_usec = NM_USECS_OTHER_TURN;
+ nm->tv.tv_usec = NM_USECS_NODE_AWOL;
}
break;
case NM_MAIN_LOGIN:
*/
if (next != sender) {
nm->tv.tv_sec = 0;
- nm->tv.tv_usec = NM_USECS_OTHER_TURN;
+ nm->tv.tv_usec = NM_USECS_NODE_AWOL;
}
break;
+ case NM_MAIN_LIMPHOME:
+ nm_update_my_next_id(nm);
}
nm_dump_all(nm);
static void nm_timeout_callback(struct NM_Main *nm, struct can_frame *frame)
{
nm->tv.tv_sec = 0;
- nm->tv.tv_usec = NM_USECS_OTHER_TURN;
+ nm->tv.tv_usec = NM_USECS_NODE_AWOL;
nm_buildframe(nm, frame);
}
*
* We may reduce it since we're not on a real-time OS.
*/
-#define NM_USECS_MY_TURN 40000
+#define NM_USECS_MY_TURN 45000
-/* This timeout is 50 ms in:
+/* This timeout is 140 ms in:
* - 0x19 (RCD 310, Bosch)
*/
-#define NM_USECS_OTHER_TURN 50000
+#define NM_USECS_NODE_AWOL 140000
/* This timeout is 500 ms in: