summaryrefslogtreecommitdiff
path: root/src/drivers/Spi.h
blob: 51de2b34dec75601de8a6ed3fa9e286b5b17cdb9 (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 "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);
      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;
      bool active;
    };
  }
}