#include 	<sys/time.h>
#include 	<sys/timeb.h>
#include    <sys/types.h>
#include    <sys/stat.h>
#include 	<sys/types.h>
#include 	<sys/ioctl.h>
#include 	<sys/socket.h>
#include 	<sys/ipc.h>
#include 	<sys/shm.h>
#include 	<sys/mman.h>
#include 	<linux/wireless.h>
#include 	<linux/can.h>
#include 	<linux/can/raw.h>
#include 	<arpa/inet.h>
#include 	<netinet/in.h>

#include 	<unistd.h>
#include 	<stdarg.h>
#include   <stdio.h>      /*�зǿ�J��X�w�q*/
#include   <stdlib.h>     /*�зǨ�Ʈw�w�q*/
#include   <unistd.h>     /*Unix �зǨ�Ʃw�q*/
#include   <fcntl.h>      /*�ɱ���w�q*/
#include   <termios.h>    /*PPSIX �׺ݱ���w�q*/
#include   <errno.h>      /*���~���w�q*/
#include 	<string.h>
#include	<time.h>
#include	<ctype.h>
#include 	<ifaddrs.h>
#include	<math.h>
#include	"../../define.h"
#include 	<stdbool.h>

typedef unsigned char 		byte;
typedef unsigned short 	word;
typedef unsigned int 		unit;

unsigned char _gunCount;
struct ChargingInfoData *chargingInfo[CHAdeMO_QUANTITY + CCS_QUANTITY + GB_QUANTITY];
bool isStartOutputSwitch[CHAdeMO_QUANTITY + CCS_QUANTITY + GB_QUANTITY];

struct timespec _cmdSubPsuPriority_time;
struct timespec _derating_time;
struct timespec _max_time;
struct timespec _log_time;

byte _maxChargingStatus;
bool isReadyToCharging = false;
int preChargingTarget;
int preChargingCur;

float toAverVolPoint;
byte toAverVolCount;

byte _delayCount;

//int connector_1[12];
//int connector_2[12];
//int connector[2][12];
//byte conn_1_count = 0;
//byte conn_2_count = 0;

enum _CHARGING_GUN_STATUS
{
	_CHARGING_GUN_STATUS_NONE		= 0,
	_CHARGING_GUN_STATUS_COMM,
	_CHARGING_GUN_STATUS_CHARGING,
	_CHARGING_GUN_STATUS_STOP
};

enum _PSU_CMD_SEQ
{
	_PSU_CMD_STATUS		= 1,
	_PSU_CMD_VERSION	= 2,

	_PSU_CMD_CAP		= 10,
	_PSU_CMD_OUTPUT		= 11,
	_PSU_CMD_IVAILIABLE	= 12,
	_PSU_CMD_TEMP		= 13,
	_PSU_CMD_GETCOUNT	= 14,
};

enum _CHARGING_LOG_INDEX
{
	_CHARGING_LOG_NEED_VOL = 0,
	_CHARGING_LOG_NEED_CUR = 1,
	_CHARGING_LOG_OUTPUT_VOL = 2,
	_CHARGING_LOG_OUTPUT_CUR = 3
};