Ejemplo n.º 1
0
int main(int argc, char *argv[])
{
	if (argc < 2) {
		printf("argument miss.\n");
	}
	struct stat st;	
	if (stat(argv[1], &st) < 0) {
		perror("get stat: ");
		exit(1);
	}
	char dest[11];
	modeToStr(st.st_mode, dest);
	char atime[30];
	timeWithoutSec(st.st_atime, atime);
	struct passwd *uid = getpwuid(st.st_uid);
	struct group *gid = getgrgid(st.st_gid);	
	printf("%llu %s  %u %s  %s %5llu %s %s\n" , st.st_ino, dest, st.st_nlink, uid->pw_name, 
			gid->gr_name, st.st_size, atime, argv[1]);
	return 0;
}
Ejemplo n.º 2
0
int SystemStateMachine(UINT32 tnow)
{
	static int lastMode = SYSTEM_MODE_SLEEP;
	static int ForceACChargeFlag = 0;
	static UINT32 LastSleepTimems = 0;
	int mode = GetSystemMode();
	switch (mode)
	{
		case SYSTEM_MODE_SLEEP:
			SystemLedFlash(1000);

			// Entry this state
			if (lastMode != SYSTEM_MODE_SLEEP)
			{
				PowerOffHighVoltage();
				LastSleepTimems = tnow;
				if (lastMode != SYSTEM_MODE_DEEPSLEEP)
				{
					RecordTimeOfReposeStart(tnow);
				}
				mprintf("sleep entry!\r\n");
			}

			/*during*/
			{
				TimeOfReposeUpdate(tnow);

				if (TIME_TRHESHOLD_CAL(tnow, LastSleepTimems)
						> gParameters.e_devInfo.sleepCtlTime.time_PowerOffToSleep)
				{
					SetSystemMode(SYSTEM_MODE_DEEPSLEEP);
				}
//				mprintf("sleep doing!\r\n");

				SleepModeDetection();
			}

			/*exit */
			if (GetSystemMode() != SYSTEM_MODE_SLEEP)
			{
				if (GetSystemMode() != SYSTEM_MODE_DEEPSLEEP)
				{
					RecordTimeOfReposeEnd(tnow);
				}
				mprintf("sleep exit!\r\n");
			}
			
			break;

		case SYSTEM_MODE_DC_CHARGE:
			SystemLedFlash(500);
			setDcChargerCondition(CON_CHARGE_RELAY_OP_OK, 1); //set 1  means this condition ok

			if (DC_CHARGER_DISCONNECT())
			{
				shutdownRelayCharge();
//			tellDCChargerStopChargeByCan(REASON_DISCONNECT);// 
				SetSystemMode(SYSTEM_MODE_SLEEP);
			}
			break;

		case SYSTEM_MODE_AC_CHARGE:
			SystemLedFlash(500);
			if ((VEH_CHARGER_selfCheck() == CHECK_PASS)
					&& (Batterystateupdate() == CHECK_PASS))
			{

				if (CheckACChargePWM() == RECEIVE_SUCCESS)
				{
					ForceACChargeFlag = 0;
					if (lastMode != SYSTEM_MODE_AC_CHARGE)
					{
						OpenVEH_Charger_CPC();
						AC_Charge_HighVoltage();
					}
					if(GetAccharge_precharge_state()==STATE_PRECHARGER_OVER)
					{
						 VEH_CHARGER_UpperLimmitCurrent_Update();
						 set_VEH_CHARGER_poweron();
						 ResetAccharge_precharge_state();
					}
					Check_VEH_CHARGER_UpperLimmitCurrent();
					if (Check_VEH_CHARGER_OVER() == STATE_VEH_CHARGER_OVER)
					{
						CloseVEH_Charger_CPC();
						set_VEH_CHARGER_poweroff();
						SetSystemMode(SYSTEM_MODE_SLEEP);
					}
				}
				else if (CheckACChargePWM() == RECEIVE_FAILED)
				{
					if (lastMode != SYSTEM_MODE_AC_CHARGE)
					{
						ForceACChargeFlag = 1;
					}
					else
					{
						ForceACChargeFlag = 0;
					}
					if (ForceACChargeFlag == 1)
					{
						if (GetVCUcmd_ForceCharge() == 0)
						{
							Set_VEH_CHARGER_Force_Current();
						}
						else
						{
							SetSystemMode(SYSTEM_MODE_SLEEP);
						}
					}
					else
					{
						CloseVEH_Charger_CPC();
						set_VEH_CHARGER_poweroff();
						SetSystemMode(SYSTEM_MODE_SLEEP);
					}
				}
			}
			if (AC_CHARGER_DISCONNECT())
			{
				CloseVEH_Charger_CPC();
				set_VEH_CHARGER_poweroff();
				SetSystemMode(SYSTEM_MODE_SLEEP);
			}
			if(CHECK_ACCP_COMMUNICATION_SATE()==RECEIVE_FAILED)
			{
				CloseVEH_Charger_CPC();
				set_VEH_CHARGER_poweroff();
				SetSystemMode(SYSTEM_MODE_SLEEP);
			}
			break;

		case SYSTEM_MODE_DISCHARGE:
			SystemLedFlash(100);
//		if(KEY_TO_ON())
			{
				extern int BMS_selfCheck(void); // main.c
				if (BMS_selfCheck() == ERR_BMS_NONE)
				{
					PowerOnHighVoltage();
				}
				// if bms self check passed, set BMS_SelfCheckPassed bit to 1,and 
				// then send to VCU by can 

				// if VCU check self OK , Power on high voltage.

				// waitForVCUCheckSelfOK();
			}
			if (KEY_TO_ACC()) // ACC activate
			{
//			if( lastMode != SYSTEM_MODE_DISCHARGE)
				// can enable
			}
			else //if( !(gpio_read(IO_STATUS_ON) && gpio_read(IO_STATUS_ACC)) )
			{
				SetSystemMode(SYSTEM_MODE_SLEEP);
			}
			break;

		case SYSTEM_MODE_DEEPSLEEP:
		{
			/*entry*/
			if (lastMode != SYSTEM_MODE_DEEPSLEEP)
			{
				LastSleepTimems = tnow;
				systemEntrySleep();

//				mprintf("deepsleep entry!\r\n");
			}

			/*during*/
			{
//				mprintf("deep sleep doing!\r\n");
				TimeOfReposeUpdate(tnow);
				if (TIME_TRHESHOLD_CAL(tnow, LastSleepTimems)
						> gParameters.e_devInfo.sleepCtlTime.time_SleepToSober)
				{
					SetSystemMode(SYSTEM_MODE_SLEEP);
				}
				SleepModeDetection();
			}

			/*exit*/
			if (GetSystemMode() != SYSTEM_MODE_DEEPSLEEP)
			{
//				mprintf("deep sleep exit!\r\n");
				systemExitSleep();
				if (GetSystemMode() != SYSTEM_MODE_SLEEP)
				{
					RecordTimeOfReposeEnd(tnow);
				}
			}

			break;
		}

		default:
			break;
	}
	if (lastMode != mode)
	{
		lastMode = mode;
		mprintf("state change:%s->%s\r\n", modeToStr(lastMode),
				modeToStr(mode));
	}
	HighVoltageStep();
	return 0;
}