Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pilot position updates - (num1) and (num2) fields #3

Open
norrisng opened this issue Apr 18, 2019 · 5 comments
Open

Pilot position updates - (num1) and (num2) fields #3

norrisng opened this issue Apr 18, 2019 · 5 comments
Labels
help wanted Extra help is needed in documenting this feature

Comments

@norrisng
Copy link
Owner

What does (num1) and (num2) represent? It's present in both IVAO and VATSIM variants, but isn't present in the original FSD spec.

  • (num1) is a number of up to 10 digits. It seems to begin with 4.
  • (num2) is an integer. There seems to be a wide range of values, anywhere between 1 and 3 digits, and can be positive or negative.
@norrisng norrisng added the help wanted Extra help is needed in documenting this feature label Apr 18, 2019
@phoudoin
Copy link

phoudoin commented Aug 14, 2019

(num1) = pitch / bank / heading / onground value
a decimal sent as string whose value is the following unsigned 32bits binary number:

 3         2         1         0
10987654321098765432109876543210
<  pitch ><  bank  ><heading >OU
  • U bit:
    • unused
  • O bit:
    • Aircraft onground indicator.
  • heading 10bits field:
    • aircraft current heading, in degree
    • values range [0, 1023] (unsigned 10 bits number)
    • 1 = 360/1024 degree
    • 0 = magnetic north
  • bank 10bits field:
    • aircraft current bank / roll angle, in degree
    • values range [-511, 512] (signed 10 bits number),
    • 1 = 180/512 degree,
    • negative value = right wing banking.
  • pitch 10bits field:
    • aircraft current pitch angle, in degree
    • values range [-511, 512] (signed 10 bits number)
    • 1 = 90/256 degree
    • 0 = aircraft is at level
    • 256 = aircraft pitch is 90 degree up (aka skyrocket!)
    • negative value = down pitch

Onground aircrafts have usually 0 degree pitch and bank angles, their (num1) value is mostly heading encoded, a small value, very stable until they start taxiing.

On the contrary, airborne aircrafts have rarely perfect 0 degree pitch and banking angles, leading to big (num1) values.

@phoudoin
Copy link

phoudoin commented Aug 14, 2019

(num2) = difference between Above Ground Level altitude (AGL) and Above Mean Sea Level (AMSL) altitude, as reported by aircraft barometric altimeter

Unit is feet, obviously.

@gtxzsxxk
Copy link

(num1) = pitch / bank / heading / onground value
a decimal sent as string whose value is the following unsigned 32bits binary number:

 3         2         1         0
10987654321098765432109876543210
<  pitch ><  bank  ><heading >OU
  • U bit:

    • unused
  • O bit:

    • Aircraft onground indicator.
  • heading 10bits field:

    • aircraft current heading, in degree
    • values range [0, 1023] (unsigned 10 bits number)
    • 1 = 360/1024 degree
    • 0 = magnetic north
  • bank 10bits field:

    • aircraft current bank / roll angle, in degree
    • values range [-511, 512] (signed 10 bits number),
    • 1 = 180/512 degree,
    • negative value = right wing banking.
  • pitch 10bits field:

    • aircraft current pitch angle, in degree
    • values range [-511, 512] (signed 10 bits number)
    • 1 = 90/256 degree
    • 0 = aircraft is at level
    • 256 = aircraft pitch is 90 degree up (aka skyrocket!)
    • negative value = down pitch

Onground aircrafts have usually 0 degree pitch and bank angles, their (num1) value is mostly heading encoded, a small value, very stable until they start taxiing.

On the contrary, airborne aircrafts have rarely perfect 0 degree pitch and banking angles, leading to big (num1) values.

I do thank you and must be grateful for it. This problem has been troublesome for me for totally 5 years.

@OdiasUkcamaj
Copy link

(num1) = pitch / bank / heading / onground value
a decimal sent as string whose value is the following unsigned 32bits binary number:

 3         2         1         0
10987654321098765432109876543210
<  pitch ><  bank  ><heading >OU
  • U bit:

    • unused
  • O bit:

    • Aircraft onground indicator.
  • heading 10bits field:

    • aircraft current heading, in degree
    • values range [0, 1023] (unsigned 10 bits number)
    • 1 = 360/1024 degree
    • 0 = magnetic north
  • bank 10bits field:

    • aircraft current bank / roll angle, in degree
    • values range [-511, 512] (signed 10 bits number),
    • 1 = 180/512 degree,
    • negative value = right wing banking.
  • pitch 10bits field:

    • aircraft current pitch angle, in degree
    • values range [-511, 512] (signed 10 bits number)
    • 1 = 90/256 degree
    • 0 = aircraft is at level
    • 256 = aircraft pitch is 90 degree up (aka skyrocket!)
    • negative value = down pitch

Onground aircrafts have usually 0 degree pitch and bank angles, their (num1) value is mostly heading encoded, a small value, very stable until they start taxiing.
On the contrary, airborne aircrafts have rarely perfect 0 degree pitch and banking angles, leading to big (num1) values.

I do thank you and must be grateful for it. This problem has been troublesome for me for totally 5 years.

Hello,
I've been trying to decode the Indicated Heading from the 10 bits number but have been unable to do so, how did you manage to extract the Aircraft heading? For example this is the number for 0 pitch 0 bank and a heading of 080, "12575602" How do I extract the information I need from it?
Thanks.

@dextercai
Copy link

dextercai commented Jul 28, 2021

Use the bit operate to get the specific bit in the pbh value. That means the pbh value should be discussed at the binary level.
Here is the demo code in JavaScript. The other value can be read in the same way.

var heading = Math.round(((parseInt(pbh) & 4092) >> 2) / 1024 * 360);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra help is needed in documenting this feature
Projects
None yet
Development

No branches or pull requests

5 participants