Barry Namespace Reference


Detailed Description

Project namespace, containing all related functions and classes.

This is the only namespace applications should be concerned with, for now.


Classes

class  Builder
 Base class for the builder functor hierarchy. More...
class  RecordBuilder
 Template class for easy creation of specific protocol packet builder objects. More...
class  RecordFetch
 Generic record fetch class, to help with using records without builder classes. More...
class  Controller
 The main interface class. More...
class  Data
class  Diff
class  DataQueue
 This class provides a thread aware fifo queue for Data objects, providing memory management for all Data object pointers it contains. More...
class  Error
 The base class for any future derived exceptions. More...
class  BadPassword
 A bad or unknown password when talking to the device. More...
class  BadData
 Thrown by record classes if their data is invalid and cannot be uploaded to the Blackberry. More...
class  BadSize
 Unexpected packet size, or not enough data. More...
class  ErrnoError
 System error that provides an errno error code. More...
class  ContactLdif
 Class for generating LDIF output based on a Barry::Contact record object. More...
class  LogLock
 RAII locking class used to protect the logStream passed into Barry::Init() (common.h). More...
class  Modem
class  Packet
class  ZeroPacket
 Provides an API for building and analyzing socket-0 protocol packets. More...
class  DBPacket
 Provides an API for building and analyzing raw DB protocol packets. More...
class  Parser
 Base class for the parser hierarchy. More...
class  RecordParser
 Template class for easy creation of specific parser objects. More...
class  PppFilter
struct  ProbeResult
class  Probe
class  Calendar
struct  ContactGroupLink
class  Contact
class  Folder
class  Memo
class  Message
class  PINMessage
class  SavedMessage
class  ServiceBookConfig
class  ServiceBook
class  Task
class  Timezone
struct  FieldLink
struct  CommandTableCommand
class  CommandTable
struct  RecordStateTableState
class  RecordStateTable
struct  DatabaseItem
class  DatabaseDatabase
struct  UnknownData
struct  UnknownField
struct  EmailAddress
struct  PostalAddress
struct  Date
class  SocketRoutingQueue
class  DataHandle
 std::auto_ptr like class that handles pointers to Data, but instead of freeing them completely, the Data objects are turned to the SocketRoutingQueue from whence they came. More...
class  scoped_lock
struct  SHA_CTX
class  SocketZero
class  Socket
 Encapsulates a "logical socket" in the Blackberry USB protocol. More...
struct  TimeZone

Namespaces

namespace  Mode
namespace  Protocol

Typedefs

typedef std::vector< std::string > CategoryList
typedef std::auto_ptr< SocketSocketHandle
typedef long min1900_t

Functions

void Init (bool data_dump_mode, std::ostream *logStream)
 See also the LogLock class.
bool IsHexData (const std::string &s)
istream & operator>> (istream &is, Data &data)
ostream & operator<< (ostream &os, const Data &data)
ostream & operator<< (ostream &os, const Diff &diff)
bool LoadDataArray (const string &filename, std::vector< Data > &array)
bool ReadDataArray (std::istream &is, std::vector< Data > &array)
BXEXPORT std::ostream & operator<< (std::ostream &os, const ContactLdif &ldif)
bool LogVerbose ()
std::ostream * GetLogStream ()
std::ostream & operator<< (std::ostream &os, const ProbeResult &pr)
BXEXPORT std::ostream & operator<< (std::ostream &os, const Calendar &msg)
BXEXPORT std::ostream & operator<< (std::ostream &os, const Contact &contact)
BXEXPORT std::ostream & operator<< (std::ostream &os, const Folder &msg)
BXEXPORT std::ostream & operator<< (std::ostream &os, const Memo &msg)
BXEXPORT std::ostream & operator<< (std::ostream &os, const Message &msg)
BXEXPORT std::ostream & operator<< (std::ostream &os, const PINMessage &msg)
BXEXPORT std::ostream & operator<< (std::ostream &os, const SavedMessage &msg)
BXEXPORT std::ostream & operator<< (std::ostream &os, const ServiceBookConfig &msg)
BXEXPORT std::ostream & operator<< (std::ostream &os, const ServiceBook &msg)
BXEXPORT std::ostream & operator<< (std::ostream &os, const Task &msg)
BXEXPORT std::ostream & operator<< (std::ostream &os, const Timezone &msg)
template<class RecordT>
const unsigned char * ParseCommonFields (RecordT &rec, const void *begin, const void *end)
template<class SizeT>
SizeT ConvertHtoB (SizeT s)
void BuildField1900 (Data &data, size_t &size, uint8_t type, time_t t)
void BuildField (Data &data, size_t &size, uint8_t type, char c)
void BuildField (Data &data, size_t &size, uint8_t type, uint16_t value)
void BuildField (Data &data, size_t &size, uint8_t type, const std::string &str)
void BuildField (Data &data, size_t &size, uint8_t type, const void *buf, size_t bufsize)
void BuildField (Data &data, size_t &size, const Barry::UnknownField &field)
void BuildField (Data &data, size_t &size, uint8_t type, const Barry::Protocol::GroupLink &link)
std::string ParseFieldString (const Barry::Protocol::CommonField *field)
std::string ParseFieldString (const void *data, uint16_t maxlen)
std::ostream & operator<< (std::ostream &os, const std::vector< UnknownField > &unknowns)
std::ostream & operator<< (std::ostream &os, const EmailAddress &msga)
std::ostream & operator<< (std::ostream &os, const PostalAddress &post)
std::ostream & operator<< (std::ostream &os, const Date &date)
BXEXPORT std::ostream & operator<< (std::ostream &os, const CommandTable &command)
BXEXPORT std::ostream & operator<< (std::ostream &os, const RecordStateTable &rst)
BXEXPORT std::ostream & operator<< (std::ostream &os, const DatabaseDatabase &dbdb)
void SHA1 (const void *dataIn, int len, unsigned char *hashout)
void SHA1_Init (SHA_CTX *ctx)
void SHA1_Update (SHA_CTX *ctx, const void *_dataIn, int len)
void SHA1_Final (unsigned char hashout[20], SHA_CTX *ctx)
min1900_t time2min (time_t t)
time_t min2time (min1900_t m)
const TimeZoneGetTimeZoneTable ()
 Returns a pointer to an array of TimeZone structs.
