
/*
 * stm32_halDisplay.H
 *
 *  Created on: 1 Nov 2020
 *      Author: mike
 */

#pragma once

#include "main.h"

#include "libOLED/displayclass.H"

class stm32_halDisplay_t : public display_t
{
public:
  stm32_halDisplay_t (int const width, int const height, int const ramwidth,
		      uint8_t *const data,
		      SPI_HandleTypeDef *const spiInterface,

		      GPIO_TypeDef *const CD_GPIO,
		      uint16_t CD_GPIO_Pin, GPIO_TypeDef *const RESET_GPIO,
		      uint16_t RESET_GPIO_Pin, GPIO_TypeDef *const NSS_GPIO,
		      uint16_t NSS_GPIO_Pin);

private:
  void
  oledSetCD (uint8_t set) override;

  void
  oledWrite (uint8_t d) override;

  void
  oledReset () override;

  void
  oledWrite (uint8_t *buff, uint8_t len) override;

  SPI_HandleTypeDef * const m_spiInterface;

  GPIO_TypeDef *const m_CD_GPIO;
  uint16_t const m_CD_GPIO_Pin;

  GPIO_TypeDef *const m_RESET_GPIO;
  uint16_t const m_RESET_GPIO_Pin;

  GPIO_TypeDef *const m_NSS_GPIO;
  uint16_t const m_NSS_GPIO_Pin;

};
