2 logging for block based dataflash devices on SPI
6 #include <AP_HAL/AP_HAL.h>
8 #include "AP_Logger_Block.h"
10 #if HAL_LOGGING_FLASH_JEDEC_ENABLED
12 class AP_Logger_Flash_JEDEC
: public AP_Logger_Block
{
14 AP_Logger_Flash_JEDEC(AP_Logger
&front
, LoggerMessageWriter_DFLogStart
*writer
) :
15 AP_Logger_Block(front
, writer
) {}
16 static AP_Logger_Backend
*probe(AP_Logger
&front
,
17 LoggerMessageWriter_DFLogStart
*ls
) {
18 return NEW_NOTHROW
AP_Logger_Flash_JEDEC(front
, ls
);
20 void Init(void) override
;
21 bool CardInserted() const override
{ return !flash_died
&& df_NumPages
> 0; }
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
);
33 uint8_t ReadStatusReg();
34 void Enter4ByteAddressMode(void);
37 bool getSectorCount(void);
39 AP_HAL::OwnPtr
<AP_HAL::SPIDevice
> dev
;
40 AP_HAL::Semaphore
*dev_sem
;
43 uint32_t erase_start_ms
;
45 bool use_32bit_address
;
46 bool read_cache_valid
;
49 #endif // HAL_LOGGING_FLASH_JEDEC_ENABLED