From 055ba53887fb9017dae9b971575914ebd629c97e Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Tue, 1 Nov 2022 12:00:33 +0100 Subject: [PATCH 01/21] Move button and LED handling from UsbHidDevie to genreic Device class Signed-off-by: Norbert Takacs --- src/Device.cpp | 235 ++++++++++++++++++++++++++++++++++++++++++- src/Device.h | 67 +++++++++++- src/UsbHidDevice.cpp | 230 +----------------------------------------- src/UsbHidDevice.h | 61 ----------- 4 files changed, 301 insertions(+), 292 deletions(-) diff --git a/src/Device.cpp b/src/Device.cpp index 3576fb1..86d1329 100644 --- a/src/Device.cpp +++ b/src/Device.cpp @@ -5,8 +5,241 @@ */ #include "Device.h" +#include "logger.h" -Device::Device(DeviceConfiguration &_config) +Device::Device(DeviceConfiguration &_config, int _read_buffer_size, int _write_buffer_size) { + read_buffer = (unsigned char*)calloc(_read_buffer_size, sizeof(unsigned char)); + read_buffer_old = (unsigned char*)calloc(_read_buffer_size, sizeof(unsigned char)); + write_buffer = (unsigned char*)calloc(_write_buffer_size, sizeof(unsigned char)); + + read_buffer_size = _read_buffer_size; + write_buffer_size = _write_buffer_size; + config = _config; } + +Device::~Device() +{ + free(read_buffer); + free(read_buffer_old); + free(write_buffer); +} + +void Device::set_bit_value(unsigned char* buf, int bit_nr, int bit_val) +{ + int reg = bit_nr / 8; + unsigned char bit_mask = ((unsigned char)0x01 << (bit_nr % 8)); + if (bit_val == 1) + buf[reg] = buf[reg] | bit_mask; + else + buf[reg] = buf[reg] & (~bit_mask); +} + +void Device::invert_bit_value(unsigned char* buf, int bit_nr) +{ + int reg = bit_nr / 8; + unsigned char bit_mask = ((unsigned char)0x01 << (bit_nr % 8)); + + buf[reg] = buf[reg] ^ bit_mask; +} + +bool Device::get_bit_value(unsigned char* buf, int bit) +{ + int reg = bit / 8; + unsigned char bit_mask = (1 << (bit % 8)); + return (buf[reg] & bit_mask) == bit_mask ? 1 : 0; +} + +bool Device::is_bit_changed(unsigned char* buf, unsigned char* buf_old, int bit) +{ + return get_bit_value(buf, bit) != get_bit_value(buf_old, bit); +} + +void Device::register_buttons(std::vector& _buttons) +{ + buttons = _buttons; +} + +void Device::register_selectors(std::vector& _selectors) +{ + selectors = _selectors; +} + +void Device::register_lights(std::vector& _lights) +{ + lights = _lights; +} + +void Device::register_displays(std::vector& _displays) +{ + panel_displays = _displays; +} + +int Device::get_stored_button_state(std::string button_name) +{ + if (stored_button_states.count(button_name) == 0) + { + Logger(TLogLevel::logWARNING) << "get_stored_button_state: unknown button name: " << button_name << std::endl; + return -1; + } + + return stored_button_states[button_name]; +} + +TriggerType Device::get_stored_light_state(std::string light_name) +{ + if (stored_light_states.count(light_name) == 0) + { + Logger(TLogLevel::logWARNING) << "get_stored_light_state: unknown light name: " << light_name << std::endl; + return TriggerType::UNKNOWN; + } + + return stored_light_states[light_name]; +} + +#define BLINK_TIME_PERIOD 25 // 25*20*2ms = 1 sec blink period time + +bool Device::updateLightStates() +{ + bool write_buffer_changed = false; + + if (update_cycle > BLINK_TIME_PERIOD) + update_cycle = 0; + else + update_cycle++; + + for (auto it : config.light_triggers) + { + std::vector::iterator panel_light_it; + + for (panel_light_it = lights.begin(); panel_light_it != lights.end(); ++panel_light_it) + { + if (!panel_light_it->config_name.empty() && panel_light_it->config_name == it.first) + break; + } + + // light doesn't exist in this configuration + if (panel_light_it == lights.end()) + continue; + + for (auto trigger : it.second) + { + TriggerType light_change = trigger->get_and_clear_stored_action(); + switch (light_change) { + case TriggerType::LIT: + Logger(TLogLevel::logDEBUG) << " " << it.first << " activated LIT" << std::endl; + set_bit_value(write_buffer, panel_light_it->bit, 1); + write_buffer_changed = true; + panel_light_it->blink_active = false; + stored_light_states[it.first] = light_change; + break; + case TriggerType::UNLIT: + Logger(TLogLevel::logDEBUG) << " " << it.first << " activated UNLIT" << std::endl; + set_bit_value(write_buffer, panel_light_it->bit, 0); + write_buffer_changed = true; + panel_light_it->blink_active = false; + stored_light_states[it.first] = light_change; + break; + case TriggerType::BLINK: + Logger(TLogLevel::logDEBUG) << " " << it.first << " activated BLINK" << std::endl; + panel_light_it->blink_active = true; + stored_light_states[it.first] = light_change; + break; + case TriggerType::NO_CHANGE: + // + break; + default: + Logger(TLogLevel::logERROR) << " " << it.first << ": unknown trigger type: " << light_change << std::endl; + } + } + + if (panel_light_it->blink_active && update_cycle == BLINK_TIME_PERIOD) + { + invert_bit_value(write_buffer, panel_light_it->bit); + write_buffer_changed = true; + } + } + return write_buffer_changed; +} + +void Device::process_selector_switch() +{ + for (auto sel : selectors) + { + if (!is_bit_changed(read_buffer, read_buffer_old, sel.bit)) + continue; + + if (get_bit_value(read_buffer, sel.bit)) + { + stored_button_states[sel.config_name] = 1; + + for (auto button : buttons) + { + for (auto act : config.push_actions[button.config_name.c_str()]) + { + act->set_condition_active(sel.config_name); + } + for (auto act : config.release_actions[button.config_name.c_str()]) + { + act->set_condition_active(sel.config_name); + } + } + + /* update condition for displays */ + for (auto display : panel_displays) + { + if (config.multi_displays.count(display.config_name) > 0 && config.multi_displays[display.config_name] != NULL && config.multi_displays[display.config_name]->is_registered_selector(sel.config_name)) + { + Logger(TLogLevel::logTRACE) << "Device " << sel.config_name << " mode selector switch for " << display.config_name << " is activated" << std::endl; + config.multi_displays[display.config_name]->set_condition_active(sel.config_name); + } + } + } + else + { + stored_button_states[sel.config_name] = 0; + + for (auto button : buttons) + { + for (auto act : config.push_actions[button.config_name.c_str()]) + { + act->set_condition_inactive(sel.config_name); + } + for (auto act : config.release_actions[button.config_name.c_str()]) + { + act->set_condition_inactive(sel.config_name); + } + } + } + } +} + +void Device::process_and_store_button_states() +{ + for (auto button : buttons) + { + if (is_bit_changed(read_buffer, read_buffer_old, button.bit)) + { + stored_button_states[button.config_name] = get_bit_value(read_buffer, button.bit); + + Logger(TLogLevel::logTRACE) << "Device " << button.config_name << " button bit changed " << std::endl; + if (get_bit_value(read_buffer, button.bit) && config.push_actions.find(button.config_name.c_str()) != config.push_actions.end()) + { + for (auto act : config.push_actions[button.config_name.c_str()]) + { + Logger(TLogLevel::logTRACE) << "Device " << button.config_name << " button push action called" << std::endl; + ActionQueue::get_instance()->push(act); + } + } + else if (!get_bit_value(read_buffer, button.bit) && config.release_actions.find(button.config_name.c_str()) != config.release_actions.end()) + { + for (auto act : config.release_actions[button.config_name.c_str()]) + { + Logger(TLogLevel::logTRACE) << "Device " << button.config_name << " button release action called" << std::endl; + ActionQueue::get_instance()->push(act); + } + } + } + } +} \ No newline at end of file diff --git a/src/Device.h b/src/Device.h index 3e61f4a..03d1f6d 100644 --- a/src/Device.h +++ b/src/Device.h @@ -17,16 +17,81 @@ #include using namespace std::literals; +struct PanelButton +{ + PanelButton(int _bit, std::string _config_name) + { + bit = _bit; + config_name = _config_name; + } + int bit; + std::string config_name; +}; + +struct PanelLight +{ + PanelLight(int _bit, std::string _config_name) + { + bit = _bit; + config_name = _config_name; + } + int bit; + std::string config_name; + bool blink_active = false; +}; + +struct PanelDisplay +{ + PanelDisplay(int _reg_index, int _width, std::string _config_name) + { + reg_index = _reg_index; + width = _width; + config_name = _config_name; + } + int reg_index; + int width; + std::string config_name; +}; + class Device { +private: + protected: DeviceConfiguration config; + std::vector selectors; + std::vector buttons; + std::vector panel_displays; + std::map stored_button_states; + std::map stored_light_states; + std::vector lights; + unsigned char* read_buffer; + unsigned char* read_buffer_old; + unsigned char* write_buffer; + int write_buffer_size; + int read_buffer_size; + virtual void register_displays(std::vector& _displays); + virtual void register_buttons(std::vector& _buttons); + virtual void register_selectors(std::vector& _selectors); + virtual void register_lights(std::vector& _lights); public: std::thread* thread_handle = NULL; - Device(DeviceConfiguration &_config); + Device(DeviceConfiguration &_config, int _read_buffer_size, int _write_buffer_size); + ~Device(); + int get_stored_button_state(std::string button_name); + TriggerType get_stored_light_state(std::string light_name); + bool updateLightStates(); + void process_and_store_button_states(); + void process_selector_switch(); virtual void stop(int time_out)=0; virtual void thread_func(void)=0; virtual int connect() = 0; virtual void release() = 0; virtual void start() = 0; +private: + int update_cycle = 0; + bool get_bit_value(unsigned char* buffer, int bit); + bool is_bit_changed(unsigned char* buffer, unsigned char* buffer_old, int bit); + void set_bit_value(unsigned char* buf, int bit_nr, int bit_val); + void invert_bit_value(unsigned char* buf, int bit_nr); }; diff --git a/src/UsbHidDevice.cpp b/src/UsbHidDevice.cpp index 99abf2e..8a74052 100644 --- a/src/UsbHidDevice.cpp +++ b/src/UsbHidDevice.cpp @@ -13,15 +13,8 @@ int UsbHidDevice::ref_count = 0; bool UsbHidDevice::hid_api_initialized = false; -UsbHidDevice::UsbHidDevice(DeviceConfiguration& config, int _read_buffer_size, int _write_buffer_size) :Device(config) +UsbHidDevice::UsbHidDevice(DeviceConfiguration& config, int _read_buffer_size, int _write_buffer_size) :Device(config, _read_buffer_size, _write_buffer_size) { - read_buffer = (unsigned char*)calloc(_read_buffer_size, sizeof(unsigned char)); - read_buffer_old = (unsigned char*)calloc(_read_buffer_size, sizeof(unsigned char)); - write_buffer = (unsigned char*)calloc(_write_buffer_size, sizeof(unsigned char)); - - read_buffer_size = _read_buffer_size; - write_buffer_size = _write_buffer_size; - _thread_run.store(false); vid = config.vid; pid = config.pid; @@ -37,9 +30,6 @@ UsbHidDevice::UsbHidDevice(DeviceConfiguration& config, int _read_buffer_size, i UsbHidDevice::~UsbHidDevice() { Logger(TLogLevel::logTRACE) << "UsbHidDevice::~UsbHidDevice() vid=" << vid << " pid=" << pid << std::endl; - free(read_buffer); - free(read_buffer_old); - free(write_buffer); } int UsbHidDevice::read_device(unsigned char* buf, int buf_size) @@ -95,36 +85,6 @@ int UsbHidDevice::connect() return EXIT_SUCCESS; } -void UsbHidDevice::set_bit_value(unsigned char* buf, int bit_nr, int bit_val) -{ - int reg = bit_nr / 8; - unsigned char bit_mask = ((unsigned char)0x01 << (bit_nr % 8)); - if (bit_val == 1) - buf[reg] = buf[reg] | bit_mask; - else - buf[reg] = buf[reg] & (~bit_mask); -} - -void UsbHidDevice::invert_bit_value(unsigned char* buf, int bit_nr) -{ - int reg = bit_nr / 8; - unsigned char bit_mask = ((unsigned char)0x01 << (bit_nr % 8)); - - buf[reg] = buf[reg] ^ bit_mask; -} - -bool UsbHidDevice::get_bit_value(unsigned char* buf, int bit) -{ - int reg = bit / 8; - unsigned char bit_mask = (1 << (bit % 8)); - return (buf[reg] & bit_mask) == bit_mask ? 1 : 0; -} - -bool UsbHidDevice::is_bit_changed(unsigned char* buf, unsigned char* buf_old, int bit) -{ - return get_bit_value(buf, bit) != get_bit_value(buf_old, bit); -} - void UsbHidDevice::start() { Logger(TLogLevel::logDEBUG) << "UsbHidDevice::start" << std::endl; @@ -144,91 +104,6 @@ void UsbHidDevice::stop(int time_out_msec) Logger(TLogLevel::logDEBUG) << "UsbHidDevice::stop. thread finish ? " << _thread_finish.load() << " remaining time=" << time_to_wait << std::endl; } -void UsbHidDevice::register_buttons(std::vector& _buttons) -{ - buttons = _buttons; -} - -void UsbHidDevice::register_selectors(std::vector& _selectors) -{ - selectors = _selectors; -} - -void UsbHidDevice::register_lights(std::vector& _lights) -{ - lights = _lights; -} - -void UsbHidDevice::register_displays(std::vector& _displays) -{ - panel_displays = _displays; -} - -#define BLINK_TIME_PERIOD 25 // 25*20*2ms = 1 sec blink period time - -bool UsbHidDevice::updateLightStates() -{ - bool write_buffer_changed = false; - - if (update_cycle > BLINK_TIME_PERIOD) - update_cycle = 0; - else - update_cycle++; - - for (auto it : config.light_triggers) - { - std::vector::iterator panel_light_it; - - for (panel_light_it = lights.begin(); panel_light_it != lights.end(); ++panel_light_it) - { - if (!panel_light_it->config_name.empty() && panel_light_it->config_name == it.first) - break; - } - - // light doesn't exist in this configuration - if (panel_light_it == lights.end()) - continue; - - for (auto trigger : it.second) - { - TriggerType light_change = trigger->get_and_clear_stored_action(); - switch (light_change) { - case TriggerType::LIT: - Logger(TLogLevel::logDEBUG) << " " << it.first << " activated LIT" << std::endl; - set_bit_value(write_buffer, panel_light_it->bit, 1); - write_buffer_changed = true; - panel_light_it->blink_active = false; - stored_light_states[it.first] = light_change; - break; - case TriggerType::UNLIT: - Logger(TLogLevel::logDEBUG) << " " << it.first << " activated UNLIT" << std::endl; - set_bit_value(write_buffer, panel_light_it->bit, 0); - write_buffer_changed = true; - panel_light_it->blink_active = false; - stored_light_states[it.first] = light_change; - break; - case TriggerType::BLINK: - Logger(TLogLevel::logDEBUG) << " " << it.first << " activated BLINK" << std::endl; - panel_light_it->blink_active = true; - stored_light_states[it.first] = light_change; - break; - case TriggerType::NO_CHANGE: - // - break; - default: - Logger(TLogLevel::logERROR) << " " << it.first << ": unknown trigger type: " << light_change << std::endl; - } - } - - if (panel_light_it->blink_active && update_cycle == BLINK_TIME_PERIOD) - { - invert_bit_value(write_buffer, panel_light_it->bit); - write_buffer_changed = true; - } - } - return write_buffer_changed; -} - bool UsbHidDevice::updateOneDisplay(std::pair config_display) { bool write_buffer_changed = false; @@ -266,109 +141,6 @@ bool UsbHidDevice::updateDisplays() return write_buffer_changed; } -void UsbHidDevice::process_selector_switch() -{ - for (auto sel : selectors) - { - if (!is_bit_changed(read_buffer, read_buffer_old, sel.bit)) - continue; - - if (get_bit_value(read_buffer, sel.bit)) - { - stored_button_states[sel.config_name] = 1; - - for (auto button : buttons) - { - for (auto act : config.push_actions[button.config_name.c_str()]) - { - act->set_condition_active(sel.config_name); - } - for (auto act : config.release_actions[button.config_name.c_str()]) - { - act->set_condition_active(sel.config_name); - } - } - - /* update condition for displays */ - for (auto display : panel_displays) - { - if (config.multi_displays.count(display.config_name) > 0 && config.multi_displays[display.config_name] != NULL && config.multi_displays[display.config_name]->is_registered_selector(sel.config_name)) - { - Logger(TLogLevel::logTRACE) << "UsbHidDevice " << sel.config_name << " mode selector switch for " << display.config_name << " is activated" << std::endl; - config.multi_displays[display.config_name]->set_condition_active(sel.config_name); - } - } - } - else - { - stored_button_states[sel.config_name] = 0; - - for (auto button : buttons) - { - for (auto act : config.push_actions[button.config_name.c_str()]) - { - act->set_condition_inactive(sel.config_name); - } - for (auto act : config.release_actions[button.config_name.c_str()]) - { - act->set_condition_inactive(sel.config_name); - } - } - } - } -} - -void UsbHidDevice::process_and_store_button_states() -{ - for (auto button : buttons) - { - if (is_bit_changed(read_buffer, read_buffer_old, button.bit)) - { - stored_button_states[button.config_name] = get_bit_value(read_buffer, button.bit); - - Logger(TLogLevel::logTRACE) << "UsbHidDevice " << button.config_name << " button bit changed " << std::endl; - if (get_bit_value(read_buffer, button.bit) && config.push_actions.find(button.config_name.c_str()) != config.push_actions.end()) - { - for (auto act : config.push_actions[button.config_name.c_str()]) - { - Logger(TLogLevel::logTRACE) << "UsbHidDevice " << button.config_name << " button push action called" << std::endl; - ActionQueue::get_instance()->push(act); - } - } - else if (!get_bit_value(read_buffer, button.bit) && config.release_actions.find(button.config_name.c_str()) != config.release_actions.end()) - { - for (auto act : config.release_actions[button.config_name.c_str()]) - { - Logger(TLogLevel::logTRACE) << "UsbHidDevice " << button.config_name << " button release action called" << std::endl; - ActionQueue::get_instance()->push(act); - } - } - } - } -} - -int UsbHidDevice::get_stored_button_state(std::string button_name) -{ - if (stored_button_states.count(button_name) == 0) - { - Logger(TLogLevel::logWARNING) << "get_stored_button_state: unknown button name: " << button_name << std::endl; - return -1; - } - - return stored_button_states[button_name]; -} - -TriggerType UsbHidDevice::get_stored_light_state(std::string light_name) -{ - if (stored_light_states.count(light_name) == 0) - { - Logger(TLogLevel::logWARNING) << "get_stored_light_state: unknown light name: " << light_name << std::endl; - return TriggerType::UNKNOWN; - } - - return stored_light_states[light_name]; -} - void UsbHidDevice::thread_func() { Logger(TLogLevel::logTRACE) << "UsbHidDevice::thread_func: started for vid=" << vid << " pid=" << pid << std::endl; diff --git a/src/UsbHidDevice.h b/src/UsbHidDevice.h index 69e0f13..7069a14 100644 --- a/src/UsbHidDevice.h +++ b/src/UsbHidDevice.h @@ -17,42 +17,6 @@ #include "Device.h" #include "Configuration.h" -struct PanelButton -{ - PanelButton(int _bit, std::string _config_name) - { - bit = _bit; - config_name = _config_name; - } - int bit; - std::string config_name; -}; - -struct PanelLight -{ - PanelLight(int _bit, std::string _config_name) - { - bit = _bit; - config_name = _config_name; - } - int bit; - std::string config_name; - bool blink_active = false; -}; - -struct PanelDisplay -{ - PanelDisplay(int _reg_index, int _width, std::string _config_name) - { - reg_index = _reg_index; - width = _width; - config_name = _config_name; - } - int reg_index; - int width; - std::string config_name; -}; - class UsbHidDevice : public Device { public: @@ -61,8 +25,6 @@ class UsbHidDevice : public Device virtual void thread_func(); int get_vid() { return vid; } int get_pid() { return pid; } - int get_stored_button_state(std::string button_name); - TriggerType get_stored_light_state(std::string light_name); protected: int connect(); virtual void start(); @@ -70,38 +32,15 @@ class UsbHidDevice : public Device void release(); int read_device(unsigned char* buf, int buf_size); int write_device(unsigned char* buf, int length); - void register_buttons(std::vector& _buttons); - void register_selectors(std::vector& _selectors); - void register_lights(std::vector& _lights); - void register_displays(std::vector& _displays); hid_device* device_handle = NULL; private: - std::vector buttons; - std::map stored_button_states; - std::map stored_light_states; - std::vector selectors; - std::vector lights; - std::vector panel_displays; std::atomic _thread_run; std::atomic _thread_finish; - unsigned char* read_buffer; - unsigned char* read_buffer_old; - unsigned char* write_buffer; - int write_buffer_size; - int read_buffer_size; static bool hid_api_initialized; static int ref_count; - int update_cycle = 0; unsigned short vid = 0; unsigned short pid = 0; - bool get_bit_value(unsigned char* buffer, int bit); - bool is_bit_changed(unsigned char* buffer, unsigned char* buffer_old, int bit); - void set_bit_value(unsigned char* buf, int bit_nr, int bit_val); - void invert_bit_value(unsigned char* buf, int bit_nr); - bool updateLightStates(); bool updateOneDisplay(std::pair config_display); bool updateDisplays(); - void process_and_store_button_states(); - void process_selector_switch(); std::string hidapi_error(hid_device *dev); }; From ffb88362ceff2355254e9ad59acdc6726b2cb22e Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 29 Oct 2022 15:44:50 +0200 Subject: [PATCH 02/21] configuration: add new fields add new fields: serial, aircraft_path add new device type: saitek fip panel Signed-off-by: Norbert Takacs --- src/Configuration.cpp | 4 ++++ src/Configuration.h | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Configuration.cpp b/src/Configuration.cpp index 727017d..2cf2c6a 100644 --- a/src/Configuration.cpp +++ b/src/Configuration.cpp @@ -14,6 +14,7 @@ Configuration& Configuration::operator=(const Configuration& other) aircraft_acf = other.aircraft_acf; script_file = other.script_file; version = other.version; + aircraft_path = other.aircraft_path; device_configs = other.device_configs; @@ -25,6 +26,7 @@ void Configuration::clear() aircraft_acf = ""; script_file = ""; version = ""; + aircraft_path = ""; device_configs.clear(); } @@ -43,11 +45,13 @@ DeviceConfiguration& DeviceConfiguration::operator=(const DeviceConfiguration& o device_type = other.device_type; pid = other.pid; vid = other.vid; + serial_number = other.serial_number; push_actions = other.push_actions; release_actions = other.release_actions; light_triggers = other.light_triggers; multi_displays = other.multi_displays; generic_displays = other.generic_displays; + fip_screens = other.fip_screens; return *this; } diff --git a/src/Configuration.h b/src/Configuration.h index 8eca380..b5f470f 100644 --- a/src/Configuration.h +++ b/src/Configuration.h @@ -13,6 +13,8 @@ #include "Trigger.h" #include "MultiPurposeDisplay.h" +class FIPScreen; + class DeviceConfiguration; /*------ Plugin level configuration options ------------*/ @@ -26,6 +28,7 @@ class Configuration std::string version = ""; std::string aircraft_acf = ""; std::string script_file = ""; + std::string aircraft_path = ""; std::vector device_configs; }; @@ -36,7 +39,8 @@ typedef enum { SAITEK_MULTI, SAITEK_RADIO, SAITEK_SWITCH, - HOME_COCKPIT + HOME_COCKPIT, + LOGITECH_FIP } DeviceType; class DeviceConfiguration @@ -47,9 +51,11 @@ class DeviceConfiguration DeviceType device_type = UNKNOWN_DEVICE_TYPE; unsigned int vid = 0; unsigned int pid = 0; + std::string serial_number = ""; std::map> push_actions; std::map> release_actions; std::map> light_triggers; std::map multi_displays; std::map generic_displays; + std::map fip_screens; }; From b2b2812c3c1978e27469450ed9820ec39c91f4e3 Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 29 Oct 2022 15:47:11 +0200 Subject: [PATCH 03/21] Add Saitek FIP SDK and driver dll Signed-off-by: Norbert Takacs --- FIP-SDK/include/DirectOutput.h | 455 +++++++++++++++++++++++++++++++++ FIP-SDK/lib/DirectOutput.dll | Bin 0 -> 159352 bytes 2 files changed, 455 insertions(+) create mode 100644 FIP-SDK/include/DirectOutput.h create mode 100644 FIP-SDK/lib/DirectOutput.dll diff --git a/FIP-SDK/include/DirectOutput.h b/FIP-SDK/include/DirectOutput.h new file mode 100644 index 0000000..db1219a --- /dev/null +++ b/FIP-SDK/include/DirectOutput.h @@ -0,0 +1,455 @@ +#ifndef _DIRECTOUTPUT_H_ +#define _DIRECTOUTPUT_H_ +#include +//============================================================================= +// License +//============================================================================= +// +// Copyright (c) 2008 Saitek +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following +// conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// +//============================================================================= +#ifdef __cplusplus +extern "C" { +#endif +//============================================================================= +// Callbacks + +typedef void (__stdcall *Pfn_DirectOutput_EnumerateCallback)(void* hDevice, void* pCtxt); +typedef void (__stdcall *Pfn_DirectOutput_DeviceChange)(void* hDevice, bool bAdded, void* pCtxt); +typedef void (__stdcall *Pfn_DirectOutput_PageChange)(void* hDevice, DWORD dwPage, bool bSetActive, void* pCtxt); +typedef void (__stdcall *Pfn_DirectOutput_SoftButtonChange)(void* hDevice, DWORD dwButtons, void* pCtxt); + +//============================================================================= +// Error Codes + +const HRESULT E_PAGENOTACTIVE = 0xFF040001; +const HRESULT E_BUFFERTOOSMALL = 0xFF040000 | ERROR_BUFFER_OVERFLOW; // 0xFF04006F + +//============================================================================= +// Constants + +// {29DAD506-F93B-4F20-85FA-1E02C04FAC17} +const GUID DeviceType_X52Pro = { 0x29DAD506, 0xF93B, 0x4F20, { 0x85, 0xFA, 0x1E, 0x02, 0xC0, 0x4F, 0xAC, 0x17 } }; +// {3E083CD8-6A37-4A58-80A8-3D6A2C07513E} +const GUID DeviceType_Fip = { 0x3E083CD8, 0x6A37, 0x4A58, { 0x80, 0xA8, 0x3D, 0x6A, 0x2C, 0x07, 0x51, 0x3E } }; + +const DWORD SoftButton_Select = 0x00000001; // X52Pro ScrollClick +const DWORD SoftButton_Up = 0x00000002; // X52Pro ScrollUp, FIP RightScrollClockwize +const DWORD SoftButton_Down = 0x00000004; // X52Pro ScrollDown, FIP RightScrollAnticlockwize +const DWORD SoftButton_Left = 0x00000008; // FIP LeftScrollAnticlockwize +const DWORD SoftButton_Right = 0x00000010; // FIP LeftScrollClockwize +const DWORD SoftButton_1 = 0x00000020; // FIP LeftButton1 +const DWORD SoftButton_2 = 0x00000040; // FIP LeftButton2 +const DWORD SoftButton_3 = 0x00000080; // FIP LeftButton3 +const DWORD SoftButton_4 = 0x00000100; // FIP LeftButton4 +const DWORD SoftButton_5 = 0x00000200; // FIP LeftButton5 +const DWORD SoftButton_6 = 0x00000400; // FIP LeftButton6 + +const DWORD FLAG_SET_AS_ACTIVE = 0x00000001; // Set this page as the Active Page + +//============================================================================= +// Structures +typedef struct SRequestStatus +{ + DWORD dwHeaderError; + DWORD dwHeaderInfo; + DWORD dwRequestError; + DWORD dwRequestInfo; +} SRequestStatus, *PSRequestStatus; + +//============================================================================= +// Library Initialization + +// HRESULT DirectOutput_Initialize(const wchar_t* wszPluginName); +// Initialize the library +// Parameters +// wszPluginName : null-terminated wchar_t name of the plugin. Used for debugging purposes. Can be NULL +// Returns +// S_OK : succeeded +HRESULT __stdcall DirectOutput_Initialize(const wchar_t* wszPluginName); + +// HRESULT DirectOutput_Deinitialize(); +// Cleanup the library +// Parameters (None) +// Returns +// S_OK : succeeded +HRESULT __stdcall DirectOutput_Deinitialize(); + +// HRESULT DirectOutput_RegisterDeviceCallback(Pfn_DirectOutput_DeviceChange pfnCb, void* pCtxt); +// Register a callback. Callback will be called whenever a device is added or removed, or when DirectOutput_Enumerate is called +// Parameters +// pfnCb : Pointer to the callback function to be called when a device is added or removed +// pCtxt : Caller supplied context pointer, passed to the callback function +// Returns +// S_OK : succeeded +HRESULT __stdcall DirectOutput_RegisterDeviceCallback(Pfn_DirectOutput_DeviceChange pfnCb, void* pCtxt); + +// HRESULT DirectOutput_Enumerate(); +// Enumerate all devices currently attached. Calls DeviceChange callback. +// Parameters (None) +// Returns +// S_OK : succeeded +//HRESULT __stdcall DirectOutput_Enumerate(); +HRESULT __stdcall DirectOutput_Enumerate(Pfn_DirectOutput_EnumerateCallback pfnCb, void* pCtxt); + +//============================================================================= +// Recieving Notifications From Devices + +// HRESULT DirectOutput_RegisterPageCallback(void* hDevice, Pfn_DirectOutput_PageChange pfnCb, void* pCtxt); +// Register a callback. Called when the page changes. Callee will only recieve notifications about pages they added +// Parameters +// hDevice : opaque device handle +// pfnCb : caller supplied callback function, called when the active page is changed to/from one of the caller's pages +// pCtxt : caller supplied context pointer, passed to the callback function +// Returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +HRESULT __stdcall DirectOutput_RegisterPageCallback(void* hDevice, Pfn_DirectOutput_PageChange pfnCb, void* pCtxt); + +// HRESULT DirectOutput_RegisterSoftButtonCallback(void* hDevice, Pfn_DirectOutput_SoftButtonChange pfnCb, void* pCtxt); +// Register a callback. Called when the soft buttons are changed and the callee's page is active +// Parameters +// hDevice : opaque device handle +// pfnCb : caller supplied callback function, called when the soft buttons are changed and one of the caller's pages is active +// pCtxt : caller supplied context pointer, passed to the callback function +// Returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +HRESULT __stdcall DirectOutput_RegisterSoftButtonCallback(void* hDevice, Pfn_DirectOutput_SoftButtonChange pfnCb, void* pCtxt); + +//============================================================================= +// Query Information From The Device + +// HRESULT DirectOutput_GetDeviceType(void* hDevice, LPGUID pGuid); +// Get the device type GUID. See DeviceType_* constants +// Parameters +// hDevice : opaque device handle +// pGuid : pointer to GUID to recieve device type identifier. See DeviceType_* constants +// Returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +// E_INVALIDARG : pGuid is NULL +HRESULT __stdcall DirectOutput_GetDeviceType(void* hDevice, LPGUID pGuid); + +// HRESULT DirectOutput_GetDeviceInstance(void* hDevice, LPGUID pGuid); +// Get the device instance GUID used by IDirectInput::CreateDevice +// Parameters +// hDevice : opaque device handle +// pGuid : pointer to GUID to recieve device's DirectInput Instance Guid. +// Returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +// E_INVALIDARG : pGuid is NULL +// E_NOTIMPL : hDevice does not support DirectInput. +HRESULT __stdcall DirectOutput_GetDeviceInstance(void* hDevice, LPGUID pGuid); + +//============================================================================= +// Profiling Support - X52 ONLY (?) + +// HRESULT DirectOutput_SetProfile(void* hDevice, DWORD cchProfile, const wchar_t* wszProfile); +// Set the profile used on the device. +// Parameters +// hDevice : opaque device handle +// cchProfile : count of wchar_t's in wszProfile +// wszProfile : full path of the profile to activate. passing NULL will clear the profile +// Returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +// E_NOTIMPL : hDevice does not support SST profiles +HRESULT __stdcall DirectOutput_SetProfile(void* hDevice, DWORD cchProfile, const wchar_t* wszProfile); + +//============================================================================= +// Page Commands + +// HRESULT DirectOutput_AddPage(void* hDevice, DWORD dwPage, DWORD dwFlags) +// Adds a page to the device +// Parameters +// hDevice : opaque device handle +// dwPage : caller assigned page id to add +// wszDebugName : null-terminated wchar_t string. Only used for debugging, can be NULL +// dwFlags : flags ( 0 | FLAG_SET_AS_ACTIVE ) +// Returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +HRESULT __stdcall DirectOutput_AddPage(void* hDevice, DWORD dwPage, const wchar_t* wszDebugName, DWORD dwFlags); + +// HRESULT DirectOutput_RemovePage(void* hDevice, DWORD dwPage) +// Removes a page from the device +// Parameters +// hDevice : opaque device handle +// dwPage : caller assigned page id to remove +// Returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +// E_INVALIDARG : dwPage is not a valid page id +HRESULT __stdcall DirectOutput_RemovePage(void* hDevice, DWORD dwPage); + +//============================================================================= +// Simple Displaying Commands + +// HRESULT DirectOutput_SetLed(void* hDevice, DWORD dwPage, DWORD dwIndex, DWORD dwValue); +// Set the state of a LED on the device +// Parameters +// hDevice : opaque device handle +// dwPage : page to display the led on +// dwIndex : index of the led +// dwValue : value of the led (0 is off) +// returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +// E_NOTIMPL : hDevice does not have any leds +// E_INVALIDARG : dwPage or dwIndex is not a valid id +// E_PAGENOTACTIVE : dwPage is not the active page +HRESULT __stdcall DirectOutput_SetLed(void* hDevice, DWORD dwPage, DWORD dwIndex, DWORD dwValue); + +// HRESULT DirectOutput_SetString(void* hDevice, DWORD dwPage, DWORD dwIndex, DWORD cchValue, const wchar_t* wszValue); +// Set the string on the device +// Parameters +// hDevice : opaque device handle +// dwPage : page to display the string on +// dwIndex : index of the string +// cchValue : the count of wchar_t's in wszValue +// wszValue : the string to display +// returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +// E_NOTIMPL : hDevice does not have any strings +// E_INVALIDARG : dwPage or dwIndex is not a valid id +// E_PAGENOTACTIVE : dwPage is not the active page +HRESULT __stdcall DirectOutput_SetString(void* hDevice, DWORD dwPage, DWORD dwIndex, DWORD cchValue, const wchar_t* wszValue); + +// HRESULT DirectOutput_SetImage(void* hDevice, DWORD dwPage, DWORD dwIndex, DWORD cbValue, const void* pvValue); +// Set the image on the device. +// Parameters +// hDevice : opaque device handle +// dwPage : page to display the image on +// dwIndex : index of the image +// cbValue : the count of bytes of pvValue +// pvValue : the raw bytes from a BMP (only the bytes that contain pixel data - must be correct format and size) +// returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +// E_NOTIMPL : hDevice does not have any images +// E_INVALIDARG : dwPage or dwIndex is not a valid id +// E_PAGENOTACTIVE : dwPage is not the active page +// E_BUFFERTOOSMALL : cbValue is not of the correct size +HRESULT __stdcall DirectOutput_SetImage(void* hDevice, DWORD dwPage, DWORD dwIndex, DWORD cbValue, const void* pvValue); + +// HRESULT DirectOutput_SetImageFromFile(void* hDevice, DWORD dwPage, DWORD dwIndex, DWORD cchFilename, const wchar_t* wszFilename); +// Set the image on the device from a file. +// Parameters +// hDevice : opaque device handle +// dwPage : page to display the image on +// dwIndex : index of the image +// cchFilename : the count of wchar_t's in wszFilename +// wszFilename : the full path to the image file to display. Must be a BMP or JPG file +// returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +// E_NOTIMPL : hDevice does not have any images +// E_INVALIDARG : dwPage or dwIndex is not a valid id +// E_PAGENOTACTIVE : dwPage is not the active page +HRESULT __stdcall DirectOutput_SetImageFromFile(void* hDevice, DWORD dwPage, DWORD dwIndex, DWORD cchFilename, const wchar_t* wszFilename); + +//============================================================================= +// Server Side Commands - FIP ONLY + +// HRESULT DirectOutput_StartServer(void* hDevice, DWORD cchFilename, const wchar_t* wszFilename, LPDWORD pdwServerId, PSRequestStatus psStatus); +// Download and start a server application on the device +// Parameters +// hDevice : opaque device handle +// cchFilename : count of wchar_t's in wszFilename +// wszFilename : full path to the server application to run +// pdwServerId : pointer to a DWORD that recieves the server id +// psStatus : pointer to obtain additional error details. Optional +// Returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +// E_NOTIMPL : hDevice does not allow server applications +// E_FAIL : fatal error +HRESULT __stdcall DirectOutput_StartServer(void* hDevice, DWORD cchFilename, const wchar_t* wszFilename, LPDWORD pdwServerId, PSRequestStatus psStatus); + +// HRESULT DirectOutput_CloseServer(void* hDevice, DWORD dwServerId, PSRequestStatus psStatus); +// Stop and cleanup a server application on the device +// Parameters +// hDevice : opaque device handle +// dwServerId : server id returned from DirectOutput_StartServer +// psStatus : pointer to obtain additional error details. Optional +// Returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +// E_NOTIMPL : hDevice does not allow server applications +// E_FAIL : fatal error +HRESULT __stdcall DirectOutput_CloseServer(void* hDevice, DWORD dwServerId, PSRequestStatus psStatus); + +// HRESULT DirectOutput_SendServerMsg(void* hDevice, DWORD dwServerId, DWORD dwRequest, DWORD dwPage, DWORD cbIn, const void* pvIn, DWORD cbOut, void* pvOut, PSRequestStatus psStatus); +// Send a message to a server application on the device +// Parameters +// hDevice : opaque device handle +// dwServerId : server id returned from DirectOutput_StartServer +// dwRequest : user defined request code +// dwPage : page id of the message +// cbIn : count of BYTEs of the input buffer +// pvIn : input buffer +// cbOut : count of BYTEs of the output buffer +// pvOut : output buffer +// psStatus : pointer to obtain additional error details. Optional +// Returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +// E_NOTIMPL : hDevice does not allow server applications +// E_FAIL : fatal error +// E_PAGENOTACTIVE : dwPage is not the active page and the server tried to access the display +HRESULT __stdcall DirectOutput_SendServerMsg(void* hDevice, DWORD dwServerId, DWORD dwRequest, DWORD dwPage, DWORD cbIn, const void* pvIn, DWORD cbOut, void* pvOut, PSRequestStatus psStatus); + +// HRESULT DirectOutput_SendServerFile(void* hDevice, DWORD dwServerId, DWORD dwPage, DWORD cbInHdr, const void* pvInHdr, DWORD cchFile, const wchar_t* wszFile, DWORD cbOut, void* pvOut, PSRequestStatus psStatus); +// Send a message to a server application on the device. The file is appended to the user defined header data. +// Parameters +// hDevice : opaque device handle +// dwServerId : server id returned from DirectOutput_StartServer +// dwRequest : user defined request code +// dwPage : page id of the message +// cbInHdr : count of BYTEs of the input buffer header +// pvIn : input buffer header +// cchFile : count of wchar_t's in the filename +// wszFile : full path to file. Contents of file are appended to the input header +// cbOut : count of BYTEs of the output buffer +// pvOut : output buffer +// psStatus : pointer to obtain additional error details. Optional +// Returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +// E_NOTIMPL : hDevice does not allow server applications +// E_FAIL : fatal error +// E_PAGENOTACTIVE : dwPage is not the active page and the server tried to access the display +HRESULT __stdcall DirectOutput_SendServerFile(void* hDevice, DWORD dwServerId, DWORD dwRequest, DWORD dwPage, DWORD cbInHdr, const void* pvInHdr, DWORD cchFile, const wchar_t* wszFile, DWORD cbOut, void* pvOut, PSRequestStatus psStatus); + +//============================================================================= +// File Operations - FIP ONLY + +// HRESULT DirectOutput_SaveFile(void* hDevice, DWORD dwPage, DWORD dwFile, DWORD cchFilename, const wchar_t* wszFilename, PSRequestStatus psStatus); +// Save a file on the device +// Parameters +// hDevice : opaque device handle +// dwPage : page id of the message +// dwFile : file id to use for this file +// cchFilename : count of wchar_t's in wszFilename +// wszFilename : full path to file to save +// psStatus : pointer to obtain additional error details. Optional +// Returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +// E_NOTIMPL : hDevice does not allow saving files +// E_FAIL : fatal error +HRESULT __stdcall DirectOutput_SaveFile(void* hDevice, DWORD dwPage, DWORD dwFile, DWORD cchFilename, const wchar_t* wszFilename, PSRequestStatus psStatus); + +// HRESULT DirectOutput_DisplayFile(void* hDevice, DWORD dwPage, DWORD dwIndex, DWORD dwFile, PSRequestStatus psStatus); +// Display a previously saved file on the device +// Parameters +// hDevice : opaque device handle +// dwPage : page id of the message +// dwIndex : index of the output to display on +// dwFile : file id to use for this file +// psStatus : pointer to obtain additional error details. Optional +// Returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +// E_NOTIMPL : hDevice does not allow displaying files +// E_PAGENOTACTIVE : the page is not active +// E_FAIL : fatal error +HRESULT __stdcall DirectOutput_DisplayFile(void* hDevice, DWORD dwPage, DWORD dwIndex, DWORD dwFile, PSRequestStatus psStatus); + +// HRESULT DirectOutput_DeleteFile(void* hDevice, DWORD dwPage, DWORD dwFile, PSRequestStatus psStatus); +// Delete a file from the device +// Parameters +// hDevice : opaque device handle +// dwPage : page id of the message +// dwFile : file id to use for this file +// psStatus : pointer to obtain additional error details. Optional +// Returns +// S_OK : succeeded +// E_HANDLE : hDevice is not a valid device handle +// E_NOTIMPL : hDevice does not allow deleting files +// E_FAIL : fatal error +HRESULT __stdcall DirectOutput_DeleteFile(void* hDevice, DWORD dwPage, DWORD dwFile, PSRequestStatus psStatus); + +// HRESULT DirectOutput_GetSerialNumber(void* hDevice, wchar_t* pszSerialNumber, DWORD dwSize); +// Get the device unique serial number +// Parameters +// hDevice : opaque device handle +// pszSerialNumber : the serial number string +// dwSize : the number of the serial number string +// Returns +// S_OK : succeeded +// E_FAIL : error +HRESULT __stdcall DirectOutput_GetSerialNumber(void* hDevice, wchar_t* pszSerialNumber, DWORD dwSize); + +// HRESULT DirectOutput_LoadLibrary(); +// Load the DirectOutput.dll library +// Returns +// S_OK : succeeded +// E_FAIL : error +HRESULT DirectOutput_LoadLibrary(); + +// HRESULT DirectOutput_UnLoadLibrary(); +// Unload and free the DirectOutput.dll library +// Returns +// S_OK : succeeded +// E_FAIL : error +HRESULT DirectOutput_UnLoadLibrary(); + +//============================================================================= +// Function Pointers + +typedef HRESULT (__stdcall *Pfn_DirectOutput_Initialize)(const wchar_t* wszPluginName); +typedef HRESULT (__stdcall *Pfn_DirectOutput_Deinitialize)(); +typedef HRESULT (__stdcall *Pfn_DirectOutput_RegisterDeviceCallback)(Pfn_DirectOutput_DeviceChange pfnCb, void* pCtxt); +//typedef HRESULT (__stdcall *Pfn_DirectOutput_Enumerate)(); +typedef HRESULT (__stdcall *Pfn_DirectOutput_Enumerate)(Pfn_DirectOutput_EnumerateCallback pfnCb, void* pCtxt); +typedef HRESULT (__stdcall *Pfn_DirectOutput_RegisterPageCallback)(void* hDevice, Pfn_DirectOutput_PageChange pfnCb, void* pCtxt); +typedef HRESULT (__stdcall *Pfn_DirectOutput_RegisterSoftButtonCallback)(void* hDevice, Pfn_DirectOutput_SoftButtonChange pfnCb, void* pCtxt); +typedef HRESULT (__stdcall *Pfn_DirectOutput_GetDeviceType)(void* hDevice, LPGUID pGuid); +typedef HRESULT (__stdcall *Pfn_DirectOutput_GetDeviceInstance)(void* hDevice, LPGUID pGuid); +typedef HRESULT (__stdcall *Pfn_DirectOutput_SetProfile)(void* hDevice, DWORD cchProfile, const wchar_t* wszProfile); +typedef HRESULT (__stdcall *Pfn_DirectOutput_AddPage)(void* hDevice, DWORD dwPage, DWORD dwFlags); +typedef HRESULT (__stdcall *Pfn_DirectOutput_RemovePage)(void* hDevice, DWORD dwPage); +typedef HRESULT (__stdcall *Pfn_DirectOutput_SetLed)(void* hDevice, DWORD dwPage, DWORD dwIndex, DWORD dwValue); +typedef HRESULT (__stdcall *Pfn_DirectOutput_SetString)(void* hDevice, DWORD dwPage, DWORD dwIndex, DWORD cchValue, const wchar_t* wszValue); +typedef HRESULT (__stdcall *Pfn_DirectOutput_SetImage)(void* hDevice, DWORD dwPage, DWORD dwIndex, DWORD cbValue, const void* pvValue); +typedef HRESULT (__stdcall *Pfn_DirectOutput_SetImageFromFile)(void* hDevice, DWORD dwPage, DWORD dwIndex, DWORD cchFilename, const wchar_t* wszFilename); +typedef HRESULT (__stdcall *Pfn_DirectOutput_StartServer)(void* hDevice, DWORD cchFilename, const wchar_t* wszFilename, LPDWORD pdwServerId, PSRequestStatus psStatus); +typedef HRESULT (__stdcall *Pfn_DirectOutput_CloseServer)(void* hDevice, DWORD dwServerId, PSRequestStatus psStatus); +typedef HRESULT (__stdcall *Pfn_DirectOutput_SendServerMsg)(void* hDevice, DWORD dwServerId, DWORD dwRequest, DWORD dwPage, DWORD cbIn, const void* pvIn, DWORD cbOut, void* pvOut, PSRequestStatus psStatus); +typedef HRESULT (__stdcall *Pfn_DirectOutput_SendServerFile)(void* hDevice, DWORD dwServerId, DWORD dwRequest, DWORD dwPage, DWORD cbInHdr, const void* pvInHdr, DWORD cchFile, const wchar_t* wszFile, DWORD cbOut, void* pvOut, PSRequestStatus psStatus); +typedef HRESULT (__stdcall *Pfn_DirectOutput_SaveFile)(void* hDevice, DWORD dwPage, DWORD dwFile, DWORD cchFilename, const wchar_t* wszFilename, PSRequestStatus psStatus); +typedef HRESULT (__stdcall *Pfn_DirectOutput_DisplayFile)(void* hDevice, DWORD dwPage, DWORD dwFile, DWORD dwIndex, PSRequestStatus psStatus); +typedef HRESULT (__stdcall *Pfn_DirectOutput_DeleteFile)(void* hDevice, DWORD dwPage, DWORD dwFile, PSRequestStatus psStatus); +typedef HRESULT (__stdcall *Pfn_DirectOutput_GetSerialNumber)(void* hDevice, wchar_t* pszSerialNumber, DWORD dwSize); +//============================================================================= +#ifdef __cplusplus +}; +#endif +//============================================================================= +#endif + diff --git a/FIP-SDK/lib/DirectOutput.dll b/FIP-SDK/lib/DirectOutput.dll new file mode 100644 index 0000000000000000000000000000000000000000..48f798495debfd92fa9cd6ccff8111a22043310a GIT binary patch literal 159352 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 Date: Sat, 29 Oct 2022 15:47:59 +0200 Subject: [PATCH 04/21] Add BMP file handler It can open the 24 bit BMP files Signed-off-by: Norbert Takacs --- src/RawBMP.cpp | 148 +++++++++++++++++++++++++++++++++++++++++++++++++ src/RawBMP.h | 69 +++++++++++++++++++++++ 2 files changed, 217 insertions(+) create mode 100644 src/RawBMP.cpp create mode 100644 src/RawBMP.h diff --git a/src/RawBMP.cpp b/src/RawBMP.cpp new file mode 100644 index 0000000..0e1adcd --- /dev/null +++ b/src/RawBMP.cpp @@ -0,0 +1,148 @@ +/* + * Copyright 2022 Norbert Takacs + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include +#include +#include "logger.h" +#include "RawBMP.h" + +RawBMP::RawBMP() +{ + width = 0; + height = 0; + ref_x = 0; + ref_y = 0; + pos_x = 0; + pos_y = 0; + angle = 0; + base_rot = 0; + raw_buffer = NULL; +} + +RawBMP::~RawBMP() +{ + if (raw_buffer) + free(raw_buffer); + + raw_buffer = NULL; +} + +bool RawBMP::load_file(std::string file_name, int _ref_x, int _ref_y) +{ + std::ifstream file(file_name, std::ios::binary); + file.seekg(0, std::ios::beg); + + file.read((char*)&bmp_header, sizeof(bmp_header)); + + if (bmp_header.type != 0x4d42) // the BMP magic number + { + Logger(logERROR) << file_name << " bad magic number in BMP header: " << bmp_header.type << std::endl; + return false; + } + height = bmp_header.height_px; + width = bmp_header.width_px; + ref_x = _ref_x; + ref_y = _ref_y; + + int bytes_per_pixel = bmp_header.bits_per_pixel / 8; + if (bytes_per_pixel != 3) + { + Logger(logERROR) << "Bad BMP file format. It should be 24 bit color depth: " << file_name << std::endl; + return false; + } + + raw_buffer = (unsigned char*)calloc(width * height * bytes_per_pixel, sizeof(unsigned char)); + + // BMP format requires each row to be padded at the end such that each row is represented by multiples of 4 bytes of data + int nr_of_padding_bytes = 4 - ((width * bytes_per_pixel) % 4); + if (nr_of_padding_bytes == 4) + nr_of_padding_bytes = 0; + + Logger(logTRACE) << "BMP file (" << file_name << ") has " << nr_of_padding_bytes << " padding byte" << std::endl; + + for (int row = 0; row < height; row++) + { + file.read((char*)&raw_buffer[row * width * bytes_per_pixel], width * bytes_per_pixel); + + if (nr_of_padding_bytes != 0) + file.seekg(nr_of_padding_bytes, std::ios::cur); // skip padding bytes + + if (!file.good()) + { + Logger(logERROR) << "BMP file (" << file_name << "): Error occurred during read" << std::endl; + return false; + } + } + + Logger(logTRACE) << file_name << " load BMP done. height=" << height << " width=" << width << std::endl; + return true; +} + +int RawBMP::get_width() +{ + return width; +} + +int RawBMP::get_height() +{ + return height; +} + +int RawBMP::get_pos_x() +{ + return pos_x; +} + +int RawBMP::get_pos_y() +{ + return pos_y; +} + +int RawBMP::get_angle() +{ + return angle; +} + +void RawBMP::set_angle(int _angle) +{ + angle = _angle + base_rot; +} + +void RawBMP::set_pos_x(int _pos_x) +{ + pos_x = _pos_x; +} + +void RawBMP::set_pos_y(int _pos_y) +{ + pos_y = _pos_y; +} + +void RawBMP::set_base_rot(int _base_rot) +{ + base_rot = _base_rot; +} + +int RawBMP::get_ref_x() +{ + return ref_x; +} + +int RawBMP::get_ref_y() +{ + return ref_y; +} + +void RawBMP::get_pixel_at_pos(Pixel* pixel, int row, int col) +{ + pixel->r = raw_buffer[3 * (row * width + col)]; + pixel->g = raw_buffer[3 * (row * width + col) + 1]; + pixel->b = raw_buffer[3 * (row * width + col) + 2]; +} + +unsigned char* RawBMP::get_raw_buffer() +{ + return raw_buffer; +} diff --git a/src/RawBMP.h b/src/RawBMP.h new file mode 100644 index 0000000..9197a4c --- /dev/null +++ b/src/RawBMP.h @@ -0,0 +1,69 @@ +/* + * Copyright 2022 Norbert Takacs + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#pragma once +#include +#include +#include + +#pragma pack(push) +#pragma pack(1) +typedef struct { + uint16_t type; // Magic identifier: 0x4d42 + uint32_t size; // File size in bytes + uint16_t reserved1; // Not used + uint16_t reserved2; // Not used + uint32_t offset; // Offset to image data in bytes from beginning of file + uint32_t dib_header_size; // DIB Header size in bytes + int32_t width_px; // Width of the image + int32_t height_px; // Height of image + uint16_t num_planes; // Number of color planes + uint16_t bits_per_pixel; // Bits per pixel + uint32_t compression; // Compression type + uint32_t image_size_bytes; // Image size in bytes + int32_t x_resolution_ppm; // Pixels per meter + int32_t y_resolution_ppm; // Pixels per meter + uint32_t num_colors; // Number of colors + uint32_t important_colors; // Important colors +} BMPHeader; +#pragma pack(pop) + +typedef struct { + uint8_t r; + uint8_t g; + uint8_t b; +} Pixel; + +class RawBMP +{ +private: + unsigned char* raw_buffer; + BMPHeader bmp_header; + int height; + int width; + int ref_x; + int ref_y; + int base_rot; + int pos_x; + int pos_y; + int angle; +public: + RawBMP(); + ~RawBMP(); + bool load_file(std::string file_name, int ref_x, int ref_y); + int get_width(); + int get_height(); + int get_pos_x(); + int get_pos_y(); + int get_angle(); + int get_ref_x(); + int get_ref_y(); + void set_angle(int _angle); + void set_pos_x(int _pos_x); + void set_pos_y(int _pos_y); + void set_base_rot(int _base_rot); + void get_pixel_at_pos(Pixel* pixel, int row, int col); + unsigned char* get_raw_buffer(); +}; \ No newline at end of file From 96c9de337ad175115e34401d42fe04e47be539ca Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 29 Oct 2022 16:00:59 +0200 Subject: [PATCH 05/21] Add C wrapper for Saitek driver dll Signed-off-by: Norbert Takacs --- src/FIPDriver.cpp | 367 ++++++++++++++++++++++++++++++++++++++++++++++ src/FIPDriver.h | 27 ++++ 2 files changed, 394 insertions(+) create mode 100644 src/FIPDriver.cpp create mode 100644 src/FIPDriver.h diff --git a/src/FIPDriver.cpp b/src/FIPDriver.cpp new file mode 100644 index 0000000..3df016f --- /dev/null +++ b/src/FIPDriver.cpp @@ -0,0 +1,367 @@ +/* + * Copyright 2022 Norbert Takacs + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include +#include +#include +#include +#include "logger.h" +#include "FIPDriver.h" + +#ifdef WIN32 +#include "DirectOutput.h" +#include +static HMODULE m_module = NULL; +std::map fip_device_handles; +static bool direct_output_initialized = false; +static int ref_count = 0; +static bool enumerate_done = false; +static std::mutex guard; + +static void __stdcall on_enumerate_device(void* hDevice, void* pCtxt); +static void __stdcall on_page_changed(void* hDevice, DWORD dwPage, bool bSetActive, void* pCtxt); +static void __stdcall on_soft_button_changed(void* hDevice, DWORD dwButtons, void* pCtxt); +static void __stdcall on_device_changed(void* hDevice, bool bAdded, void* pCtxt); + +Pfn_DirectOutput_Initialize _DirectOutput_Initialize; +Pfn_DirectOutput_Deinitialize _DirectOutput_Deinitialize; +Pfn_DirectOutput_RegisterDeviceCallback _DirectOutput_RegisterDeviceCallback; +Pfn_DirectOutput_Enumerate _DirectOutput_Enumerate; +Pfn_DirectOutput_RegisterPageCallback _DirectOutput_RegisterPageCallback; +Pfn_DirectOutput_RegisterSoftButtonCallback _DirectOutput_RegisterSoftButtonCallback; +Pfn_DirectOutput_GetDeviceType _DirectOutput_GetDeviceType; +Pfn_DirectOutput_GetDeviceInstance _DirectOutput_GetDeviceInstance; +Pfn_DirectOutput_SetProfile _DirectOutput_SetProfile; +Pfn_DirectOutput_AddPage _DirectOutput_AddPage; +Pfn_DirectOutput_RemovePage _DirectOutput_RemovePage; +Pfn_DirectOutput_SetLed _DirectOutput_SetLed; +Pfn_DirectOutput_SetString _DirectOutput_SetString; +Pfn_DirectOutput_SetImage _DirectOutput_SetImage; +Pfn_DirectOutput_SetImageFromFile _DirectOutput_SetImageFromFile; +Pfn_DirectOutput_StartServer _DirectOutput_StartServer; +Pfn_DirectOutput_CloseServer _DirectOutput_CloseServer; +Pfn_DirectOutput_SendServerMsg _DirectOutput_SendServerMsg; +Pfn_DirectOutput_SendServerFile _DirectOutput_SendServerFile; +Pfn_DirectOutput_SaveFile _DirectOutput_SaveFile; +Pfn_DirectOutput_DisplayFile _DirectOutput_DisplayFile; +Pfn_DirectOutput_DeleteFile _DirectOutput_DeleteFile; +Pfn_DirectOutput_GetSerialNumber _DirectOutput_GetSerialNumber; + +bool get_direct_output_filename(LPTSTR filename, DWORD length) +{ + bool retval(false); + HKEY hk; + // Read the Full Path to DirectOutput.dll from the registry + long lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Saitek\\DirectOutput"), 0, KEY_READ, &hk); + if (ERROR_SUCCESS == lRet) + { + DWORD size(length * sizeof(filename[0])); + // Note: this DirectOutput entry will point to the correct version on x86 or x64 systems + lRet = RegQueryValueEx(hk, TEXT("DirectOutput_Saitek"), 0, 0, (LPBYTE)filename, &size); + if (ERROR_SUCCESS == lRet) + { + retval = true; + } + RegCloseKey(hk); + } + return retval; +} + +HRESULT DirectOutput_LoadLibrary() +{ + TCHAR filename[2048] = { 0 }; + if (get_direct_output_filename(filename, sizeof(filename) / sizeof(filename[0]))) + { + m_module = LoadLibrary(filename); + if (m_module) + { + _DirectOutput_Initialize = (Pfn_DirectOutput_Initialize)GetProcAddress(m_module, "DirectOutput_Initialize"); + _DirectOutput_Deinitialize = (Pfn_DirectOutput_Deinitialize)GetProcAddress(m_module, "DirectOutput_Deinitialize"); + _DirectOutput_RegisterDeviceCallback = (Pfn_DirectOutput_RegisterDeviceCallback)GetProcAddress(m_module, "DirectOutput_RegisterDeviceCallback"); + _DirectOutput_Enumerate = (Pfn_DirectOutput_Enumerate)GetProcAddress(m_module, "DirectOutput_Enumerate"); + _DirectOutput_RegisterPageCallback = (Pfn_DirectOutput_RegisterPageCallback)GetProcAddress(m_module, "DirectOutput_RegisterPageCallback"); + _DirectOutput_RegisterSoftButtonCallback = (Pfn_DirectOutput_RegisterSoftButtonCallback)GetProcAddress(m_module, "DirectOutput_RegisterSoftButtonCallback"); + _DirectOutput_GetDeviceType = (Pfn_DirectOutput_GetDeviceType)GetProcAddress(m_module, "DirectOutput_GetDeviceType"); + _DirectOutput_GetDeviceInstance = (Pfn_DirectOutput_GetDeviceInstance)GetProcAddress(m_module, "DirectOutput_GetDeviceInstance"); + _DirectOutput_SetProfile = (Pfn_DirectOutput_SetProfile)GetProcAddress(m_module, "DirectOutput_SetProfile"); + _DirectOutput_AddPage = (Pfn_DirectOutput_AddPage)GetProcAddress(m_module, "DirectOutput_AddPage"); + _DirectOutput_RemovePage = (Pfn_DirectOutput_RemovePage)GetProcAddress(m_module, "DirectOutput_RemovePage"); + _DirectOutput_SetLed = (Pfn_DirectOutput_SetLed)GetProcAddress(m_module, "DirectOutput_SetLed"); + _DirectOutput_SetString = (Pfn_DirectOutput_SetString)GetProcAddress(m_module, "DirectOutput_SetString"); + _DirectOutput_SetImage = (Pfn_DirectOutput_SetImage)GetProcAddress(m_module, "DirectOutput_SetImage"); + _DirectOutput_SetImageFromFile = (Pfn_DirectOutput_SetImageFromFile)GetProcAddress(m_module, "DirectOutput_SetImageFromFile"); + _DirectOutput_StartServer = (Pfn_DirectOutput_StartServer)GetProcAddress(m_module, "DirectOutput_StartServer"); + _DirectOutput_CloseServer = (Pfn_DirectOutput_CloseServer)GetProcAddress(m_module, "DirectOutput_CloseServer"); + _DirectOutput_SendServerMsg = (Pfn_DirectOutput_SendServerMsg)GetProcAddress(m_module, "DirectOutput_SendServerMsg"); + _DirectOutput_SendServerFile = (Pfn_DirectOutput_SendServerFile)GetProcAddress(m_module, "DirectOutput_SendServerFile"); + _DirectOutput_SaveFile = (Pfn_DirectOutput_SaveFile)GetProcAddress(m_module, "DirectOutput_SaveFile"); + _DirectOutput_DisplayFile = (Pfn_DirectOutput_DisplayFile)GetProcAddress(m_module, "DirectOutput_DisplayFile"); + _DirectOutput_DeleteFile = (Pfn_DirectOutput_DeleteFile)GetProcAddress(m_module, "DirectOutput_DeleteFile"); + _DirectOutput_GetSerialNumber = (Pfn_DirectOutput_GetSerialNumber)GetProcAddress(m_module, "DirectOutput_GetSerialNumber"); + + return S_OK; + } + } + return E_FAIL; +} + +HRESULT DirectOutput_UnLoadLibrary() +{ + if (m_module) + { + FreeLibrary(m_module); + m_module = NULL; + } + return S_OK; +} + +static void __stdcall on_soft_button_changed(void* hDevice, DWORD dwButtons, void* pCtxt) +{ + FIP_device_handle* fip_device = (FIP_device_handle*)pCtxt; + guard.lock(); + fip_device->button_states.push((uint16_t)dwButtons); + guard.unlock(); +} + +static void __stdcall on_page_changed(void* hDevice, DWORD dwPage, bool bSetActive, void* pCtxt) +{ + FIP_device_handle* fip_device = (FIP_device_handle*)pCtxt; + if (bSetActive) + { + guard.lock(); + fip_device->page_index = dwPage; + guard.unlock(); + Logger(logTRACE) << "FIP driver: page changed to " << dwPage << std::endl; + } +} + +static void __stdcall on_enumerate_device(void* hDevice, void* pCtxt) +{ + on_device_changed(hDevice, true, pCtxt); +} + +static void __stdcall on_device_changed(void* hDevice, bool bAdded, void* pCtxt) +{ + if (bAdded) + { + wchar_t serial_number_wchar[255]; + _DirectOutput_GetSerialNumber(hDevice, serial_number_wchar, 255); + std::wstring ws(serial_number_wchar); + std::string serial_number_str(ws.begin(), ws.end()); + + fip_device_handles[serial_number_str] = new FIP_device_handle(); + fip_device_handles[serial_number_str]->hDevice = hDevice; + fip_device_handles[serial_number_str]->page_index = 0; + fip_device_handles[serial_number_str]->serial_number = serial_number_str; + + Logger(logINFO) << "FIP driver: new device added. Serial=" << serial_number_str << std::endl; + // Register a callback that gets called when the page changes + _DirectOutput_RegisterPageCallback(hDevice, on_page_changed, (void*)fip_device_handles[serial_number_str]); + + // Register a callback that gets called when the soft buttons get changed + _DirectOutput_RegisterSoftButtonCallback(hDevice, on_soft_button_changed, (void*)fip_device_handles[serial_number_str]); + } + else + { + // device removed + for (const auto& it : fip_device_handles) + { + if (it.second->hDevice == hDevice) { + Logger(logERROR) << "FIP driver: device removed. Serial=" << it.second->serial_number << std::endl; + it.second->hDevice = NULL; + } + } + } +} + +FIP_device_handle* fip_open(std::string serial_number) +{ + Logger(logTRACE) << "FIP driver: fip_open(" << serial_number << ")" << std::endl; + ref_count++; + if (!direct_output_initialized) + { + Logger(logTRACE) << "FIP driver: initialize DirectDriver" << std::endl; + DirectOutput_LoadLibrary(); + _DirectOutput_Initialize(L"Xpanel plugin"); + _DirectOutput_RegisterDeviceCallback(on_device_changed, NULL); + + _DirectOutput_Enumerate(on_enumerate_device, NULL); + while (!enumerate_done) + { + + } + direct_output_initialized = true; + } + + for (const auto& it : fip_device_handles) + { + if (it.second->serial_number == serial_number) + return it.second; + } + + return NULL; +} + +void fip_close(FIP_device_handle* device) +{ + if (!device->hDevice) + { + Logger(logERROR) << "FIP driver: device not opened" << std::endl; + return; + } + + Logger(logINFO) << "FIP driver: fip_close() serial=" << device->serial_number << std::endl; + + for (const auto& it : fip_device_handles) + { + if (it.second->serial_number == device->serial_number) + { + delete it.second; + fip_device_handles.erase(it.first); + } + } + + ref_count--; + if (ref_count <= 0) + { + Logger(logINFO) << "FIP driver: de-init direct driver" << std::endl; + _DirectOutput_Deinitialize(); + DirectOutput_UnLoadLibrary(); + direct_output_initialized = false; + } +} + +void fip_add_page(FIP_device_handle* device, int page_index, bool set_active) +{ + if (!device->hDevice) + { + Logger(logERROR) << "FIP driver: device not opened" << std::endl; + return; + } + + Logger(logTRACE) << "FIP driver: fip_add_page serial=" << device->serial_number << " page:" << page_index << " active:" << set_active << std::endl; + _DirectOutput_AddPage(device->hDevice, page_index, set_active ? FLAG_SET_AS_ACTIVE : 0); +} + +void fip_set_led(FIP_device_handle* device, int led_index, int led_state) +{ + if (!device->hDevice) + { + Logger(logERROR) << "FIP driver: device not opened" << std::endl; + return; + } + + Logger(logTRACE) << "FIP driver: fip_set_led serial=" << device->serial_number << " led_index:" << led_index << " led_state:" << led_state << std::endl; + _DirectOutput_SetLed(device->hDevice, device->page_index, led_index, led_state); +} + +uint16_t fip_get_button_states(FIP_device_handle* device) +{ + if (!device->hDevice) + { + Logger(logERROR) << "FIP driver: device not opened" << std::endl; + return 0; + } + + uint16_t states = 0; + + guard.lock(); + if (!device->button_states.empty()) + { + states = device->button_states.front(); + if (device->button_states.size() > 1) + device->button_states.pop(); + } + guard.unlock(); + + Logger(logTRACE) << "FIP driver: fip_get_button_state serial=" << device->serial_number << " state:" << states << std::endl; + return states; +} + +int fip_get_current_page(FIP_device_handle* device) +{ + guard.lock(); + int index = device->page_index; + guard.unlock(); + + return index; +} + +void fip_set_image(FIP_device_handle* device, int page, const void* byte_buffer) +{ + if (!device->hDevice) + { + Logger(logERROR) << "FIP driver: device not opened" << std::endl; + return; + } + _DirectOutput_SetImage(device->hDevice, page, 0, 320 * 240 * 3, (const void*)byte_buffer); +} + +void fip_set_text(FIP_device_handle* device, int page, std::string text) +{ + if (!device->hDevice) + { + Logger(logERROR) << "FIP driver: device not opened" << std::endl; + return; + } + std::wstring wide_string = std::wstring(text.begin(), text.end()); + _DirectOutput_SetString(device->hDevice, page, 0, wide_string.size(), wide_string.c_str()); +} + +#else + +FIP_device_handle* fip_open(std::string serial_number) +{ + (void)serial_number; + Logger(logERROR) << "FIP driver not implemented for Linux/Mac" << std::endl; + return NULL; +} + +void fip_close(FIP_device_handle* device) +{ + (void)device; +} + +void fip_add_page(FIP_device_handle* device, int page_index, bool set_active) +{ + (void)device; + (void)page_index; + (void)set_active; +} + +void fip_set_led(FIP_device_handle* device, int led_index, int led_state) +{ + (void)device; + (void)led_index; + (void)led_state; +} + +uint16_t fip_get_button_states(FIP_device_handle* device) +{ + (void)device; + return 0; +} + +int fip_get_current_page(FIP_device_handle* device) +{ + (void)device; + return 0; +} + +void fip_set_image(FIP_device_handle* device, int page, const void* byte_buffer) +{ + (void)device; + (void)page; + (void)byte_buffer; +} + +void fip_set_text(FIP_device_handle* device, int page, std::string text) +{ + (void)device; + (void)page; + (void)text; +} + +#endif diff --git a/src/FIPDriver.h b/src/FIPDriver.h new file mode 100644 index 0000000..8f265d7 --- /dev/null +++ b/src/FIPDriver.h @@ -0,0 +1,27 @@ +/* + * Copyright 2022 Norbert Takacs + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#pragma once +#include +#include +#include +#include +#include + +typedef struct { + std::string serial_number; + void* hDevice; + std::queue button_states; + int page_index; +} FIP_device_handle; + +FIP_device_handle* fip_open(std::string serial_number); +void fip_close(FIP_device_handle* device); +void fip_add_page(FIP_device_handle* device, int page_index, bool set_active); +void fip_set_led(FIP_device_handle* device, int led_index, int led_state); +uint16_t fip_get_button_states(FIP_device_handle* device); +int fip_get_current_page(FIP_device_handle* device); +void fip_set_image(FIP_device_handle* device, int page, const void* byte_buffer); +void fip_set_text(FIP_device_handle* device, int page, std::string text); From cd26a6321916641c79e8939873a4320ae5d345fa Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 29 Oct 2022 16:02:00 +0200 Subject: [PATCH 06/21] Add GenericScreen class This is the base class for graphical screen devices Signed-off-by: Norbert Takacs --- src/GenericScreen.cpp | 48 ++++++++++++++++++++++++++++ src/GenericScreen.h | 74 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 src/GenericScreen.cpp create mode 100644 src/GenericScreen.h diff --git a/src/GenericScreen.cpp b/src/GenericScreen.cpp new file mode 100644 index 0000000..936bed2 --- /dev/null +++ b/src/GenericScreen.cpp @@ -0,0 +1,48 @@ +/* + * Copyright 2022 Norbert Takacs + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include +#include "logger.h" +#include "lua_helper.h" +#include "GenericScreen.h" + +GenericScreen::GenericScreen() +{ + screen_action_queue.clear(); +} + +GenericScreen::~GenericScreen() +{ + for (auto action : screen_action_queue) + { + delete action; + } + screen_action_queue.clear(); +} + +void GenericScreen::add_screen_action(ScreenAction* screen_action) +{ + screen_action_queue.push_back(screen_action); +} + +int GenericScreen::read_data_ref_int(XPLMDataRef data_ref, XPLMDataTypeID data_ref_type) +{ + int value_int = 0; + switch (data_ref_type) + { + case xplmType_Int: + value_int = XPLMGetDatai(data_ref); + break; + case xplmType_Float: + value_int = (int)round(XPLMGetDataf(data_ref)); + break; + case xplmType_Double: + value_int = (int)round(XPLMGetDatad(data_ref)); + break; + default: + Logger(logWARNING) << "Generic screen: Unknown dataref_type" << std::endl; + } + return value_int; +} diff --git a/src/GenericScreen.h b/src/GenericScreen.h new file mode 100644 index 0000000..4ea13eb --- /dev/null +++ b/src/GenericScreen.h @@ -0,0 +1,74 @@ +/* + * Copyright 2022 Norbert Takacs + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#pragma once +#include +#include +#include "Device.h" +#include "configuration.h" +#include "XPLMUtilities.h" +#include "XPLMProcessing.h" + +typedef enum { + SC_ROTATION, + SC_TRANSLATION_X, + SC_TRANSLATION_Y, + SC_UNKNOWN +} ScreenActionType; + +class ScreenAction { +public: + ScreenAction() + { + type = SC_UNKNOWN; + page_index = 0; + layer_index = 0; + scale_factor = 1; + value_old = 0; + data_ref = NULL; + data_ref_type = xplmType_Unknown; + lua_str = ""; + constant_val = 0; + } + + ScreenAction(const ScreenAction& other) + { + type = other.type; + page_index = other.page_index; + layer_index = other.layer_index; + value_old = other.value_old; + scale_factor = other.scale_factor; + data_ref = other.data_ref; + data_ref_type = other.data_ref_type; + lua_str = other.lua_str; + constant_val = other.constant_val; + } + + ScreenActionType type; + XPLMDataRef data_ref; + XPLMDataTypeID data_ref_type; + std::string lua_str; + int constant_val; + int page_index; + int layer_index; + + int value_old; + + double scale_factor; +}; + +class GenericScreen +{ +protected: + std::list screen_action_queue; + int read_data_ref_int(XPLMDataRef data_ref, XPLMDataTypeID data_ref_type); +public: + GenericScreen(); + ~GenericScreen(); + virtual void evaluate_and_store_screen_action()=0; + virtual void render_page(int page_index, void** byte_buffer) = 0; + void add_screen_action(ScreenAction* screen_action); +}; + From 6d17a0abe07e7103610fc885dca496d5b97d6e7d Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 29 Oct 2022 16:02:49 +0200 Subject: [PATCH 07/21] Add FIP Page The FIP device can handle multiple virtual pages. These are handled by this class Signed-off-by: Norbert Takacs --- src/FIPPage.cpp | 121 ++++++++++++++++++++++++++++++++++++++++++++++++ src/FIPPage.h | 34 ++++++++++++++ 2 files changed, 155 insertions(+) create mode 100644 src/FIPPage.cpp create mode 100644 src/FIPPage.h diff --git a/src/FIPPage.cpp b/src/FIPPage.cpp new file mode 100644 index 0000000..ad134c4 --- /dev/null +++ b/src/FIPPage.cpp @@ -0,0 +1,121 @@ +/* + * Copyright 2022 Norbert Takacs + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "FIPPage.h" +#include +#include +#include "logger.h" + +FIPPage::FIPPage(int _screen_width, int _screen_height, int _bit_per_pixel, std::string _page_name) +{ + bit_per_pixel = _bit_per_pixel; + screen_height = _screen_height; + screen_width = _screen_width; + page_name = _page_name; + raw_buffer_size = screen_height * screen_width * (bit_per_pixel / 8); + + page_raw_buffer = (unsigned char*)calloc(raw_buffer_size, sizeof(unsigned char)); +} + +FIPPage::~FIPPage() +{ + for (int i = 0; i < layers.size(); i++) + delete(layers[i]); + + layers.clear(); + free(page_raw_buffer); +} + +std::string FIPPage::get_name() +{ + return page_name; +} + +int FIPPage::add_layer_from_bmp_file(std::string filename, int ref_x, int ref_y, int base_rot) +{ + RawBMP* new_layer = new RawBMP(); + new_layer->load_file(filename, ref_x, ref_y); + new_layer->set_pos_x(0); + new_layer->set_pos_y(0); + new_layer->set_angle(0); + new_layer->set_base_rot(base_rot); + + layers.push_back(new_layer); + return (int)layers.size() - 1; +} + +void FIPPage::rotate_layer(int layer_index, int angle) +{ + layers[layer_index]->set_angle(angle); +} + +void FIPPage::translate_layer_x(int layer_index, int offset_x) +{ + layers[layer_index]->set_pos_x(offset_x); +} + +void FIPPage::translate_layer_y(int layer_index, int offset_y) +{ + layers[layer_index]->set_pos_y(offset_y); +} + +unsigned char* FIPPage::get_raw_buffer() +{ + return page_raw_buffer; +} + +void FIPPage::render_layer(int layer_index) +{ + Pixel pixel; + int layer_width = layers[layer_index]->get_width(); + int layer_height = layers[layer_index]->get_height(); + int pos_x = layers[layer_index]->get_pos_x(); + int pos_y = layers[layer_index]->get_pos_y(); + int ref_x = layers[layer_index]->get_ref_x(); + int ref_y = layers[layer_index]->get_ref_y(); + long double deg = -1 * (layers[layer_index]->get_angle() * 3.14) / 180; + + for (int row = 0; row < screen_height && row < layer_height; row++) + { + for (int col = 0; col < screen_width && col < layer_width; col++) + { + layers[layer_index]->get_pixel_at_pos(&pixel, row, col); + + // skip background color pixels + if (pixel.r == 0 && pixel.g == 0 && pixel.b == 0) + continue; + + //calculate rotation + translation + int row_rot = (int)round(sin(deg) * (col - ref_x) + cos(deg) * (row - ref_y)) + pos_y; + int col_rot = (int)round(cos(deg) * (col - ref_x) - sin(deg) * (row - ref_y)) + pos_x; + + //skip points that are outside of screen area + if (row_rot < 0 || row_rot >= screen_height || col_rot < 0 || col_rot >= screen_width) + continue; + + int buffer_linear_index = 3 * (row_rot * screen_width + col_rot); + + if (buffer_linear_index + 2 >= raw_buffer_size) + continue; + + page_raw_buffer[buffer_linear_index + 0] = pixel.r; + page_raw_buffer[buffer_linear_index + 1] = pixel.g; + page_raw_buffer[buffer_linear_index + 2] = pixel.b; + } + } +} + +int FIPPage::get_last_layer_index() +{ + return (int)layers.size() - 1; +} + +void FIPPage::render_page() +{ + memset(page_raw_buffer, 0, raw_buffer_size); + + for (int i = 0; i < layers.size(); i++) + render_layer(i); +} diff --git a/src/FIPPage.h b/src/FIPPage.h new file mode 100644 index 0000000..6997904 --- /dev/null +++ b/src/FIPPage.h @@ -0,0 +1,34 @@ +/* + * Copyright 2022 Norbert Takacs + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#pragma once +#include +#include + +#include "RawBMP.h" + +class FIPPage +{ +private: + std::vector layers; + unsigned char* page_raw_buffer; + int raw_buffer_size; + int screen_width; + int screen_height; + int bit_per_pixel; + std::string page_name; + void render_layer(int layer_index); +public: + FIPPage(int _screen_width, int _screen_height, int _bit_per_pixel, std::string _page_name); + ~FIPPage(); + int add_layer_from_bmp_file(std::string filename, int ref_x, int ref_y, int base_rot); + void rotate_layer(int layer_index, int angle); + void translate_layer_x(int layer_index, int offset_x); + void translate_layer_y(int layer_index, int offset_y); + void render_page(); + int get_last_layer_index(); + unsigned char* get_raw_buffer(); + std::string get_name(); +}; From 7d1fa97d6454998ceb2a44502f2b4765a7986a9d Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 29 Oct 2022 16:03:48 +0200 Subject: [PATCH 08/21] Add FIP Screen A FIP device contains buttons, LEDs and of course an LCD screen. This class is for the screen --- src/FIPScreen.cpp | 148 ++++++++++++++++++++++++++++++++++++++++++++++ src/FIPScreen.h | 37 ++++++++++++ 2 files changed, 185 insertions(+) create mode 100644 src/FIPScreen.cpp create mode 100644 src/FIPScreen.h diff --git a/src/FIPScreen.cpp b/src/FIPScreen.cpp new file mode 100644 index 0000000..adeee4d --- /dev/null +++ b/src/FIPScreen.cpp @@ -0,0 +1,148 @@ +/* + * Copyright 2022 Norbert Takacs + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include +#include +#include +#include +#include "lua_helper.h" +#include "FIPScreen.h" +#include "logger.h" + +FIPScreen::FIPScreen() :GenericScreen() +{ + pages.clear(); +} + +FIPScreen::~FIPScreen() +{ + for (const auto& it_page : pages) + delete it_page.second; + + pages.clear(); +} + +void FIPScreen::evaluate_and_store_screen_action() +{ + for (auto action : screen_action_queue) + { + int action_value = 0; + if (action->data_ref != NULL) + { + action_value = action->scale_factor * read_data_ref_int(action->data_ref, action->data_ref_type); + } + else if (action->lua_str != "") + { + action_value = (int)LuaHelper::get_instace()->do_string("return " + action->lua_str); + } + else if (action->constant_val != 0) + { + action_value = action->constant_val; + } + else + { + //Logger(logERROR) << "FIP Screen: unknown value for screen action" << std::endl; + //return; + } + + if (action->scale_factor == 0 || abs(action->value_old - action_value) < (1/action->scale_factor)) + continue; + + action->value_old = action_value; + + Logger(logTRACE) << "FIP screen: value changed (page " << action->page_index << " layer " << action->layer_index << "): " << action_value << std::endl; + + guard.lock(); + switch (action->type) { + case SC_ROTATION: + rotate_layer(action->page_index, action->layer_index, action_value); + break; + case SC_TRANSLATION_X: + translate_layer_x(action->page_index, action->layer_index, action_value); + break; + case SC_TRANSLATION_Y: + translate_layer_y(action->page_index, action->layer_index, action_value); + break; + default: + Logger(logERROR) << "FIP screen: unknown action type" << std::endl; + } + guard.unlock(); + } +} + +void FIPScreen::add_page(int page_index, std::string _debug_name, bool set_active) +{ + Logger(logTRACE) << "FIP screen: add page. index=" << page_index << ", active=" << set_active << std::endl; + + FIPPage* fip_page = new FIPPage(SCREEN_WIDTH, SCREEN_HEIGHT, BIT_PER_PIXEL, _debug_name); + pages[page_index] = fip_page; +} + +void FIPScreen::add_page(std::string _debug_name, bool set_active) +{ + int next_page_index = (int)pages.size(); + + add_page(next_page_index, _debug_name, set_active); +} + +int FIPScreen::get_last_page_index() +{ + return (int)pages.size() - 1; +} + +std::string FIPScreen::get_page_name(int page_index) +{ + if (pages.count(page_index) == 0) + { + Logger(logERROR) << "FIPScreen: invalid page index: " << page_index << std::endl; + return ""; + } + return pages[page_index]->get_name(); +} + +int FIPScreen::get_last_layer_index(int page_index) +{ + return pages[page_index]->get_last_layer_index(); +} + +int FIPScreen::add_layer_to_page(int page_index, std::string bmp_file_name, int ref_x, int ref_y, int base_rot) +{ + Logger(logTRACE) << "FIP screen: add layer to page " << page_index << " file name:" << bmp_file_name << " ref_x=" << ref_x << " ref_y" << ref_y << std::endl; + + if (!std::filesystem::exists(bmp_file_name)) + { + Logger(logERROR) << "FIP Screen: bmp file doesn't exist: " << bmp_file_name << std::endl; + return -1; + } + int layer_index = pages[page_index]->add_layer_from_bmp_file(bmp_file_name, ref_x, ref_y, base_rot); + Logger(logTRACE) << "FIP screen: new layer index=" << layer_index << std::endl; + return layer_index; +} + +void FIPScreen::rotate_layer(int page_index, int layer_index, int angle) +{ + pages[page_index]->rotate_layer(layer_index, angle); +} + +void FIPScreen::translate_layer_x(int page_index, int layer_index, int offset_x) +{ + pages[page_index]->translate_layer_x(layer_index, offset_x); +} + +void FIPScreen::translate_layer_y(int page_index, int layer_index, int offset_y) +{ + pages[page_index]->translate_layer_y(layer_index, offset_y); +} + +void FIPScreen::render_page(int page_index, void** byte_buffer) +{ + if (pages.count(page_index) == 0) + return; + + guard.lock(); + pages[page_index]->render_page(); + *byte_buffer = pages[page_index]->get_raw_buffer(); + guard.unlock(); +} diff --git a/src/FIPScreen.h b/src/FIPScreen.h new file mode 100644 index 0000000..c35dfaf --- /dev/null +++ b/src/FIPScreen.h @@ -0,0 +1,37 @@ +/* + * Copyright 2022 Norbert Takacs + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#pragma once +#include +#include +#include "configuration.h" +#include "GenericScreen.h" +#include "FIPPage.h" + +class FIPScreen : public GenericScreen +{ +private: + std::map pages; + const int SCREEN_WIDTH = 320; + const int SCREEN_HEIGHT = 240; + const int BIT_PER_PIXEL = 24; + std::mutex guard; +public: + FIPScreen(); + ~FIPScreen(); + + void evaluate_and_store_screen_action(); + + void add_page(int page_index, std::string _debug_name, bool set_active); + void add_page(std::string _debug_name, bool set_active); + int get_last_page_index(); + int add_layer_to_page(int page_index, std::string bmp_file_name, int ref_x, int ref_y, int base_rot); + int get_last_layer_index(int page_index); + std::string get_page_name(int page_index); + void rotate_layer(int page_index, int layer_index, int angle); + void translate_layer_x(int page_index, int layer_index, int offset_x); + void translate_layer_y(int page_index, int layer_index, int offset_y); + void render_page(int page_index, void **byte_buffer); +}; From e0d3997611f8114f143b6afd9301970a5704da4f Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 29 Oct 2022 16:04:48 +0200 Subject: [PATCH 09/21] Add FIP Device class The FIP device class is for handling the whole FIP device (including the buttons, LEDs, screen) Signed-off-by: Norbert Takacs --- src/FIPDevice.cpp | 203 ++++++++++++++++++++++++++++++++++++++++++++++ src/FIPDevice.h | 35 ++++++++ 2 files changed, 238 insertions(+) create mode 100644 src/FIPDevice.cpp create mode 100644 src/FIPDevice.h diff --git a/src/FIPDevice.cpp b/src/FIPDevice.cpp new file mode 100644 index 0000000..2b53558 --- /dev/null +++ b/src/FIPDevice.cpp @@ -0,0 +1,203 @@ +/* + * Copyright 2022 Norbert Takacs + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +#include +#include "logger.h" +#include "FIPDevice.h" + +FIPDevice::FIPDevice(DeviceConfiguration& _config) :Device(_config,2,1) +{ + f_device = NULL; + //bit index 0 not used + fip_buttons.push_back(PanelButton(1, "RIGHT_KNOB_PLUS")); + fip_buttons.push_back(PanelButton(2, "RIGHT_KNOB_MINUS")); + fip_buttons.push_back(PanelButton(3, "LEFT_KNOB_PLUS")); + fip_buttons.push_back(PanelButton(4, "LEFT_KNOB_MINUS")); + fip_buttons.push_back(PanelButton(5, "S1")); + fip_buttons.push_back(PanelButton(6, "S2")); + fip_buttons.push_back(PanelButton(7, "S3")); + fip_buttons.push_back(PanelButton(8, "S4")); + fip_buttons.push_back(PanelButton(9, "S5")); + fip_buttons.push_back(PanelButton(10, "S6")); + register_buttons(fip_buttons); + + //LED index 0 not used + fip_lights.push_back(PanelLight(1, "S1_L")); + fip_lights.push_back(PanelLight(2, "S2_L")); + fip_lights.push_back(PanelLight(3, "S3_L")); + fip_lights.push_back(PanelLight(4, "S4_L")); + fip_lights.push_back(PanelLight(5, "S5_L")); + fip_lights.push_back(PanelLight(6, "S6_L")); + register_lights(fip_lights); + + page_condition_name_old = ""; + page_index_old = -1; +} + +void FIPDevice::start() +{ + Logger(TLogLevel::logDEBUG) << "FIPDevice::start" << std::endl; + + _thread_run.store(true); +} + +void FIPDevice::stop(int time_out_msec) +{ + Logger(TLogLevel::logDEBUG) << "FIPDevice::stop" << std::endl; + _thread_run.store(false); + int time_to_wait = time_out_msec; + while (_thread_finish.load() == false && time_to_wait > 0) + { + std::this_thread::sleep_for(1ms); + time_to_wait--; + } + Logger(TLogLevel::logDEBUG) << "FIPDevice::stop. thread finish ? " << _thread_finish.load() << " remaining time=" << time_to_wait << std::endl; +} + +int FIPDevice::connect() +{ + f_device = fip_open(config.serial_number); + if (f_device == NULL) + { + Logger(logERROR) << "FIPDevice: unable to open device with serial number: " << config.serial_number << std::endl; + return EXIT_FAILURE; + } + Logger(logTRACE) << "FIPDevice: device open successful. serial: " << config.serial_number << std::endl; + return EXIT_SUCCESS; +} + +void FIPDevice::release() +{ + if (f_device != NULL) + { + fip_close(f_device); + f_device = NULL; + } + Logger(logTRACE) << "FIPDevice: closed" << std::endl; +} + +void FIPDevice::set_led(int led_index, int led_state) +{ + Logger(logTRACE) << "FIPDevice: set led " << led_index << " to " << led_state << std::endl; + fip_set_led(f_device, led_index, led_state); +} + +uint16_t FIPDevice::get_button_state() +{ + uint16_t button_states = fip_get_button_states(f_device); + Logger(logTRACE) << "FIPDevice: button states=" << button_states << std::endl; + return button_states; +} + +void FIPDevice::set_text(int page_index, std::string text) +{ + fip_set_text(f_device, page_index, text); +} + +void FIPDevice::render_screen(FIPScreen* screen) +{ + int current_page_index = fip_get_current_page(f_device); + void* byte_buffer = NULL; + screen->render_page(current_page_index, &byte_buffer); + fip_set_image(f_device, current_page_index, byte_buffer); +} + +void FIPDevice::process_page_conditions(FIPScreen* screen) +{ + int current_page = fip_get_current_page(f_device); + std::string page_condition_name = "PAGE_" + screen->get_page_name(current_page); + + if (page_condition_name_old == page_condition_name) + return; + + if (!page_condition_name_old.empty()) + { + for (auto button : buttons) + { + for (auto act : config.push_actions[button.config_name.c_str()]) + { + act->set_condition_inactive(page_condition_name_old); + } + for (auto act : config.release_actions[button.config_name.c_str()]) + { + act->set_condition_inactive(page_condition_name_old); + } + } + } + + for (auto button : buttons) + { + for (auto act : config.push_actions[button.config_name.c_str()]) + { + act->set_condition_active(page_condition_name); + } + for (auto act : config.release_actions[button.config_name.c_str()]) + { + act->set_condition_active(page_condition_name); + } + } + + page_condition_name_old = page_condition_name; +} + +void FIPDevice::thread_func() +{ + Logger(TLogLevel::logTRACE) << "FIPDevice::thread_func: started for serial=" << config.serial_number << std::endl; + _thread_finish.store(false); + + // create page registers in physical device + for (const auto& it_screen : config.fip_screens) + { + for (int page_index = 0; page_index <= it_screen.second->get_last_page_index(); page_index++) + { + fip_add_page(f_device, page_index, page_index == 0 ? true : false); + } + } + + bool write_buffer_changed = false; + + while (_thread_run.load() == true) + { + std::this_thread::sleep_for(20ms); + for (auto screen : config.fip_screens) + { + render_screen(screen.second); + process_page_conditions(screen.second); + } + + write_buffer_changed = false; + + // if page has changed we have to re-send LED states to device + int page_index = fip_get_current_page(f_device); + write_buffer_changed = (page_index != page_index_old); + page_index_old = page_index; + + write_buffer_changed |= updateLightStates(); + if (write_buffer_changed) + { + for (int i = 0; i < write_buffer_size * 8; i++) + { + int led_state = 0; + if ((write_buffer[i / 8] & (0x01 << (i % 8))) == (0x01 << (i % 8))) + led_state = 1; + else + led_state = 0; + + fip_set_led(f_device, i, led_state); + } + } + + uint16_t button_states = fip_get_button_states(f_device); + for (int i=0; i> (i*8)) & 0xFF); + + process_and_store_button_states(); + process_selector_switch(); + memcpy(read_buffer_old, read_buffer, read_buffer_size); + } + _thread_finish.store(true); + Logger(TLogLevel::logDEBUG) << "FIPDevice thread_func: exit serial=" << config.serial_number << std::endl; +} diff --git a/src/FIPDevice.h b/src/FIPDevice.h new file mode 100644 index 0000000..57d469c --- /dev/null +++ b/src/FIPDevice.h @@ -0,0 +1,35 @@ +/* + * Copyright 2022 Norbert Takacs + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#pragma once +#include +#include +#include "Device.h" +#include "FIPDriver.h" +#include "FIPScreen.h" +class FIPDevice : public Device +{ +private: + FIP_device_handle* f_device; + std::atomic _thread_run; + std::atomic _thread_finish; + std::vector fip_buttons; + std::vector fip_lights; + std::string page_condition_name_old; + int page_index_old; + void process_page_conditions(FIPScreen* screen); +public: + FIPDevice(DeviceConfiguration& _config); + void stop(int time_out_msec); + int connect(); + void release(); + void start(); + void render_screen(FIPScreen* screen); + void thread_func(); + void set_text(int page_index, std::string text); + void set_led(int led_index, int led_state); + uint16_t get_button_state(); +}; + From e72815b16a3a5631cdaa929d911c834f6575ecd8 Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 19 Nov 2022 15:46:08 +0100 Subject: [PATCH 10/21] Config parser: Add FIP config options Signed-off-by: Norbert Takacs --- src/ConfigParser.cpp | 147 ++++++++++++++++++++++++++++++++++++++++++- src/ConfigParser.h | 13 ++++ 2 files changed, 158 insertions(+), 2 deletions(-) diff --git a/src/ConfigParser.cpp b/src/ConfigParser.cpp index 14ddc71..365bc0b 100644 --- a/src/ConfigParser.cpp +++ b/src/ConfigParser.cpp @@ -7,10 +7,12 @@ #include #include #include +#include #include #include "ConfigParser.h" #include "Trigger.h" #include "MultiPurposeDisplay.h" +#include "FIPScreen.h" #include "Logger.h" int Configparser::parse_file(std::string file_name, Configuration& config) @@ -72,6 +74,8 @@ int Configparser::parse_line(std::string line, Configuration& config) config.device_configs.back().device_type = SAITEK_SWITCH; else if (section_id == DEVICE_TYPE_ARDUINO_HOME_COCKPIT) config.device_configs.back().device_type = HOME_COCKPIT; + else if (section_id == DEVICE_TYPE_SAITEK_FIP_SCREEN) + config.device_configs.back().device_type = LOGITECH_FIP; else { Logger(TLogLevel::logERROR) << "parser: unknown device type (at line " << current_line_nr << "): " << line << std::endl; @@ -99,6 +103,15 @@ int Configparser::parse_line(std::string line, Configuration& config) return EXIT_SUCCESS; } + if (std::regex_match(line.c_str(), m, std::regex(TOKEN_SERIAL))) + { + std::stringstream ss; + ss << std::hex << m[1]; + ss >> config.device_configs.back().serial_number; + Logger(TLogLevel::logDEBUG) << "parser: serial=" << config.device_configs.back().serial_number << std::endl; + return EXIT_SUCCESS; + } + if (std::regex_match(line.c_str(), m, std::regex(TOKEN_SCRIPT))) { if (section_id != "") @@ -559,9 +572,139 @@ int Configparser::parse_line(std::string line, Configuration& config) config.device_configs.back().multi_displays[section_id]->add_condition(m[1], m[2]); return EXIT_SUCCESS; } + + if (std::regex_match(line.c_str(), m, std::regex(TOKEN_FIP_SCREEN))) + { + FIPScreen* screen = new FIPScreen(); + config.device_configs.back().fip_screens[section_id] = screen; + return EXIT_SUCCESS; + } + + if (std::regex_match(line.c_str(), m, std::regex(TOKEN_FIP_PAGE))) + { + config.device_configs.back().fip_screens[section_id]->add_page(m[1], false); + return EXIT_SUCCESS; + } + + if (std::regex_match(line.c_str(), m, std::regex(TOKEN_FIP_LAYER))) + { + int page_index = config.device_configs.back().fip_screens[section_id]->get_last_page_index(); + if (page_index >= 0) + { + std::filesystem::path bmp_file_absolute_path = std::filesystem::path(config.aircraft_path); + bmp_file_absolute_path /= std::string(m[1]); + + if (config.device_configs.back().fip_screens[section_id]->add_layer_to_page(page_index, bmp_file_absolute_path.string(), stoi(m[2]), stoi(m[3]), stoi(m[4])) < 0) + return EXIT_FAILURE; + else + return EXIT_SUCCESS; + } + else + { + Logger(logERROR) << "Parser: invalid FIP page index" << std::endl; + return EXIT_FAILURE; + } + } + + if (std::regex_match(line.c_str(), m, std::regex(TOKEN_FIP_OFFSET_CONST))) + { + ScreenAction *action =new ScreenAction(); + action->page_index = config.device_configs.back().fip_screens[section_id]->get_last_page_index(); + action->layer_index = config.device_configs.back().fip_screens[section_id]->get_last_layer_index(action->page_index); + action->constant_val = stoi(m[2]); + action->type = m[1] == "x" ? SC_TRANSLATION_X : SC_TRANSLATION_Y; + + Logger(logTRACE) << "config parser: add FIP offset const: " << action->constant_val << std::endl; + config.device_configs.back().fip_screens[section_id]->add_screen_action(action); + return EXIT_SUCCESS; + } + + if (std::regex_match(line.c_str(), m, std::regex(TOKEN_FIP_OFFSET_DATAREF))) + { + ScreenAction* action = new ScreenAction(); + + action->page_index = config.device_configs.back().fip_screens[section_id]->get_last_page_index(); + action->layer_index = config.device_configs.back().fip_screens[section_id]->get_last_layer_index(action->page_index); + action->scale_factor = std::stod(m[3].str().c_str()); + + XPLMDataRef dataRef = XPLMFindDataRef(m[2].str().c_str()); + if (dataRef == NULL) + { + Logger(TLogLevel::logERROR) << "parser: invalid data ref (at line: " << current_line_nr << "): " << line << std::endl; + return EXIT_FAILURE; + } + action->data_ref = dataRef; + action->data_ref_type = XPLMGetDataRefTypes(dataRef); + action->type = m[1] == "x" ? SC_TRANSLATION_X : SC_TRANSLATION_Y; + + Logger(logTRACE) << "config parser: add FIP offset dataref: " << action->data_ref << std::endl; + config.device_configs.back().fip_screens[section_id]->add_screen_action(action); + return EXIT_SUCCESS; + } + + if (std::regex_match(line.c_str(), m, std::regex(TOKEN_FIP_OFFSET_LUA))) + { + ScreenAction* action = new ScreenAction(); + + action->page_index = config.device_configs.back().fip_screens[section_id]->get_last_page_index(); + action->layer_index = config.device_configs.back().fip_screens[section_id]->get_last_layer_index(action->page_index); + action->lua_str = m[2]; + action->type = m[1] == "x" ? SC_TRANSLATION_X : SC_TRANSLATION_Y; - // - //TOKEN_MULTI_KNOB_CHANGE_COMMANDREF + Logger(logTRACE) << "config parser: add FIP offset lua: " << action->lua_str << std::endl; + config.device_configs.back().fip_screens[section_id]->add_screen_action(action); + return EXIT_SUCCESS; + } + + if (std::regex_match(line.c_str(), m, std::regex(TOKEN_FIP_ROTATION_CONST))) + { + ScreenAction* action = new ScreenAction(); + + action->page_index = config.device_configs.back().fip_screens[section_id]->get_last_page_index(); + action->layer_index = config.device_configs.back().fip_screens[section_id]->get_last_layer_index(action->page_index); + action->constant_val = stoi(m[1]); + action->type = SC_ROTATION; + + Logger(logTRACE) << "config parser: add FIP rotation const: " << action->constant_val << std::endl; + config.device_configs.back().fip_screens[section_id]->add_screen_action(action); + return EXIT_SUCCESS; + } + + if (std::regex_match(line.c_str(), m, std::regex(TOKEN_FIP_ROTATION_DATAREF))) + { + ScreenAction* action = new ScreenAction(); + + action->page_index = config.device_configs.back().fip_screens[section_id]->get_last_page_index(); + action->layer_index = config.device_configs.back().fip_screens[section_id]->get_last_layer_index(action->page_index); + action->scale_factor = std::stod(m[2].str().c_str()); + XPLMDataRef dataRef = XPLMFindDataRef(m[1].str().c_str()); + if (dataRef == NULL) + { + Logger(TLogLevel::logERROR) << "parser: invalid data ref (at line: " << current_line_nr << "): " << line << std::endl; + return EXIT_FAILURE; + } + action->data_ref = dataRef; + action->data_ref_type = XPLMGetDataRefTypes(dataRef); + action->type = SC_ROTATION; + + Logger(logTRACE) << "config parser: add FIP rotation dataref: " << action->data_ref << std::endl; + config.device_configs.back().fip_screens[section_id]->add_screen_action(action); + return EXIT_SUCCESS; + } + + if (std::regex_match(line.c_str(), m, std::regex(TOKEN_FIP_ROTATION_LUA))) + { + ScreenAction* action = new ScreenAction(); + + action->page_index = config.device_configs.back().fip_screens[section_id]->get_last_page_index(); + action->layer_index = config.device_configs.back().fip_screens[section_id]->get_last_layer_index(action->page_index); + action->lua_str = m[1]; + action->type = SC_ROTATION; + + Logger(logTRACE) << "config parser: add FIP rotation lua: " << action->lua_str << std::endl; + config.device_configs.back().fip_screens[section_id]->add_screen_action(action); + return EXIT_SUCCESS; + } Logger(TLogLevel::logERROR) << "parser: unknown error (at line: " << current_line_nr << "): " << line << std::endl; return EXIT_FAILURE; diff --git a/src/ConfigParser.h b/src/ConfigParser.h index 56e2f3a..6ec7db5 100644 --- a/src/ConfigParser.h +++ b/src/ConfigParser.h @@ -21,10 +21,12 @@ class Configparser const std::string DEVICE_TYPE_SAITEK_RADIO = "saitek_radio"; const std::string DEVICE_TYPE_SAITEK_SWITCH = "saitek_switch"; const std::string DEVICE_TYPE_ARDUINO_HOME_COCKPIT = "aurduino_homecockpit"; + const std::string DEVICE_TYPE_SAITEK_FIP_SCREEN = "saitek_fip_screen"; const std::string TOKEN_DEVICE = "\\[device:id=\"([a-zA-Z09_-]+)\"\\]"; const std::string TOKEN_VID = "vid=\"(.+)\""; const std::string TOKEN_PID = "pid=\"(.+)\""; + const std::string TOKEN_SERIAL = "serial=\"(.+)\""; const std::string TOKEN_SCRIPT = "script_file=\"(.+)\""; const std::string TOKEN_ACF = "aircraft_acf=\"(.+)\""; @@ -75,6 +77,17 @@ class Configparser const std::string TOKEN_MULTI_DISPLAY_LINE_CONST = "line=\"on_select:([a-zA-Z0-9_-]+),const:" + RE_FLOAT + "\""; const std::string TOKEN_MULTI_DISPLAY_LINE_LUA = "line=\"on_select:([a-zA-Z0-9_-]+),lua:" + RE_LUA + "\""; + // FIP screen + const std::string TOKEN_FIP_SCREEN = "\\[screen:id=\"([a-zA-Z0-9_-]+)\"\\]"; + const std::string TOKEN_FIP_PAGE = "\\[page:id=\"([a-zA-Z0-9_-]+)\"\\]"; + const std::string TOKEN_FIP_LAYER = "\\[layer:image=\"([a-zA-Z0-9_\\-/\\.]+),ref_x:" + RE_INT + ",ref_y:" + RE_INT + ",base_rot=" + RE_INT + "\"\\]"; + const std::string TOKEN_FIP_OFFSET_CONST = "offset_([xy]+)=\"const:" + RE_INT + "\""; + const std::string TOKEN_FIP_OFFSET_DATAREF = "offset_([xy]+)=\"dataref:" + RE_REF + ",scale:" + RE_FLOAT + "\""; + const std::string TOKEN_FIP_OFFSET_LUA = "offset_([xy]+)=\"lua:" + RE_LUA + "\""; + const std::string TOKEN_FIP_ROTATION_CONST = "rotation=\"const:" + RE_INT + "\""; + const std::string TOKEN_FIP_ROTATION_DATAREF = "rotation=\"dataref:" + RE_REF + ",scale:" + RE_FLOAT + "\""; + const std::string TOKEN_FIP_ROTATION_LUA = "rotation=\"lua:" + RE_LUA + "\""; + std::string section_id = ""; std::string last_error_message = ""; float time_low=0; From f579b231480022fa462d1c63c82296dc2183b6b0 Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 29 Oct 2022 16:06:54 +0200 Subject: [PATCH 11/21] Add FIP support for main application Signed-off-by: Norbert Takacs --- src/XPanel.cpp | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/src/XPanel.cpp b/src/XPanel.cpp index 82d7975..9eaeb48 100644 --- a/src/XPanel.cpp +++ b/src/XPanel.cpp @@ -25,6 +25,7 @@ #include "Configuration.h" #include "ConfigParser.h" #include "Action.h" +#include "FIPDevice.h" #include "LuaHelper.h" #include "MessageWindow.h" #include "Logger.h" @@ -60,8 +61,8 @@ int init_and_start_xpanel_plugin(); Configuration config; std::vector devices; -const float FLIGHT_LOOP_TIME_PERIOD = 0.2; -const float ERROR_DISPLAY_TIME_PERIOD = 2; +const float FLIGHT_LOOP_TIME_PERIOD = 0.2f; +const float ERROR_DISPLAY_TIME_PERIOD = 2.0f; int g_menu_container_idx; XPLMMenuID g_menu_id; @@ -121,7 +122,7 @@ float flight_loop_callback(float, float, int, void*) for (const auto& it : config.device_configs) { // check and set LED states - for (auto triggers : it.light_triggers) + for (const auto& triggers : it.light_triggers) { for (auto trigger : triggers.second) { @@ -129,15 +130,21 @@ float flight_loop_callback(float, float, int, void*) } } // check and set 7 segment display states - for (auto display : it.multi_displays) + for (const auto& display : it.multi_displays) { display.second->evaluate_and_store_dataref_value(); } - for (auto display : it.generic_displays) + for (const auto& display : it.generic_displays) { display.second->evaluate_and_store_dataref_value(); } + + // update the FIP devices + for (auto screen : it.fip_screens) + { + screen.second->evaluate_and_store_screen_action(); + } } // execute lua scrip defined flight_loop function @@ -206,11 +213,16 @@ extern std::filesystem::path get_plugin_path() int init_and_start_xpanel_plugin(void) { char aircraft_file_name[256]; - char aircraft_path[512]; - XPLMGetNthAircraftModel(0, aircraft_file_name, aircraft_path); + char aircraft_file_path[512]; + XPLMGetNthAircraftModel(0, aircraft_file_name, aircraft_file_path); Logger(TLogLevel::logINFO) << "aircraft file name: " << aircraft_file_name << std::endl; - std::filesystem::path init_path = absolute_path(aircraft_path, "xpanel.ini"); + std::filesystem::path init_path = absolute_path(aircraft_file_path, "xpanel.ini"); + Logger(logINFO) << "config file: " << init_path.string() << std::endl; + + config.aircraft_path = std::filesystem::absolute(init_path).remove_filename().string(); + Logger(TLogLevel::logINFO) << "aircraft path: " << config.aircraft_path << std::endl; + Configparser p; int result = p.parse_file(init_path.string(), config); @@ -230,11 +242,11 @@ int init_and_start_xpanel_plugin(void) LuaHelper::get_instace()->init(); LuaHelper::get_instace()->push_global_string("AIRCRAFT_FILENAME", aircraft_file_name); - LuaHelper::get_instace()->push_global_string("AIRCRAFT_PATH", aircraft_path); + LuaHelper::get_instace()->push_global_string("AIRCRAFT_PATH", aircraft_file_path); std::filesystem::path script_path; if (config.script_file != "") - script_path = absolute_path(aircraft_path, config.script_file); + script_path = absolute_path(aircraft_file_path, config.script_file); if (std::filesystem::exists(script_path)) { if (LuaHelper::get_instace()->load_script_file(script_path.string()) != EXIT_SUCCESS) @@ -292,6 +304,14 @@ int init_and_start_xpanel_plugin(void) device->thread_handle = new std::thread(&SaitekRadioPanel::thread_func, (SaitekRadioPanel*)device); LuaHelper::get_instace()->register_hid_device((UsbHidDevice*)device); break; + case DeviceType::LOGITECH_FIP: + Logger(TLogLevel::logDEBUG) << "add new FIP device" << std::endl; + device = new FIPDevice(it); + devices.push_back(device); + device->connect(); + device->start(); + device->thread_handle = new std::thread(&FIPDevice::thread_func, (FIPDevice*)device); + break; default: Logger(TLogLevel::logERROR) << "unknown device type" << std::endl; return EXIT_FAILURE; From c34eb82312159245fd243926606f277bab2e7249 Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 29 Oct 2022 16:07:59 +0200 Subject: [PATCH 12/21] test: add mock FIPdriver Signed-off-by: Norbert Takacs --- test/mock_FIPDriver.cpp | 75 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 test/mock_FIPDriver.cpp diff --git a/test/mock_FIPDriver.cpp b/test/mock_FIPDriver.cpp new file mode 100644 index 0000000..738fed5 --- /dev/null +++ b/test/mock_FIPDriver.cpp @@ -0,0 +1,75 @@ +/* + * Copyright 2022 Norbert Takacs + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ +#include "FIPDriver.h" + +FIP_device_handle f_device; + +FIP_device_handle* fip_open(std::string serial_number) +{ + f_device.serial_number = serial_number; + + return &f_device; +} + +void fip_close(FIP_device_handle* device) +{ + +} + +void fip_add_page(FIP_device_handle* device, int page_index, bool set_active) +{ + +} + +int led_states[8]; +int test_fip_get_led_state(int led_index) +{ + return led_states[led_index]; +} + +void fip_set_led(FIP_device_handle* device, int led_index, int led_state) +{ + led_states[led_index] = led_state; +} + +uint16_t button_states = 0; +void test_fip_set_button_states(uint16_t _button_states) +{ + button_states = _button_states; +} + +uint16_t fip_get_button_states(FIP_device_handle* device) +{ + return button_states; +} + +int current_page_index = 0; +void test_fip_set_current_page(int page) +{ + current_page_index = page; +} + +int fip_get_current_page(FIP_device_handle* device) +{ + return current_page_index; +} + +const size_t image_buffer_size = 320 * 240 * 3; +unsigned char image_buffer[image_buffer_size]; +void fip_set_image(FIP_device_handle* device, int page, const void* byte_buffer) +{ + memcpy((void*)&image_buffer[0], byte_buffer, image_buffer_size); +} + +void test_fip_get_image(unsigned char* buffer, size_t buffer_size) +{ + memcpy(buffer, (void*)&image_buffer[0], buffer_size); +} + +void fip_set_text(FIP_device_handle* device, int page, std::string text) +{ + +} From 1974860898ad149b487b4c9475ef6465376ed503 Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 29 Oct 2022 16:08:54 +0200 Subject: [PATCH 13/21] test: add FIP tests Signed-off-by: Norbert Takacs --- test/fip-images/Adf_Kompass_Ring.bmp | Bin 0 -> 172854 bytes test/fip-images/Adf_needle.bmp | Bin 0 -> 9234 bytes test/fip-images/Airspeed_Background.bmp | Bin 0 -> 172856 bytes test/fip-images/Airspeed_Needle.bmp | Bin 0 -> 4974 bytes test/fip-images/bmp_test_padding.bmp | Bin 0 -> 102 bytes test/test-fip-screen-config.ini | 48 +++++++++ test/test_FIP.cpp | 133 ++++++++++++++++++++++++ 7 files changed, 181 insertions(+) create mode 100644 test/fip-images/Adf_Kompass_Ring.bmp create mode 100644 test/fip-images/Adf_needle.bmp create mode 100644 test/fip-images/Airspeed_Background.bmp create mode 100644 test/fip-images/Airspeed_Needle.bmp create mode 100644 test/fip-images/bmp_test_padding.bmp create mode 100644 test/test-fip-screen-config.ini create mode 100644 test/test_FIP.cpp diff --git a/test/fip-images/Adf_Kompass_Ring.bmp b/test/fip-images/Adf_Kompass_Ring.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5c98181e3809c8a258b60c2a5d1a8fdad14a2bbd GIT binary patch literal 172854 zcmeI5%graZ5yWLjpremE`ef*&^TKxn3PB+#1ZAKQbZ`I)K_Msvg&=1j|Fk7Eh~eX# zCx^qS0rn3LhmY>+Vzb#ZyZi6|eDmMGfAQz_4S)X0pa1>!=Wk#9gAy0dzxvk~pZ}=B zzed0a7y%<-1dMh!v_{%T96lJ0Qk3asXJ)&dr zkt>bB)d+n1?YBSw{PR~|eU(qtCT)$+)E8I5mtTJQ(@#Hr_uY5-M6NLcXCd&z4?n;_ zSe*}uo8{4`PoMHfHL63}8lM@5M|Rygn6BB10PYtj{QdXe=N(}(G=tUoBT;=5pGDf@ zXw1$;H5qW-#ffsMTw?^_GhBkwITT-i{dMh8!*$pEbA!(fZx5M~!F z_8Xij;zRwfzy6v(g6dGZNV6KBnSE;)$@cs2zvlu_LjY5(cjX%pzym|hA_p2iutv@X zVmrDZ7;7pYv#~+Y7@jj%-pe&_KtK^fF-9e^0HbJ-;~=WTtNc-|W-Ff?0Z${YmduD( z6T|g$BOuxog9n^8WG<3ct6) zG|=+zzswsV`OyLad=Z?%F)r%wx`izY-I0o`7~XOzkXP2HL(}kU44rfT4kMspR4tH==fLx(sGt5%CDne?O<5!a#5vtjHsjS>1~LB z7r$Lh*IxwG%ZJrL2A&i#AIJHK&k_6}80FhtVtWe<^oqyomlN+g_2pq|;ol&^A>u)4 z)*S^d3fvag;B`RdBkN=ut8CFg2apkVw}oKS-@*{+QL~Gl-oDX`9>~c>$Xb*33S;4E zSwYN5A;xESkR(x)7L-&(&a_L~z~$=@(7suVqA?tfD4Zb$y{fyN;nxAO7&$WD@H2u3 zVBxkF^XLFud%76kw>uEPQQ+bZx(kIL@=F)Jq1&Nahb|m6v`?XX?G@od47x08bc+dM zQ4|}vat#7{U3-Lt7(#(-&6BSY@G(Y*qVoQQ-7W4EG^c>!tGxzqJPKdL=`S z8?-&kP*2&9w1fdIKV`tlt+XTv2f!m=$3$8Tn)08Bk?v{Dy&7FQ zdxXuXtSdd=g}Vl#m15A6aabU=P-NveZWah&1v#8GR>)0;A=I69G5ukOWefdq%ZhkW zIgNYeuK5jY+lAQOOy)LFTc2(MR{LY>moRRm&amdhtQKP*a(`XRmU_?3OFsmM6pkOs@Uo%vU`ILfCLc7J91rsU(aDCV&x6o+Mx>&h1 zo`T+qas~+-G=q>UXOvlCb=n07C7WVah@C!KIqV~viHGQj`r)5dnbxe)rC|%0%xGL| z#(8HOL4+Y1Fs?^Nr$~6KE*$C^nQQKNL&~yL@vD)?;8wby0xVOUYpL}%eO${Efnvjz z5w-Jb!#&HO&jMCKHNU5beWHy{k!SEhfQzVr-{W#BTE!QN@=AE2begqW*{jj)tfkSI;&G1vnd@q?jr`RJdwdXp$%Fx1FZZ02 zk%0hjkt3Zz(`5CalJ6%t;fEgasqjKc<}Bq#{2oKpL-By9wioHX#u1DBj&{ z>ON~@HY~QPb8||wVl|Xr_+)(1I}PVl#!yr|OPF_>6%Xtn`78=OWgH?&vRG4|5FbGr*@#1)o2*vCS+Dh$#^V4h6`syiMbCBiPPsQzxZoB{O@p^0abp&*ifW1d~b7p$pv3kG;@X zPyI2{car(rUy5@kcpH3bfduo^(PC~%3`cYNcE9Q8_JXrCts zR`%`I3<*U=wBE|<5K>M6Zbyv^;~;>Ok%@6Txm2(e^R>B+>&EG^92lqFG9SNx4f^UI zB0ySL-4=kxECCRp3k0TsvVv=x4Xcg76Q9CHY?K=aQ_6eOpr{w@RbRTp=MR}*9ORZt zltpr`;_TE*aZ#7D@*YsS-LW{DD?1|qE%86;q*yJS7({IZ64;vSK}=57ES5n7jl^Vr z6_%hNWe3bf#0Ia_2kkN_K}b7iL)(qCLv;2;9HGLc7VfrF!+)gAxL z))QF^0xE7DIh+OWeB;IM!*Od0V7}pjDQg^0@EPC$&^$Eu{}q>@lUDKz&@oS zyksPYK)T~b?Kq-F?nUqMZxqH;KM?_F42M$|-Tw9*0r1awX}_(0BBSn=8S?0D1?2HA zf3Gb(`zZ+cqxVx_^dLsS2p9n)U<8bS5ikNqpeF)^@wcZ|dg|-BCPn}T6cK>H@l}6# z$o_m@$fm`Gm-a`k3uJuTMgVUNpS8vFz8fO7+xw{zFak!v2p9n)U<8bS5ikNqzz7(D zvk*|SPNz{0q|P~?1+2%p1p)Hjkt$T-7BM{OObGDzo5pKqq(5t%q9$t~!b2O)qDPhW+ziQvhpe2@wj z)d(yQ;Pp3AM;dJNzTQE|0wv!*3jy3RG4_Jh&r-qCZbd+!%;h_Bt$yqHH?}8!PGb+s z{%q++bM%>72PlF}rc;?yUX)eeN0PHfAZ=k+d@>|-i3e& zkdgt~1Tj>=PTyzFs2TMsZy}I!@Qp2Mg(T%GcKCNn7U}^>u#i( zr{0YKD^!6~cxIw0=j(Rk>5exdkZw0PXNc{?;Em?+)CUm|p9wAatd#iq;Ark{1g=AX zGz*afm!e_{`CNEohZZ?3uBjnF5|~fdIBIc0F#KVy<>~eD_fv4cf6}_d=hG+kfO8{| z2BZwr&o>(7iBt0mL*xkx;TvIi zXIWPei5ikNq zzz7%tBVYuKz%&SOQ01CN9V_xe1bCl9CY+SGGA;bR5Cp4y1Oa>?**S8~5b5^6#}ps- zlQ!i2VE;7u5hUGr1O#}Iv3Q?yqg3Pxan2*GtQ$e_)W;Ek)!OC#CgnJo9>EA00V7}p zjDQg^0!F|H+=u{K7xEtD?nuJiD2AsV76E1Fh7~UaaICoayq}Z{iRdxqG^s{F07|ERkFA^y{q~nBDKdx$pJDZpFIT+;Qb?ySLtr*^ zy;;U%QyxdB_IUM`vD~NZ+ zn9w*(Hoetgvh?LQ2NRMLCvyO#z(D{sNbw0A5|Vj)*NldMJQ7yJ9R;yt!);58-PwYR zj;`JDmZxYM3PRf2xmBUEILt5F(GftvhewPsRQBc;BuAc9A1#OT(Lar~ChE{az~XQN zL$6!{H$njqk(QPFAt8hIY6+9WON-|L*Ny6U>LLO`OE`()ASc&KmkWpKMSEGfIQ~$T zA2KRDaqe$$zge9@(PNTkvip!PP zB|J`5)1C#T#bnyxz)j{9q9>M#qGegkI!&C6A8B6>nQCw7brXT^z6+WjI~=w-lt&Y z=}%AOpFd~sK2G25M$#QeKpr#TyKa$?S0}uEfX}zge*2`)eRFg>bR!G!PP6htoY2~#$jHnr%7)>%ijUq|Nd%(L zJP5a@KM_x6VtlXOV$T{RZ?zW$HXvI;8>&6-NEUoUg077`DQF#m*|2<0Y-2U}Q!Gfh z_~zslWCj7QiBpt=lki;e^iQc^(06{puCV!?x}Qs=aYj?l*$!$Pi&&C_2)r{p*9HyO zeF`j$!y$#2IQ~|o4Y;3PhX5qxynIUTj)+c~z}H6UfJsEhMd3t~ar$$DZVjFyGxR$V zE>eQZqP)#Z$Jbxy;)xxVpgYknwGagd>c@>A3Al;Nd183+xz?i($DKKgtw%I)c_0$pD{;wKTZ6%{gMnT(z|yl-@V& z4oRNa1)ZI9^)*!V-ZGPZ;nOx zm*2`LYe*Of!(Qx&D_(eY3?Y(7%ek>7>X5z^YUC^;pzX|YauJ*(mGZP}fQ74AjrJ69 z#n>^nT?C+#U-6trFX1z4qVm37X}udcV&7NwCEWz~*!aZ84|Ny$<&pU1Ho8RoOg;9E z`ZpBzMbTicg#dJKKPFI0ULnUq}t-o4}d&ein01#z4z;mlG zbXQ*n+1l6b7YM*TeCa_XgT0J%e6)px|9_uBNbxAN>2q)oXpcrr|)zG zmv)s>AKFQzHt9^LyjDvU^4q5T4 zwhtb47ABuAQb745*NlJw0W&-y?@<&6M}(g&KDww+AXlA%II{JBCrY%yMfrs^{%hL$8I`t+iA=Q?sD9(y6$cG$s;hiyI9jCx&-w zu7TbhkMxCJE$rlJ(cLKpw;q8Vd}fKU1d6K$X^R5Wm@de+UNEYx#8_0Edy@N+7$(Jr4gth00X)5rwRj#d5;hIT+9r!N8p4V59d(3rUL>v zQpjA)Ej0M7UQoA#gr33(7y%<-1dMHX}yK3+Gki{1S+`!!~dXQ`>d0Rad=00Nl_RNo=<`s{u{z}-NP13sBQ6*tf$vjcm( z&u*Z{9-_4Ur5k_IV-QdBuA*@6iy-3T7d kIB^2A8>e$#Pv5`=S_Fz4TA4_rLBQS62to=7Kp-!H5kL7u!vFvP literal 0 HcmV?d00001 diff --git a/test/fip-images/Airspeed_Background.bmp b/test/fip-images/Airspeed_Background.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6ef03232bdd690efd78835d706619252bf305bce GIT binary patch literal 172856 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 literal 0 HcmV?d00001 diff --git a/test/fip-images/Airspeed_Needle.bmp b/test/fip-images/Airspeed_Needle.bmp new file mode 100644 index 0000000000000000000000000000000000000000..87126f0618bcb81493495934b376bd0cfb80c18a GIT binary patch literal 4974 zcmd^>%TgLa6o$z*n=G=)BjgEES!bU|N!BTgjc>pc=o45LWtB=$0dLVzAx603;S4?Ng7X7nINWz2WzS-y_d6N{{Dd z`@Qw2WAUyhbsX;hd;!B&tM$VY6=!`jbSwD(I9pgWo6Smi$=f4I$%e}g~+Su6e`~8ovYhYj?6bdaaE`G4I zva+(awzj&unoK6Qx3_b-+|JHUrBZ=-wOTzqJOsMvLWz-G5~rKSZC2c)zfa<<5(99< zU@&-{Vf&xg>jkA~#?X|~drN^pARG=uTmgwaQT8%;W_xBl}l}93xp`oGsB+lF{Xl`y!Lu5@N-NIYd=JbT40v^)9r>CbC z@F`84QNX>hu&}(m9E-(1TS}!;!~_C*u~;OrAeh(I`5-Uu^ zq|7)vI@)LA4A*Ehum`h+8fKfQq|t2YOWl^Z9vSYqn23#$T?D~LCGm7hl1w_C#w9m5 zH%TlIrzE3vb!XcS1O#~>F&Z(1*k5Pj?My-^Mic{Vk=ZtCgZo~=S#FA4{D-oo)|W;A z{zA!vU}5RnA15XzOgeYO(bgYz_){SRkZ`HsjPvvJlq~X-5?DzB2*=^L+uGV90}#0+ zTwIb1MQ@DG&d!KVLU26`J!3ZvQC*`=i= zt^mD1X!L5ks&JSVb_qm3j D-Q(-| literal 0 HcmV?d00001 diff --git a/test/fip-images/bmp_test_padding.bmp b/test/fip-images/bmp_test_padding.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0dc8bd6149e83763032b217e6a1ed67d19242544 GIT binary patch literal 102 qcmZ?rO=ExnGa#h_#H>Kf48)8K5 config); +void test_fip_get_image(unsigned char* buffer, size_t buffer_size); + +namespace test +{ + TEST_CLASS(TestFIP) + { + private: + Configuration config; + Configparser* p; + FIPDevice* fip_device; + std::thread* t; + std::string airspeed_dataref_str = "sim/cockpit2/gauges/indicators/airspeed_kts_pilot"; + XPLMDataRef airspeed_dataref; + public: + TEST_METHOD_INITIALIZE(TestFIPInit) + { + test_set_aircraft_path_and_filename("test.acf", "./"); + + p = new Configparser(); + int result = p->parse_file("../../test/test-fip-screen-config.ini", config); + Assert::AreEqual(0, result); + + LuaHelper::get_instace()->init(); + LuaHelper::get_instace()->load_script_file("../../test/" + config.script_file); + + fip_device = new FIPDevice(config.device_configs[0]); + fip_device->connect(); + fip_device->start(); + t = new std::thread(&FIPDevice::thread_func, (FIPDevice*)fip_device); + + airspeed_dataref = XPLMFindDataRef(airspeed_dataref_str.c_str()); + XPLMSetDatai(airspeed_dataref, 0); + + test_fip_set_current_page(0); + } + + TEST_METHOD(TestFIPButtonState) + { + test_fip_set_button_states(4); + Assert::AreEqual(4, (int)fip_device->get_button_state()); + + test_fip_set_button_states(0); + Assert::AreEqual(0, (int)fip_device->get_button_state()); + } + + TEST_METHOD(TestFIPAirSpeedChange) + { + XPLMSetDatai(airspeed_dataref, 0); + test_flight_loop(config.device_configs); + std::this_thread::sleep_for(150ms); + unsigned char fip_image_buffer[240 * 320 * 3]; + test_fip_get_image(fip_image_buffer, 240 * 320 * 3); + Assert::AreEqual(0, (int)fip_image_buffer[0]); + + XPLMSetDatai(airspeed_dataref, 150); + test_flight_loop(config.device_configs); + std::this_thread::sleep_for(150ms); + test_fip_get_image(fip_image_buffer, 240 * 320 * 3); + Assert::AreEqual(0, (int)fip_image_buffer[0]); + } + + TEST_METHOD(TestFIPBMPPadding) + { + /* Page 2 contains one layer with the BMP file bmp_test_padding.bmp + This file contains a 5x3 pixel where the middle column is black, other + pixels are white. Due to the BMP specification every row contains 1 additional + byte as padding in each row. Those padding bytes shall be handled by RawBMP class. + The 5x3 BMP layer will be put to 0,0 position */ + test_fip_set_current_page(2); + test_flight_loop(config.device_configs); + std::this_thread::sleep_for(150ms); + + const int row_count = 240; //height + const int col_count = 320; //width + const int bytes_per_pixel = 3; + + unsigned char fip_buffer[col_count * row_count * bytes_per_pixel]; + test_fip_get_image(&fip_buffer[0], col_count * row_count * bytes_per_pixel); + + //col 0 --> shall be white (RGB 255,255,255) + Assert::AreEqual(255, (int)fip_buffer[0]); + Assert::AreEqual(255, (int)fip_buffer[1]); + Assert::AreEqual(255, (int)fip_buffer[2]); + + //col 1 --> shall be white (RGB 255,255,255) + Assert::AreEqual(255, (int)fip_buffer[3]); + Assert::AreEqual(255, (int)fip_buffer[4]); + Assert::AreEqual(255, (int)fip_buffer[5]); + + //col 2 --> shall be black (RGB 0,0,0) + Assert::AreEqual(0, (int)fip_buffer[6]); + Assert::AreEqual(0, (int)fip_buffer[7]); + Assert::AreEqual(0, (int)fip_buffer[8]); + + //col 3 --> shall be white (RGB 255,255,255) + Assert::AreEqual(255, (int)fip_buffer[9]); + Assert::AreEqual(255, (int)fip_buffer[10]); + Assert::AreEqual(255, (int)fip_buffer[11]); + + //col 4 --> shall be white (RGB 255,255,255) + Assert::AreEqual(255, (int)fip_buffer[12]); + Assert::AreEqual(255, (int)fip_buffer[13]); + Assert::AreEqual(255, (int)fip_buffer[14]); + } + + TEST_METHOD_CLEANUP(TestFIPCleanup) + { + fip_device->stop(0); + t->join(); + } + }; +} \ No newline at end of file From 563e7a6af5c59e0870479f29652352bd50a85bbc Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 29 Oct 2022 16:09:48 +0200 Subject: [PATCH 14/21] test: add FIP to mock flight loop Signed-off-by: Norbert Takacs --- test/mock_xplane.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/mock_xplane.cpp b/test/mock_xplane.cpp index 6893e5e..5a91ef1 100644 --- a/test/mock_xplane.cpp +++ b/test/mock_xplane.cpp @@ -18,6 +18,7 @@ #include #include #include "Configuration.h" +#include "FIPScreen.h" #include "Logger.h" std::map internal_dataref; @@ -297,6 +298,11 @@ void test_flight_loop(std::vector config) { display.second->evaluate_and_store_dataref_value(); } + + for (auto fip_screen : it.fip_screens) + { + fip_screen.second->evaluate_and_store_screen_action(); + } } // process button push/release events From d287d14a8e33a28a466e79598d0c30614b8a2573 Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 19 Nov 2022 15:58:33 +0100 Subject: [PATCH 15/21] Update Visual Studio project files Signed-off-by: Norbert Takacs --- XPanel.vcxproj | 18 +++++++++++++++--- XPanel.vcxproj.filters | 36 ++++++++++++++++++++++++++++++++++++ test/test.vcxproj | 19 ++++++++++++++----- test/test.vcxproj.filters | 21 +++++++++++++++++++++ 4 files changed, 86 insertions(+), 8 deletions(-) diff --git a/XPanel.vcxproj b/XPanel.vcxproj index a97b3b7..d7745b0 100644 --- a/XPanel.vcxproj +++ b/XPanel.vcxproj @@ -125,7 +125,7 @@ Level3 WINVER=0x0601;_CRT_SECURE_NO_WARNINGS=1;_WIN32_WINNT=0x0601;_WIN32_WINDOWS=0x0601;WIN32;_DEBUG;_WINDOWS;_USRDLL;SIMDATA_EXPORTS;IBM=1;XPLM200=1;XPLM210=1;XPLM300=1;XPLM301=1;XPLM302=1;PLUGIN_SIGNATURE="xpanel";PLUGIN_VERSION="1.2";%(PreprocessorDefinitions) true - $(SolutionDir)\hidapi\headers;$(SolutionDir)\LUA\include;$(SolutionDir)\SDK\CHeaders\XPLM;$(SolutionDir)\SDK\CHeaders\Widgets;%(AdditionalIncludeDirectories) + $(SolutionDir)\hidapi\headers;$(SolutionDir)\LUA\include;$(SolutionDir)\SDK\CHeaders\XPLM;$(SolutionDir)\FIP-SDK\include;$(SolutionDir)\SDK\CHeaders\Widgets;%(AdditionalIncludeDirectories) OldStyle false stdcpp17 @@ -148,7 +148,7 @@ NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS=1;IBM=1;XPLM200=1;XPLM210=1;XPLM300=1;XPLM301=1;XPLM302=1;PLUGIN_SIGNATURE="xpanel";PLUGIN_VERSION="1.2";%(PreprocessorDefinitions) true stdcpp17 - $(SolutionDir)\hidapi\headers;$(SolutionDir)\LUA\include;$(SolutionDir)\SDK\CHeaders\XPLM;$(SolutionDir)\SDK\CHeaders\Widgets;%(AdditionalIncludeDirectories) + $(SolutionDir)\FIP-SDK\include;$(SolutionDir)\hidapi\headers;$(SolutionDir)\LUA\include;$(SolutionDir)\SDK\CHeaders\XPLM;$(SolutionDir)\SDK\CHeaders\Widgets;%(AdditionalIncludeDirectories) .\Release\64\ .\Release\64\ None @@ -165,6 +165,12 @@ + + + + + + @@ -187,6 +193,12 @@ + + + + + + @@ -204,4 +216,4 @@ - \ No newline at end of file + diff --git a/XPanel.vcxproj.filters b/XPanel.vcxproj.filters index 54b89f2..a815a49 100644 --- a/XPanel.vcxproj.filters +++ b/XPanel.vcxproj.filters @@ -68,6 +68,24 @@ Source Files + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + @@ -112,5 +130,23 @@ Header Files + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + \ No newline at end of file diff --git a/test/test.vcxproj b/test/test.vcxproj index ca632bb..0d77058 100644 --- a/test/test.vcxproj +++ b/test/test.vcxproj @@ -108,11 +108,12 @@ xcopy /y /d "$(SolutionDir)LUA\lua54.dll" "$(OutDir)" -xcopy /y /d "$(SolutionDir)config\board-config.ini" "$(OutDir)" +xcopy /y /d "$(SolutionDir)config\board-config.ini" "$(OutDir)" +xcopy /y /d /S /I "$(SolutionDir)test\fip-images\*" "$(OutDir)\fip-images" - copy lua dll to output directory + copy external items to test output directory @@ -174,11 +175,12 @@ xcopy /y /d "$(SolutionDir)config\board-config.ini" "$(OutDir)" xcopy /y /d "$(SolutionDir)LUA\lua54.dll" "$(OutDir)" -xcopy /y /d "$(SolutionDir)config\board-config.ini" "$(OutDir)" +xcopy /y /d "$(SolutionDir)config\board-config.ini" "$(OutDir)" +xcopy /y /d /S /I "$(SolutionDir)test\fip-images\*" "$(OutDir)\fip-images" - copy lua dll to output directory + copy external items to test output directory @@ -192,17 +194,24 @@ xcopy /y /d "$(SolutionDir)config\board-config.ini" "$(OutDir)" + + + + + + + @@ -217,4 +226,4 @@ xcopy /y /d "$(SolutionDir)config\board-config.ini" "$(OutDir)" - \ No newline at end of file + diff --git a/test/test.vcxproj.filters b/test/test.vcxproj.filters index a24f6bc..8e0dbbe 100644 --- a/test/test.vcxproj.filters +++ b/test/test.vcxproj.filters @@ -93,5 +93,26 @@ Source Files + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + \ No newline at end of file From 9f2791ae83e5c5600d23085f099fea1dfdcb0a63 Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 29 Oct 2022 16:14:30 +0200 Subject: [PATCH 16/21] Sample config: add FIP to default C172 aircraft Signed-off-by: Norbert Takacs --- .../fip-images/Adf_Kompass_Ring.bmp | Bin 0 -> 172854 bytes config/default c172/fip-images/Adf_needle.bmp | Bin 0 -> 9234 bytes .../fip-images/Airspeed_Background.bmp | Bin 0 -> 172856 bytes .../fip-images/Airspeed_Needle.bmp | Bin 0 -> 4974 bytes .../fip-images/airspeed_ga_tas.dds | Bin 0 -> 174904 bytes .../default c172/fip-images/dir_gyro_ga.dds | Bin 0 -> 174904 bytes .../default c172/fip-images/vor_gs_adf_ag.dds | Bin 0 -> 174904 bytes config/default c172/xpanel.ini | 29 ++++++++++++++++++ 8 files changed, 29 insertions(+) create mode 100644 config/default c172/fip-images/Adf_Kompass_Ring.bmp create mode 100644 config/default c172/fip-images/Adf_needle.bmp create mode 100644 config/default c172/fip-images/Airspeed_Background.bmp create mode 100644 config/default c172/fip-images/Airspeed_Needle.bmp create mode 100644 config/default c172/fip-images/airspeed_ga_tas.dds create mode 100644 config/default c172/fip-images/dir_gyro_ga.dds create mode 100644 config/default c172/fip-images/vor_gs_adf_ag.dds diff --git a/config/default c172/fip-images/Adf_Kompass_Ring.bmp b/config/default c172/fip-images/Adf_Kompass_Ring.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5c98181e3809c8a258b60c2a5d1a8fdad14a2bbd GIT binary patch literal 172854 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 literal 0 HcmV?d00001 diff --git a/config/default c172/fip-images/Airspeed_Background.bmp b/config/default c172/fip-images/Airspeed_Background.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6ef03232bdd690efd78835d706619252bf305bce GIT binary patch literal 172856 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 literal 0 HcmV?d00001 diff --git a/config/default c172/fip-images/Airspeed_Needle.bmp b/config/default c172/fip-images/Airspeed_Needle.bmp new file mode 100644 index 0000000000000000000000000000000000000000..87126f0618bcb81493495934b376bd0cfb80c18a GIT binary patch literal 4974 zcmd^>%TgLa6o$z*n=G=)BjgEES!bU|N!BTgjc>pc=o45LWtB=$0dLVzAx603;S4?Ng7X7nINWz2WzS-y_d6N{{Dd z`@Qw2WAUyhbsX;hd;!B&tM$VY6=!`jbSwD(I9pgWo6Smi$=f4I$%e}g~+Su6e`~8ovYhYj?6bdaaE`G4I zva+(awzj&unoK6Qx3_b-+|JHUrBZ=-wOTzqJOsMvLWz-G5~rKSZC2c)zfa<<5(99< zU@&-{Vf&xg>jkA~#?X|~drN^pARG=uTmgwaQT8%;W_xBl}l}93xp`oGsB+lF{Xl`y!Lu5@N-NIYd=JbT40v^)9r>CbC z@F`84QNX>hu&}(m9E-(1TS}!;!~_C*u~;OrAeh(I`5-Uu^ zq|7)vI@)LA4A*Ehum`h+8fKfQq|t2YOWl^Z9vSYqn23#$T?D~LCGm7hl1w_C#w9m5 zH%TlIrzE3vb!XcS1O#~>F&Z(1*k5Pj?My-^Mic{Vk=ZtCgZo~=S#FA4{D-oo)|W;A z{zA!vU}5RnA15XzOgeYO(bgYz_){SRkZ`HsjPvvJlq~X-5?DzB2*=^L+uGV90}#0+ zTwIb1MQ@DG&d!KVLU26`J!3ZvQC*`=i= zt^mD1X!L5ks&JSVb_qm3j D-Q(-| literal 0 HcmV?d00001 diff --git a/config/default c172/fip-images/airspeed_ga_tas.dds b/config/default c172/fip-images/airspeed_ga_tas.dds new file mode 100644 index 0000000000000000000000000000000000000000..4661a5114251a46683d88660ebadf005b9ac1db1 GIT binary patch literal 174904 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 R+Ppu(b{2@@#BMe5|4){i0L=gZ literal 0 HcmV?d00001 diff --git a/config/default c172/fip-images/dir_gyro_ga.dds b/config/default c172/fip-images/dir_gyro_ga.dds new file mode 100644 index 0000000000000000000000000000000000000000..78f85022cd1c8d1c1475312787fe42d4eeef72cd GIT binary patch literal 174904 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

