Man Linux: Main Page and Category List

NAME

       PComm - The Primitive Communications Object.

SYNOPSIS

       #include <pcomm.h>

   Public Members
       PComm (char *pcrDev, tcflag_t baudRate=B9600, const char *name=0)
           The PComm Constructor.

       ~PComm ()
           The PComm Destructor.

       bool PCOpen (const char *pcrDev=PCRDEV, tcflag_t baudRate=B9600)
           Opens another file descriptor to the serial device.

       void PCClose ()
           Closes the currently active file descriptor.

       size_pc PCTell (char *)
           Issue a command string to the radio.

       size_pc PCAsk (char *)
           Issue a status request from the radio.

       size_pc PCHear (char *)
           Receive a repsonse from the radio.

       size_pc PCRawWrite (char *)
           writes directly to the current socket.

       size_pc PCRawRead (char *)
           reads directly from the current socket.

   Private Members
       size_pc Write (char *)
           Internal function to write to the socket.

       size_pc Read (char *)
           Internal function to read from the socket.

       void resetCall ()
           resets the radio and port.

       void countCall ()
           function to keep track on the number of calls.

       int callCount
           Counter for number of times the radio has been written to.

       char callBuf [256]
           Internal buffer for radio reset.

       struct timeval* timeOut
           Used in the select for timeout(s).

       fd_set* FDSet
           Socket set used in the select.

       int retVal
           Select()s return value.

       struct termios* oldtio
           Stores the ports original settings.

       struct termios* newtio
           Port settings to be applied for current session.

       int fd
           Socket descriptor used for current session.

       char pcrDevice [256]
           Current serial/comm device.

       tcflag_t pcrSpeed
           Current baud rate.

       bool errRead
           Was there an error reading?

       bool errWrite
           Was there an error writing?

       char askBuf [256]
           Buffer for sending data in PCAsk.

       char hearBuf [256]
           Buffer for receiving data in PCHear.

       char writeBuf [256]
           Buffer for writing data used in wrapper Write().

       char readBuf [256]
           Buffer for reading data used in wrapper Read().

       char int_name [256]
           Internal object name. Warning: not necessarily populated.

       size_pc writeCtr
           Send bytecount used in wrapper function Write().

       size_pc readCtr
           Receive bytecount used in wrapper function Read().

       size_pc askCtr
           Receive bytecount used in PCAsk.

       size_pc tellCtr
           Send bytecount used in PCTell.

       size_pc hearCtr
           Receive bytecount used in PCHear.

DETAILED DESCRIPTION

       The Primitive Communications Object.

       PComm object is the serial i/o object. It facilitates the low level
       grunt work for reading and writing to the serial device(s). It handles
       the string manipulation necessary for communication with the radio.

       Definition at line 47 of file pcomm.h.

