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