1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-05 21:05:51 +00:00
CLK/Machines/Apple/Macintosh/DriveSpeedAccumulator.hpp
2023-05-10 16:02:18 -05:00

45 lines
888 B
C++

//
// DriveSpeedAccumulator.hpp
// Clock Signal
//
// Created by Thomas Harte on 01/06/2019.
// Copyright © 2019 Thomas Harte. All rights reserved.
//
#ifndef DriveSpeedAccumulator_hpp
#define DriveSpeedAccumulator_hpp
#include <array>
#include <cstddef>
#include <cstdint>
namespace Apple::Macintosh {
class DriveSpeedAccumulator {
public:
/*!
Accepts fetched motor control values.
*/
void post_sample(uint8_t sample);
struct Delegate {
virtual void drive_speed_accumulator_set_drive_speed(DriveSpeedAccumulator *, float speed) = 0;
};
/*!
Sets the delegate to receive drive speed changes.
*/
void set_delegate(Delegate *delegate) {
delegate_ = delegate;;
}
private:
static constexpr int samples_per_bucket = 20;
int sample_count_ = 0;
int sample_total_ = 0;
Delegate *delegate_ = nullptr;
};
}
#endif /* DriveSpeedAccumulator_hpp */