aboutsummaryrefslogtreecommitdiffstats
path: root/src/drivers/Spi.h
blob: 4f48fafe491ce2f76a4ef9ff15163add392c6f33 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#pragma once
#include <cstdint>
#include <cstddef>
#include <functional>
#include "drivers/SpiMaster.h"

namespace Pinetime {
  namespace Drivers {
    class Spi {
    public:
      Spi(SpiMaster& spiMaster, uint8_t pinCsn);
      Spi(const Spi&) = delete;
      Spi& operator=(const Spi&) = delete;
      Spi(Spi&&) = delete;
      Spi& operator=(Spi&&) = delete;

      bool Init();
      bool Write(const uint8_t* data, size_t size, std::function<void(bool)> TransactionHook);
      bool Read(uint8_t* cmd, size_t cmdSize, uint8_t* data, size_t dataSize);
      bool WriteCmdAndBuffer(const uint8_t* cmd, size_t cmdSize, const uint8_t* data, size_t dataSize);
      void Sleep();
      void Wakeup();

    private:
      SpiMaster& spiMaster;
      uint8_t pinCsn;
    };
  }
}