I have a few questions on this logic. The issue here is that signal_lost is a very confusing variable and its logic state is not consistently used.

  * _parameters.rc_fs_thr == 0 checks for the throttle failsafe being configured. If its not configured, signal_lost should not be sent.
  *  thr_ch < 0 checks for the throttle channel being mapped. However, if the throttle isn't mapped we *don't know that we didn't loose the signal*. We just know we can't use the throttle channel for detection. So the condition (thr_ch < 0) should just *not touch* the signal_lost variable and *not* set it to false.
  * signal_lost should be initialized with rc_input.rc_lost || rc_input.rc_failsafe in this context.