//---------------------------------------------------------------------------

#ifndef SmartParkingOprFH
#define SmartParkingOprFH
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
#pragma pack(push, 1)
//---------------------------------------------------------------------------

#define P_INT_MAX_DATA_SIZE         1014        /* 1014 Byte */
#define P_INT_ID_PARK_SERVER		0x0C 		/* 주차장 연계 서버 */
#define P_INT_ID_MAIN_OPER 			0x21 		/* 통합운영단말 */

#define P_INT_HEADER_SIZE           (sizeof(P_INT_HEAD))

/*
******************************************************************************
* 프로토콜에서 사용되는 구조체 정의
******************************************************************************
*/
/*
*  HEAD
*/
typedef struct p_int_head
{
	BYTE  SendId;							/* 송신 시스템 ID */
	BYTE  RecvId;							/* 수신 시스템 ID */
	BYTE  TotalFrame;						/* 전체 프레임 갯수 */
	BYTE  CurrentFrame;						/* 현재 프레임 번호 */
	BYTE  Reserved;							/* Reserved */
	BYTE  OPCode;							/* 명령어 */
	DWORD Length;							/* 데이터의 길이 */
} P_INT_HEAD;

/*
*  DATA
*/
typedef struct p_int_data
{
	BYTE Data[P_INT_MAX_DATA_SIZE];  	        /* Data */
} P_INT_DATA;

/*
*  PACKET
*/
typedef struct p_int_packet
{
	P_INT_HEAD    head;
    P_INT_DATA    data;
} P_INT_PACKET;

/*
*  Sender information
*/
typedef struct p_int_sender
{
	DWORD   IP;                             /* ip address */
	int     Port;                           /* port */
} P_INT_SENDER;

typedef struct
{
	P_INT_SENDER  Sender;                     /* side information */
	P_INT_PACKET  Pkt;                        /* main frame */
} P_IPCUDPMESSAGESTRUCT;

//프로토콜 데이터

#define P_PARKING_ID_SIZE               9
typedef struct tagPInitParking
{
    char  Id[P_PARKING_ID_SIZE];
    DWORD Total;            // 총 주차여유 면수	        주차장 전체 여유 면수	    4	N
    DWORD General;          // 일반 주차여유 면수	    일반 차량 주차 여유 면수	4	N
    DWORD Disabled;         // 장애인 주차여유 면수	    장애인 차량 주차 여유 면수	4	N
    DWORD Small;            // 경차 주차여유 면수	    경차 주차 여유 면수	        4	N
    DWORD Woman;            // 여성전용 주차여유 면수	여성전용 주차여유 면수	    4	N
    DWORD Electric;         // 전기차 주차여유 면수	    전기차 전용 주차여유 면수	4	N
} P_INIT_PARKING;

#define P_MAX_INIT_PARKING                30
typedef struct
{
    BYTE            Count;
    P_INIT_PARKING  Info[P_MAX_INIT_PARKING];
} P_REQ_INIT_PARKING;

typedef struct tagPResetParking
{
    char Id[P_PARKING_ID_SIZE];
} P_RESET_PARKING;

#define P_MAX_RESET_PARKING               50
typedef struct
{
    BYTE            Count;
    P_RESET_PARKING Info[P_MAX_RESET_PARKING];
} P_REQ_RESET_PARKING;

#define INT_OP_PARKING_INIT     0x20
#define INT_OP_PARKING_RESET    0x21

//---------------------------------------------------------------------------
#pragma pack(pop)
//---------------------------------------------------------------------------

#endif

