Line data Source code
1 : /* 2 : logging for block based dataflash devices on SPI 3 : */ 4 : #pragma once 5 : 6 : #include <AP_HAL/AP_HAL.h> 7 : 8 : #include "AP_Logger_Block.h" 9 : 10 : #if HAL_LOGGING_FLASH_JEDEC_ENABLED 11 : 12 : class AP_Logger_Flash_JEDEC : public AP_Logger_Block { 13 : public: 14 5 : AP_Logger_Flash_JEDEC(AP_Logger &front, LoggerMessageWriter_DFLogStart *writer) : 15 5 : AP_Logger_Block(front, writer) {} 16 5 : static AP_Logger_Backend *probe(AP_Logger &front, 17 : LoggerMessageWriter_DFLogStart *ls) { 18 5 : return NEW_NOTHROW AP_Logger_Flash_JEDEC(front, ls); 19 : } 20 : void Init(void) override; 21 1211913 : bool CardInserted() const override { return !flash_died && df_NumPages > 0; } 22 : 23 : private: 24 : void BufferToPage(uint32_t PageAdr) override; 25 : void PageToBuffer(uint32_t PageAdr) override; 26 : void SectorErase(uint32_t SectorAdr) override; 27 : void Sector4kErase(uint32_t SectorAdr) override; 28 : void StartErase() override; 29 : bool InErase() override; 30 : void send_command_addr(uint8_t cmd, uint32_t address); 31 : void WaitReady(); 32 : bool Busy(); 33 : uint8_t ReadStatusReg(); 34 : void Enter4ByteAddressMode(void); 35 : 36 : void WriteEnable(); 37 : bool getSectorCount(void); 38 : 39 : AP_HAL::OwnPtr<AP_HAL::SPIDevice> dev; 40 : AP_HAL::Semaphore *dev_sem; 41 : 42 : bool flash_died; 43 : uint32_t erase_start_ms; 44 : uint8_t erase_cmd; 45 : bool use_32bit_address; 46 : bool read_cache_valid; 47 : }; 48 : 49 : #endif // HAL_LOGGING_FLASH_JEDEC_ENABLED