dtn::BluetoothConvergenceLayer Class Reference

#include <BluetoothConvergenceLayer.h>

Inheritance diagram for dtn::BluetoothConvergenceLayer:

dtn::ConvergenceLayer oasys::Logger List of all members.

Detailed Description

Definition at line 24 of file BluetoothConvergenceLayer.h.

Public Types

enum  contact_header_flags_t { BUNDLE_ACK_ENABLED = 0x1 }
 Values for ContactHeader flags. More...
enum  btcl_header_type_t { BUNDLE_DATA = 0x1, BUNDLE_ACK = 0x2, KEEPALIVE = 0x3, SHUTDOWN = 0x4 }
 Valid type codes for the protocol headers. More...

Public Member Functions

 BluetoothConvergenceLayer ()
bool init_link (Link *link, int argc, const char *argv[])
 Create any CL-specific components of the Link.
void dump_link (Link *link, oasys::StringBuffer *buf)
 Dump out CL specific link information.
bool interface_up (Interface *iface, int argc, const char *argv[])
 Register a new interface.
bool interface_down (Interface *iface)
 Bring down the interface.
void dump_interface (Interface *iface, oasys::StringBuffer *buf)
 Dump out CL specific interface information.
bool open_contact (const ContactRef &contact)
 Open the connection to the given contact and prepare for bundles to be transmitted.
bool close_contact (const ContactRef &contact)
 Close the connection to the contact.
void send_bundle (const ContactRef &, Bundle *)
 Send a bundle to the Contact, mark the link as busy, and queue the bundle on the Connection's bundle queue.

Public Attributes

dtn::BluetoothConvergenceLayer::BTCLHeader packed
 Contact parameter header.
dtn::BluetoothConvergenceLayer::BundleDataHeader packed
 Header for the start of a block of bundle data.
dtn::BluetoothConvergenceLayer::BundleAckHeader packed
 Header for a bundle acknowledgment.

Static Public Attributes

static const u_int8_t BTCL_VERSION = 0x01
 Current version of the protocol.
static Params defaults_
static ConnectionManager connections_

Protected Member Functions

bool parse_params (Params *params, int argc, const char **argv, const char **invalidp)
 Parse variable args into a parameter structure.
bool parse_nexthop (const char *, bdaddr_t *)

Classes

struct  BTCLHeader
 Contact parameter header. More...
struct  BundleAckHeader
 Header for a bundle acknowledgment. More...
struct  BundleDataHeader
 Header for the start of a block of bundle data. More...
class  Connection
 Helper class that wraps the sender-side per-contact state. More...
class  ConnectionManager
 ConnectionManager associates Listeners to their Bluetooth adapter address and provides a factory method for instantiating Connection objects. More...
class  Listener
 Helper class (and thread) that listens on a registered interface for incoming data. More...
class  NeighborDiscovery
class  Params
 Tunable parameter structure. More...


Member Enumeration Documentation

enum dtn::BluetoothConvergenceLayer::contact_header_flags_t

Values for ContactHeader flags.

Enumerator:
BUNDLE_ACK_ENABLED 

Definition at line 35 of file BluetoothConvergenceLayer.h.

enum dtn::BluetoothConvergenceLayer::btcl_header_type_t

Valid type codes for the protocol headers.

For BT/RFCOMM, the one byte code is always sent first, followed by the per-type header

Enumerator:
BUNDLE_DATA  bundle data
BUNDLE_ACK  bundle acknowledgment
KEEPALIVE  keepalive packet
SHUTDOWN  indicates sending side will close connection

Definition at line 58 of file BluetoothConvergenceLayer.h.


Constructor & Destructor Documentation

dtn::BluetoothConvergenceLayer::BluetoothConvergenceLayer (  ) 

Definition at line 49 of file BluetoothConvergenceLayer.cc.

References BDADDR_ANY, dtn::BluetoothConvergenceLayer::Params::bundle_ack_enabled_, defaults_, dtn::BluetoothConvergenceLayer::Params::hcidev_, dtn::BluetoothConvergenceLayer::Params::keepalive_interval_, dtn::BluetoothConvergenceLayer::Params::local_addr_, dtn::BluetoothConvergenceLayer::Params::max_retry_interval_, dtn::BluetoothConvergenceLayer::Params::min_retry_interval_, dtn::BluetoothConvergenceLayer::Params::neighbor_poll_interval_, dtn::BluetoothConvergenceLayer::Params::partial_ack_len_, dtn::BluetoothConvergenceLayer::Params::readbuf_len_, dtn::BluetoothConvergenceLayer::Params::remote_addr_, dtn::BluetoothConvergenceLayer::Params::retry_interval_, dtn::BluetoothConvergenceLayer::Params::rtt_timeout_, and dtn::BluetoothConvergenceLayer::Params::writebuf_len_.


