Jump to content

incompatibility with Saitek Panels


Belga
 Share

Recommended Posts

Congratulations with the wonderful plane.

The paint job, detail, flight characteristics are AWESOME

Unfortunately there seem to be some incompatibility problems with users who uses SAITEK Panels.

 

The SAITEK PRO FLIGHT RADIO PANEL suppose to control

Com1, Com2, Nav1, Nav2, ADF, DME, XPDR.

The displays show the correct frequencies but none of the frequencies can be changed using the Saitek Panel. (when turning the frequency knobs the frequency briefly changes but jumps back to it's previous setting)

 

Notes:

I have a slew of payware and freeware aircraft and besides the "Mentor", this is the only plane that doesn't want to "listen" to the Saitek frequency changes

 

The SAITEK PRO FLIGHT MULTI PANEL suppose to control most of the autopilot functions.

Besides Heading, the other functions do not work or work erratically.

 

Thank you for looking in to this.

 

Marc

Link to comment
Share on other sites

i have the saitek panels too, i just purchased this wonderful aircraft but wasn't aware of the radios/ap behaviour argh:)

Javier, this is probably going to be an issue for some people, i think xsaitekpanels, the plugin that allows the panels to run with xplane, supports custom datarefs already, perhaps something could be done easier than we think.

A good starting point would be talking to sparker and taking a look at his wonderful xsaitekpanel plugin

here ?

oh and happy new year to you all!

thanks

L

Edited by luckyluca
Link to comment
Share on other sites

Gentlemen,

 

When I purchased JS32 I was terrified to find out that Saitek panels do not work but as Javier said he modelled things so most of the functions are controlled via cockpit, I have tried and after few hours now I have no problem changing the frequencies using radio knobs in the cockpit.

 

Of course it would be nice to have Saitek Panels operational, we will see what Javier will say on that.

 

Cheers, AJ 

Link to comment
Share on other sites

Hello,

 

Name here is Bill (sparker) and the author of Xsaitekpanels. I have recieved a PM and a email about this issue and am thinking about a solution. The Current version 2.05 of my plugin supports all default aircraft in X-Plane 10.20+. Trying to cover every new addon aircraft is a task beyond what a free plugin should be asked to support. My manual clearly describes every datareference and command that I use so it is known to all who want to look.

 

That all being said what I think a solution might be is to add remapability to the switches or buttons affected on the radio and multi panels. To do that since I do not own this aircraft I would need a list of all datareferences and commands used to even think of making this happen.

 

My plugin is free but I do take donations and think this might help me find some time to help resolve this issue.

 

Bill

  • Upvote 2
Link to comment
Share on other sites

Right now I don't remember.. hahaha.. but always there is a reason! I think it was to separate the decimals from the numbers selection, and other important thing I don't remember. The logic was done in the seamax some time ago.

 

Happy new year to everyone!

Edited by Japo32
Link to comment
Share on other sites

Javier,

 

Thanks for the information and have been looking at it to see what is possible from a Xsaitekpanels point of view. It looks like most of the  J32/xxx are datareferences and not commands but I am not clear on that.

 

Example TuneLeftNumbers Com1: J32/Com1NumAct

 

As I see no increase or decrease so I have to assume that is a datareference and you put a value in there.

 

Am I thinking correctly?

 

Thanks for your time and Happy Holidays Bill

  • Upvote 1
Link to comment
Share on other sites

Happy New Year !!!

 

 

Would it be possible to release a version of the wonderful Jetstream with DEFAULT datarefs?

There are quite a few users of SAITEK and other 3rd party Com/Nav controls who face the same problem.

I spend “mega bucks” on my custom cockpit and the use of a mouse or keyboard is not practical and virtually impossible in my configuration.

 

I wish there was some hint or symbol which would give the buyer a clue that an aircraft uses non-standard datarefs.

This comment is not meant in a negative way ( I admire your work and attention to detail) but it becomes very frustrating that lately, some developers use custom datarefs /shortcuts /keystrokes for existing xPlane functions.

I understand that sometimes it is a tossup in-between realism and functionality but in case of the Jetstream, the radio's should be able to be controlled by the default datarefs.

 

I do agree that there might be cases that custom datarefs are needed for non-existing functions.

 

v/r

 

Marc

Link to comment
Share on other sites

I also have Saitek panels and the Jetstream and was kinda disappointed :~(

 

Is there something we can do as users? Can we help?

 

'm an Obj-C and Java developer, don't know if that helps, never done any plug-in or aircraft development before. Let me know, I can donate some time. 

 

Thanks. 

 

P.S.: I also speak fluent spanish.

Link to comment
Share on other sites

...but in case of the Jetstream, the radio's should be able to be controlled by the default datarefs.

You are assuming things like the radio should be able to use default and not custom. In this case you are wrong.

The rules developers follow are very simple: Use default datarefs if they do what you need them to. If they don't, custom is the only way.

We will not be releasing a default only route. Given that custom plug-ins are the way for the future, perhaps it is time developers of hardware related plugins consider other options (like INI files that allow the dataref for which a product should listen/adjust for). This would at least standardize things a bit, so long as the developers agree to make CMD compatible add-ons.

Link to comment
Share on other sites

You are assuming things like the radio should be able to use default and not custom. In this case you are wrong.

The rules developers follow are very simple: Use default datarefs if they do what you need them to. If they don't, custom is the only way.

We will not be releasing a default only route. Given that custom plug-ins are the way for the future, perhaps it is time developers of hardware related plugins consider other options (like INI files that allow the dataref for which a product should listen/adjust for). This would at least standardize things a bit, so long as the developers agree to make CMD compatible add-ons.

Xsaitekpanels already has some of that and I can add more if the need is there but I have a question asked in post #11 that is still unanswered.

 

Example TuneLeftNumbers Com1: J32/Com1NumAct

 

Is this a datareference or a command?

 

If we are talking about commands then the issue is mute and will add remapability to all affected buttons and controls.

 

If on the other hand they are datarefecences then I do not have a solution for that because my plugin is no different then a fancy joystick that cannot enter numbers either.

 

So we are all aware of the current status of Xsaitekpanels it is 32/64 bit and already has remapabilty of the full switch panel. It also has partial remapabilty of the multi panel  that is in the current version 2.05. I have just finished the remapping of the radio panel's Com 1 & 2 coarse and fine knobs and Nav 1 & 2 coarse and fine knobs over the holiday's and will be released as version 2.06 in the near future.

 

Bill

Link to comment
Share on other sites

I was about to purchase this aircraft until I saw this thread.  With most custom aircraft functionality, it is relatively simple to map hardware to custom datarefs.  In fact, I created my XGoFlight plugin to deal with the fact that Sandy's plugin only addresses default functionality.  As a person who buys most high-quality aircraft, I can say I'm fully committed to finding ways to ensure hardware works with ALL and ANY aircraft (e.g. CRJ2, Challenger 300, Peter's Airbus A380, FlyJSim 727/DH8D, etc.).  This is probably my only red line.

 

With the radios, everything gets trickier.  The native 747 implements custom datarefs for radio frequencies, and for those of us with hardware, it only messes up the experience without adding any value.  From what I've gathered, the 747 uses this methodology so that users can tune frequencies to the hundredth decimal place rather than relying on the hundredth decimal place intervals that X-Plane uses.  If the CRJ2 and other aircraft at that level of complexity can find a way to make the radio frequencies work with standard datarefs, I don't see why we can't do the same in all cases.  Honestly, I wish we could all agree to work within the constraints of the X-Plane COM/NAV frequencies.  It just makes things unnecessarily complicated without adding much value.

 

I'll follow this issue for a little longer b/c the aircraft looks stunning.  I'd love the opportunity to add it to my vast collection in the future.

  • Upvote 1
Link to comment
Share on other sites

I was about to purchase this aircraft until I saw this thread.  With most custom aircraft functionality, it is relatively simple to map hardware to custom datarefs.  In fact, I created my XGoFlight plugin to deal with the fact that Sandy's plugin only addresses default functionality.  As a person who buys most high-quality aircraft, I can say I'm fully committed to finding ways to ensure hardware works with ALL and ANY aircraft (e.g. CRJ2, Challenger 300, Peter's Airbus A380, FlyJSim 727/DH8D, etc.).  This is probably my only red line.

 

With the radios, everything gets trickier.  The native 747 implements custom datarefs for radio frequencies, and for those of us with hardware, it only messes up the experience without adding any value.  From what I've gathered, the 747 uses this methodology so that users can tune frequencies to the hundredth decimal place rather than relying on the hundredth decimal place intervals that X-Plane uses.  If the CRJ2 and other aircraft at that level of complexity can find a way to make the radio frequencies work with standard datarefs, I don't see why we can't do the same in all cases.  Honestly, I wish we could all agree to work within the constraints of the X-Plane COM/NAV frequencies.  It just makes things unnecessarily complicated without adding much value.

 

I'll follow this issue for a little longer b/c the aircraft looks stunning.  I'd love the opportunity to add it to my vast collection in the future.

Perhaps I don't follow you here.

Given you are a programmer and are capable of creating what you need with a list of datarefs, what's the problem? The list is here: http://forums.x-pilot.com/index.php/topic/4380-custom-datarefs/

Seems simple enough to me. One dataref to control bigger numbers knob, one dataref to control lower numbers knob.

Link to comment
Share on other sites

Hello, and first to say, Happy new year!

Well the reason I didn't answer the question related about if my datarefs are just datarefs or also commands is because I am in the duty of being with family, travelling to visit my parents and have Christmass dinners, and food, and children etc etc.. so it is needed a vacations for the vacations. Sorry not to answer because I couldn't and wasn't in front of my computer to give you a reply.

As said, more or less, all my custom datarefs, are just that. datarefs. Even I don't know right now how to program a custom command. For me is enough the datarefs, and I just use the commands when are defaults.

When I use custom datarefs is because it is necesary. I hate type, so if I can safe some lines in C++ always I will use the default datarefs. The problem is in this case the default ones control all the decimals and numbers of a frequency in a whole number not separated by comma, so I had to split it, also because the round limits.. and another reason I don't remember.

As someone said, I use more or less the same logic for radios in the 747. So if someone could make the 747 work with Saitek it can be done here also. The problem here is the radios are more complex, because it uses memory, and active change of the frequencies as the real one (well the real one has more memory options, but for sure this one is more complex than the default one...)

So in case of the example Bill asked me I will tell. That is a dataref that controls the right part of the number of the frequency that goes (integers numbers. Not float):

Com: 118 to 136

decimals: 00 to 99

Nav: 108 to 117

decimals: 0 to 99

adf: 0 to 9 left numbers

right numbers: 0 to 99

Transponder:

left: 0 to 77

right 0 to 77 (in 1.01)

Edited by Japo32
Link to comment
Share on other sites

IMPORTANT: I miss in one datarefs for the radios. I put the active ones to control the actives, but miss the normal way. Now is changed in the list of custom datarefs. Sorry, but I believe noone started the programming, if someone did, the change is easy, just delete the "Act" at the end of the numbers selections. All is explained with ranges in the dataref area.

 

Sorry not to give support for saitek panel, because first I don't know how to do it, and because I don't own the saitek panels myself. I own an ComboII MCP that I wish to programm.. if I learn how.

Edited by Japo32
Link to comment
Share on other sites

Javier,

 

Thanks for the added info and now fully understand the why of your newest creation which is just gorgeous from the video I have watched so far. I have downloaded your free manual and will be spending some time understanding this new aircraft a year in the making.

 

In the info you have already provided I do not think it should be a issue to have Xsaitekpanels working with this aircraft. It will take some time and a few more questions from me to make sure I fully understand the datareferences but think reading the manual first is the correct step now.

 

As I am a Ubuntu user I thought in one of the videos it said that there will not be a Linux version. I hope that is not true and if you need any help in porting to Linux feel free to contact me and will do what I can.

 

Enjoying X-Plane more and more every day Bill  :)

Link to comment
Share on other sites

Yes... maybe I will contact with you for porting to linux in future. I tried but was not success when I was in the Mentor. Don't remember quite well what I did.

I own MCP Combo2 and wish also to make something to make it work with the plane (I also like to fly my planes) If someone can give me the clues to make the first steps I will try.

Link to comment
Share on other sites

Perhaps I don't follow you here.

Given you are a programmer and are capable of creating what you need with a list of datarefs, what's the problem? The list is here: http://forums.x-pilot.com/index.php/topic/4380-custom-datarefs/

Seems simple enough to me. One dataref to control bigger numbers knob, one dataref to control lower numbers knob.

What I was saying was that it is not as easy as simply dealing with datarefs (not always, anyway).  Take the 747... I created code that MOSTLY allowed Bill's plugin to work with the customized tuners, but something internal to the plugin stopped me dead in my tracks by causing a crash.  Sure, we can change the datarefs with other plugins, but we can't control how the aircraft plugins react to that change.  Again, if this aircraft allowed use of the native commands for tuning (CRJ2, Peter's Airbuses, ddenn's CL30, x737, etc. etc. etc.), that would solve compatibility for ALL hardware.  There is no practical reason to stray from the norm for this particular feature, at least not that I've ever seen.

Edited by cstrosser
Link to comment
Share on other sites

This is the code I used for the B744.  If I remember correctly, I had to scrap it because I kept getting crashes whenever I tried to switch from active/standby.

 

#include "loader.h"
#include "aircraft-b744.h"

Aircraft_B744* Aircraft_B744::instance = NULL;

Aircraft_B744* Aircraft_B744::getInstance()
{
    if (!instance) {
        instance = new Aircraft_B744();
    }
    return instance;
}

const char* Aircraft_B744::getICAO()
{
    return "B744";
}

Aircraft_B744_Radio_Com1* Aircraft_B744::getCom1()
{
    if (!com1) {
        com1 = new Aircraft_B744_Radio_Com1();
    }
    return com1;
}

Aircraft_B744_Radio_Nav1* Aircraft_B744::getNav1()
{
    if (!nav1) {
        nav1 = new Aircraft_B744_Radio_Nav1();
    }
    return nav1;
}

Aircraft_B744_Radio_Nav2* Aircraft_B744::getNav2()
{
    if (!nav2) {
        nav2 = new Aircraft_B744_Radio_Nav2();
    }
    return nav2;
}

void Aircraft_B744_Radio::setFine(int fineValue)
{
    XPLMSetDatai(getFineDataref(), fineValue);
}

int Aircraft_B744_Radio::getFine()
{
    return XPLMGetDatai(getFineDataref());
}

void Aircraft_B744_Radio::setCoarse(int coarseValue)
{
    XPLMSetDatai(getCoarseDataref(), coarseValue);
}

int Aircraft_B744_Radio::getCoarse()
{
    return XPLMGetDatai(getCoarseDataref());
}

void Aircraft_B744_Radio_Com::fineUp(int fast)
{
    int ComDec1Value = getFine();

    if (fast) {
        ComDec1Value += 3;
    } else {
        ComDec1Value += 1;
    }

    if (ComDec1Value > 99) {
        ComDec1Value -= 100;
    }

    setFine(ComDec1Value);
}

void Aircraft_B744_Radio_Com::fineDown(int fast)
{
    int ComDec1Value = getFine();

    if (fast) {
        ComDec1Value -= 3;
    } else {
        ComDec1Value -= 1;
    }

    if (ComDec1Value < 0) {
        ComDec1Value += 100;
    }

    setFine(ComDec1Value);
}

void Aircraft_B744_Radio_Com::coarseUp()
{
    int ComNum1Value = getCoarse() + 1;

    if (ComNum1Value > 136) {
        ComNum1Value = 118;
    }

    setCoarse(ComNum1Value);
}

void Aircraft_B744_Radio_Com::coarseDown()
{
    int ComNum1Value = getCoarse() - 1;

    if (ComNum1Value < 118) {
        ComNum1Value = 136;
    }

    setCoarse(ComNum1Value);
}

void Aircraft_B744_Radio_Nav::fineUp(int fast)
{
    int Nav1DecValue = getFine();

    if (fast) {
        Nav1DecValue += 3;
    } else {
        Nav1DecValue += 1;
    }

    if (Nav1DecValue > 99) {
        Nav1DecValue -= 100;
    }

    setFine(Nav1DecValue);
}

void Aircraft_B744_Radio_Nav::fineDown(int fast)
{
    int Nav1DecValue = getFine();

    if (fast) {
        Nav1DecValue -= 3;
    } else {
        Nav1DecValue -= 1;
    }

    if (Nav1DecValue < 0) {
        Nav1DecValue += 100;
    }

    setFine(Nav1DecValue);
}

void Aircraft_B744_Radio_Nav::coarseUp()
{
    int Nav1NumValue = getCoarse() + 1;
    if (Nav1NumValue > 117) {
        Nav1NumValue = 108;
    }
    setCoarse(Nav1NumValue);
}

void Aircraft_B744_Radio_Nav::coarseDown()
{
    int Nav1NumValue = getCoarse() - 1;
    if (Nav1NumValue < 108) {
        Nav1NumValue = 117;
    }
    setCoarse(Nav1NumValue);
}

XPLMDataRef Aircraft_B744_Radio_Com1::getFineDataref()
{
    return XGF::LazyLoader::getDataref("747/ComDec1");
}

XPLMDataRef Aircraft_B744_Radio_Com1::getCoarseDataref()
{
    return XGF::LazyLoader::getDataref("747/Nav1Num");
}

XPLMDataRef Aircraft_B744_Radio_Nav1::getFineDataref()
{
    return XGF::LazyLoader::getDataref("747/Nav1Dec");
}

XPLMDataRef Aircraft_B744_Radio_Nav1::getCoarseDataref()
{
    return XGF::LazyLoader::getDataref("747/Nav1Num");
}

XPLMDataRef Aircraft_B744_Radio_Nav2::getFineDataref()
{
    return XGF::LazyLoader::getDataref("747/Nav2Dec");
}

XPLMDataRef Aircraft_B744_Radio_Nav2::getCoarseDataref()
{
    return XGF::LazyLoader::getDataref("747/Nav2Num");
}

 

Link to comment
Share on other sites

And the header file...

 

#ifndef AIRCRAFTB744_H
#define AIRCRAFTB744_H

#include "aircraft.h"
#include "XPLMDataAccess.h"

class Aircraft_B744_Radio
{
    public:
        void setFine(int fineValue);
        int getFine();
        void setCoarse(int coarseValue);
        int getCoarse();

        virtual void fineUp(int fast = 0) = 0;
        virtual void fineDown(int fast = 0) = 0;
        virtual void coarseUp() = 0;
        virtual void coarseDown() = 0;

        virtual XPLMDataRef getFineDataref() = 0;
        virtual XPLMDataRef getCoarseDataref() = 0;
};

class Aircraft_B744_Radio_Com : public Aircraft_B744_Radio
{
    public:
        void fineUp(int fast = 0);
        void fineDown(int fast = 0);
        void coarseUp();
        void coarseDown();
};

class Aircraft_B744_Radio_Nav : public Aircraft_B744_Radio
{
    public:
        void fineUp(int fast = 0);
        void fineDown(int fast = 0);
        void coarseUp();
        void coarseDown();
};

class Aircraft_B744_Radio_Com1 : public Aircraft_B744_Radio_Com
{
    public:
        XPLMDataRef getFineDataref();
        XPLMDataRef getCoarseDataref();
};

class Aircraft_B744_Radio_Nav1 : public Aircraft_B744_Radio_Nav
{
    public:
        XPLMDataRef getFineDataref();
        XPLMDataRef getCoarseDataref();
};

class Aircraft_B744_Radio_Nav2 : public Aircraft_B744_Radio_Nav
{
    public:
        XPLMDataRef getFineDataref();
        XPLMDataRef getCoarseDataref();
};

class Aircraft_B744 : public Aircraft
{
    private:
        Aircraft_B744(){};
        Aircraft_B744(Aircraft_B744 const&){};
        Aircraft_B744 operator=(Aircraft_B744 const&){};
        static Aircraft_B744* instance;

    protected:
        Aircraft_B744_Radio_Com1* com1;
        Aircraft_B744_Radio_Nav1* nav1;
        Aircraft_B744_Radio_Nav2* nav2;

    public:
        static Aircraft_B744* getInstance();
        const char* getICAO();
        Aircraft_B744_Radio_Com1* getCom1();
        Aircraft_B744_Radio_Nav1* getNav1();
        Aircraft_B744_Radio_Nav2* getNav2();
};

#endif // AIRCRAFTB744_H

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...