#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/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>      /*標準輸入輸出定義*/
#include   <stdlib.h>     /*標準函數庫定義*/
#include   <unistd.h>     /*Unix 標準函數定義*/
#include   <fcntl.h>      /*檔控制定義*/
#include   <termios.h>    /*PPSIX 終端控制定義*/
#include   <errno.h>      /*錯誤號定義*/
#include 	<errno.h>
#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;

struct ChargingInfoData *chargingInfo[CONNECTOR_QUANTITY];
bool isStartOutputSwitch[CONNECTOR_QUANTITY];

struct timeval _cmdSubPriority_time;
struct timeval _derating_time;
struct timeval _max_time;

struct timeval _test_time;

bool isCharging = false;
bool isWaitingAver = false;
bool isReadToCharging = false;
bool CanAverageCharging = false;
int preChargingTarget;
int preChargingCur;

float toAverVolPoint;
byte toAverVolCount;

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

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
};

enum _CURRENT_CONFIG_MODE
{
    _CURRENT_MODE_NONE      = 0,
    _CURRENT_MODE_BALANCE   = 1,
    _CURRENT_MODE_INCREASE  = 2,
    _CURRENT_MODE_DECREASE  = 3,
    _CURRENT_MODE_DERATING  = 4,
};