#pragma once #include "AP_OpticalFlow_config.h" #if AP_OPTICALFLOW_HEREFLOW_ENABLED #include "AP_OpticalFlow_Backend.h" #include class AP_OpticalFlow_HereFlow : public OpticalFlow_backend { public: AP_OpticalFlow_HereFlow(AP_OpticalFlow &flow); void init() override {} void update() override; static bool subscribe_msgs(AP_DroneCAN* ap_dronecan); static void handle_measurement(AP_DroneCAN *ap_dronecan, const CanardRxTransfer& transfer, const com_hex_equipment_flow_Measurement &msg); private: Vector2f flow_integral, rate_gyro_integral; uint8_t surface_quality; float integral_time; bool new_data; static uint8_t _node_id; static AP_OpticalFlow_HereFlow* _driver; static AP_DroneCAN* _ap_dronecan; void _push_state(void); }; #endif // AP_OPTICALFLOW_HEREFLOW_ENABLED