Member Function Documentation

bool dtn::BluetoothConvergenceLayer::init_link ( Link link,
int  argc,
const char *  argv[] 
) [virtual]

Create any CL-specific components of the Link.

This parses and validates the parameters and stores them in the CLInfo slot in the Link class.

Reimplemented from dtn::ConvergenceLayer.

Definition at line 228 of file BluetoothConvergenceLayer.cc.

References oasys::Bluetooth::batostr(), BDADDR_ANY, defaults_, oasys::Bluetooth::hci_get_bdaddr(), dtn::BluetoothConvergenceLayer::Params::hcidev_, dtn::BluetoothConvergenceLayer::Params::local_addr_, log_debug, log_err, dtn::BluetoothConvergenceLayer::Params::max_retry_interval_, dtn::BluetoothConvergenceLayer::Params::min_retry_interval_, dtn::Link::nexthop(), dtn::Link::OPPORTUNISTIC, dtn::Link::params(), parse_nexthop(), parse_params(), dtn::Link::retry_interval_, dtn::BluetoothConvergenceLayer::Params::retry_interval_, dtn::Link::set_cl_info(), dtn::Link::set_local(), dtn::Link::type(), and dtn::Link::type_str().

void dtn::BluetoothConvergenceLayer::dump_link ( Link link,
oasys::StringBuffer buf 
) [virtual]

Dump out CL specific link information.

Reimplemented from dtn::ConvergenceLayer.

Definition at line 290 of file BluetoothConvergenceLayer.cc.

References oasys::StringBuffer::appendf(), oasys::Bluetooth::batostr(), dtn::Link::cl_info(), dtn::BluetoothConvergenceLayer::Params::local_addr_, and dtn::BluetoothConvergenceLayer::Params::remote_addr_.

bool dtn::BluetoothConvergenceLayer::interface_up ( Interface iface,
int  argc,
const char *  argv[] 
) [virtual]

Register a new interface.

Reimplemented from dtn::ConvergenceLayer.

Definition at line 107 of file BluetoothConvergenceLayer.cc.

References BDADDR_ANY, connections_, defaults_, oasys::Bluetooth::hci_get_bdaddr(), oasys::BluetoothServer::listen(), dtn::BluetoothConvergenceLayer::ConnectionManager::listener(), log_debug, log_err, oasys::Logger::logpath_, oasys::Logger::logpathf(), dtn::Interface::name(), dtn::BluetoothConvergenceLayer::Listener::nd_, parse_params(), oasys::RFCOMMServerThread::rc_bind(), dtn::Interface::set_cl_info(), and oasys::Thread::start().

bool dtn::BluetoothConvergenceLayer::interface_down ( Interface iface  )  [virtual]

Bring down the interface.

Reimplemented from dtn::ConvergenceLayer.

Definition at line 168 of file BluetoothConvergenceLayer.cc.

References dtn::Interface::cl_info(), oasys::BluetoothSocket::close(), connections_, dtn::BluetoothConvergenceLayer::ConnectionManager::del_listener(), oasys::Thread::interrupt(), oasys::IOHandlerBase::interrupt_from_io(), oasys::Thread::is_stopped(), dtn::BluetoothConvergenceLayer::Listener::nd_, oasys::Thread::set_should_stop(), and oasys::Thread::yield().

void dtn::BluetoothConvergenceLayer::dump_interface ( Interface iface,
oasys::StringBuffer buf 
) [virtual]

Dump out CL specific interface information.

Reimplemented from dtn::ConvergenceLayer.

Definition at line 202 of file BluetoothConvergenceLayer.cc.

References oasys::StringBuffer::appendf(), oasys::Bluetooth::batostr(), BDADDR_ANY, dtn::Interface::cl_info(), dtn::BluetoothConvergenceLayer::Params::hcidev_, dtn::BluetoothConvergenceLayer::Params::local_addr_, dtn::BluetoothConvergenceLayer::Params::neighbor_poll_interval_, and dtn::BluetoothConvergenceLayer::Params::remote_addr_.

bool dtn::BluetoothConvergenceLayer::open_contact ( const ContactRef contact  )  [virtual]

Open the connection to the given contact and prepare for bundles to be transmitted.

Implements dtn::ConvergenceLayer.

