22template <
typename T = u
int8_t>
31 virtual bool read(T &result) = 0;
35 if (data ==
nullptr) {
40 for (
int j = 0; j < lenResult; j++) {
43 LOGD(
"readArray %d -> %d", len, lenResult);
61 for (
int j = 0; j < len; j++) {
62 if (!
write(data[j])) {
68 LOGD(
"writeArray %d -> %d", len, result);
82 virtual bool peek(T &result) = 0;
116 if (
size() == 0)
return 0.0f;
117 return 100.0f *
static_cast<float>(
available()) /
118 static_cast<float>(
size());
123 LOGE(
"resize not implemented for this buffer");
138template <
typename T = u
int8_t>
147 for (
int j = 0; j < result; j++) {
157 template <
int rows,
int channels>
160 for (
int j = 0; j < lenResult; j++) {
163 for (
int i = 0; i < channels; i++) {
183template <
typename T = u
int8_t>
227 bool read(T &result)
override {
228 bool success =
false;
236 bool peek(T &result)
override {
237 bool success =
false;
247 return max(result, 0);
256 if (len > len_available) {
268 return len_available;
271 len_available -= len;
309 size_t result = min(available_size, (
size_t)
buffer.size());
352template <
typename T = u
int8_t>
360 bool read(T &result)
override {
373 bool peek(T &result)
override {
387 for (
int j = 0; j < n; j++) {
392 if (count == 0)
break;
403 virtual bool write(T data)
override {
432 LOGI(
"resize: %d", len);
452 return (uint32_t)(index + 1) %
max_size; }
463template <
class File,
typename T>
480 LOGE(
"file is not valid");
490 if (
p_file ==
nullptr)
return 0;
491 int read_count = min(count,
available());
496 if (offset.
len1 > 0) {
504 for (
int i = 0; i < count; i++) {
505 LOGI(
"read #%d value %d", offset.
pos, (
int)data[i]);
513 bool peek(T &result)
override {
525 if (
p_file ==
nullptr)
return 0;
526 int read_count = min(count,
available());
531 if (offset.
len1 > 0) {
544 if (
p_file ==
nullptr)
return 0;
545 for (
int i = 0; i < len; i++) {
554 if (offset.
len1 > 0) {
614 int overflow = (pos + len) -
max_size;
621 result.
len = len - overflow;
622 result.
len1 = overflow;
629 int file_pos = pos *
sizeof(T);
631 LOGD(
"file_seek: %d", pos);
633 LOGE(
"seek %d", file_pos);
642 LOGD(
"file_write: %d", count);
643 if (
p_file ==
nullptr)
return 0;
644 int to_write_bytes =
sizeof(T) * count;
645 int bytes_written =
p_file->
write((
const uint8_t *)data, to_write_bytes);
647 int elements_written = bytes_written /
sizeof(T);
648 if (bytes_written != to_write_bytes) {
649 LOGE(
"write: %d -> %d bytes", to_write_bytes, bytes_written);
651 return elements_written;
656 LOGD(
"file_read: %d", count);
657 int read_bytes = count *
sizeof(T);
659 int result_count = result_bytes /
sizeof(T);
660 if (result_count != count) {
661 LOGE(
"readBytes: %d -> %d", read_bytes, result_bytes);
674template <
typename T = u
int8_t>
682 bool read(T &result)
override {
692 while (count < len) {
701 bool peek(T &result)
override {
793 return run_time == 0 ? 0 :
sample_count * 1000 / run_time;
824 for (
int j = 0; j < count; j++) {
826 LOGD(
"new buffer %p", buffer);
861 while (ptr !=
nullptr) {
862 LOGD(
"deleting %p", ptr);
868 while (ptr !=
nullptr) {
869 LOGD(
"deleting %p", ptr);
913template <
typename T = u
int8_t>
940 if (sbuffer->
id ==
id) {
967template <
class File,
typename T>
988 if (!file)
return false;
1019 bool result =
read(data);
1037 return result /
sizeof(T);
1104 int len = strlen(file.
name());
1105 char file_name[len + 1];
1106 strncpy(file_name, file.
name(), len);
1121template <
typename T = u
int8_t>
1125 LOGI(
"BufferedArray(%d)", len);
1131 LOGD(
"getValues(%d,%d) - max %d", offset, length,
array.size());
1149 return &
array[offset];
#define TRACED()
Definition AudioLoggerIDF.h:31
#define LOGI(...)
Definition AudioLoggerIDF.h:28
#define LOGD(...)
Definition AudioLoggerIDF.h:27
#define LOGE(...)
Definition AudioLoggerIDF.h:30
#define assert(T)
Definition avr.h:10
virtual size_t readBytes(uint8_t *data, size_t len)
Definition Arduino.h:140