esmp3/include/data_sources.h

59 lines
1.2 KiB
C
Raw Permalink Normal View History

#pragma once
#include <Arduino.h>
#include <SD.h>
#include "config.h"
2019-11-27 05:51:20 +00:00
#include "http_client_wrapper.h"
class DataSource {
private:
public:
DataSource() {};
virtual ~DataSource() {};
virtual size_t read(uint8_t* buf, size_t len) = 0;
2019-11-27 05:51:20 +00:00
virtual int read() = 0;
virtual size_t position() = 0;
virtual void seek(size_t position) = 0;
virtual size_t size() = 0;
virtual void close() = 0;
virtual bool usable() = 0;
2022-08-18 11:24:52 +00:00
virtual int peek(int offset) = 0;
void skip_id3_tag();
};
class SDDataSource : public DataSource {
private:
File _file;
public:
SDDataSource(String file);
~SDDataSource();
size_t read(uint8_t* buf, size_t len);
2019-11-27 05:51:20 +00:00
int read();
size_t position();
void seek(size_t position);
size_t size();
void close();
bool usable();
2022-08-18 11:24:52 +00:00
int peek(int offset=0);
};
class HTTPSDataSource : public DataSource {
private:
WiFiClient* _stream = NULL;
2019-11-27 05:51:20 +00:00
HTTPClientWrapper* _http = NULL;
uint32_t _position;
String _url;
void _init(String url, uint32_t offset);
public:
HTTPSDataSource(String url, uint32_t offset=0);
~HTTPSDataSource();
size_t read(uint8_t* buf, size_t len);
2019-11-27 05:51:20 +00:00
int read();
size_t position();
void seek(size_t position);
size_t size();
void close();
bool usable();
int peek(int offset=0);
2019-11-27 05:51:20 +00:00
};