Implement named data groups.
[erlang-x-plane-data.git] / README.md
index 2de6895..b417370 100644 (file)
--- a/README.md
+++ b/README.md
@@ -16,14 +16,19 @@ Examples
 ### Parse data packet
 
 ```erlang
 ### Parse data packet
 
 ```erlang
-{ok, {Index, Groups}} = x_plane_data_raw:of_bin(XPlaneDataPacket),
+{ok, {64=Index, GroupsRaw}=DataRaw} = x_plane_data_raw:of_bin(XPlaneDataPacket),
 ```
 
 ### Access parsed data
 
 ```
 
 ### Access parsed data
 
+#### Raw
+
+At this stage, only the structure of the packet was parsed. No attempt at
+interpreting the values have been made:
+
 ```erlang
 % Speeds are in group 3
 ```erlang
 % Speeds are in group 3
-{3, Speeds} = lists:keyfind(3, 1, Groups),
+{3, Speeds} = lists:keyfind(3, 1, GroupsRaw),
 { VindKias
 , VindKeas
 , VtrueKtas
 { VindKias
 , VindKeas
 , VtrueKtas
@@ -35,7 +40,7 @@ Examples
 } = Speeds,
 
 % Pitch roll and headings values are in group 17
 } = Speeds,
 
 % Pitch roll and headings values are in group 17
-{17, PitchRollHeadings} = lists:keyfind(17, 1, Groups),
+{17, PitchRollHeadings} = lists:keyfind(17, 1, GroupsRaw),
 { PitchDeg
 , RollDeg
 , HdingTrue
 { PitchDeg
 , RollDeg
 , HdingTrue
@@ -47,6 +52,53 @@ Examples
 } = PitchRollHeadings,
 ```
 
 } = PitchRollHeadings,
 ```
 
+#### Named
+
+Here we identify what each of the numbered groups mean in a given X-Plane
+version. Right now only X-Plane 10 is supported and I only identified 3 groups
+so far:
+
+- index: `3` , name: `speeds`
+- index: `17`, name: `pitch_roll_heading`
+- index: `20`, name: `lat_lon_alt`
+
+Unidentified groups (with index other than what is listed above) will be
+absent from the list of named groups (think of `x_plane_data_named:of_raw/1` as
+a filter), so you'll have to access their raw version, if needed.
+
+##### Identify
+```erlang
+{ok, {x_plane_data_v10, GroupsNamed}} = x_plane_data_named:of_raw(DataRaw),
+```
+
+##### Access
+```erlang
+-include_lib("x_plane_data_group_lat_lon_alt.hrl").
+-include_lib("x_plane_data_group_pitch_roll_heading.hrl").
+-include_lib("x_plane_data_group_speeds.hrl").
+
+...
+
+{speeds, #x_plane_data_group_speeds
+    { vind_kias   = VindKias
+    , vind_keas   = VindKeas
+    , vtrue_ktas  = VtrueKtas
+    , vtrue_ktgs  = VtrueKtgs
+    , vind_mph    = VindMph
+    , vtrue_mphas = VtrueMphas
+    , vtrue_mphgs = VtrueMphgs
+    }
+} = lists:keyfind(speeds, 1, GroupsNamed),
+
+{pitch_roll_heading, #x_plane_data_group_pitch_roll_heading
+    { pitch_deg  = PitchDeg
+    , roll_deg   = RollDeg
+    , hding_true = HdingTrue
+    , hding_mag  = HdingMag
+    }
+} = lists:keyfind(pitch_roll_heading, 1, GroupsNamed),
+```
+
 Data format references
 ----------------------
 
 Data format references
 ----------------------
 
This page took 0.019148 seconds and 4 git commands to generate.