MEMBER FUNCTION DOCUMENTATION

   PComm::PComm (char * pcrDev, tcflag_t baudRate = B9600, const char * name =
       0)
       The PComm Constructor.

       Parameters:

       pcrDev name of device to be opened (char string)

       baudRate speed of device to be opened

       name internal object name (for your use)

       This is the easiest way to open the serial device for communications
       with the radio. If the serial device cannot be opened for processing
       the object will abort with a -1 status code to the operating system.

       You must send it at least the device name which is to be opened as the
       first argument. Optionally, you can send it an initial baudrate and an
       internal object name.

   PComm::~PComm ()
       The PComm Destructor.

       Destroys the object, and closes any open file descriptors to the serial
       device. It also restores any old (initial) settings to the serial
       device.

       Definition at line 62 of file pcomm.cpp.

   PComm::PCOpen (const char * pcrDev = PCRDEV, tcflag_t baudRate = B9600)
       Opens another file descriptor to the serial device.

       Parameters:

       pcrDev Serial port device to be opened.

       baudRate Initial serial speed.

       Opens a file descriptor to the device pcrDev (which is by default your
       system’s PCRDEV define) at the speed baudRate (which is by default as
       delinated in your termios.h set to 9600 baud).

       Warning: You can only call this as long as the object is alive. If you
       do destry the object remember to call this function only after setting
       up the port configuration correctly.

       Returns:
           true or false based on success value.

       Definition at line 79 of file pcomm.cpp.

   PComm::PCClose ()
       Closes the currently active file descriptor.

       Used in conjunction with PCOpen(...) so that you can release and regain
       the socket after an initialization procedure.

       Definition at line 173 of file pcomm.cpp.

   PComm::PCTell (char * mesg)
       Issue a command string to the radio.

       Parameters:

       mesg command string from pcrdef.h.

       Sends a command to the radio via the custom made wrapper function
       Write() . This doesnt really alter the message at all for reading and
       writing to the radio.

       Returns:
           number of bytes actually written gets returned, or (-1) on error.

       See also:
           pcrdef.h

       Definition at line 194 of file pcomm.cpp.

   PComm::PCAsk (char * mesg)
       Issue a status request from the radio.

       Parameters:

       mesg a query command string

       This function makes sure that mesg isnt empty, as well as making sure
       that mesg is two bytes long. Any queries sent to the radio should be
       the header of the information requested to be returned.

       It then zero’s out the ask buffer, and copies the message into the ask
       buffer. Then it concatenates the PCRQST command terminator, and calls
       Write() sending it the ask buffer.

       Returns:
           the number of bytes asked minus the PCRQST command terminator.

       See also:
           PCRQST() pcrdef.h

       Definition at line 217 of file pcomm.cpp.

   PComm::PCHear (char * mesg)
       Receive a repsonse from the radio.

       Parameters:

       mesg a character string long enough to hold a reply

       This function makes sure that mesg is pointing to a valid address (ie:
       is malloc’d) then it zero’s out the message string and hearBuffer. It
       then calls Read()... remembering the number of bytes read, it cuts out
       the end-of-command marker read in (CR-LF) and copies what it heard into
       the message string.

       If the radio kept spitting out LF chars, it checks for the err bool.

       Returns:
           the number of bytes read, or -1 on err.

       See also:
           pcrdef.h

       Definition at line 251 of file pcomm.cpp.

   PComm::PCRawWrite (char * mesg)
       writes directly to the current socket.

       Parameters:

       mesg the character string which it will write

       Sends a command directly to the socket without any preprocessing

       Returns:
           number of bytes actually written

       See also:
           pcrdef.h PCRawRead(char *mesg)

       Definition at line 304 of file pcomm.cpp.

   PComm::PCRawRead (char * mesg)
       reads directly from the current socket.

       Parameters:

       mesg malloc’d char string big enough to hold a reply

       Reads directly from the socket without any preprocessing

       Returns:
           number of bytes read.

       See also:
           pcrdef.h PCRawWrite(char *mesg)

       Definition at line 337 of file pcomm.cpp.

   PComm::Write (char * submesg) [private]
       Internal function to write to the socket.

       Parameters:

       submesg character string to write out to

       sends a command to the radio/socket.

       It zero’s out the internal class’s write buffer, and copies the message
       passed in called submesg into the write buffer. It appends the special
       end-of-command marker to the write buffer, and exec’s write(). Select()
       is used to see if we are ready to write to the socket in the FDSet.

       Returns:
           what was actually written minus two. Since the minus two is to
           account for the end-of-command marker. On error we return -2

       See also:
           Read()

       Definition at line 370 of file pcomm.cpp.

   PComm::Read (char * submesg) [private]
       Internal function to read from the socket.

       Parameters:

       submesg a character string long enough to hold data

       It reset’s the read counter, and loopbreaker. The read counter keeps
       track of the number of bytes read in. The loop breaker makes sure that
       read doesnt get stuck reading New Lines from the radio for ever and
       ever. Since we are ignoring newlines when we read. The radio has a
       tendency of sending newlines even when it has nothing to say.

       it executes read() into the internal variable read buffer, and
       increments the loop breaker. If the number of bytes read is greater
       than 1, then some useful data was read in... no need to re-loop. When
       good data is read, it is copied into the submesg string from the read
       buffer. Select() will determine if the socket in FDSet is ready to read
       data.

       Returns:
           If after five times, the read() read in anything less than 1, then
           break, and set errRead to true, while returning the number of bytes
           read. If after five seconds fd says that it’s still not ready, then
           it will return, setting the read counter to a negative value.

       See also:
           Write()

       Definition at line 416 of file pcomm.cpp.

   PComm::resetCall () [private]
       resets the radio and port.

       This function reset’s the radio and the port when called. It is
       necessary to reset the radio after a certain number of read() and
       write()’s. In this case we have made it after 200 write() calls.

       It closes the port, and reopens the port. Zero’s out the call buffer,
       and copy’s the poweron/ecmd command strings into the call buffer. It
       then select()’s to see if we are ready to write to the buffer. After
       which it writes to the radio to tell it, that we are back online and
       want it to come up. Then it bzero’s the call buffer and reads what the
       radio has to say. It loops in that mode if it received only one
       character of data (the radio likes to send nothing but newlines
       sometimes) AND the number of loops is less than 10. We dont want to get
       stuck there.

       Warning: this function is necessary for the radio to operate properly
       under the manual update mode. If you override this function make sure
       to run the radio in auto-update mode.

       See also:
           countCall()

       Definition at line 496 of file pcomm.cpp.

   PComm::countCall () [private]
       function to keep track on the number of calls.

       this function keeps track of the number of calls that were sent to the
       radio before the last reset. it calls resetCall() every 200 calls,
       otherwise it increments the call count.

       See also:
           resetCall()

       Definition at line 564 of file pcomm.cpp.

