68 "PRAET_SETTLE_MICROS was not set and took the library default of 0, so this build waits for nothing after an attach. Set it to what your engine takes to come up."
69#endif
70
71/**
72 * @brief Microseconds a running channel may go without the port kicking it before it reads stalled.
73 *
74 * @note A watchdog window and not a transfer length. The port kicks this whenever the engine shows a
75 * sign of life, and a window that goes unkicked says the channel stopped moving - it never
76 * says the transfer finished. Completion arrives from the port, because how long a transfer
77 * takes is not something this library can know.
78 * @note That is also why the width is not a problem. A watchdog window is short deliberately, and so the
79 * 65 millisecond ceiling a 16-bit word puts on a microsecond count is far above any value
80 * worth setting here, while a transfer's runtime has no bound at all.
86 "PRAET_KEEPALIVE_MICROS was not set and took the library default of 1000. Set it to how long a moving channel may go unkicked on your part before it has stopped."
87#endif
88
89/**
90 * @brief Whether a stalled transfer can be backed out or scrubbed.
91 *
92 * @note The capability switch. Off is what a caller gets by not answering, because recovery costs
93 * three arrays per channel and a caller who never said where the bytes were cannot back
94 * anything out of them.
95 * @note With it on, submit takes the start and the length, kick reports how far the engine got, and
96 * praet_ordo_resolve exists. With it off none of those members are in the context and none
97 * of those entries are declared. A call site that wanted them fails to compile instead of
98 * linking against a version that records nothing.
104 "PRAET_RECOVERY was not set and took the library default of 0. A stalled transfer cannot be backed out or scrubbed in this build. Set it to 1 to have that machinery, 0 to say you meant to leave it out."
105#endif
106
107// A capability switch is on or off, and a third value is somebody reading it as a count or a channel
108// number. Every test on it below would take the on arm silently. This one stops where it stands
109// and stays out of the basket, because every gate after it would be answering a question about a
112#error "PRAET_RECOVERY must be 0 or 1. It is a capability switch, not a count."
113#endif
114
115// The boundary word check is not a build knob and has no default. It is answered once per context, in
116// the declaration, by a token nobody writes by accident. See PraetOrdoContext in
117// praet_ordo.h. A -D that sets it here reads as a build-wide switch, which it is not
118#ifdef PRAET_RECOVERY_CRC
119#error \
120 "PRAET_RECOVERY_CRC is not a build knob. The boundary word check is answered per context, in the declaration: PraetOrdoContext(name, AD_VERBI_CONFINIUM_RESTITUE_PAULATIM_CRC_ENABLE) or the DISABLE token."