Main Page | Data Structures | File List | Data Fields | Globals

client.h File Reference

Barcode reader client application header. More...

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <sys/time.h>
#include <sys/times.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/file.h>
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <time.h>
#include <termios.h>
#include <fcntl.h>
#include <signal.h>
#include "isisclient.h"

Go to the source code of this file.

Data Structures

struct  barcode
 Barcode scanner parameter table. More...


Defines

#define DEFAULT_MYID   "MS"
 default client ISIS node name

#define DEFAULT_MYPORT   10601
 default client socket port

#define DEFAULT_RCFILE   "/home/darkstar/dts/Config/barcode.ini"
 default client runtime config file

#define DEFAULT_LOGFILE   "/home/darkstar/dts/Logs/barcode.log"
 default client runtime log file (unimplemented)

#define DEFAULT_ISISID   "IS"
 default ISIS server node name

#define DEFAULT_ISISHOST   "darkstar"
 default ISIS server host

#define DEFAULT_ISISPORT   6600
 default ISIS server port number

#define APP_VERSION   "1.0 Beta"
 placeholder version number, set in Makefile

#define APP_COMPDATE   "2004-01-01"
 placeholder compilation date, set by build script

#define APP_COMPTIME   "00:00:00"
 placeholder compilation time, set by build script


Typedefs

typedef barcode barcode_t
 Barcode scanner parameter table.


Functions

int LoadConfig (char *)
 Load/Parse ISIS client's runtime configuration file.

void KeyboardCommand (char *)
 Process a command from the client's console keyboard.

void SocketCommand (char *)
 Process a message/command from the client UDP socket.

void handleint (int)
 Service Ctrl+C (SIGINT) signals.


Variables

isisclient_t client
 Global client runtime config table.

barcode_t mask
 Global client barcode reader table for the Slit Mask reader.


Detailed Description

Barcode reader client application header.

Client application header for the experimental barcode reader test application.


Define Documentation

#define DEFAULT_MYID   "MS"
 

default client ISIS node name

#define DEFAULT_MYPORT   10601
 

default client socket port

#define DEFAULT_RCFILE   "/home/darkstar/dts/Config/barcode.ini"
 

default client runtime config file

#define DEFAULT_LOGFILE   "/home/darkstar/dts/Logs/barcode.log"
 

default client runtime log file (unimplemented)

#define DEFAULT_ISISID   "IS"
 

default ISIS server node name

#define DEFAULT_ISISHOST   "darkstar"
 

default ISIS server host

#define DEFAULT_ISISPORT   6600
 

default ISIS server port number

#define APP_VERSION   "1.0 Beta"
 

placeholder version number, set in Makefile

#define APP_COMPDATE   "2004-01-01"
 

placeholder compilation date, set by build script

#define APP_COMPTIME   "00:00:00"
 

placeholder compilation time, set by build script


Typedef Documentation

typedef struct barcode barcode_t
 

Barcode scanner parameter table.

Contains the basic parameters of one or more barcode readers, as follows:

  • Port Name of the barcode reader's comm port. Can be either a direct port name (e.g., "/dev/ttyS0") or a socket port on a network terminal server (e.g., "172.16.1.56:8004").
  • FD File descriptor of the open comm port
  • timeout Communications timeout interval in seconds. Read waits on the comm port will timeout if no reply is received within this time interval. Must be greater than the reader's internal no-decode timeout interval.
  • Name Parameter name bound to the barcode label read. For example, if Name="MaskID", the client will return "MaskID=(label text)" when reporting the contents of a barcode label. The only way to easily distinguish output from multiple barcode readers controlled by a single application.
  • Debug Set 1 if you want super-verbose debug chatter, otherwise set to 0 if you want no debug chatter on the app console.


Function Documentation

int LoadConfig char *  cfgfile  ) 
 

Load/Parse ISIS client's runtime configuration file.

Parameters:
cfgfile Path/name of the client runtime configuration file
Returns:
0 if success, <0 if failure. All error message are printed to the client's console.
The precise actions of LoadConfig() are tailored to the client application.

void KeyboardCommand char *  line  ) 
 

Process a command from the client's console keyboard.

Parameters:
line string with the keyboard command
This function is setup as a callback for readline(), the GNU command-line library that provides Emacs-like key bindings for command-line editing, rapid "arrow keys" command history browsing, and convenient command history commands (!, !!, etc.). This gives the client application's command-line interface a look-and-feel familiar to most users of Unix system command shells (e.g., the tcsh shell).

This function parses the interactive command line and calls the appropriate low-level cmd_xxx() command action functions for excuting most commands, as well as servicing ">XX msgtype: command" format raw IMPv2 message sending requests.

All keyboard commands are treated as EXEC: type IMPv2 messages. This makes the downstream cmd_xxx() action functions insensitive to whether or not the command came from the keyboard or from a remote ISIS server or client application.

See also:
SocketCommand()

void SocketCommand char *  buf  ) 
 

Process a message/command from the client UDP socket.

Parameters:
buf string with the IMPv2 message received from the remote application
This function parses a message received from a remote ISIS server or client application, and interprets the message. All EXEC: and implicit REQ: type messages are passed to the corresponding cmd_xxx() action functions for handling, while the remaining informational messages are simply echoed to the console screen.

More sophisticated handlers might pass such messages on to parsers/handlers of their own if the inputs were actually used for something other than "visual" information for the user of this application.

All messages received from an ISIS node are assumed to be in the proper IMPv2 messaging syntax.

Note that EXEC: is new to IMPv2. It allows remote nodes to transmit protected "executive" commands to clients, giving them access to commands that would otherwise only be available on the console keyboard (e.g., the "quit" command). Thus a remote EXEC: command means "act as if this was typed at the keyboard". It is the responsibility of the remote application to make sure that EXEC: is used with care, as you could do something stupid (though your client application should not allow actions that would be physically unsafe to personnel or equipment).

See also:
KeyboardCommand()

void handleint int  signalValue  ) 
 

Service Ctrl+C (SIGINT) signals.

Trap and handle any Ctrl+C keys pressed at the command-line interface. Right now it doesn't do much more than note that Ctrl+C has been it, but in the future it could do more if required.


Variable Documentation

isisclient_t client
 

Global client runtime config table.

barcode_t mask
 

Global client barcode reader table for the Slit Mask reader.


Generated on Thu Jul 22 20:10:48 2004 for Barcode Reader Agent by doxygen 1.3.7