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

ifwtool.h File Reference

Optec IFW Filter Wheel 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  ifw_pars
 IFW Filter Wheel Parameter Table. More...


Defines

#define DEFAULT_MYID   "IFW"
 default app ISIS node name

#define DEFAULT_MYPORT   10701
 default app ISIS socket port

#define DEFAULT_RCFILE   "/home/darkstar/dts/Config/ifwtool.ini"
 default app runtime config file

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

#define DEFAULT_ISISID   "IS"
 default ISIS server node name

#define DEFAULT_ISISHOST   "localhost"
 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 ifw_pars ifwheel_t
 IFW Filter Wheel 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 socekt.

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


Variables

isisclient_t client
 Global client runtime config table.

ifwheel_t ifw
 Global IFW filter wheel parameter table (declare in main.c).


Detailed Description

Optec IFW Filter Wheel application header.

Application header for the experimental Optec IFW Filter Wheel controlapplication.


Define Documentation

#define DEFAULT_MYID   "IFW"
 

default app ISIS node name

#define DEFAULT_MYPORT   10701
 

default app ISIS socket port

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

default app runtime config file

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

default app runtime log file (unimplemented)

#define DEFAULT_ISISID   "IS"
 

default ISIS server node name

#define DEFAULT_ISISHOST   "localhost"
 

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 ifw_pars ifwheel_t
 

IFW Filter Wheel Parameter Table.

Contains the basic parameters of one or more Optec filter wheels, as follows:

  • Port Name of the IFW'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 filter wheel datum. For example, if Name="Filter", the app will return "Filter=#" when reporting the filter wheel position.
  • 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 socekt.

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.

ifwheel_t ifw
 

Global IFW filter wheel parameter table (declare in main.c).


Generated on Thu Jul 22 20:23:38 2004 for Optec IFW Intelligent Filter Wheel Control Tool by doxygen 1.3.7