PDA

View Full Version : Devicelink Functionality


Pfeil
01-29-2012, 03:36 PM
Early on, Devicelink was deemed too "exploitable" for use in multiplayer, which in my opinion killed most interest in implementing it. Both for 3rd parties and the devs.

Aside from UDPSpeed and UDPGraph, there are very few programs compatible with, let alone designed for, IL2 Devicelink.
None of the simulator instrument manufacturers(FlightIllusion, SimKits, Simmeters, etc..) support it either.

I bring it up for a simple, fairly selfish, reason; I'm looking to build a simpit for IL2. While it would be mostly generic, as is logical when the amount of flyable aircraft is this diverse, accurately implementable gauges are still a minimum requirement.
When using a hardware cockpit, it makes little sense to view the instruments though a virtual onscreen cockpit, as this would simply shatter immersion.

Therefore, I'm hoping Daidalos Team could consider expanding Devicelink functionality.


I've already done some experimenting myself, and wrote a small app in C# to do the UDP communication. The external software side is not the problem here(I'm willing to figure it out).

The biggest problem right now is that some(quite a few) gauges/values aren't implemented in Devicelink, even though they work in the virtual cockpit(Radio Altimeter, Oil Pressure, Fuel Pressure, OAT, Ammunition Indicators, etc..).
Even things like flap position or prop pitch can only be read from the control setting, not the actual position.

Some outputs produce odd, or no values at all such as Turn and Slip.

In more than a few cases, the documentation doesn't include a description of unit the output value is in(Bar, Degrees, ...)

Many of the switch values(Lights for example) can't be read out through Devicelink either. This makes implementing toggle switches impossible without them getting desyncronised with the sim.

The onscreen messages(engine fire, fuel tank leak, ...) could also be made available.
These have no gauge, but having a light or annunciator in the cockpit/simpit would break immersion much less than the flashing text onscreen(I know it can be turned off, but there's no real alternative to it AFAIK).


Ideally, Devicelink could also support engine ID values for all setting relevant to engines(Feather Prop, Radiator, ...) without selecting engines first.
Though having these controls available per engine though the control settings in the sim itself would be beneficial outside of Devicelink as well.


Lastly, I would like to suggest a few things that might make online availability of Devicelink possible:

Return semi random values during blackout/redout, making the gauges deviate wildly(I.E. if altitude is 2000, return values from 2500 to 1500). Or output nothing.

Disable output when a non-cockpit view is selected. DeviceLink currently has an output for this(cockpit cur, 26), however using it is up to the designer.
This could be coupled to an existing setting like speedbar, so implementing additional difficulty settings could be avoided.

Don't output "true" values, only instrument readouts. This makes sure that DeviceLink instruments can't move faster than those displayed in the sim. Currently the variometer(and other gauges) output changes in value faster than the virtual gauge.
Another benefit of this is authentic needle movement for anything using Devicelink.

Pfeil
01-29-2013, 04:20 AM
Figured I'd bump this, as Devicelink seems to be getting more use thanks to apps like Yadeli.

In addition to my previous remarks I'd like to add that the documentation could use an update.
Things like fuel weight without any means of converting to other units(how many kg in a liter?) and overload/shake_level which have no explanation at all could use clarification.

I would also like to add the relatively recent support for Devicelink by hardware manufacturers like FlightIllusion and Opencockpits.
Both developments driven by enthusiasts in the IL2 community, further proving not only the interest in IL2 itself, but cockpit building and Devicelink in particular.


If anyone has anything they would like to see in Devicelink, I encourage you to post them here. I'm hoping a concrete list will help Team Daidalos make Devicelink that much more useful.

Values to change:
44, beacon_azimuth
This doesn't point to the current beacon, nor the course set on the compass. Does it point the the next waypoint? Function should vary depending on difficulty settings. Could be augmented or replace by features mentioned below.

Values to add:
Ammo Remaining, get(int - weapon idx), return: int [rounds/ordnance remaining]
Would serve to replace "Weapon: Out of ammo" messages. Essential for building BF110(And other) cockpit ammo indicators.

Flaps, get(), return: float
There is a flaps variable(82), however this is only the control setting, not the actual deflection. When flaps are in transit or stuck this is required.

Prop Pitch, get(int - engine idx), return: float
Required for prop pitch gauge in numerous German aircraft. Should also work with auto pitch(As the real one does).

Beacon Strength, get(), return: float
The equivalent of the vertical scale on the AFN-1/2

Beacon Azimuth, get() return: float [degrees]
The equivalent of the horizontal scale on the AFN-1/2

Marker Beacon, get() return: int (1/0)
Red light when flying over marker beacons on ILS(Lorenz) approach.

Compass Heading, get(), return: float [degrees]
Compass Heading, set(float)
Heading as set by pilot.

Radio Altimeter, get(), return: float [meters]
Used in some late war aircraft(Do-335, etc..).

Radiator, get(int - engine idx), return: float (-1 - 1.00, negative for auto)
Radiator, set(float)
Current "Cowl or Armor Flaps"(171) method is obsolete due to improvements to this system.

Engine On/Off, get(int - engine idx), return int (1/0)
The simplification in IL2 makes this a weird value, but there is currently no real way to tell if an engine is set to on.

Prop Pitch Auto, get() int (1/0)
Prop Pitch Auto, set()
Oddly absent, though old functionality.

OTA(Outside Air Temperature), get(), return: float [degrees C]
Gauge in cockpit, no corresponding Devicelink value.

Oil Pressure, get(int - engine idx), return: float
Gauge in cockpit, no corresponding Devicelink value.

Hydraulic Pressure, get(), return: float [bar]
Used in Do-335, gauge shows 0 if gear needs to be lowered manually. Never seen intermediate pressures so could also be int (1/0).

Engine Fire, get(int - engine idx), return: int (1/0)
Replaces onscreen message. Also used for Do-335 fire warning panel.

Head Movement, set(float,float,float)
Expands TrackIR method(11) already available for 6dof support.

Mixture, get(int - engine idx), return: float
Mixture, set(float)
For new analog mixture in 4.12

[B]Methods which have set toggle, but no get:
Tinted Reticle Dimmer/Scope Cover, get(), return: int (1/0)
Cockpit Lights, get(), return: int (1/0)
Nav. Lights, get(), return: int (1/0)
Landing Light, get(), return: int (1/0)
Wingtip Smoke, get(), return: int (1/0)
Toggle Map, get(), return: int (1/0)
Speed Bar, get(), return: int (0 - 3 off, kph, mph ,knots)
Bomb Sight Mode Auto, get(), return: int (1/0)
Bomb Sight Distance, get(), return: float
Bomb Sight Control Left/Right, get(), return: float
Bomb Sight Altitude, get(), return: float
Bomb Velocity, get(), return: float

Methods for new control inputs:
Beacon Next, set()
Beacon Previous, set()
Bomb Fuze mode, set()
Compass Heading Plus, set()
Compass Heading Minus, set()
Jettison Stores, set()


Additions? different opinion? Feel free to reply, I intend to keep this list up-to-date to inform TD as best as we can.

bolox
01-31-2013, 05:59 AM
None of the simulator instrument manufacturers(FlightIllusion, SimKits, Simmeters, etc..) support it either.

http://www.flightillusion.com/index.php?option=com_content&view=article&id=122:new-full-sized-setup&catid=1:latest-news&Itemid=50;)

Agree totally with the Turn/Slip output values

Pfeil
01-31-2013, 05:03 PM
I would also like to add the relatively recent support for Devicelink by hardware manufacturers like FlightIllusion and Opencockpits.;)

