A class for creating an EchoLink connection. More...
#include <EchoLinkQso.h>
The type of the connection state.
More...A class for creating an EchoLink connection.
This class is used to create a connection to another EchoLink node. It only handles outgoing connections. To handle incoming connections, have a look at EchoLink::Dispatcher. However, when an incoming connection has been signalled by the dispatcher, a Qso object should be created to complete the connection. This logic should be glued together in the main program.
For an example usage, have a look at the code below. A connection is created to ourself. When the connection has been established the information message is automatically transmitted. Upon reception of the information message a disconnect is initiated. When the link has been disconnected the application exits.
#include <iostream> #include <AsyncCppApplication.h> #include <EchoLinkQso.h> using namespace std; using namespace Async; using namespace EchoLink; class MyClass : public SigC::Object { public: MyClass(void) { qso = new Qso(IpAddress("127.0.0.1"), "MYCALL", "MyName", "A test Qso"); if (!qso->initOk()) { delete qso; cerr << "Creation of Qso failed\n"; Application::app().quit(); return; } qso->infoMsgReceived.connect(slot(*this, &MyClass::onInfoMsgReceived)); qso->stateChange.connect(slot(*this, &MyClass::onStateChange)); qso->connect(); } ~MyClass(void) { delete qso; } private: Qso *qso; void onInfoMsgReceived(const string& msg) { cerr << "Info message received: " << msg << endl; qso->disconnect(); } void onStateChange(Qso::State state) { cerr << "State changed to "; switch (state) { case Qso::STATE_DISCONNECTED: cerr << "DISCONNECTED"; Application::app().quit(); break; case Qso::STATE_CONNECTING: cerr << "CONNECTING"; break; case Qso::STATE_CONNECTED: cerr << "CONNECTED"; break; default: break; } cout << endl; } }; int main(int argc, char **argv) { CppApplication app; // or QtApplication MyClass my_class; app.exec(); }
Definition at line 145 of file EchoLinkQso.h.
enum EchoLink::Qso::State |
The type of the connection state.
Definition at line 163 of file EchoLinkQso.h.
EchoLink::Qso::Qso | ( | const Async::IpAddress & | ip, | |
const std::string & | callsign = "" , |
|||
const std::string & | name = "" , |
|||
const std::string & | info = "" | |||
) |
Constructor.
ip | The IP-address of the remote station | |
callsign | Callsign of local user (not remote callsign) | |
name | Name of local user (not remote name) | |
info | Local information to send upon connect |
EchoLink::Qso::~Qso | ( | void | ) |
Destructor.
bool EchoLink::Qso::accept | ( | void | ) |
Accept an incoming connection.
Use this function to accept an incoming connection. Incoming connections are signalled through the EchoLink::Dispatcher. When an incoming connection has been received, a Qso object should be created and this function should be called to accept the connection. Be sure to check that a valid callsign has connected. At least if the EchoLink node is connected to a radio transmitter.
The difference between the connect and accept functions are that the accept function goes right into the connected state. The remote station is assumed to be present. This might not be true in some strange cases. In such a strange case, the connection will timeout after a while.
virtual void EchoLink::Qso::allSamplesFlushed | ( | void | ) | [protected, virtual] |
The registered sink has flushed all samples.
This function will be called when all samples have been flushed in the registered sink. If it is not reimplemented, a handler must be set that handle the function call. This function is normally only called from a connected sink object.
bool EchoLink::Qso::connect | ( | void | ) |
Initiate a connection to the remote station.
Use this function to connect to the remote station. The StateChange signal will be emitted to indicate that a connection is in progress. When the connection has been established, the stateChange signal will be emitted again. On failure to connect, the stateChange signal will be emitted to indicate that the disconnected state has been entered again.
State EchoLink::Qso::currentState | ( | void | ) | const [inline] |
Get the current state of the connection.
Definition at line 354 of file EchoLinkQso.h.
bool EchoLink::Qso::disconnect | ( | void | ) |
Initiate a disconnection from the remote station.
virtual void EchoLink::Qso::flushSamples | ( | void | ) | [virtual] |
Tell the sink to flush the previously written samples.
This function is used to tell the sink to flush previously written samples. When done flushing, the sink should call the sourceAllSamplesFlushed function. This function is normally only called from a connected source object.
bool EchoLink::Qso::initOk | ( | void | ) | [inline] |
Check that the initialization went ok.
This function should be called after creating a new Qso object to make sure everything went well.
Definition at line 194 of file EchoLinkQso.h.
bool EchoLink::Qso::isRemoteInitiated | ( | void | ) | const [inline] |
Find out if the connection is remotely initiated or locally initiated.
Definition at line 341 of file EchoLinkQso.h.
const std::string& EchoLink::Qso::localCallsign | ( | void | ) | const [inline] |
Retrieve the local callsign.
Definition at line 207 of file EchoLinkQso.h.
const std::string& EchoLink::Qso::localInfo | ( | void | ) | const [inline] |
Retrieve the local station info.
Definition at line 233 of file EchoLinkQso.h.
const std::string& EchoLink::Qso::localName | ( | void | ) | const [inline] |
Retrieve the local name.
Definition at line 220 of file EchoLinkQso.h.
bool EchoLink::Qso::receivingAudio | ( | void | ) | const [inline] |
Find out if there is audio coming in on this connection.
Definition at line 348 of file EchoLinkQso.h.
const std::string& EchoLink::Qso::remoteCallsign | ( | void | ) | const [inline] |
Get the remote callsign.
Definition at line 332 of file EchoLinkQso.h.
const Async::IpAddress& EchoLink::Qso::remoteIp | ( | void | ) | const [inline] |
Get the IP address of the remote station.
Definition at line 293 of file EchoLinkQso.h.
const std::string& EchoLink::Qso::remoteName | ( | void | ) | const [inline] |
Get the remote name.
Definition at line 319 of file EchoLinkQso.h.
virtual void EchoLink::Qso::resumeOutput | ( | void | ) | [virtual] |
Resume audio output to the sink.
This function will be called when the registered audio sink is ready to accept more samples. This function is normally only called from a connected sink object.
bool EchoLink::Qso::sendAudioRaw | ( | GsmVoicePacket * | packet | ) |
Send a raw GSM audio packet to the remote station.
packet | The packet to send |
This function can be used to send a raw GSM packet to the remote station. Probably only useful if you received it from the audioReceivedRaw signal.
bool EchoLink::Qso::sendChatData | ( | const std::string & | msg | ) |
Send chat data to the remote station.
msg | The message to send |
bool EchoLink::Qso::sendInfoData | ( | const std::string & | info = "" |
) |
Send info data to the remote station.
info | The info to send |
bool EchoLink::Qso::setLocalCallsign | ( | const std::string & | callsign | ) |
Set the local callsign.
callsign | The callsign to set |
void EchoLink::Qso::setLocalInfo | ( | const std::string & | info | ) |
Set the local info.
info | The informational message that is sent to the remote station upon connection. |
bool EchoLink::Qso::setLocalName | ( | const std::string & | name | ) |
Set the local name (name of station operator).
name | The name to set |
void EchoLink::Qso::setRemoteCallsign | ( | const std::string & | call | ) | [inline] |
Set the callsign of the remote station.
call | The callsign to set |
Definition at line 325 of file EchoLinkQso.h.
void EchoLink::Qso::setRemoteName | ( | const std::string & | name | ) | [inline] |
Set the name of the remote station.
name | The name to set |
Definition at line 312 of file EchoLinkQso.h.
virtual int EchoLink::Qso::writeSamples | ( | const float * | samples, | |
int | count | |||
) | [virtual] |
Write samples into this audio sink.
samples | The buffer containing the samples | |
count | The number of samples in the buffer |
This function is used to write audio into this audio sink. If it returns 0, no more samples should be written until the resumeOutput function in the source have been called. This function is normally only called from a connected source object.
SigC::Signal1<void, GsmVoicePacket*> EchoLink::Qso::audioReceivedRaw |
A signal that is emitted when an audio datagram has been received.
data | A pointer to the buffer that contains the raw audio packet |
This signal is emitted whenever an audio packet has been received on the connection. It gives access to the raw GSM packet. This can be used if the encoded data is going to be retransmitted. In this case it is not good to decode and then encode the data again. It will sound awful.
Definition at line 391 of file EchoLinkQso.h.
SigC::Signal1<void, const std::string&> EchoLink::Qso::chatMsgReceived |
A signal that is emitted when a chat message is received.
msg | The received chat message |
Definition at line 366 of file EchoLinkQso.h.
SigC::Signal1<void, const std::string&> EchoLink::Qso::infoMsgReceived |
A signal that is emitted when a station info message is received.
msg | The received message |
Definition at line 360 of file EchoLinkQso.h.
SigC::Signal1<void, bool> EchoLink::Qso::isReceiving |
A signal that is emitted when the audio receive state changes.
is_receiving | Is true when audio is being received and false when not |
Definition at line 380 of file EchoLinkQso.h.
SigC::Signal1<void, State> EchoLink::Qso::stateChange |
A signal that is emitted when the connection state changes.
state | The new connection state |
Definition at line 372 of file EchoLinkQso.h.