const TimeZoneGetTimeZone (unsigned short Code)
 Searches the internal timezone code table for the given Code and returns a pointer to a TimeZone struct found.
unsigned short GetTimeZoneCode (signed short HourOffset, signed short MinOffset)
 Searches the internal timezone table for the first matching Code.
time_t DayToDate (unsigned short Day)
 This routine takes the day of the year and returns a time_t adjusted from the first of the year.
time_t Message2Time (uint16_t r_date, uint16_t r_time)
 Localize the funky math used to convert a Blackberry message timestamp into a time_t.
const char * Version (int &major, int &minor)
 Fills major and minor with integer version numbers, and returns a string containing human readable version information in English.

Variables

bool __data_dump_mode__
std::ostream * LogStream = &std::cout
pthread_mutex_t LogStreamMutex
bool __data_dump_mode__
std::ostream * LogStream
bool __data_dump_mode__
std::ostream * LogStream
pthread_mutex_t LogStreamMutex
unsigned char Intro_Sends [][32]
unsigned char Intro_Receives [][32]
FieldLink< CalendarCalendarFieldLinks []
FieldLink< ContactContactFieldLinks []
FieldLink< FolderFolderFieldLinks []
FieldLink< MemoMemoFieldLinks []
FieldLink< MessageMessageFieldLinks []
FieldLink< PINMessagePINMessageFieldLinks []
FieldLink< SavedMessageSavedMessageFieldLinks []
FieldLink< ServiceBookConfigServiceBookConfigFieldLinks []
FieldLink< ServiceBookServiceBookFieldLinks []
FieldLink< TaskTaskFieldLinks []
FieldLink< TimezoneTimezoneFieldLinks []
TimeZone Zones []


Function Documentation

BXEXPORT time_t Barry::DayToDate ( unsigned short  Day  ) 

This routine takes the day of the year and returns a time_t adjusted from the first of the year.

FIXME This function assumes the year hasn't changed, but I don't have enough information to determine where the year is in this header info

Definition at line 186 of file time.cc.

Referenced by Message2Time().

BXEXPORT const TimeZone * Barry::GetTimeZone ( unsigned short  Code  ) 

Searches the internal timezone code table for the given Code and returns a pointer to a TimeZone struct found.

If the code is not found, a pointer to a valid TimeZone struct is is still returned, but the struct's Code contains TIME_ZONE_CODE_ERR, and the name is "Unknown time zone." The unknown timezone is the same offset as GMT.

Definition at line 149 of file time.cc.

References Barry::TimeZone::Name, TIME_ZONE_CODE_ERR, and Zones.

Referenced by Barry::Calendar::Dump().

BXEXPORT unsigned short Barry::GetTimeZoneCode ( signed short  HourOffset,
signed short  MinOffset = 0 
)

Searches the internal timezone table for the first matching Code.

If no matching Code is found, TIME_ZONE_CODE_ERR is returned.

This function does not adjust for daylight saving time.

Definition at line 168 of file time.cc.

References Barry::TimeZone::Name, TIME_ZONE_CODE_ERR, and Zones.

Referenced by Barry::Task::Clear(), and Barry::Calendar::Clear().

BXEXPORT const TimeZone * Barry::GetTimeZoneTable (  ) 

Returns a pointer to an array of TimeZone structs.

The last struct contains 0 in all fields, and can be used as an "end of array" marker.

Definition at line 134 of file time.cc.

References Zones.

BXEXPORT void Barry::Init ( bool  data_dump_mode = false,
std::ostream *  logStream = &std::cout 
)

See also the LogLock class.

Call this before anything else. This takes care of initializing the lower level libusb.

Parameters:
[in] data_dump_mode If set to true, the protocol conversation will be sent to stdout via the C++ std::cout stream.
[in] LogStream Pointer to std::ostream object to use for debug output and logging. Defaults to std::cout.

Definition at line 48 of file common.cc.

References __data_dump_mode__, LogStream, and LogStreamMutex.

Referenced by main().

BXEXPORT time_t Barry::Message2Time ( uint16_t  r_date,
uint16_t  r_time 
)

Localize the funky math used to convert a Blackberry message timestamp into a time_t.

Both r_date and r_time are expected to be fed in from the Protocol::MessageRecord struct in raw form, without endian conversion. This function handles that.

Definition at line 217 of file time.cc.

References btohs, and DayToDate().

Referenced by Barry::SavedMessage::ParseHeader(), Barry::PINMessage::ParseHeader(), and Barry::Message::ParseHeader().

BXEXPORT const char * Barry::Version ( int &  major,
int &  minor 
)

Fills major and minor with integer version numbers, and returns a string containing human readable version information in English.

Definition at line 39 of file version.cc.

References BARRY_VERSION_MAJOR, BARRY_VERSION_MINOR, and BARRY_VERSION_STRING.

Referenced by Usage().


Generated on Wed Sep 24 21:27:32 2008 for Barry by  doxygen 1.5.1