I should also add Simmeters officially supports IL2 now.

Plane-Eater
02-02-2013, 02:22 AM
I would LOVE these improvements as well, with a server-side option to allow them in multiplayer. I'm building a sim pit right now, but hope to eventually build several and network them. Being able to drive gauges in all the pits while flying together would be FANTASTIC. :grin:

Jack_Aubrey
07-09-2015, 04:56 PM
This need to be pushed up a little, and i would like to say that maybe some of the get commands for the gear (preferably 164) should show more variation in it's value as a float.

Windturbin
12-13-2015, 11:37 PM
http://www.flightillusion.com/index.php?option=com_content&view=article&id=122:new-full-sized-setup&catid=1:latest-news&Itemid=50;)

Agree totally with the Turn/Slip output values

BUMP!!!!!!!!!!!!!!

I use flight illusion gauges and I concur......Devicelink Turn/slip output does not put out!

My guess is Daidalos Team is probably my only hope to ever have use of my Slip/turn gauge. Could be an easy fix for someone who knows how and has access?

FYI, here is flight illusions control program functions from IL-2 data for its G-step functios...

031, turn, position, gauge, 04, 036, 0, 0, 1, 1

031 = Flight Illusions plate type (just identifies file for asigning needle the gauge needle movement etc.)

turn = Function name

04 = Not sure

036 = IL2 device link assigned key

0 = macro (I think)

0 = Pre-Add/Subtract (I think)

1 = Mulitiplier

1 = Divider

In Their config software for the turn gauge they also have an entry for.....

Minimum Value = -1000

Maximum Value = 1000

Data type = Float

IL2-Devicelink looks like this............

slip
34 get()
return:float [deg.] -45.00 +45.00


turn
36 get()
return:float [Undefined] -1.00 +1.00
turn indicator


One thing that stands out to me is the [Undefined] in the turn data? I tried editing the devicelink file as [deg.] but did not work?

Sure would appreciate any information on the subject! Will there be a 4.14 down the road or possible fix for this error?

Best Regards,

WC

