Newer
Older
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
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
'''REST API for Focuser related operations'''
# Third-party modules
from flask_restx import Namespace, Resource, fields
from flask import request
# Custom modules
# import devices
# api = Namespace('switch', description='Switch related operations')
# @api.route("/focuser")
class Focuser(Resource):
'''Secondary mirror position.'''
def __init__(self, *args, **kwargs):
'''Constructor.'''
super().__init__(self, *args, **kwargs)
self.dev = kwargs["dev"]
# @api.response(200, 'Success', fields.Float())
def get(self):
'''Retrieve the secondary mirror position.'''
res = {
"response": devices.foc.position,
"error": devices.foc.error,
}
return res
# @api.route("/focuser/movement")
class FocuserMovement(Resource):
'''Manage the secondary mirror position.'''
def __init__(self, *args, **kwargs):
'''Constructor.'''
super().__init__(self, *args, **kwargs)
self.dev = kwargs["dev"]
# @api.response(200, 'Success', fields.Boolean())
def get(self):
'''Check if the secondary mirror is moving.'''
res = {
"response": devices.foc.is_moving,
"error": devices.foc.error,
}
return res
# @api.response(200, 'Success', fields.Float())
def put(self):
'''Update the secondary mirror position.'''
target = api.payload
devices.foc.position = target
res = {
"response": devices.foc.position,
"error": devices.foc.error,
}
return res
# def delete(self):
# '''Stop the movement.'''
# return
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# @api.route("/connection")
class Connection(Resource):
'''Manage the connection to ASCOM.'''
def __init__(self, *args, **kwargs):
'''Constructor.'''
super().__init__(self, *args, **kwargs)
self.dev = kwargs["dev"]
def get(self):
'''Check if the focuser is connected.'''
res = {
"response": self.dev.connection,
"error": self.dev.error,
}
return res
# @api.response(200, 'Success', fields.Boolean())
def put(self):
'''Connect or disconnect the focuser.'''
connection = request.json # api.payload
self.dev.connection = connection
res = {
"response": self.dev.connection,
"error": self.dev.error,
}
return res
# @api.route("/status")
class Status(Resource):
'''General focuser status.'''
def __init__(self, *args, **kwargs):
'''Constructor.'''
super().__init__(self, *args, **kwargs)
self.dev = kwargs["dev"]
def get(self):
'''Retrieve the status of each compoent.'''
connection = Connection(dev=self.dev).get()
if connection["response"]:
res = {
"focuser": Focuser().get(),
"focuser-movement": FocuserMovement().get(),
}
else:
res = {
"connection": connection,
}