The majority of formats require the same two steps for visualization on a Lightspeed view. To visualize ARINC data:
-
Decode the data into an
ILcdModelusing anILcdModelDecoder. -
Create an
ILspLayerfor theILcdModeland add it to theILspView.
//First create the model
ILcdModelDecoder decoder =
new TLcdCompositeModelDecoder(TLcdServiceLoader.getInstance(ILcdModelDecoder.class));
ILcdModel model = decoder.decode(sourceName);
//Create a layer for the model
ILspLayer layer = createArincLayer(model);
//Add the layer to the Lightspeed view (an ILspView)
view.addLayer(layer);
A decoded ARINC model can be:
-
A single
ILcdModel -
A model tree structure composed of
ILcdModelContainerandILcdModelinstances.
The code to create a layer for the decoded model should deal with both scenarios:
/**
* The ARINC model decoder can return a single model or a model tree structure, depending on the file that gets decoded.
* This method uses recursion to deal with both scenarios.
*/
static ILspLayer createArincLayer(ILcdModel model) {
//The model decoder can return a model tree node.
//The node itself is just an empty container. We create an empty layer node for that container.
//Then we loop over the child models (=the actual data), and create layers for those as well
if (model instanceof ILcdModelContainer) {
TLspLayerTreeNode node = new TLspLayerTreeNode(model);
for (int i = 0; i < ((ILcdModelContainer) model).modelCount(); i++) {
ILcdModel childModel = ((ILcdModelContainer) model).getModel(i);
//Use recursion to create layers for the child models
node.addLayer(createArincLayer(childModel));
}
return node;
} else if ("ARINC".equals(model.getModelDescriptor().getTypeName())) {
return TLspARINCLayerBuilder.newBuilder()
.model(model)
.build();
}
throw new IllegalArgumentException("Cannot create layer for model " + model);
}
The resulting layer(s) use the default styling. See the Visualizing ARINC data on a Lightspeed view reference guide for more information on how to customize the styling.
|
This code snippet uses the The model decoder class that is actually responsible for decoding ARINC data is the
|