IDAS Communications:
I
DAS can be administrated  remotely using standard TCP/IP communications.
The  IDAS.INI contains parameters for configuring the ports, the default values are shown in the following table:

Name

Port

Control

4500

Command shell

23

Diagnostics

7500

Status port (TCP)

4501

Status port (UDP)

4501


Remote Control
There are 2 ways to control IDAS remotely, with binary structured packets or with a command shell
Both of these connections are stream blocking socket connections, standard TCP.

Binary Structured Packet
Note:  See Appendix A for data structures and values references used in this section

IDAS will be waiting for an eIDAS_EXCHANGE structure to control the recording, playback and configuration process, 
the remote station must define the eIDAS_EXCHANGE.Header.MessageID value to describe the message and fill the 
other fields with appropriate data. IDAS will write the return value an eIDAS_EXCHANGE structure also.


Command Shell
IDAS can also receive commands in a text user readable format, the user connects to the Command Shell port and waits 
for IDAS to respond with a prompt, the user then sends lines of commands, always waiting for a response for the next returning
line defined by a 0x0d0a value (CRLF).

Some of the commands are described below:

 

Record

Starts to record

 

Stop

Stops the current execution of recording or playback

 

Playback
( FWD or REV )

Playbacks the array content

 

Pause

Pauses the record or playback execution

 

Goto (relative time, absolute time, frame)

Positions the array pointer to a specific time or frame number

 

Export video to

Exports the content of the array to a specific file

 

Reboot IDAS

Reboots the OS

 

Shutdown IDAS

Turns off the machine

 

Close IDAS

Terminates the IDAS agent program


Remote Status Capture
IDAS can send status packets (eIDAS_EXCHANGE) via a stream socket blocking connection or a UDP datagram connection. 
These packets are sent every second.


Remote Diagnostics Capture
IDAS sends information in  human readable text format, sequences of strings to a TCP socket blocking connection to inform a user about the current IDAS log. 
IDAS also exports these strings to a file in the "Log" directory located in the IDAS installation directory. The naming convention usesas the current date and time.

 

Appendix A
/********************************************************************
Definitions
********************************************************************/
/* Error messages */
#define IDAS_OK 0x00000000
#define IDAS_ERROR 0x10000000
#define IDAS_ERROR_FILE_WRITE 0x00000001
#define IDAS_ERROR_FILE_READ 0x00000002
#define IDAS_ERROR_CAMERA_TIMEOUT 0x00000004
#define IDAS_ERROR_TIME_CARD_TRIGGER 0x00000008
#define IDAS_ERROR_FRAME_GRABBER_TRIGGER 0x00000010
#define IDAS_ERROR_MOUNT_POSITION_EMPTY 0x00000020
#define IDAS_ERROR_UNKNOWN_COMMAND 0x00010000

/* Commands */
#define IDAS_CMD 0x0000
#define IDAS_CMD_PLAYFWD (IDAS_CMD + 1)
#define IDAS_CMD_PLAYREV (IDAS_CMD + 2)
#define IDAS_CMD_RECORD (IDAS_CMD + 3)
#define IDAS_CMD_STOP (IDAS_CMD + 4)
#define IDAS_CMD_PAUSE (IDAS_CMD + 5)
#define IDAS_CMD_GOTO_FRAME (IDAS_CMD + 6)
#define IDAS_CMD_GOTO_TIME (IDAS_CMD + 7)
#define IDAS_CMD_AGC (IDAS_CMD + 8)
#define IDAS_CMD_UPPER_COLOR_LIMIT (IDAS_CMD + 9)
#define IDAS_CMD_LOWER_COLOR_LIMIT (IDAS_CMD + 10)

/* Status */
#define IDAS_STATUS 0x0000
#define IDAS_STATUS_PLAYING_FWD (IDAS_STATUS + 1)
#define IDAS_STATUS_PLAYING_REV (IDAS_STATUS + 2)
#define IDAS_STATUS_RECORDING (IDAS_STATUS + 3)
#define IDAS_STATUS_STOPPED (IDAS_STATUS + 4)
#define IDAS_STATUS_PAUSED (IDAS_STATUS + 5)

/* Types */
#define IDAS_TELESCOPE_PRIMARY 0
#define IDAS_TELESCOPE_ACQUISITION 1
#define IDAS_CAMERA_BAND_VISIBLE 0
#define IDAS_CAMERA_BAND_MWIR 1

/* Status messages */
#define IDAS_MESSAGE_UNKNOWN 0
#define IDAS_MESSAGE_INITIALIZATION 1
#define IDAS_MESSAGE_CONFIG_CHANGE 2
#define IDAS_MESSAGE_IDAS_COMMAND 3
#define IDAS_MESSAGE_MOUNT_POSITION 4
#define IDAS_MESSAGE_COMMENT 5
#define IDAS_MESSAGE_STATUS 6

/********************************************************************
Data Structures
********************************************************************/
typedef struct {
DWORD MessageID;
DWORD IDASID;
DWORD MJDN;
DWORD Reserved;

double UTSeconds;
} eIDAS_Header;
typedef struct {
DWORD SHOTSID;DWORD IDASID;
DWORD TelescopeID;
DWORD CameraID;
DWORD FilterID;
DWORD IntensifierID;
} eIDAS_Init;

typedef struct {
DWORD FrameSizeX;
DWORD FrameSizeY;
DWORD IntegrationTime;
DWORD IntensifierSetting;
DWORD FilterPosition;
DWORD AGC;
DWORD Upper_Color_Limit;
DWORD Lower_Color_Limit;
} eIDAS_ConfigChange;

typedef struct {
DWORD CommandNumber;
DWORD CommandValue;
double UTDaySeconds;
} eIDAS_Command;

typedef struct {
double Azimuth;
double Elevation;
} eIDAS_MountPosition;

typedef struct {
char Text[512];
} eIDAS_Comment;

typedef struct {
eIDAS_Init InitInfo;
eIDAS_ConfigChange FrameInfo;
DWORD IDAS_Mode;
DWORD MegaBytes;
DWORD ErrorCode;
DWORD FrameNumber;
DWORD MJDN;
DWORD Reserved;
double UTSeconds;
} eIDAS_Status;

typedef struct {
eIDAS_Header Header;
union {
eIDAS_Init Init;
eIDAS_ConfigChange Cfg;
eIDAS_Command Cmd;
eIDAS_MountPosition Mnt;
eIDAS_Status Status;
eIDAS_Comment Comment;
} Data;

} eIDAS_EXCHANGE;
typedef struct {
eIDAS_Init InitInfo;
DWORD BytesPerPixel;
DWORD FramesCount;
DWORD TimeHigh;
DWORD TimeLow;
eIDAS_Comment Comments;
} eIDAS_FILE_HEADER;

typedef struct {
DWORD TimeHigh;
DWORD TimeLow;
DWORD FrameCount;
DWORD FrameSizeX;
DWORD FrameSizeY;
DWORD FramesDropped;
DWORD IntegrationTime;
DWORD IntensifierSetting;
DWORD FilterPosition;
} eIDAS_FRAME_HEADER;