Definition at line 306 of file BluetoothConvergenceLayer.cc.

References ASSERT, BDADDR_ANY, dtn::Link::cl_info(), dtn::BluetoothConvergenceLayer::ConnectionManager::connection(), connections_, log_debug, dtn::Link::nexthop(), parse_nexthop(), dtn::BluetoothConvergenceLayer::Connection::set_contact(), and oasys::Thread::start().

bool dtn::BluetoothConvergenceLayer::close_contact ( const ContactRef contact  )  [virtual]

Close the connection to the contact.

Reimplemented from dtn::ConvergenceLayer.

Definition at line 339 of file BluetoothConvergenceLayer.cc.

References dtn::BluetoothConvergenceLayer::Connection::interrupt_from_io(), oasys::Thread::is_stopped(), log_debug, log_info, oasys::Ref< _Type >::object(), oasys::Thread::set_should_stop(), oasys::Thread::should_stop(), and oasys::Thread::yield().

void dtn::BluetoothConvergenceLayer::send_bundle ( const ContactRef ,
Bundle  
) [virtual]

Send a bundle to the Contact, mark the link as busy, and queue the bundle on the Connection's bundle queue.

Implements dtn::ConvergenceLayer.

Definition at line 375 of file BluetoothConvergenceLayer.cc.

References ASSERT, dtn::Link::BUSY, log_info, and oasys::Ref< _Type >::object().

bool dtn::BluetoothConvergenceLayer::parse_params ( Params params,
int  argc,
const char **  argv,
const char **  invalidp 
) [protected]

Parse variable args into a parameter structure.

Definition at line 73 of file BluetoothConvergenceLayer.cc.

References oasys::OptParser::addopt(), dtn::BluetoothConvergenceLayer::Params::bundle_ack_enabled_, dtn::BluetoothConvergenceLayer::Params::hcidev_, dtn::BluetoothConvergenceLayer::Params::keepalive_interval_, dtn::BluetoothConvergenceLayer::Params::local_addr_, dtn::BluetoothConvergenceLayer::Params::max_retry_interval_, dtn::BluetoothConvergenceLayer::Params::min_retry_interval_, dtn::BluetoothConvergenceLayer::Params::neighbor_poll_interval_, oasys::OptParser::parse(), dtn::BluetoothConvergenceLayer::Params::partial_ack_len_, dtn::BluetoothConvergenceLayer::Params::readbuf_len_, dtn::BluetoothConvergenceLayer::Params::remote_addr_, dtn::BluetoothConvergenceLayer::Params::rtt_timeout_, and dtn::BluetoothConvergenceLayer::Params::writebuf_len_.

Referenced by init_link(), and interface_up().

bool dtn::BluetoothConvergenceLayer::parse_nexthop ( const char *  ,
bdaddr_t *   
) [protected]

Definition at line 390 of file BluetoothConvergenceLayer.cc.

References log_warn, and oasys::Bluetooth::strtoba().

Referenced by init_link(), and open_contact().


Member Data Documentation

const u_int8_t dtn::BluetoothConvergenceLayer::BTCL_VERSION = 0x01 [static]

Current version of the protocol.

Definition at line 30 of file BluetoothConvergenceLayer.h.

Referenced by dtn::BluetoothConvergenceLayer::Connection::recv_contact_header(), and dtn::BluetoothConvergenceLayer::Connection::send_contact_header().

struct dtn::BluetoothConvergenceLayer::BTCLHeader dtn::BluetoothConvergenceLayer::packed

Contact parameter header.

Sent once in each direction for BT/RFCOMM.

struct dtn::BluetoothConvergenceLayer::BundleDataHeader dtn::BluetoothConvergenceLayer::packed

Header for the start of a block of bundle data.

struct dtn::BluetoothConvergenceLayer::BundleAckHeader dtn::BluetoothConvergenceLayer::packed

Header for a bundle acknowledgment.

Params dtn::BluetoothConvergenceLayer::defaults_ [static]

Definition at line 176 of file BluetoothConvergenceLayer.h.

Referenced by BluetoothConvergenceLayer(), init_link(), and interface_up().

ConnectionManager dtn::BluetoothConvergenceLayer::connections_ [static]

Definition at line 177 of file BluetoothConvergenceLayer.h.

Referenced by interface_down(), interface_up(), open_contact(), and dtn::BluetoothConvergenceLayer::NeighborDiscovery::send_announce().


The documentation for this class was generated from the following files:
Generated on Fri Dec 22 14:48:04 2006 for DTN Reference Implementation by  doxygen 1.5.1