Results produced from a single snapshot of the simulation are stored in an object called EventResult. An EventResult contains both general results and results that are specific to the actual scenario. It is important to understand the basic structure of the EventResult and the general results in order to be able to develop own EPPs.
The most important result produced by the simulations is the LinkResult. A LinkResult represents an actual connection between a receiver and a transmitter. This is completely general so it could be a connection from a mobile station of a cellular network to a receiver of a generic system - we don't know this by looking at the LinkResult but if the scenario was setup with a CDMA UpLink victim and generic system as interferer the described LinkResult could occur.
A LinkResult contains the actual values of this connection, i.e. position of the receiver, position of the transmitter, the distance between them, the frequency, the path loss and effective path loss. By inspecting the LinkResult interface other similar values are documented.
Roughly said, the EventResult contains a collection of LinkResults. But as pointed out, a LinkResult does not tell you where in the scenario it is located. Therefore an EventResult provides a structure that helps the plugin developer navigate the LinkResult collection.
A LinkResult will occur in the following places:
- Inside a system: Is it for instance a generic system it will always be from the transmitter to the receiver. Is it a cellular system it depends on the link direction (up or down). In downlink cellular system a link will be from a base station to a mobile station - notice that in this case there are many more possibilities than in the generic case - we could have many base stations and many mobile stations.
- Between two systems: When such a LinkResult occurs it is attached with much more information than just the LinkResult. This is because a link between two systems is called an interference link and is exactly what SEAMCAT is about. So a LinkResult between two systems is a special class (extending the LinkResult) called InterferenceLinkResult. It always goes from a transmitter in the interfering system to a receiver in the victim system.
- Between two systems (sensing): This is a special link that can occur if the victim system supports Cognitive Radio. In such a case a LinkResult can occur from a interfering system transmitter to a victim system transmitter.
As we now know what different LinkResult that can occur in a simulation, we are suited to understand the structure of an EventResult. The most important method in the class EventResult is the one with the signature: InterferenceLinkResults getInterferenceLinkResult(InterferenceLink link);
Let's break it down in order to fully understand what it does:
- the input argument InterferenceLink link: as stated earlier a scenario has a single victim system and a configured list of InterferenceLink(s). Each InterferenceLink identifies a specific interfering system. So the input argument specifies what InterferingLink we are interested in seeing the results from.
- return type InterferenceLinkResults: this is a container of many InterferingLinkResults. We will dig down into the details of this class soon.
So given a specific InterferenceLink from the scenario it gives you all the LinkResults (i.e. actual connections) representing this InterferenceLink so going from the interfering system (to a transmitter) of the InterferenceLink and to the victim system (to a receiver).
To summarize, given a scenario of for instance a generic victim system and three configured interference links, each interference link having CDMA UpLink as interference system. One particular EventResult can give you three different InterferingLinkResults, one for each of the interference links in the scenario. To get the InterferenceLinkResults you are interested in you have to use the corresponding InterferenceLink value from the scenario.