diff --git a/include/mcc/mcc_movement_controls.h b/include/mcc/mcc_movement_controls.h index 4bc3593..2594a1d 100644 --- a/include/mcc/mcc_movement_controls.h +++ b/include/mcc/mcc_movement_controls.h @@ -296,16 +296,20 @@ public: template CallbackFuncT = decltype([](STATUS_T const&) {}), + traits::mcc_callable_c CallbackFuncT, mcc_logger_c LOGGER_T = MccNullLogger> - MccSimpleMovementControls( - HARDWARE_T* hardware, - TELEMETRY_T* telemetry, - PZONE_CONT_T* pzone_cont, - CallbackFuncT&& mode_switch_callback = [](STATUS_T const&) {}, - LOGGER_T* logger = &details::NullLogger) + MccSimpleMovementControls(HARDWARE_T* hardware, + TELEMETRY_T* telemetry, + PZONE_CONT_T* pzone_cont, + CallbackFuncT&& mode_switch_callback, + LOGGER_T* logger = &details::NullLogger) { + static_assert(traits::mcc_func_traits::arity == 1 && + mcc_mount_status_c>>, + "INVALID 'CallbackFuncT' CALLABLE SIGNATURE!"); + + using STATUS_T = std::decay_t>; + auto send_to_hardware = [hardware, logger](typename HARDWARE_T::hardware_state_t const& hw_state) -> error_t { if constexpr (std::derived_from>) { logger->logDebug(std::format("Send to hardware: X = {} degs, Y = {} degs", hw_state.XY.x().degrees(),