NAME

RadioMobile - A Perl interface to Radio Mobile .net file

SYNOPSIS

  use RadioMobile;
  my $rm = new RadioMobile();
  $rm->file('path_to_radiomobile_file.net');
  $rm->parse;

  my $header = $rm->header;
  my $units  = $rm->units;

  foreach my $idxUnit (0..$header->unitCount-1) {
	  my $unit = $units->at($idxUnit);
	  printf("%s at lon %s and lat %s\n", $unit->name, 
	    $unit->lon, $unit->lat);
  }

DESCRIPTION

This module is a Perl interface to .net file of Radio Mobile, a software to predict the performance of a radio system.

Currently this module only parse .net file to extract all information available inside it such as units, radio systems, networks, some configuration of program behaviour, the header with version file, number of units, systems and networks. It also extract the relation between units, systems and networks to show the units associated to a network, their systems and so on.

As soon as possible it will be possible to create a .net from scratch with information available, as an example, from a database.

This module supports only .net file with 4000 as version number (I don't know exactly from which it has been adopted this but I'm sure that all Radio Mobile file starting from version 9.x.x used this).

BE CAREFUL

This is a beta test release. Interfaces can change in future. Report me any bug you will find.

METHODS

new()

Call new() to create a new RadioMobile object

my $rm = new RadioMobile();

You can call new() to force parsing to dump all structures found using the debug parameter

my $rm = new RadioMobile(debug => 1);

file()

Use this method to set a scalar with Radio Mobile .net raw data

$rm->file('net1.net');

filepath()

Use this method to set the path, relative or absolute, to a .net file created by Radio Mobile software.

open(NET,$filepath);
binmode(NET);
my $dotnet = '';
while (read(NET,my $buff,8*2**10)) { $dotnet .=  $buff }
close(NET);
$rm->file($dotnet);

parse()

Execute this method for parsing the .net file set with file() or filepath() method and fullfill header(), config(), units(), systems(), nets() and netsunits() elements.

You can pass a callback function to get progress status while parsing is running. Currently the system suppors these status

10000 START - Open file for parsing
10010 END   - Open file for parsing
10100 START - Header Parsing
10110 END   - Header Parsing
10200 START - Read Units
10210 END   - Read Units
10300 START - Read Systems
10310 END   - Read Systems
10400 START - Init Nets
10410 END   - Init Nets
10500 START - Setting Nets <-> Units and Roles
10510 END   - Setting Nets <-> Units and Roles
10600 START - Read Systems for Units
10610 END   - Read Systems for Units
10700 START - Read Nets information
10710 END   - Read Nets information
10800 START - Parsing Coverage
10810 END   - Parsing Coverage
10900 START - Read Map File path
10910 END   - Read Map File path
11000 START - Read Pictures path
11010 END   - Read Pictures path
11100 START - Parsing Antenna Height for Units
11110 END   - Parsing Antenna Height for Units
11200 START - Setting Units Icon
11210 END   - Setting Units Icon
11300 START - Setting Additional System Cable Loss
11310 END   - Setting Additional System Cable Loss
11400 START - Parsing Style Network Properties
11410 END   - Parsing Style Network Properties
11500 START - Parsing Unknown Network structure
11510 END   - Parsing Unknown Network structure
11600 START - Reading Antenna for Systems
11610 END   - Reading Antenna for Systems
11700 START - Reading Azimut/Direction for Units
11710 END   - Reading Azimut/Direction for Units
11800 START - Parsing Unknown Unit structure
11810 END   - Parsing Unknown Unit structure
11900 START - Reading Elevation for Units
11910 END   - Reading Elevation for Units
12000 START - Reading LandHeight path
12010 END   - Reading LandHeight path

The prototype for callback function is

sub callback {
  my $data = shift;
  print $data->{status}, " ", $data->{descr};
}

header()

Returns a RadioMobile::Header object with information about .net version file, number of units, systems and networks

config()

Returns a RadioMobile::Config object with Style Network Properties window setting, list of pictures to be open, the mapfile and landheight path.

units()

Returns a RadioMobile::Units object with a list of all units.

systems()

Returns a RadioMobile::Systems object with a list of all systems.

nets()

Returns a RadioMobile::Nets object with a list of all networks.

cov()

Returns a RadioMobile::Cov object with parameters about coverage window.

netsunits

Returns a RadioMobile::NetsUnits object which is a matrix $header->networkCount * $header->unitCount with all relation between units, networks and systems.

OBJECT MODEL

In docs/ distribution directory you can find a PDF with a summarize of RadioMobile object model.

AUTHOR

Emiliano Bruni, <lt>info@ebruni.it<gt>

COPYRIGHT AND LICENSE

This module is a copyright by Emiliano Bruni

Radio Mobile software is a copyright by Roger Coude' VE2DBE.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.