Line data Source code
1 : #pragma once 2 : 3 : #include "MissionItemProtocol.h" 4 : 5 : #include <AC_Fence/AC_Fence.h> 6 : 7 : class AC_PolyFence_loader; 8 : 9 : class MissionItemProtocol_Fence : public MissionItemProtocol { 10 : public: 11 2061 : MissionItemProtocol_Fence(class AC_Fence &fence) : 12 2061 : _fence(fence) {} 13 : 14 4046 : MAV_MISSION_TYPE mission_type() const override { 15 4046 : return MAV_MISSION_TYPE_FENCE; 16 : } 17 : 18 : void truncate(const mavlink_mission_count_t &packet) override; 19 : MAV_MISSION_RESULT complete(const GCS_MAVLINK &_link) override; 20 : void timeout() override; 21 : 22 : /* 23 : static function to format mission item as mavlink_mission_item_int_t 24 : */ 25 : static bool get_item_as_mission_item(uint16_t seq, mavlink_mission_item_int_t &ret_packet); 26 : 27 : static MAV_MISSION_RESULT convert_MISSION_ITEM_INT_to_AC_PolyFenceItem(const mavlink_mission_item_int_t &mission_item_int, class AC_PolyFenceItem &ret); 28 : 29 : protected: 30 : 31 81 : ap_message next_item_ap_message_id() const override { 32 81 : return MSG_NEXT_MISSION_REQUEST_FENCE; 33 : } 34 : bool clear_all_items() override WARN_IF_UNUSED; 35 : 36 : private: 37 : class AC_Fence &_fence; 38 : 39 : uint16_t item_count() const override; 40 : uint16_t max_items() const override; 41 : 42 : MAV_MISSION_RESULT replace_item(const mavlink_mission_item_int_t&) override WARN_IF_UNUSED; 43 : MAV_MISSION_RESULT append_item(const mavlink_mission_item_int_t&) override WARN_IF_UNUSED; 44 : 45 : MAV_MISSION_RESULT get_item(uint16_t seq, mavlink_mission_item_int_t &ret_packet) override WARN_IF_UNUSED; 46 : 47 : void free_upload_resources() override; 48 : MAV_MISSION_RESULT allocate_receive_resources(const uint16_t count) override WARN_IF_UNUSED; 49 : MAV_MISSION_RESULT allocate_update_resources() override WARN_IF_UNUSED; 50 : 51 : class AC_PolyFenceItem *_new_items; 52 : uint16_t _new_items_count; 53 : uint8_t *_updated_mask; 54 : };