헤더 파일

1. COMMHEAD 파일

#ifndef _COMM_H_
#define _COMM_H_

#ifndef _WIN32
#define __cdecl
#endif

#ifndef _LOBYTE
#if (defined(_SOCK1) || defined(_SOCK11))
#define _LOBYTE 1
#define _HIBYTE 1
#else
#define _LOBYTE 2
#define _HIBYTE 0
#endif
#endif

/*  type */
#define TCPIP                   1
#define SERIAL                  2

/*  flags */
#define COMMNOFLAG              0x00
#define COMMDELAY                0x01
#define COMMNOREPLY             0x10

/*  msgtype */
#define COMMDATA                1
#define COMMACK                 2
#define COMMNAK                 3
#define COMMREGISTER            4
#define COMMUNREGISTER          5

define COMM_MSG_SIZE           1024
#define COMM_DATAP(cp)  ((char *)((struct comm_header_t *)cp+1))
#define COMM_HEADER_SIZE        sizeof(struct comm_header_t)
#define COMM_LEN_SIZE           4
#define COMM_UID_SIZE           5
#define COMM_SVC_SIZE           16
#define COMM_ERRCODE_SIZE       4

struct comm_header_t {
    char  len[COMM_LEN_SIZE];  /* data length: 순수 데이터 길이 */
    char  msgtype;               /* Message type                  */
    char  uid[COMM_UID_SIZE];  /* Unique Value: ACK,NAK에서 사용*/
    char  svc[COMM_SVC_SIZE];  /* Destination Id.              */
    char  errcode[COMM_ERRCODE_SIZE]; /* 미사용:차후 사용예정    */
    char  flags;                      /* 위에서 지정한 flag중 하나  */
    unsigned char crc;                /* Check Byte              */
};
typedef struct comm_header_t    COMM_HEADER;

#if defined(__cplusplus)
extern "C" {
#endif

/* ------------------ function prototypes ------------------- */
int __cdecl ComOpen(int type, char *id, char *port);
int __cdecl ComDetach(void);
int __cdecl ComClose(void);
int __cdecl ComSend(char *svc, int msgtype, char *data, long len, long flags);
int __cdecl ComRecv(char *svc, int *msgtype, char *data, long *len, long flags);

#if defined (__cplusplus)
}
#endif
#endif   /* _COMM_H_ */