diff --git a/backend/app/classes/ChameleonCamera.py b/backend/app/classes/ChameleonCamera.py deleted file mode 100644 index 3bdf4b379..000000000 --- a/backend/app/classes/ChameleonCamera.py +++ /dev/null @@ -1,10 +0,0 @@ -from .ChameleonPipeLine import ChameleonPipeline - - -class ChameleonCamera: - - def __init__(self, dic): - self.pipelines = {} - - for pipeline_id in dic: - self.pipelines[pipeline_id] = ChameleonPipeline(dic[pipeline_id]) \ No newline at end of file diff --git a/backend/app/classes/ChameleonPipeLine.py b/backend/app/classes/ChameleonPipeLine.py deleted file mode 100644 index f1de833a7..000000000 --- a/backend/app/classes/ChameleonPipeLine.py +++ /dev/null @@ -1,7 +0,0 @@ - - -class ChameleonPipeline: - - def __init__(self, dic): - self.exposure = dic["exposure"] - self.brightness = dic["brightness"] diff --git a/backend/app/classes/__init__.py b/backend/app/classes/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/backend/app/handlers/SocketHandler.py b/backend/app/handlers/SocketHandler.py index 35dc80ebd..5b01dda18 100644 --- a/backend/app/handlers/SocketHandler.py +++ b/backend/app/handlers/SocketHandler.py @@ -1,7 +1,6 @@ import tornado.websocket import json import os -from app.classes.ChameleonCamera import ChameleonCamera class ChameleonWebSocket(tornado.websocket.WebSocketHandler): @@ -17,6 +16,8 @@ class ChameleonWebSocket(tornado.websocket.WebSocketHandler): self.init_settings() self.init_actions() + # Init methods + def init_settings(self): with open(os.path.join(self.settings_path, 'settings.json')) as setting_file: self.settings = json.load(setting_file) @@ -34,28 +35,100 @@ class ChameleonWebSocket(tornado.websocket.WebSocketHandler): self.cams[curr_dir] = pipelines def init_actions(self): - self.actions["change_pipeline_value"] = self.change_pipeline_value + self.actions["cam"] = self.change_curr_camera + self.actions["pipeline"] = self.change_curr_pipeline + self.actions["change_pipeline_values"] = self.change_pipeline_values def check_origin(self, origin): return True + # Socket methods + def open(self): - self.write_message(self.cams[self.settings["curr_camera"]][self.settings["curr_pipeline"]]) + + # TODO: send full settings(team number....) + self.send_curr_cam() print("WebSocket opened") def on_message(self, message): - for key in message: - if key in self.actions: - self.actions[key](message[key]) + message_dic = json.loads(message) + + for key in message_dic: + self.actions.get(key, self.actions["change_pipeline_values"])(message_dic) print(message) self.write_message(message) def on_close(self): + self.save_settings() + self.save_cameras() print("WebSocket closed") - def change_pipeline_value(self, dic): + def send_curr_cam(self): + self.write_message(self.get_curr_pipeline()) + + # Access methods + + def get_curr_pipeline(self): + return self.cams[self.settings["curr_camera"]][self.settings["curr_pipeline"]] + + def get_curr_cam(self): + return self.cams[self.settings["curr_camera"]] + + def set_curr_camera(self, cam_name): + if cam_name in self.cams: + self.settings["curr_camera"] = cam_name + + def set_curr_pipeline(self, pipe_name): + if pipe_name in self.cams: + self.settings["curr_pipeline"] = pipe_name + + # Actions + + def change_pipeline_values(self, dic): for key in dic: - self.cams[self.settings["curr_camera"]][self.settings["curr_pipeline"]][key] = dic[key] + self.get_curr_pipeline()[key] = dic[key] + + def change_curr_camera(self, dic): + cam_name = 'cam' + dic["camera"] + + if cam_name not in self.cams: + self.create_new_cam(cam_name) + + self.set_curr_camera(cam_name) + self.send_curr_cam() + + def change_curr_pipeline(self, dic): + pipe_name = 'pipeline' + dic["pipeline"] + + if pipe_name not in self.get_curr_cam(): + self.create_new_pipeline(pipe_name) + + self.set_curr_pipeline(pipe_name) + + # Creators + + def create_new_pipeline(self, pipe_name, cam=None): + if not cam: + cam = self.settings["curr_camera"] + + with open(os.path.join(self.settings_path, 'default_pipeline.json')) as default_pipeline: + self.cams[cam][pipe_name] = json.load(default_pipeline) + + def create_new_cam(self, cam): + self.cams[cam] = {} + self.create_new_pipeline('pipeline1', cam) + + # Save data functions + + def save_cameras(self): + for cam in self.cams: + for pipeline in self.cams[cam]: + with open(os.path.join(self.cams_path, cam, pipeline + '.json'), 'w') as pipeline_file: + json.dump(self.cams[cam][pipeline], pipeline_file) + + def save_settings(self): + with open(os.path.join(self.settings_path, 'settings.json'), 'w') as setting_file: + json.dump(self.settings, setting_file) diff --git a/backend/settings/cams/cam1/pipeline1 b/backend/settings/cams/cam1/pipeline1 deleted file mode 100644 index d9fdb4afa..000000000 --- a/backend/settings/cams/cam1/pipeline1 +++ /dev/null @@ -1,4 +0,0 @@ -{ - "exposure": 45, - "brightness": 123123 -} \ No newline at end of file diff --git a/backend/settings/cams/cam1/pipeline1.json b/backend/settings/cams/cam1/pipeline1.json new file mode 100644 index 000000000..8438b90d1 --- /dev/null +++ b/backend/settings/cams/cam1/pipeline1.json @@ -0,0 +1 @@ +{"exposure": 21, "brightness": 71} \ No newline at end of file diff --git a/backend/settings/cams/cam1/pipeline2.json b/backend/settings/cams/cam1/pipeline2.json index 64016bfed..42df9d775 100644 --- a/backend/settings/cams/cam1/pipeline2.json +++ b/backend/settings/cams/cam1/pipeline2.json @@ -1,4 +1 @@ -{ - "exposure": 23, - "brightness": 12 -} \ No newline at end of file +{"exposure": 23, "brightness": 12} \ No newline at end of file diff --git a/backend/settings/cams/cam2/pipeline1 b/backend/settings/cams/cam2/pipeline1 deleted file mode 100644 index 05f38c3c9..000000000 --- a/backend/settings/cams/cam2/pipeline1 +++ /dev/null @@ -1,4 +0,0 @@ -{ - "exposure": 2, - "brightness": 4 -} \ No newline at end of file diff --git a/backend/settings/cams/cam2/pipeline1.json b/backend/settings/cams/cam2/pipeline1.json new file mode 100644 index 000000000..c9ea90ea2 --- /dev/null +++ b/backend/settings/cams/cam2/pipeline1.json @@ -0,0 +1 @@ +{"exposure": 0, "brightness": 100} \ No newline at end of file diff --git a/backend/settings/cams/cam2/pipeline2.json b/backend/settings/cams/cam2/pipeline2.json index b93a2766b..e4059c97c 100644 --- a/backend/settings/cams/cam2/pipeline2.json +++ b/backend/settings/cams/cam2/pipeline2.json @@ -1,4 +1 @@ -{ - "exposure": 2, - "brightness": 3 -} \ No newline at end of file +{"exposure": 2, "brightness": 3} \ No newline at end of file diff --git a/backend/settings/default_pipeline.json b/backend/settings/default_pipeline.json new file mode 100644 index 000000000..35fa3a3a8 --- /dev/null +++ b/backend/settings/default_pipeline.json @@ -0,0 +1,4 @@ +{ + "exposure": 50, + "brightness": 50 +} \ No newline at end of file diff --git a/backend/settings/settings.json b/backend/settings/settings.json index 24ad50700..7afb9a97d 100644 --- a/backend/settings/settings.json +++ b/backend/settings/settings.json @@ -1,5 +1 @@ -{ - "team_number": 1577, - "curr_camera": "cam1", - "curr_pipeline": "pipeline1" -} \ No newline at end of file +{"team_number": 1577, "curr_camera": "cam1", "curr_pipeline": "pipeline1"} \ No newline at end of file