File: main.cpp

package info (click to toggle)
satdump 1.2.2%2Bgb79af48-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 81,624 kB
  • sloc: cpp: 276,770; ansic: 164,598; lisp: 1,219; sh: 283; xml: 106; makefile: 7
file content (76 lines) | stat: -rw-r--r-- 2,071 bytes parent folder | download | duplicates (2)
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
#include "core/plugin.h"
#include "logger.h"

#include "core/pipeline.h"

#include <filesystem>
#include "libs/sol2/sol.hpp"
#include "init.h"

#include "core/config.h"

bool scription_plugin_trigger_pipeline_done_processing = true;

void pipeline_done_processing_callback(const satdump::events::PipelineDoneProcessingEvent &evt)
{
    if (!scription_plugin_trigger_pipeline_done_processing)
        return;

    std::string script_path = satdump::user_path + "/scripts/pipeline_done_processing.lua";

    if (std::filesystem::exists(script_path))
    {
        logger->trace("Calling " + script_path);

        try
        {
            sol::state lua;

            lua.open_libraries(sol::lib::base);
            lua.open_libraries(sol::lib::string);
            lua.open_libraries(sol::lib::math);
            lua.open_libraries(sol::lib::io);
            lua.open_libraries(sol::lib::os);

            lua["pipeline_id"] = evt.pipeline_id;
            lua["pipeline_output_directory"] = evt.output_directory;

            lua.script_file(script_path);
        }
        catch (std::exception &e)
        {
            logger->error("Error calling event script! %s", e.what());
        }
    }
}

class ScriptingSupport : public satdump::Plugin
{
public:
    std::string getID()
    {
        return "scripting_support";
    }

    void init()
    {
        satdump::eventBus->register_handler<satdump::events::PipelineDoneProcessingEvent>(pipeline_done_processing_callback);
        satdump::eventBus->register_handler<satdump::config::RegisterPluginConfigHandlersEvent>(registerConfigHandler);
    }

    static void renderConfig()
    {
        ImGui::Checkbox("Trigger Pipeline Done Processing", &scription_plugin_trigger_pipeline_done_processing);
    }

    static void save()
    {
    }

    static void registerConfigHandler(const satdump::config::RegisterPluginConfigHandlersEvent &evt)
    {
        evt.plugin_config_handlers.push_back({"Scripting Plugin", ScriptingSupport::renderConfig, ScriptingSupport::save});
    }
};

PLUGIN_LOADER(ScriptingSupport)