1 // FGTransmission - a class to provide transmission control at larger airports.
3 // Written by Alexander Kappes, started March 2002.
4 // Based on ground.cxx by David Luff, started March 2002.
6 // Copyright (C) 2002 David C. Luff - david.luff@nottingham.ac.uk
8 // This program is free software; you can redistribute it and/or
9 // modify it under the terms of the GNU General Public License as
10 // published by the Free Software Foundation; either version 2 of the
11 // License, or (at your option) any later version.
13 // This program is distributed in the hope that it will be useful, but
14 // WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // General Public License for more details.
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the Free Software
20 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22 #include "transmission.hxx"
24 #include <simgear/misc/sg_path.hxx>
28 FGTransmission::FGTransmission(){
32 FGTransmission::~FGTransmission(){
35 void FGTransmission::Init() {
38 // ============================================================================
39 // extract parameters from transmission
40 // ============================================================================
41 TransPar FGTransmission::Parse() {
47 const char *capl = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
49 msglen = strlen( TransText.c_str() );
52 for ( i=0; i < msglen; ++i ) {
53 if ( TransText.c_str()[i] != ' ' ) {
54 if ( TransText.c_str()[i] != ',' ) tokens[tkn] += TransText.c_str()[i];
55 } else if ( !tokens[tkn].empty() ) {
59 cout << "Too many tokens" << endl;
64 for ( i=0; i<20; ++i) {
66 if ( tokens[i] == "request" ) {
68 } else if ( tokens[i] == "approach" ) {
69 tpar.station = "approach";
70 tpar.airport = tokens[i-1];
71 } else if ( tokens[i] == "landing" ) {
72 tpar.intention = "landing";
73 for ( j=i+1; j<=i+2; ++j ) {
74 if ( !tokens[j].empty() ) {
75 toklen = strlen( tokens[j].c_str() );
77 for ( k=0; k<toklen; ++k )
78 if ( ! strpbrk( &tokens[j].c_str()[k], capl )) {
82 if ( aid ) tpar.intid = tokens[j];
85 } else if ( tokens[i] == "Player" ) {
86 tpar.callsign = tokens[i];
90 //cout << tpar.airport << endl;
91 //cout << tpar.request << endl;
92 //cout << tpar.intention << endl;
93 //cout << tpar.intid << endl;