tone-generator/entry.hpp

59 lines
780 B
C++
Raw Normal View History

2024-08-19 22:43:24 +10:00
#pragma once
2024-08-25 13:55:43 +10:00
template <int P, bool v>
struct Checker {
static constexpr bool value = v;
};
2024-08-19 22:43:24 +10:00
namespace entry {
2024-08-25 13:55:43 +10:00
enum Type : uint8_t {
stop = 0,
config = 1,
set = 2,
set_ts = 3,
clear = 4,
clear_ts = 5,
set_saw = 6,
set_saw_ts = 7,
2024-08-25 13:55:43 +10:00
};
2024-09-30 23:25:16 +10:00
enum NextType {
nt_none,
nt_tone,
nt_tempo,
2024-08-19 22:43:24 +10:00
};
2024-09-30 23:25:16 +10:00
struct Tone {
2024-08-19 22:43:24 +10:00
uint8_t index;
2024-09-30 23:25:16 +10:00
uint8_t amplitude;
2024-08-19 22:43:24 +10:00
uint16_t frequency;
uint8_t mode;
2024-08-19 22:43:24 +10:00
};
2024-08-25 13:55:43 +10:00
2024-09-30 23:25:16 +10:00
struct Tempo {
uint32_t ticks;
2024-08-25 13:55:43 +10:00
uint32_t us_per_tick;
};
inline size_t get_size(Type type) {
switch(type) {
case Type::set:
return 3;
case Type::clear:
return 1;
case Type::set_ts:
return 5;
case Type::clear_ts:
return 4;
case Type::config:
2024-09-29 18:07:58 +10:00
return 8;
2024-08-25 13:55:43 +10:00
case Type::stop:
default:
return 1;
}
}
2024-08-19 22:43:24 +10:00
};