Arduino VS1053
Loading...
Searching...
No Matches
VS1053SPI.h
1
2#pragma once
3
4#if defined(ARDUINO)
5# include "Arduino.h"
6# include <SPI.h>
7#else
8# include "VS1053Ext.h"
9#endif
10
11namespace arduino_vs1053 {
12
21 public:
22 virtual void beginTransaction() = 0;
23 virtual void endTransaction() = 0;
24 virtual void set_speed(uint32_t speed)= 0;
25
26 virtual void write(uint8_t data) = 0;
27 virtual void write16(uint16_t data)= 0;
28 virtual void write_bytes(uint8_t * data, uint32_t size) = 0;
29 virtual uint8_t transfer(uint8_t data) = 0;
30 virtual uint16_t read16(uint16_t port) = 0;
31};
32
33
34#if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266)
35
41 protected:
42 uint32_t speed = 200000;
43 public:
44 VS1053_SPIESP32(SPIClass &spi=SPI){
45 p_spi = &spi;
46 }
47
48 void beginTransaction() override {
49 SPISettings settings(speed, MSBFIRST, SPI_MODE0);
50 p_spi->beginTransaction(settings);
51 }
52 void endTransaction() override{p_spi->endTransaction();}
53 void set_speed(uint32_t value){ this->speed = value;}
54
55 void write(uint8_t data) override{
56 p_spi->write(data);
57 }
58
59 uint8_t transfer(uint8_t data) override{
60 return p_spi->transfer(data);
61 }
62
63 void write16(uint16_t data) override{
64 p_spi->write16(data);
65 }
66
67 void write_bytes(uint8_t * data, uint32_t size) override{
68 p_spi->writeBytes(data, size);
69 }
70
71 uint16_t read16(uint16_t port) override {
72 return p_spi->transfer16(port);
73 }
74 protected:
75 SPIClass *p_spi;
76
77};
78
79#endif
80
81#ifdef ARDUINO
82
88 protected:
89 uint32_t speed = 200000;
90
91 public:
94 p_spi = &SPI;
95 }
96
98 VS1053_SPIArduino(SPIClass &spi) {
99 p_spi = &spi;
100 }
101
102 void beginTransaction() override{
103 SPISettings settings(speed, MSBFIRST, SPI_MODE0);
104 p_spi->beginTransaction(settings);
105 }
106 void endTransaction() override {p_spi->endTransaction();}
107 void set_speed(uint32_t value){ this->speed = value;}
108
109 void write(uint8_t data) override {
110 (void)p_spi->transfer(data);
111 }
112
113 uint8_t transfer(uint8_t data) override{
114 return p_spi->transfer(data);
115 }
116
117 void write16(uint16_t data) override{
118 (void)p_spi->transfer16(data);
119 }
120
121 uint16_t read16(uint16_t port) override {
122 return p_spi->transfer16(port);
123 }
124
125 void write_bytes(uint8_t * data, uint32_t size) override {
126#if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266)
127 p_spi->writeBytes(data, size);
128#else
129 p_spi->transfer(data, size);
130#endif
131 // for (int i = 0; i < size; ++i) {
132 // p_spi->transfer(data[i]);
133 // }
134 }
135 protected:
136 SPIClass *p_spi;
137};
138
139#endif
140
141}
Generic SPI Driver for Arduino.
Definition: VS1053SPI.h:87
VS1053_SPIArduino(SPIClass &spi)
Using the indicated SPI object.
Definition: VS1053SPI.h:98
VS1053_SPIArduino()
Using SPI by default.
Definition: VS1053SPI.h:93
Arduino Driver for ESP32 and ESP8266.
Definition: VS1053SPI.h:40
Abstract SPI Driver for VS1053. We support different alternative implementations. Outside of Arduino ...
Definition: VS1053SPI.h:20