Storebror
12-14-2015, 08:11 AM
Actually the DeviceLink output is just fine.
A turn/slip indicator can use any range of values for turn and slip.
IL2 uses the physical degree value for slip, which is reasonable.
Furthermore IL2 uses a standard rate 1 turn for the turn indicator at 50%, which is reasonable too.
This means that when the output for the turn indicator can have values from -1.0 to +1.0, then -1.0 means 6 degrees per second to the left, -0.5 is 3 degress per second to the left (rate 1 turn), 0 is straight, +0.5 is 3 degrees per second to the right and +1.0 is 6 degrees per second to the right.

You will have to adjust the min/max values for your indicator like
Minimum Value = -1
Maximum Value = 1
In case your turn indicator's maximum values are twice a standard turn as well, otherwise adjust the values so they match the maximim 6 degrees per second output from IL2.

As long as Data type = Float is set, everything should be fine.

Best regards - Mike

Windturbin
12-14-2015, 05:23 PM
Excellent reply Storebror, was hoping some one would throw the dog a bone!
I needed something to naw on! Now just need to figure out how to apply your information.

I sent an e-mail to FI tech support, but unfortunately their tech support is not as good as their product! Hopefully they will reply.

I have 9 gauges working, but the turn/slip one is a bit different. Here is what their software looks like for turn/slip......

http://dc396.4shared.com/img/-y6LxmWSce/151a129e098/FI_-_IL2_Turn_function (http://www.4shared.com/photo/-y6LxmWSce/FI_-_IL2_Turn_function.html)

FI- had min value -1000 & max 1000 , I changed to -1 & 1 , but no joy.

http://dc396.4shared.com/img/zwcRuIbmce/151a12a6d38/FI_-_Gauge_configuration_scree (http://www.4shared.com/photo/zwcRuIbmce/FI_-_Gauge_configuration_scree.html)

http://dc396.4shared.com/img/35HBmQnkba/151a12ab770/FI_-_Gaugeplate_calibration_sc (http://www.4shared.com/photo/35HBmQnkba/FI_-_Gaugeplate_calibration_sc.html)

This is were the problem may be with understanding how to set values to needle movements!!!! Can use anywhere from 3 to 20 needle values.

http://dc314.4shared.com/img/iMH5F-0oce/151a1b84d88/IMG_1752 (http://www.4shared.com/photo/iMH5F-0oce/IMG_1752.html)

Needle has position numbers , values per position?

Storebror
12-15-2015, 09:34 AM
Well, this is a bit hard to judge for someone who doesn't have the same piece of hardware.

Let's rule out the easiest thing first:
Is DeviceLink putting out values for turn/slip yes or no?
This can be answered first by taking a look into IL-2's code where it's plain to see that in online sessions this output will be suppressed.
You should fly offline for your tests though.
Next we can give it a try with a sample client app.
I've made one for Android to check what I get back from DeviceLink and this is what I see flying offline:
http://s2.postimg.org/95y3bk4bd/Device_Link_Test_Screenshot.png
Slip Deg. and Turn Ind. show valid values which means "it works".

Now we see these lines in your G-Step functions maintenance window:
030, Slip, Position, Gauge, , 04, 034, 000, 0, 1, 1
031, turn, Position, Gauge, , 04, 036, 000, 0, 1, 1
Whether or not "turn" should have a capital "T" is debateable.
The DeviceLink query parameters (34, 36) seem fine.
Comparing this to other DeviceLink Parameters configured there, we see that these two lines have a "000" behind the DeviceLink Parameter, whereas others have "001" at that place.
Can it be that there's a mistake here?
Furthermore you once mentioned that the default config for turn gauge has value ranges of -1000 to +1000.
How about applying a multiplier of 1000 to that gauge?
In my book the line should look like this:
031, turn, Position, Gauge, , 04, 036, 001, 0, 1000, 1

Best regards - Mike

Windturbin
12-16-2015, 02:07 PM
Pfeil, I appreciate your post have been watching it for some time waiting to see if D-team was going to input. Hope you don't mind me using it. Thought about starting another but figured you would not mind keeping it alive!

Storebror, Not sure how to look into IL-2 code, not familiar with sample client app? Is this a app I can download somewhere?

Looking @ G-step functions, devicelink configured parameters, looks like all the other position category functions do have the "000" behind the devicelink parameter. The engine functions have the "001" Also have a look at the multiplier numbers for the VSI and attitude.

I tried...

Code:

031, turn, Position, Gauge, , 04, 036, 000, 0, 1000, 1

No joy:cry:

Storebror
12-18-2015, 10:32 AM
Not sure how to look into IL-2 code, not familiar with sample client app? Is this a app I can download somewhere?
No sorry, that's just something I've started locally for a planned project (remote gauges on Android Devices), but the project stalled.
The app is not publically available and spreading development apks isn't quite my style of software distribution ;)

I think the bottom line is that DeviceLink does send the right float values for slip and turn when you fly offline (online it will just send 0's for these values).
If your software cannot pick up these values, you should get in contact with that software manufacturer.

Best regards - Mike

Windturbin
12-18-2015, 04:01 PM
Thanks for input/replies Mike, was helpfull. Flight Illusions tech support did send me an e-mail yesterday asking for my config file. Hopefully they will be able to help me.