/**************************************************************************** * Application Layer for the Real-time BBC Codec/Modem * **************************************************************************** * William L. Bahn * * Academy Center for Information Security * * Department of Computer Science * * United States Air Force Academy * * USAFA, CO 80840 * **************************************************************************** * FILE:............ bbcftp.h * * DATE CREATED:.... 13 SEP 07 * * DATE MODIFIED:... 13 SEP 07 * **************************************************************************** * * REVISION HISTORY * **************************************************************************** * * DESCRIPTION * */ #ifndef BBCFTPdotH #define BBCFTPdotH //------------------------------------------------------------------------ // REQUIRED INCLUDES //------------------------------------------------------------------------ #include "config.h" #include "source.h" #include "codec.h" #include "buffer.h" #include "modem.h" #include "sink.h" #include "dirtyd.h" //------------------------------------------------------------------------ // PARAMETER DEFINITIONS //------------------------------------------------------------------------ #define BBC_FTP_BYTES_CHECKSUM (4) #define BBC_FTP_BYTES_SEQNUM (2) #define BBC_FTP_BYTES_LOADBITS (2) #define BBC_FTP_BYTES_ID (2) #define BBC_FTP_OFFSET_CHECKSUM (0) #define BBC_FTP_OFFSET_ID (BBC_FTP_OFFSET_CHECKSUM + BBC_FTP_BYTES_CHECKSUM) #define BBC_FTP_OFFSET_SEQNUM (BBC_FTP_OFFSET_ID + BBC_FTP_BYTES_ID ) #define BBC_FTP_OFFSET_LOADBITS (BBC_FTP_OFFSET_SEQNUM + BBC_FTP_BYTES_SEQNUM ) #define BBC_FTP_OFFSET_PAYLOAD (BBC_FTP_OFFSET_LOADBITS + BBC_FTP_BYTES_LOADBITS) #define BBC_FTP_HEADER_BYTES (BBC_FTP_OFFSET_PAYLOAD) //------------------------------------------------------------------------ // STRUCTURE TYPE DEFINITIONS //------------------------------------------------------------------------ typedef struct BBCFTP BBCFTP; //------------------------------------------------------------------------ // STRUCTURE DEFINITIONS //------------------------------------------------------------------------ // NOTE: Normally the structure definition would be in the *.c file to make // the structure members inaccessible to outside functions except through // public function calls. But for the real-time code it has been decided // to make the structure members directly visible to the functions that // manipulate them. struct BBCFTP { CONFIG *config; SOURCE *source; CODEC *codec; BUFFER *buffer; MODEM *modem; SINK *sink; }; //------------------------------------------------------------------------ // PUBLIC FUNCTION PROTOTYPES //------------------------------------------------------------------------ BBCFTP *BBCFTP_Del(BBCFTP *p); BBCFTP *BBCFTP_New(char *filename, DWORD *errcode); void PrintMessage(BYTE *base); void SetMessageChecksum(BYTE *base, DWORD v); void SetMessageSeq(BYTE *base, WORD v); void SetMessageLoadBits(BYTE *base, WORD v); void SetMessageID(BYTE *base, WORD v); void SetMessagePayload(BYTE *base, BYTE *source, DWORD bytes, int offset); DWORD GetMessageChecksum(BYTE *base); WORD GetMessageSeq(BYTE *base); WORD GetMessageLoadBits(BYTE *base); WORD GetMessageID(BYTE *base); BYTE *GetMessagePayload(BYTE *base); //------------------------------------------------------------------------ #endif