V4Ue|7rNkw!U9bg+Es=_yGRM5A1fEZ3ukpS^Q1% zxyWX7;z8&+fd8Y=m^BG+(@tuSh&()mDTWhLQ#wzBeeKwsmY*s_IV%mQyG z&&MuEO>M%ur{a(IH8wUPS^&QEL9mw3^-l7o7&%Gk|4N7AA>5M?UMR!ws=NU|=vUt5 zF)sIBfsCcd$jBQ4eOHxYo;SP=y#{FqCG=YYFSI?XzXN(8=mK#o!haF|=qGXE2IMoE z9{I&DenI$eH&hwQvCc>FH+B8b_t=$7x$8?HEnoxva zW#4FUGRVRc2yrxZhaeeZJ_UR{4E(YSZ=@{v3)=O7^l<%;DJ8qBN)jS9T+F!zqr{{ zW9sTq0+*D|NZyA(!oOZ;sQ7MbObgx$- z|KIYnpZ>I*^e>VAGj)_(@mp7!r06Gv-6!SR1^+j;w6u`!BO>m=dH|EEY|@fJxQ9Vd zTz8kNLD+9ylX{qIyGzx(+;WUq|4DzZ(nkG|bQe%uxhstm*FIW6xmsGb<>nsv)dHuU z*iHVw<*d7&@V1BQH5|vzYkTnpv|hNBqiYd1~~>LnD;`KmF;?vLXK`M$b+#o>h13=+T8+1)tLky9f0c z%P9Y(e8g#?XLYu>3;LS02SS1_Ww*?+q24X<1nIJ) zjGH+?xU{3zq;o_*&%|&&^?)t#Kap6>|w#rOJ!{y=}Q&BnM8vU~K2 z2g#3ZRfji;c=1{K$1c7&E{^bjZ@6JL{b!d!9(ZzHxlX5|ltcfc9`$MPnC|z&LF7$9 zPA|de0DqnCy3cx^d~4@hZz0|{WUf!rMvN2~EunXQ^P6mI^tCYm&grg&-wy%zH|tg! zVb&vm4*A)j0|V$_Y;4R&eJCkcAxf zj&OYqma)hC#X5W2sHX|LOUR8PtQ(&{QB?)__8>0j-p*0FbwU=S&*S3Q?uo(g@Iz>0 zG`#=ae$}4v`U66*^bGHVJ`ei@jy{fxzjcJ)Q(fHvIe=pUU*N--$`?XGRZb~goCkgf zKjZVO>Z=C$KI$cFRyUdAupaaSpLRN7pQ!#b5BQJdt4*Nae9oLpV+ntRz0UCWMT_TN za6B;32MLG7!X<-7Yeq(Q_h*Ikbk`I9`T05U(^bQN5gBm^@c%Gy%MYjr*bpa=2K~c* z)lEDPc3v0kF>h$8%F_yZ^FHMbay?>VV&{_&z`rR|4oK3<2>MYG_YrvT7egGz3QiH?HCy*KKO(E3b4jf>sS3Xw*ub?2h>vl?=TL&-66)>5yXFV zmdD!m2{^+4q{2(Y`w-t5k%hdM-KrfD9PjVt^T)@@j{tAwaVMYK1_vdNgGwm$%uWOK zyQLeD--XwDtK(bOgN^LrJnLbQGB0sp=A zMH%!DcWUI))me!D4VN>%5)~D9!TvweJ;Z+8lEJk*0RO7#;Q3k4Hv#_04}iXwgfzOi zxcBk>2)Dq0HDo?}`VYUeT2~p%VZgFZrlqlY?}ir20blfk^nayQ7a!gPIe? z-dN~=BL&f#g-2)y<|Dz2>$=$)>gPK9LmofrPIlD;Uev$d9WTRq@CyN7@36{ml@R%W zfRnJldnffqkfFGa^vLHSEleG~6J8$ggM!C#WMUZj0s59_i}xtwz3=jT*Qg@w5x5-% zzIf#h58vZee7KKsgy8rU{os5NdLR9l4?V3xK8nGT4~3g?JtbXH7!Q^Tf9_NL|29Vt z?4!4LeP=PUKg_+Oqw*oFU)IvH58p2^TK9N7$eV#agup7-8R&q_y9=}b3I8}a=pXZU z94Rj!9#-qtLgy~@dExt57fJXUEy+4P@|a2g3BA&-uH0zLrl0)l30Q;hcW&t)f}dz- z-O(Hg@V`y)JwYGoq>Ijz?LOK?abuG7DArA*^$C5@;rOoaihj^jUVa7F-y0b2;yQKY zTlp4&Uq~P1^8$WZ_Kcbuj;u_?(A;SA=_QT2vh2ZChTLPkleu zOMfBsZBVW1hnm>Zx?art>|x|FyoPn4e{3G&B3y@tfo{|j^qBwcfh*@6D)8iXg<3r_ z;9rq*^jMY=^@(64;dTG44|xm2XOPF5hXnY~`kd*mUj_WUeCM%z z5A<)wshHoZJo1}c%8~CWAp!qY%wr=Eg?SCib)93314QRb;D0I}4BLeokezvUo@4&Xz=Xg)~1e{aUe2>5q!rpD$4!&<{%f7=;8$+J&}?4CkA5sPn}61Bv&p-vj*Tx^IRdMz|!oszHCiv$l}X z%e+w7#Bsy2@IBBd6jYUF-_zLB7T*>T#^={q6FX;@jgdnnpDer z5?e(s@;x;VJ=X~TVl?!_O%tqt`IpsiK1};LLZj0iDoECm@6+$kJi0I(FLW#%e6tSX zLmP(w75&JwEBxa8fXrV{0er~M^l1+rDaZO=A8P#-{Q@U;{o8t1?vIR6ug*0i-dT}R z1-l!;P9(xj>I3>C)CY?4Z9*Qj*9yBJCUyb%JK}MkHpp4};mG$X_nq(`2|Y{bhYhl- zAIh`UypP}-e?Q@Fa8*Mt08a4R^H`^Cn2al=2)=+cA@RKNlWJZ_Lv@3T?-@~uN1*Rc z$_L7Izg@)_uYmV#*(Kl~P*gcG5eh=j06v96crX0V1;t_>1MoK|!p|>lxTlu&L_mW= z>ha|p-@ZH*_T?TJn1s9HO}{U7^`QCLrj|V;1wYSC>A3b;x4OIy0P9P!}% zwg2?%X46Zi7_BzuE>p5*=h2Fc_^nBr1Mu%JXTG!~rIAlIzFe`Kc;M-57kHqJneXNL zdV@a1)s0qPLK^aMVaHVD6h3++iSERis!1sFJFX=J=Q|SX& zURCPK{RDcc2XqgG5Bd)Bep>c;rd#LpJugAd((f1UBPiexe4;&=lk>&-fx_QY2L3;c z=a*xiX|=t1mz1I|7YYIKpzh7phs)vDwk^*`)z6SQ1wSw!G;VQS#SzfQJx~n&n@VUm zr9aqCH!=JN#DkVG$l)Gb?@6azh>p-!cN{6R=GilHi3f4DKI99H6y$eDY90lCpe!g) z(BsHH75<9S#^Z_6R+;d3Ri_9%fcr?$v9j5#(z%^>1MsX%Q6}*zo&H;?Me7#&oozYv zQlr(;9T`piKJ9u$6hu6`-d$cS>>6n$@?TdP)9toA*0JQTXI*-du5Xq;ntrl< zvL}UfpT6Kw>C)BBrlz(%(EDAv2A$SQ_~##^b@2J_O5S*+)vsBmc+x zI;js>N8U5wdzSg25CR;ZBIQ@)dkV87sD=}O~qOyK6%sV^nK&Vt{#A}8tQ*A12d z@K-^v{k`xbLGyNw3%Yk}4GpS4p*Deb<(Rgrg8G@gTNAN%2jz%ux!?~C_0=l;0}9~| zcUkQ_xNiBeBn{(~>m3<)Fpd+I<`Z^GA>=#1t6^h-jo(?Ao4u{Z)NusU(LC6WI?`O` zGehs~yE<-0@=sQik6%&>{!yFu8rR{CD=&(sp8r(W)`wVc-0jFIq#ngOsV^EHS0e5c ztxrJy5iHK`iu~P)axV3$FZw-GpGQ1+urSAwZC#;5Lc5;z{D;#O<&x57(+_X?=(m@Y zK1q5HkqUV*-LXJwy3ieV@fB?AW;Gh}hcX^KcbVQtJ$O0d5<}+FoVw<0YicRa)4qp=5BokzbD2Iaa_ahh(Z?M}SeH_q z|3yD{y63U)K{@8hI=8gmJYYHS9|k@7!9UGRSMD;66vP;ws6ibJ^dnp0Dr2UOc);je z^wq~4ZErF~-IKYFeq`_m1>UAjSU~NYb%TI|^djjoM)ttV4!)ey z@tn$^V^B|sx?jMDaCc}TVP8`ZM?5u4#9s6f1P5>VV=&~HCZPg*s0Pt-_^b6k3^p+_z_#$p1Z2l2z@c_W%9e@mAk+#?iGCC-t}r9E5`FHjy;F`x7~?f z1s_IL{UH23dDQ>Pq5n6T9z6ngP{gOf?Th}s3G#q=Ks{JrYb*W<{6XM?Ewp>LJ#G(@ z&NlB{2Yu~Eqm)H=Fqeb{Fki~I|>0^Gv> zhx*5^7q8>^Ge1X-TS|`4ix|N3Zr1N3?Mz1v47<$ERL_xZi;Ev@St z;t^+3KI{4+8+tGYe_=cBLdUTEccJ$$8Ei8BrMlnGI-l_MVZRae#M;6NuRJS_@Xd&qI(kIC`%LK7!88Nan;u6IE5T=WrYHHGntW`Ms#?*SwV$4Y~LE9!K*r?Ez3;v$xgV!ZV19bp@pU-bU z_5Ly|@`LeS`fp-=l2qh}rGbA47pTEw%%8+dVZTlt*+EeQ|G$7|d6sbr{Q>fSzs_KR zoI-yDP-IoH)MG|nwN|4+ca?(ABCn=?_h&t39?vk~Lw&&p!Oyzl*mm1S@=*=&Vd-j7 z7Yn@s^V(G;@jK72GEPV-98ETK zlKRPN=$Clh($zy|>g9y9L8F_^cn{XmL3^RK?F#gHwyAjHg}gUH-;M#FqrIh3B+{tdS) z;gQe7p;s1irUm%N`>H4JKP%)K`19?P_q)RPT_~JL|4~TLpx-yc;i$OK=X~Anb3tCF zBQbetsSHRf($tZCCt076jq7AZ1ONY@j|TX2DmGSZRN*k(;mTz_$3uWS`n>$E&(C}> zpiSyz-q!%_zUl-g^nxs7DBp1(^Usqsk#S-8iMk`rOTU$KSDD7r?%vHjiT!!ZCmS^P zZJ#}#exe0-Km4OT=E@i5A^SmZRL1(yKLL2>u6JMP`d`rxzX$Svujp?wp&l>iLZ9<> zyKiY}lkfw)xnm?(0)VHE@jumQ_I~v2N9^}4D>C{${rO0_PWbnjPb3YOZ+w*cSKJ-n zOS$(t^s(3-qx*sp{Raj^G@v;1M%r_o}AA^0L9=}?T zzLz@7!yo@pd3pb-Xl3TinJ>SReXafJr=LFc%Ky%lx~rK!yZ(LSv{TykgJxvZ*V8`^{~z?YBLAQ{ACj^N{y?xt4f6m{ev)y%&;7bx zw+8S}sIB$6tkPo=+^bVZ_T_x*$dTTua1S4c;a?8A?|tYY^tXVeF&glXcN#4F*V!b} z??=wwAF{63@XV#BnZKm3B_3p3+4q9*c4Q26*O+D`@6XJPUTI(X)%5tw9_DeW9Vx z{rSk>N&oE6H0$cCXD!FM6{bvw^KuE?+Px^fSi;qF0w z(4UWl?_$6|Oz%_2F#Qjruif=sZ%=dp0^sXP{z0{`S8r#w^?RGSzS-7$#w5fSPziY} z^BVQW11S7~KLPSKzpw`U-;!ZSA^jsw8uLp4x}@0c8MJ>s`gr<%Cc<&4C5Ufd{_N-t`G{LY-SaZ~A?qx& z7A;C-{>tkpJn2BZ^d|gu99g;=YR@90^@{#@{4E*0cYW^0*160V$jQmQ>FWmP>Av^g z)lDYmKW%7i0{mso)bSbgXB$8A(OXmD9zG7ke<*W>4)Pmu;w)ptJ$fJM((?Q7ba3?k zy#FlxQRYprT)K(l@I!|Xzd-y+_ezBUeSOZsa0u&vg#Xq3%sYjpu{|=5aK8-ne`-H8 z%^>)|euH%`==G(yv#k&>LVk3gJ{wZ?Pq#eXJj3Ui*R=xoGr#jDjO=s#CPs9@J(8ed zeKqocag6HwgPAyfrw{c&IPQYJ(2DV9@CV)(e%{x8d>?%nA^)Xs-3|{v`j$-{+u-ki z_O0cB2Npw?0N?*UR&12yF#Jfz8_S6YD~)&R37;%uRZ_|r?ZImevW;-pIauGQ<`ocb z2><-?{_t~%2kGD=tXEX`4S_sxHEiJh)!GU190%eSyuTX#AHw&2UU)Q_pbvh5^`D>j zd%iCB)6YZ9m~QM5_B{O#t4tv~^@#ub^;3W6eZ}BU;qyFJ#{P61KL2^wi~9)z{869x zIp5s>m-Vo}^>z6M{$EeHeNlMz4g9}>|2O>q%geL-qUiL?dd@fW{|)_rL;v5<|ChyI zzIpE7Hh=ks|Nm{n=gX#_Z{Yt8{J)X^|38=iaAbbjd}g}muQU#2!X2K%{mzg%*;|f$ zPI=3imT{H|pB8zZ*vH+2{nl}ebSm|DSUqk-f*0#1@hiKfg&4B#ndL*EsN-UB28qJ)a%=$J|Y9fJc z5TmxfUF>hIiJfRSpwFd4qy4_dRT#C?f)7{_?t~u0GCwEzUy)D|8!+ zuZ~MCEs2lQR$-sB8Oc?{1-7BgOx-{zv{7&5x)dW%6Y*;)cs=XlPz8S9($yRT$7SSm zN>b<=Uav@7+}uY^mfOYtK|lAhufu`F$nSqp%RDWtM~ngZ<7upO3?eTu1%0J8F=yE(U0}OwuX5T=aBe1-FHuSKI>F7`={yOJA2%1%O7wY?_RYG(;u38eR$r) z=Z)XFID&b`5yM@#7!mKuKwN)DGT`c{i)&rKLMM%-FNxopWh`2g^&v~1Z?*2zoubJx$o^W;5yu^z`0zqhSc zV!cauRpRU?}`oxbn zmEO=Do_`q6*#~Olql+(QT+1V;SlJiu^f?7}Q`qmMxBa?%*JEGDvKPl$$6LItEX%)% z`A5=gtix-G(P-YR!+uXl*kGM?-~IKvUi5Vcp-{(w-$Qb}hJDeN+njAuOSAdp(zQ1& zUA;TedFBu4tm7T)Ek=~DI{xPiyugc9rtXM~uOmL}X{vi8{GAs%y2JB7d;H;?H|}3p zeOCWS>3`Y(lJtlD4ilMg%Kfp*P~W~Tf4S`{e3!j8Rer{+CEF zTDD^-GYxp*--I~#(q$MyFE;z_=pvMC+?L=YJTj`ZTGqv&-^z>&oj;C2H%80P1Un_fS6W;FJ-G`?b8hwR5pUB>CeImB0AQTB#qJFs8+8TQK= z%G~2g(QarlTHE6qQNNIF{b+K2Zn;79PfamYZ|8h<_1f7S>u0-AKaBai9 z!nU#=Asg{`n^RF9*opntunr5iHpDyq$C0O7qTAEbRLA|ps% zxj*YVy!5-8%(S$2Y2}A2Z$q7hl=aD~vhMD3=?q+3&Fu-v_VIm7e}?vm+amyuG8ua z;=XD*#{B^DZ)=f2)p5j?yYQf+=&Dlo)AIS&f^SM=4(!94sf&ocbVfP&(af2tsb$Fb zX?pVc|Cnw*pY=TJQs!QC@l5tRDp|K~-6fE7yFUJSaqD{Y*Sbk6=6uG+f@91JS_=Si zKDrdv!(%kaVjixl1~G4lOFQ{oy?b~I_o;Zil=}*xo;}3__=$co;A`kh=$xVQgUIr0^*yY9O7^4v__!}q`Oh2?h<{_HEr zexC&eg@x}I>`r`cd|tbM(}BeOXozI6u(M+d_H7pV?*i{-mmI_IZqTT3O)=&W-Gf3S@CqpfT4 zRnU9J^!l-Q$Z@Gk7JWiet0Pm{4=CSOEc#W+hI$q5@^-@{Tm#Hg!*<#~=Dg9TypsLN zyB>NdrN*>7QSD2Qdau~nRB#RSH|_it*DnTr={U+Rm%JH#RNr{=WT0>1){OF7Zdte$ z@tkD0`tf+Zh!TdhVb4vT#r16-HFWC zV%~L&Cq~15+zS`Z!^nQ@E^)t{Qm^twm)qUC-eB2=*W8QoK8)0x+I`X;t?L2*zJ7Fj zXf`!A>d}{OcOuFkDyEzN@S9Sy8=Na*KarEw+0DYj3;cU0S1G~U$>>CO3)MG|npNzgi$O9hpdW4)q z8ktwXyUK0gh;2);ZrBHDwp(W1JZ}GGIr7iIM{ei)ebP4c(W#EFdwg#b^GVaLGaFr~ zvp)UC{SQw!e~~9XStkH+=1g~8_&n{k#ozhPqv*^64|QSH@y#uJ_ORbp>ctnu zuzv7Ao`13_{QXnMEBb5LA3%TQV9j~;$D;f{jRwc;cLp&J;dlRg*-6TQeC%_|@1Na3zQ=iQcM~7lMnj_SY(3DM=h?1Ij35tjomm$WuJJoiAJ4R5Bft*&nLp`M*DjhjMqp$ICJjx-1jTLvZR4}_@etOGS;9^i~m5N zGoJiNx@kG}zZh(|v)K#sSev%F+kA&Grtq^va6zE~=)gPvXJ8w;}ET6)`||3!YJ#fH1=)B9x0o@wVDo)`B; zkBdt1vEDqxk^iakFMMBkq#b_o;u9r8TQ7V-1_j0N-;;9_R)6bn=9g{X%2c zN;c-J-?Vn=$$QaH*ZYU#&Pz&@b+_+o7JcS|>4$&m0l&K>Mw7ulbZ+M2kWHJ=Wkj$G2L^*{S25_9zAc@M%E$!;gys<>|-J26%5d?Gp}!0W?#VP)5mP& zQ;T2B+HjcmoAjGsP;Q}p9jFgGW8<&Kj7}998JPlqq^y;^{_SPUin!1G_2=wkhjL5e z`y1IOIvRX7dkO2tT0L^P2YlXfbT7Ki4rTsVeD`l6oha#tVJBkLOdWS24;XHa1%-e= zwuu;+`um@b`Mpx%bnC$SVkcfedn4}hf?@Wth1~=_0sBC2tcM@(*YQpzRG*cMJ}_wH zLI1!%j@cEC_xUBIb^Y%6;{ooEwL*7INK#18ZhI%{`O)7YmG#{>q8@WW2l2e|otfyH zj{WmARTYG{qprm>b>89cEX2w}yaB&Oex`P^&q3SNJ_tPD3c?GYpS*5@eRMIAD&CLw zspu^6m;GN;&u8jtOqqHKbse}n_BqtCSI1YOj|1yK?5M+nzMm{96R7({-y1mW13l(oJL}pHB*vm2gQp+~Zqz>L#ntf-qW*m9d#5{oU}vTdZI=|* zgK68@N1z$>#X7M;?0=^26QQZk$qApo68NCOzQvCsuN=b#`;lmWr(j*lFOLkUeIB&F z3E(gMVlmQ$2lK*Cky4xJlcb=Y8x1@(6BzM(l@vtPc6^mBI0kDgz84NAwQg3@s&%(g zvFZ<2l<+wDd+g*0`-1-B>HUA~Z<3afP|GnNjoYVNzc1^&>GnZ$<5*)HN7N%i-(6{J zZft&%{lgWk8>&m=pM3Jk6VL3-GL8j1XR^*n+H8PdiS%~v53Dy(f**ebt-$D=7Z>sJ ze#((kFQ{WN_UFd$A02&T>i0LHPZAb7gLqx*>qMOZ{7%bnhhObLt&i~#^uNbW_yzrXDF&_bexhgZ7$0fWWTeF*%g##B&{ z_eZ{k=t6Ee7Jzd1+t;9QsRjMZ-WU{pt7pszz)z{Oylng!bl)WQ@eY6Imo>JbUorOq z;7Irz(Lb;?PnMwt<)S_he4`|O#!U9>Lmw|NO3p_{-OSR};GsczqR*#GyiYk{|)|YA^Oix zzYSlfLp&DZWaCHy;=gu1?DyUA#jzS3A4o+11rfiNG#=Py$2F0$5X8DmmE)=clU5XnRR#k zz!sbSs#3hy=Rd>#jnaq<{$Y%ve`pvf*`4Tf zH~-*U7yZS4SE$Q+8E%1$hSM|d-cot{tBk{=JzBXD^SLPcz<>^R_U+%jD|uEIcDnNQ z>S^CfMeA0xAHYe(yZoEb7asB5MUC)_tz5Bg1b&&~@@Iy5U+jX;XN~xtJx$L)5T4i6 z5&nx8`2GW@XYBd)tFQjri2FLe{r!t*4{R*nmCpF$25Ir#fA<*Th(6nL_Nk}emHriU z4GVGfhuQ-4m$J@t;a1w)QdH~u6G`^sb^nKTiKW^1q^fZA{5QLqanM?yB>g`hHk+!3 zDW9w3FO7|eSh{*n^7z#!gJ`dEBpq9d)`}wtdsVjcVe0snE-qw~0JUx!zGpW^M{`s+W5ILZBp-rsUN z_US;}I69_!D04>gQ=UKVKfriEcJ>P|gx?z;=~w!8NBOW3^Q&|W+=063#E!$i8l*lc zwQuX)OZ!C1#lAPf?=bV;^{B@O0TchF%{xvnU5z@&bmyCVZ=H8;v zut#2a;e|Ef_f8#+pu^~kzD+ue|4!vV)tc2O66YUoN5A+i<5}g*DGByMRMdtI9@GOX z$`Aj?;Y~A=yVFN)<<{egKi-uJzwnG?ttR6Q`YWFDu-}{T!^Kv|A1VMpgZ^7%+K~Oi zfyw=|@w@PUIKtl%wrhzG(Tg{tuhfaeEdyHgGd+>$vxlmP*LQ-i8Ik8x>1%`iJ|lUo zZGN{0?~Um`I>x*vzBl|l_TP(+^GT1fzaRJ|`}cquXE$U2R&XizNtPIjf6^r=X-340#sF-n`2{nVS4vGI>4 z=j-LZJlSj3RKqVryX3t4kc8*cx_;0c5tJfme?zasjt+{&%i*^C*sMOd!8;^0QjRF_sLXuNyX0q~CA3RB8`D_k727TUW$;@ZqFG+R;tu z$6>^RGA>qveF4?_TGA=@-<&)~RPm4Scwi^?B#KZ&|Wgf)-=0Ts2`vT>mk9zpN^Bws-_)lxY*NgsS z&hLV+uflwuQGVUgWZIA=*^UFgzO*#oy~u+&`Qq4%=$e$InWNJzMV?!6uKjkgkAqZn zGyR{}`F!Ggulc3#X8wL_(X3n9r{w0M_lo}Xo+i_8im(ru&Qx+ttc)xV_ wnKQCAD|@r^+^gI-HBQ<9Jqwt5&j#orP39uyI-db@xa|qhv(CQ>Vp;kB0H8a-cK`qY literal 0 HcmV?d00001 diff --git a/config/default c172/fip-images/vor_gs_adf_ag.dds b/config/default c172/fip-images/vor_gs_adf_ag.dds new file mode 100644 index 0000000000000000000000000000000000000000..da98e930dff8000fc7e5c6e044020f111a8bab35 GIT binary patch literal 174904 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 literal 0 HcmV?d00001 diff --git a/config/default c172/xpanel.ini b/config/default c172/xpanel.ini index b4fc0d4..b274a2d 100644 --- a/config/default c172/xpanel.ini +++ b/config/default c172/xpanel.ini @@ -141,3 +141,32 @@ on_push="on_select:SW_CRS,commandref:sim/radios/obs1_up:once" [button:id="KNOB_MINUS"] on_push="on_select:SW_HDG,commandref:sim/autopilot/heading_down:once" on_push="on_select:SW_CRS,commandref:sim/radios/obs1_down:once" + +;--------------------------------------------------------------- +[device:id="saitek_fip_screen"] +serial="MZB05779E2" + +[page:id="ADF"] +[layer:image="fip-images/Adf_Kompass_Ring.bmp,ref_x:120,ref_y:120,base_rot=0"] +offset_x="const:200" +offset_y="const:120" +rotation="dataref:sim/cockpit/radios/adf1_cardinal_dir,scale:-1" +[layer:image="fip-images/adf_needle.bmp,ref_x:90,ref_y:8,base_rot=-90"] +offset_x="const:200" +offset_y="const:120" +rotation="dataref:sim/cockpit2/radios/indicators/adf1_relative_bearing_deg,scale:1" + +[button:id="LEFT_KNOB_PLUS"] +on_push="commandref:sim/radios/adf1_card_up:once" + +[button:id="LEFT_KNOB_MINUS"] +on_push="commandref:sim/radios/adf1_card_down:once" + +[button:id="S1"] +on_push="on_select:PAGE_ADF,commandref:sim/autopilot/servos_off_any:once" + +[light:id="S1_L"] +trigger_lit="dataref:sim/cockpit/autopilot/autopilot_mode:2" +trigger_blink="dataref:sim/cockpit/autopilot/autopilot_mode:1" +trigger_unlit="dataref:sim/cockpit/autopilot/autopilot_mode:0" + From a259dbfb1b98a4c7c2b2cf2c1ef97fc09d67dcea Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 29 Oct 2022 16:15:08 +0200 Subject: [PATCH 17/21] Minor modifications to avoid compiler warnings Signed-off-by: Norbert Takacs --- src/GenericDisplay.cpp | 2 +- src/LuaHelper.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/GenericDisplay.cpp b/src/GenericDisplay.cpp index e6da2df..1221c65 100644 --- a/src/GenericDisplay.cpp +++ b/src/GenericDisplay.cpp @@ -139,5 +139,5 @@ bool GenericDisplay::get_display_value(unsigned char* buffer) guard.unlock(); Logger(TLogLevel::logTRACE) << "GenericDisplay: get_display_value: " << _val << std::endl; - return use_bcd ? get_decimal_components(_val, buffer) : get_binary_components(int(_val), buffer); + return use_bcd ? get_decimal_components((int)_val, buffer) : get_binary_components(int(_val), buffer); } diff --git a/src/LuaHelper.cpp b/src/LuaHelper.cpp index 902f8f8..4f1ad9b 100644 --- a/src/LuaHelper.cpp +++ b/src/LuaHelper.cpp @@ -283,7 +283,7 @@ extern "C" { LuaHelper::LuaHelper() { - // + flight_loop_defined = false; } LuaHelper* LuaHelper::get_instace() From 1313460be3d5a1ed027f3d605ac3e05bb9e3fd2f Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 19 Nov 2022 16:00:42 +0100 Subject: [PATCH 18/21] Add Cmake files Signed-off-by: Norbert Takacs --- CMakeLists.txt | 1 + FIP-SDK/CMakeLists.txt | 12 ++++++++++++ src/CMakeLists.txt | 8 +++++++- 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 FIP-SDK/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index bf554c7..bb1073a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,7 @@ include(CTest) add_subdirectory(hidapi) add_subdirectory(LUA) add_subdirectory(SDK) +add_subdirectory(FIP-SDK) add_subdirectory(src) add_subdirectory(test) diff --git a/FIP-SDK/CMakeLists.txt b/FIP-SDK/CMakeLists.txt new file mode 100644 index 0000000..fc6e407 --- /dev/null +++ b/FIP-SDK/CMakeLists.txt @@ -0,0 +1,12 @@ +add_library(FIPSDK::FIPSDK INTERFACE IMPORTED GLOBAL) + +if (WIN32) + target_include_directories(FIPSDK::FIPSDK INTERFACE include) + set_target_properties(FIPSDK::FIPSDK PROPERTIES + IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/DirectOutput.dll + ) + + install(FILES lib/DirectOutput.dll DESTINATION ${PLUGIN_INSTALL_DIR}) +else() + # Linux/Mac versions are not yet avaliable +endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a6e6a77..41f9e24 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -14,9 +14,15 @@ add_library(xpanel SHARED Trigger.cpp UsbHidDevice.cpp XPanel.cpp + FIPDriver.cpp + FIPDevice.cpp + FIPPage.cpp + FIPScreen.cpp + GenericScreen.cpp + RawBMP.cpp ) -target_link_libraries(xpanel PRIVATE xpsdk::xpsdk hidapi::hidapi Lua::Lua) +target_link_libraries(xpanel PRIVATE xpsdk::xpsdk hidapi::hidapi Lua::Lua FIPSDK::FIPSDK) set_target_properties(xpanel PROPERTIES CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN TRUE) target_compile_definitions(xpanel PRIVATE PLUGIN_SIGNATURE="${PROJECT_NAME_LOWERCASE}" PLUGIN_VERSION="${PROJECT_VERSION}") From 0fedd5321f335992e27e8496063ec212a9588938 Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Tue, 15 Nov 2022 17:58:48 +0100 Subject: [PATCH 19/21] Documentation: add config description for FIP devices Signed-off-by: Norbert Takacs --- README.md | 7 +- doc/Adf_Kompass_Ring.bmp | Bin 0 -> 172854 bytes doc/Adf_needle.bmp | Bin 0 -> 9234 bytes doc/configuration.md | 3 + doc/fip-coordinates.png | Bin 0 -> 71920 bytes doc/fip-coordinates.svg | 420 ++++++++++++++++++++++++++++ doc/fip-screen.md | 165 +++++++++++ doc/flight-sim-instrument-panel.png | Bin 0 -> 106124 bytes 8 files changed, 592 insertions(+), 3 deletions(-) create mode 100644 doc/Adf_Kompass_Ring.bmp create mode 100644 doc/Adf_needle.bmp create mode 100644 doc/fip-coordinates.png create mode 100644 doc/fip-coordinates.svg create mode 100644 doc/fip-screen.md create mode 100644 doc/flight-sim-instrument-panel.png diff --git a/README.md b/README.md index 21307cc..0b0d614 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,12 @@ This is a plugin for [XPlane 11](https://www.x-plane.com/) flight simulator. If It has a configuration file where you can define the logical connections between hardware elements (buttons, switches, displays, etc) and the internal [dataref](https://developer.x-plane.com/sdk/) of XPlane. -Currently, it supports two types of USB devices: +Currently, it supports four types of USB devices: -1. [Saitek Multi Panel](https://www.saitek.com/uk/prod-bak/multi.html) This is a device that mainly contains the buttons associated with the autopilot functions. +1. [Saitek Multi Panel](https://www.saitek.com/uk/prod-bak/multi.html) This is a device that mainly contains the buttons associated with the autopilot functions 2. [Saitek Radio Panel](https://www.saitek.com/uk/prod-bak/radio.html) Device to conrol radio functions of your airplane -3. Arduino based USB HID device which can simulate switches and displays customized on your own. +3. [Logitech/Saitek Flight Instrument Panel](https://www.saitek.com/uk/prod-bak/fip.html) Device with a graphical screen to display aircraft instruments (supported only on Windows) +4. Arduino based USB HID device which can simulate switches and displays customized on your own. ## Configuration syntax For configuration file syntax please see the document [here](doc/configuration.md) diff --git a/doc/Adf_Kompass_Ring.bmp b/doc/Adf_Kompass_Ring.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5c98181e3809c8a258b60c2a5d1a8fdad14a2bbd GIT binary patch literal 172854 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 literal 0 HcmV?d00001 diff --git a/doc/configuration.md b/doc/configuration.md index e2d6c4f..c9e7536 100644 --- a/doc/configuration.md +++ b/doc/configuration.md @@ -257,6 +257,9 @@ you can define a simple display device in the configuration like this: line="dataref:sim/test/altimeter" ``` +## Flight Istrument Panel (FIP) devices +The configuration options for the FIP graphical devices can be found [here](doc/fip-screen.md) + ## Example configuration file ```ini log_level="TRACE" diff --git a/doc/fip-coordinates.png b/doc/fip-coordinates.png new file mode 100644 index 0000000000000000000000000000000000000000..a3c74fb1d2eba79636b5a1244ff4347beb87f9f0 GIT binary patch literal 71920 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 + + +0,0XYRot +Layer 0Adf_Kompass_Ring.bmp[layer:image="fip-images/Adf_Kompass_Ring.bmp,ref_x:120,ref_y:120,base_rot=0"]offset_x="const:200"offset_y="const:120"Layer 1adf_needle.bmp[layer:image="fip-images/adf_needle.bmp,ref_x:90,ref_y:8,base_rot=-90"]offset_x="const:200"offset_y="const:120"Base rotation = -9080200120320240 diff --git a/doc/fip-screen.md b/doc/fip-screen.md new file mode 100644 index 0000000..d51cc3f --- /dev/null +++ b/doc/fip-screen.md @@ -0,0 +1,165 @@ +# Saitek Flight Information Panel (FIP) +## General description +The Saitek FIP is a mini screen with 320x240 pixel resolution and a USB connection. The main purpose of the +the device is to display flight instruments (speed, altimeter, vario, HSI, CDI, etc.) +The FIP device contains six push buttons with LED backlight, two rotation knobs, and an up/down +button to change the virtual pages. +[See details here.](https://support.logi.com/hc/hu/articles/360025266434-Product-Gallery-Flight-Instrument-Panel) + +![Markdown image](flight-sim-instrument-panel.png) + +The Xpanel plugin allows you to customize the screen content and connect it to the +simulator's internal values. Of course, the button functions and the LED backlights are also +configurable with the plugin. + +## Saitek FIP device +The FIP device connects to the PC via a USB bulk endpoint. It has support for virtual pages +which means you can define many pages with different contents and the pages can be changed +runtime by the up/down arrow buttons on the device. + +The device can be identified and opened by the unique serial number of your device. This serial number is displayed on the screen as soon as +you give power to the device. For example my test device serial number MZB05779E2. +The unique serial number allows you to connect more than one FIP device at the same time. + +It can display 24-bit BMP data (without the header and padding parts) + +The current implementation uses the Saitek device driver which provides the low-level +functions to set images on the screen and handle buttons/LEDs. +## How to install FIP device driver? +### Windows +First of all, you need to install the Saitek/Logitech FIP device driver. +This can be downloaded from [this location](https://download01.logi.com/web/ftp/pub/techsupport/simulation/Flight_Instrument_Panel_x64_Drivers_8.0.150.0.exe) +Please note: you need only the "Flight Instrument Panel Drivers" from the above location. The Logitech support page +contains an "X Plane Plug-in". If you installed it previously please remove it because this will +conflict with the XPanel plugin. +### Linux/Mac +Currently, Saitek/Logitech doesn't provide the device driver for Linux and Mac systems. +Therefore it can't be used on that operating system. I'm looking for the replacement of +the device driver on these systems. + +## Config options +The Xpanel config options are created to reflect the SW design hierarchy. +At the top level, the FIP *device* is declared with its serial number. + +The device contain one *screen*, 6 push *buttons*, 2 *rotation knobs* and 6 *LEDs*. +For the button and LED light handling you can use the same actions and triggers as for the other USB devices (Radio, Multi, etc) + +The config item "screen" can contain many virtual *pages*. Each virtual page can be a different flight +instrument like a Speed meter, CDI, HSI, etc. You can select the actual page by the up/down arrow buttons. + +A virtual page is composed of multiple *layers*. Layers are BMP files with 24-bit color depth. + +Layers are put in the order of appearance in the config file. The first layer will be the +backmost while the last will be in the front. The black color pixels (RGB: 0,0,0) are used as +transparent pixels, so those pixels won't overwrite layers behind them. + +```ini +[device:id="saitek_fip_screen"] +serial="YOUR_DEVICE_SERIAL" + + [screen:id="fip-screen"] + [page:id="ADF"] + [layer:image="fip-images/Adf_Kompass_Ring.bmp,ref_x:120,ref_y:120,base_rot=0"] + offset_x="const:200" + offset_y="const:120" + rotation="dataref:sim/cockpit/radios/adf1_cardinal_dir,scale:-1" + + [layer:image="fip-images/adf_needle.bmp,ref_x:90,ref_y:8,base_rot=-90"] + offset_x="const:200" + offset_y="const:120" + rotation="dataref:sim/cockpit2/radios/indicators/adf1_relative_bearing_deg,scale:1" +``` +Each layer has a reference point (ref_x, ref_y). This is the point of the layer we use during the transformations of the layer. +You can select the most convenient reference point which allows you to use to either translate or rotate a layer. + +For your convenience, the layer can have a base rotation value. This means that even if the BMP file is created with a different +orientation you can rotate it according to your purposes. Further rotation is allowed on the layer but the +rotation angle=0 will be the position defined by the base_rot property. + +A layer can be moved in two different ways: translation and rotation. + +![Markdown image](fip-coordinates.png) +### Translate a layer +You can move the layer in horizontal or vertical directions or both. A horizontal translation +is declared in the config file by the offset_x and the vertical one by offset_y. + +The value for the translation is in pixel units. You can use three different sources for translation value: +* constant value +* dataref value +* return value of a lua function + +The ref_x, ref_y point of your BMP file will be moved to the value of position defined by offest_x and offest_y respectively. + +If you define more than one offest_x only the last one will be used. The same is true for the offset_y as well. +### Rotate a layer +The center of rotation is the ref_x and ref_y property defined in the layer declaration. +The angle of rotation is defined in degree units (not radians). The positive rotation angle means clockwise rotation. +Similar to translations you can use three different sources for the rotation angle: +* constant value +* dataref value +* return value of a lua function + +## Create your own custom instrument displays +In this example, we create a virtual ADF display. The ADF has a needle pointer and +a background scale which can be rotated by the OBS knob. You can see this kind of instrument on many GA aircraft like C172-SP. + +### Create the necessary BMP files +This ADF instrument will have two layers. One for the ring scale and one for the needle. +These layers shall be drawn as 24-bit color depth BMP files. The background color of the images +shall be RGB 0,0,0 (black). + +### Install the BMP files +Put the BMP files into the aircraft folder parcticaly into a separated sub-folder. +I use the folder name fip-images but for sure you can use any other name. The config +file refer to the above folder relative to the current aircraft folder. +In my config a BMP file is refered like this: +```ini +[layer:image="fip-images/Adf_Kompass_Ring.bmp..."] +``` +#### Ring scale +The ring scale image can be found in test/fip-images/Adf_Kompass_Ring.bmp: + +![Markdown image](Adf_Kompass_Ring.bmp) + +The size of the BMP file is 240x240 pixel. + +As this ring scale can be rotated by the OBS knob, +we select as a refence point the middle of the image (120,120). This will be the rotation +center. +We want to put the image in the top-right +corner of the 320x240 size screen. This means we have to translate the image along the x-axis +by 200 pixels (320-120=200). + +The angle of rotation is connected to a dataref value of the simulator. If you turn the rotation OBS +in the simulator, the dataref value will be updated. The plugin will read this value and rotate the image +according to the actual value. The scale parameter means a proportional +scale factor for the amount of rotation. The -1.0 in this example simply means an inverted direction. +If you put for example -1.5 it will rotate x1.5 speed. + +```ini +[page:id="ADF"] + [layer:image="fip-images/Adf_Kompass_Ring.bmp,ref_x:120,ref_y:120,base_rot=0"] + offset_x="const:200" + offset_y="const:120" + rotation="dataref:sim/cockpit/radios/adf1_cardinal_dir,scale:-1" +``` + +#### Needle +Similar to the previous image we have to create the BMP file for the needle: test/fip-images/Adf_Kompass_Ring.bmp: + +![Markdown image](Adf_needle.bmp) + +The reference point for this image set to the center (90,8). This is the middle of the image. +It is practical to select this point because we have to rotate the needle according to dtaref +value in the simulator. + +We apply a x=200, y=120 translation to put the center of the image to the same position as +we put the ring scale image previously. +The rotation of needle (on this default C172 aircraft) shall be connect to the adf1_relative_bearing_deg dataref + +```ini + [layer:image="fip-images/adf_needle.bmp,ref_x:90,ref_y:8,base_rot=-90"] + offset_x="const:200" + offset_y="const:120" + rotation="dataref:sim/cockpit2/radios/indicators/adf1_relative_bearing_deg,scale:1" +``` \ No newline at end of file diff --git a/doc/flight-sim-instrument-panel.png b/doc/flight-sim-instrument-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..5c96a5d9ab5b428a7c6a0a948f038e2abb78749b GIT binary patch literal 106124 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 literal 0 HcmV?d00001 From 56886c16a480fa7085663606432e33bbaa025c89 Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Tue, 15 Nov 2022 18:29:23 +0100 Subject: [PATCH 20/21] CI: copy DirectOutput.dll in release job Signed-off-by: Norbert Takacs --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a358196..08ca9fe 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -39,6 +39,7 @@ jobs: run: | cp LUA/lua54.dll built-plugin/plugins/XPanel/64/ cp hidapi/lib/hidapi.dll built-plugin/plugins/XPanel/64/ + cp FIP-SDK/lib/DirectOutput.dll built-plugin/plugins/XPanel/64/ - name: Create release plugin zip run: | From 86f588c9552ed5911220e77891ce2e8042cc0a52 Mon Sep 17 00:00:00 2001 From: Norbert Takacs Date: Sat, 19 Nov 2022 15:42:13 +0100 Subject: [PATCH 21/21] Followup PR#43 Signed-off-by: Norbert Takacs --- src/Device.cpp | 2 +- src/FIPDevice.cpp | 2 +- src/FIPDriver.cpp | 2 +- src/FIPPage.cpp | 2 +- src/FIPScreen.cpp | 4 ++-- src/FIPScreen.h | 2 +- src/GenericScreen.cpp | 4 ++-- src/GenericScreen.h | 2 +- src/RawBMP.cpp | 2 +- test/test_FIP.cpp | 4 ++-- 10 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Device.cpp b/src/Device.cpp index 86d1329..80ac00e 100644 --- a/src/Device.cpp +++ b/src/Device.cpp @@ -5,7 +5,7 @@ */ #include "Device.h" -#include "logger.h" +#include "Logger.h" Device::Device(DeviceConfiguration &_config, int _read_buffer_size, int _write_buffer_size) { diff --git a/src/FIPDevice.cpp b/src/FIPDevice.cpp index 2b53558..8d2b580 100644 --- a/src/FIPDevice.cpp +++ b/src/FIPDevice.cpp @@ -5,7 +5,7 @@ */ #include -#include "logger.h" +#include "Logger.h" #include "FIPDevice.h" FIPDevice::FIPDevice(DeviceConfiguration& _config) :Device(_config,2,1) diff --git a/src/FIPDriver.cpp b/src/FIPDriver.cpp index 3df016f..949e6f7 100644 --- a/src/FIPDriver.cpp +++ b/src/FIPDriver.cpp @@ -7,7 +7,7 @@ #include #include #include -#include "logger.h" +#include "Logger.h" #include "FIPDriver.h" #ifdef WIN32 diff --git a/src/FIPPage.cpp b/src/FIPPage.cpp index ad134c4..1e9aa48 100644 --- a/src/FIPPage.cpp +++ b/src/FIPPage.cpp @@ -6,7 +6,7 @@ #include "FIPPage.h" #include #include -#include "logger.h" +#include "Logger.h" FIPPage::FIPPage(int _screen_width, int _screen_height, int _bit_per_pixel, std::string _page_name) { diff --git a/src/FIPScreen.cpp b/src/FIPScreen.cpp index adeee4d..9f69c9a 100644 --- a/src/FIPScreen.cpp +++ b/src/FIPScreen.cpp @@ -7,9 +7,9 @@ #include #include #include -#include "lua_helper.h" +#include "LuaHelper.h" #include "FIPScreen.h" -#include "logger.h" +#include "Logger.h" FIPScreen::FIPScreen() :GenericScreen() { diff --git a/src/FIPScreen.h b/src/FIPScreen.h index c35dfaf..efc7e36 100644 --- a/src/FIPScreen.h +++ b/src/FIPScreen.h @@ -6,7 +6,7 @@ #pragma once #include #include -#include "configuration.h" +#include "Configuration.h" #include "GenericScreen.h" #include "FIPPage.h" diff --git a/src/GenericScreen.cpp b/src/GenericScreen.cpp index 936bed2..7fc8c7c 100644 --- a/src/GenericScreen.cpp +++ b/src/GenericScreen.cpp @@ -4,8 +4,8 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ #include -#include "logger.h" -#include "lua_helper.h" +#include "Logger.h" +#include "LuaHelper.h" #include "GenericScreen.h" GenericScreen::GenericScreen() diff --git a/src/GenericScreen.h b/src/GenericScreen.h index 4ea13eb..c93740a 100644 --- a/src/GenericScreen.h +++ b/src/GenericScreen.h @@ -7,7 +7,7 @@ #include #include #include "Device.h" -#include "configuration.h" +#include "Configuration.h" #include "XPLMUtilities.h" #include "XPLMProcessing.h" diff --git a/src/RawBMP.cpp b/src/RawBMP.cpp index 0e1adcd..ab33fe6 100644 --- a/src/RawBMP.cpp +++ b/src/RawBMP.cpp @@ -5,7 +5,7 @@ */ #include #include -#include "logger.h" +#include "Logger.h" #include "RawBMP.h" RawBMP::RawBMP() diff --git a/test/test_FIP.cpp b/test/test_FIP.cpp index 8d97beb..73f9f12 100644 --- a/test/test_FIP.cpp +++ b/test/test_FIP.cpp @@ -8,10 +8,10 @@ #include "XPLMPlugin.h" #include "XPLMPlanes.h" #include "XPLMDisplay.h" -#include "lua_helper.h" +#include "LuaHelper.h" #include "CppUnitTest.h" #include "FIPDevice.h" -#include "configparser.h" +#include "Configparser.h" using namespace Microsoft::VisualStudio::CppUnitTestFramework; void test_set_aircraft_path_and_filename(char* file_name, char* path);