MEMBER DATA DOCUMENTATION

   int PComm::callCount [private]
       Counter for number of times the radio has been written to.

       Definition at line 68 of file pcomm.h.

   char PComm::callBuf[256] [private]
       Internal buffer for radio reset.

       Definition at line 70 of file pcomm.h.

   struct timeval* PComm::timeOut [private]
       Used in the select for timeout(s).

       Definition at line 73 of file pcomm.h.

   fd_set* PComm::FDSet [private]
       Socket set used in the select.

       Definition at line 75 of file pcomm.h.

   int PComm::retVal [private]
       Select()’s return value.

       Definition at line 77 of file pcomm.h.

   struct termios* PComm::oldtio [private]
       Stores the port’s original settings.

       Definition at line 79 of file pcomm.h.

   struct termios* PComm::newtio [private]
       Port settings to be applied for current session.

       Definition at line 81 of file pcomm.h.

   int PComm::fd [private]
       Socket descriptor used for current session.

       Definition at line 83 of file pcomm.h.

   char PComm::pcrDevice[256] [private]
       Current serial/comm device.

       Definition at line 85 of file pcomm.h.

   tcflag_t PComm::pcrSpeed [private]
       Current baud rate.

       Definition at line 87 of file pcomm.h.

   bool PComm::errRead [private]
       Was there an error reading?

       Definition at line 90 of file pcomm.h.

   bool PComm::errWrite [private]
       Was there an error writing?

       Definition at line 92 of file pcomm.h.

   char PComm::askBuf[256] [private]
       Buffer for sending data in PCAsk.

       Definition at line 94 of file pcomm.h.

   char PComm::hearBuf[256] [private]
       Buffer for receiving data in PCHear.

       Definition at line 96 of file pcomm.h.

   char PComm::writeBuf[256] [private]
       Buffer for writing data used in wrapper Write().

       Definition at line 98 of file pcomm.h.

   char PComm::readBuf[256] [private]
       Buffer for reading data used in wrapper Read().

       Definition at line 100 of file pcomm.h.

   char PComm::int_name[256] [private]
       Internal object name. Warning: not necessarily populated.

       Definition at line 102 of file pcomm.h.

   size_pc PComm::writeCtr [private]
       Send bytecount used in wrapper function Write().

       Definition at line 104 of file pcomm.h.

   size_pc PComm::readCtr [private]
       Receive bytecount used in wrapper function Read().

       Definition at line 106 of file pcomm.h.

   size_pc PComm::askCtr [private]
       Receive bytecount used in PCAsk.

       Definition at line 108 of file pcomm.h.

   size_pc PComm::tellCtr [private]
       Send bytecount used in PCTell.

       Definition at line 110 of file pcomm.h.

   size_pc PComm::hearCtr [private]
       Receive bytecount used in PCHear.

       Definition at line 112 of file pcomm.h.

AUTHOR

       Generated automatically by Doxygen for Icom PCR-1000 Library from the
       source code.