-
Notifications
You must be signed in to change notification settings - Fork 0
/
MMMALShutter.cpp
102 lines (78 loc) · 2.1 KB
/
MMMALShutter.cpp
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*
* MMMALShutter.cpp
*
* Created on: Jul 13, 2013
* Author: Ji-Yu
*/
#include "MMMALShutter.h"
namespace MMMAL
{
const char * const MMMALShutter::DeviceNameDIA_ = "IXShutterDIA";
const char * const MMMALShutter::DeviceNameEPI_ = "IXShutterEPI";
MMMALShutter::MMMALShutter(const char * deviceName): initialized_(false)
{
InitializeDefaultErrorMessages();
CreateProperty(MM::g_Keyword_Name, deviceName, MM::String, true);
channel_ = strcmp(deviceName, DeviceNameDIA_) == 0 ? MICROSCOPE_DIA1 : MICROSCOPE_EPI1;
if (channel_ == MICROSCOPE_DIA1)
{
CreateProperty(MM::g_Keyword_Description, "Olympus IX DIA Shutter", MM::String, true);
} else
{
CreateProperty(MM::g_Keyword_Description, "Olympus IX EPI Shutter", MM::String, true);
}
}
MMMALShutter::~MMMALShutter()
{
Shutdown();
}
int MMMALShutter::Initialize()
{
int ret = DEVICE_OK;
if (initialized_)
return DEVICE_OK;
hub_ = static_cast<MMMALHub*>(GetParentHub());
if (hub_ == NULL)
{
return DEVICE_ERR;
}
hub_->SetShutterDevice(this);
initialized_ = true;
return ret;
}
int MMMALShutter::Shutdown()
{
initialized_ = false;
return DEVICE_OK;
}
void MMMALShutter::GetName(char *pszName) const
{
GetProperty(MM::g_Keyword_Name, pszName);
}
bool MMMALShutter::Busy()
{
return hub_->IsShutterBusy(channel_);
}
int MMMALShutter::SetOpen(bool open)
{
return hub_->SetShutterState(channel_, open);
}
int MMMALShutter::GetOpen(bool& open)
{
open = hub_->IsShutterOpen(channel_);
return DEVICE_OK;
}
int MMMALShutter::Fire(double interval)
{
return DEVICE_UNSUPPORTED_COMMAND;
}
int MMMALShutter::StatusChanged()
{
int ret = DEVICE_OK;
if (IsCallbackRegistered())
{
// ret = GetCoreCallback()->OnStatusChanged(this);
}
return ret;
}
}