From 65d051cbc92af81e6887386d927deda8346e96b4 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 26 Mar 2019 11:13:39 +1100 Subject: [PATCH] AP_HAL: added hal.flash driver needed for semaphore --- libraries/AP_HAL/AP_HAL.h | 1 + libraries/AP_HAL/AP_HAL_Namespace.h | 1 + libraries/AP_HAL/Flash.h | 18 ++++++++++++++++++ libraries/AP_HAL/HAL.h | 5 ++++- 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 libraries/AP_HAL/Flash.h diff --git a/libraries/AP_HAL/AP_HAL.h b/libraries/AP_HAL/AP_HAL.h index e0d83acd12..4c22f4fbdd 100644 --- a/libraries/AP_HAL/AP_HAL.h +++ b/libraries/AP_HAL/AP_HAL.h @@ -18,6 +18,7 @@ #include "Semaphores.h" #include "Util.h" #include "OpticalFlow.h" +#include "Flash.h" #if HAL_WITH_UAVCAN #include "CAN.h" diff --git a/libraries/AP_HAL/AP_HAL_Namespace.h b/libraries/AP_HAL/AP_HAL_Namespace.h index 464213b606..e3bbd21167 100644 --- a/libraries/AP_HAL/AP_HAL_Namespace.h +++ b/libraries/AP_HAL/AP_HAL_Namespace.h @@ -34,6 +34,7 @@ namespace AP_HAL { class CAN; class Util; + class Flash; /* Utility Classes */ class Print; diff --git a/libraries/AP_HAL/Flash.h b/libraries/AP_HAL/Flash.h new file mode 100644 index 0000000000..7402afba76 --- /dev/null +++ b/libraries/AP_HAL/Flash.h @@ -0,0 +1,18 @@ +/* + interface to flash read/write + */ +#pragma once + +#include +#include "AP_HAL_Namespace.h" + +class AP_HAL::Flash { +public: + virtual uint32_t getpageaddr(uint32_t page) = 0; + virtual uint32_t getpagesize(uint32_t page) = 0; + virtual uint32_t getnumpages(void) = 0; + virtual bool erasepage(uint32_t page) = 0; + virtual bool write(uint32_t addr, const void *buf, uint32_t count) = 0; + virtual void keep_unlocked(bool set) = 0; + virtual bool ispageerased(uint32_t page) = 0; +}; diff --git a/libraries/AP_HAL/HAL.h b/libraries/AP_HAL/HAL.h index 2ae89b03a0..bcd658666d 100644 --- a/libraries/AP_HAL/HAL.h +++ b/libraries/AP_HAL/HAL.h @@ -38,6 +38,7 @@ public: AP_HAL::Scheduler* _scheduler, AP_HAL::Util* _util, AP_HAL::OpticalFlow *_opticalflow, + AP_HAL::Flash *_flash, #if HAL_WITH_UAVCAN AP_HAL::CANManager* _can_mgr[MAX_NUMBER_OF_CAN_DRIVERS]) #else @@ -61,7 +62,8 @@ public: rcout(_rcout), scheduler(_scheduler), util(_util), - opticalflow(_opticalflow) + opticalflow(_opticalflow), + flash(_flash) { #if HAL_WITH_UAVCAN if (_can_mgr == nullptr) { @@ -112,6 +114,7 @@ public: AP_HAL::Scheduler* scheduler; AP_HAL::Util *util; AP_HAL::OpticalFlow *opticalflow; + AP_HAL::Flash *flash; #if HAL_WITH_UAVCAN AP_HAL::CANManager* can_mgr[MAX_NUMBER_OF_CAN_DRIVERS]; #else