tone-generator/entry.hpp

59 lines
765 B
C++

#pragma once
template <int P, bool v>
struct Checker {
static constexpr bool value = v;
};
namespace entry {
enum Type : uint8_t {
stop = 0,
config = 1,
set = 2,
set_ts = 3,
clear = 4,
clear_ts = 5,
tempo = 6,
};
enum NextType {
nt_none,
nt_tone,
nt_tempo,
};
struct Tone {
uint8_t index;
uint8_t amplitude;
uint16_t frequency;
};
struct Tempo {
uint32_t ticks;
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:
return 8;
case Type::tempo:
return 7;
case Type::stop:
default:
return 1;
}
}
};