forked from k-ross/indi-wmh-focuser
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmotor.h
44 lines (35 loc) · 948 Bytes
/
motor.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#pragma once
#include <chrono>
enum class BoardRevision
{
Original, Rev21
};
class Motor
{
protected:
BoardRevision _revision = BoardRevision::Original;
void _Delay(int microseconds)
{
if (microseconds == 0)
return;
auto start = std::chrono::high_resolution_clock::now();
for(;;)
{
auto later = std::chrono::high_resolution_clock::now();
auto micros = std::chrono::duration_cast<std::chrono::microseconds>(later - start);
if (micros.count() >= microseconds)
break;
}
}
public:
enum class Direction
{
Forward, Backward
};
Motor() {}
virtual ~Motor() {}
void SetBoardRevision(BoardRevision revision) { _revision = revision; }
virtual void Enable(Direction dir) = 0;
virtual void Disable() = 0;
virtual void SingleStep(int stepDelayMicroseconds) = 0;
};