// // Created by zemon on 23.03.23. // #include #include #include "CliCmd/NetGsmUpDown.h" #include "SystemDelayInterface.h" #include "PowerManagment.h" #include "AsciiStringAssmeblingUtils.h" #include "stream.h" #include "MainModesArbiter_Private.h" void CliCmd_AddInfoInit(tAddFunc *addFunc, tGsmWithGnss *gsmWithGnss, tEraGlonassUveos *uveos, tPowerManagement *power){ addFunc->gsmWithGnss = gsmWithGnss; addFunc->power = power; addFunc->uveos = uveos; } bool CliCmd_GetOffsetToDistance(tAddFunc *env, tCliCmd *cliCmd){ size_t str_len = 0; char step[20]; EraGlonassUveosNavData movDinst; while (1) { CliCmd_WaitLineDelay(cliCmd, 1500); if (CliCmd_RxStartsWithStatic(cliCmd, "exit")) { CliCmd_PrintLnStatic(cliCmd, "EXIT IN BASE MODE..."); return 0; } if (CliCmd_RxStartsWithStatic(cliCmd, "exit")) { CliCmd_PrintLnStatic(cliCmd, "EXIT IN BASE MODE..."); return 0; } if (env->uveos->doNothing.stopLimitTime < SystemGetMs()) { NavDataProvider_GetNavData(env->uveos->navDataProvider, &env->uveos->doNothing.movePosition, false); CliCmd_PrintStatic(cliCmd, "Установлена новая точка отсчёта движения ТС\r\n"); env->uveos->doNothing.stopLimitTime = SystemGetMs() + (40 * 1000); } if (env->uveos->doNothing.movePosition.valid > 0) { NavDataProvider_GetNavData(env->uveos->navDataProvider, &movDinst, false); uint32_t latDistance = abs(movDinst.latitude - env->uveos->doNothing.movePosition.latitude); uint32_t lonDistance = abs(movDinst.longitude - env->uveos->doNothing.movePosition.longitude); double x = latDistance * 0.1; double y = lonDistance * 0.1; double move = sqrt(x * x + y * y); env->uveos->doNothing.movDist = (uint32_t) move; vAsciiStringInit(step, &str_len, 5); vAsciiStringAddDecimalInt64(step, &str_len, env->uveos->doNothing.movDist, 5); CliCmd_PrintStatic(cliCmd, "Отклонение = "); debug_printf(cliCmd->serialCommandPort, "%u", step); CliCmd_PrintStatic(cliCmd, "\n"); } else { CliCmd_PrintStatic(cliCmd, "Данные GNSS не валидны\r\n"); } } } uint8_t CliCmd_AddInfo(tAddFunc *env, tCliCmd *cli) { CliCmd_PrintLnStatic(cli, "THIS MODE IS MANAGE COMMUNICATION SUBSYSTEM STATUS"); CliCmd_powerStateHelp(cli); while (1) { CliCmd_WaitLineDelay(cli, 1500); if (CliCmd_RxStartsWithStatic(cli, "exit")) { CliCmd_PrintLnStatic(cli, "EXIT IN BASE MODE..."); return 0; } if (CliCmd_RxStartsWithStatic(cli, "breakTest")) { env->uveos->doNothing.mode = UVEOS_DO_NOTHING_DISABLED; } if (CliCmd_RxStartsWithStatic(cli, "pulMsd")) { env->gsmWithGnss->urc.msdPull = true; } if (CliCmd_RxStartsWithStatic(cli, "getOfset")) { CliCmd_GetOffsetToDistance(env, cli); } if (CliCmd_RxStartsWithStatic(cli, "gsmUp")) { GsmWithGnssInitGnss(env->gsmWithGnss); if(GsmWithGnss_InvalidateNetworkEnable(env->gsmWithGnss, 0, true)){ CliCmd_PrintLnStatic(cli, "GSM network is up"); } else { CliCmd_PrintLnStatic(cli, "GSM network upping is error"); } } if (CliCmd_RxStartsWithStatic(cli, "gsmDown")) { GsmWithGnssInitGnss(env->gsmWithGnss); if(GsmWithGnss_InvalidateNetworkEnable(env->gsmWithGnss, 0, false) == false){ CliCmd_PrintLnStatic(cli, "GSM network is down"); } else { CliCmd_PrintLnStatic(cli, "GSM network down is error"); } } if (CliCmd_RxStartsWithStatic(cli, "audioUp")) { // Pwm_MuteAmpOff(env->power); Mma_AudioTestSetMode(env->power,1); CliCmd_PrintLnStatic(cli, "audio subsystem is up"); } if (CliCmd_RxStartsWithStatic(cli, "audioDown")) { // Pwm_MuteAmpOn(env->power); Mma_AudioTestSetMode(env->power,1); CliCmd_PrintLnStatic(cli, "audio subsystem is down"); } if (CliCmd_RxStartsWithStatic(cli, "mndReq")) { env->gsmWithGnss->gsmAt.test = 1; CliCmd_PrintLnStatic(cli, "mndReq ok"); } if (CliCmd_RxStartsWithStatic(cli, "ecallReq")) { env->gsmWithGnss->gsmAt.test = 2; CliCmd_PrintLnStatic(cli, "ecallReq ok"); } if (CliCmd_RxStartsWithStatic(cli, "setFulBacNum")) { env->gsmWithGnss->gsmAt.test = 3; CliCmd_PrintLnStatic(cli, "setFulBacNum ok"); } if (CliCmd_RxStartsWithStatic(cli, "updRemSostware")) { env->gsmWithGnss->gsmAt.test = 4; CliCmd_PrintLnStatic(cli, "updRemSostware ok"); } // if (CliCmd_RxStartsWithStatic(cli, "bipUp")) { // Pwm_GsmAndBipStartUp(env->power); // CliCmd_PrintLnStatic(cli, "block user interface is up"); // } // if (CliCmd_RxStartsWithStatic(cli, "bipDown")) { // Pwm_BipShutdown(env->power); // CliCmd_PrintLnStatic(cli, "block user interface is down"); // } if (CliCmd_RxStartsWithStatic(cli, "commIntDown")) { CliCmd_PrintLnStatic(cli, "Command interface is down"); Pwm_Rs485Disable(env->power); } if (CliCmd_RxStartsWithStatic(cli, "charUp")) { Pwm_ChargeEnable(env->power); CliCmd_PrintLnStatic(cli, "Charge battary is up"); } if (CliCmd_RxStartsWithStatic(cli, "charDown")) { Pwm_ChargeDisable(env->power); CliCmd_PrintLnStatic(cli, "Charge battary is down"); } // if (CliCmd_RxStartsWithStatic(cli, "netPowerUp")) { // Pwm_GsmAndGnssStartup(env->power); // CliCmd_PrintLnStatic(cli, "Enabled power network subsystem"); // } // if (CliCmd_RxStartsWithStatic(cli, "netPowerDown")) { // Pwm_GsmAndGnssShutdown(env->power); // CliCmd_PrintLnStatic(cli, "Disabled power network subsystem"); // } if (CliCmd_RxStartsWithStatic(cli, "muteOn")) { Pwm_SetMuteInCar(env->power,1); } if (CliCmd_RxStartsWithStatic(cli, "muteOff")) { Pwm_SetMuteInCar(env->power,0); } if (CliCmd_RxStartsWithStatic(cli, "fullUp")) { Pwm_PowerSavingDisable(env->power); } if (CliCmd_RxStartsWithStatic(cli, "fullDown")) { Pwm_PowerSavingEnable(env->power); CliCmd_PrintLnStatic(cli, "Command interface is upping, for is down ComInt enter command [ commIntDown ]"); } if (CliCmd_RxStartsWithStatic(cli, "help")) { CliCmd_powerStateHelp(cli); CliCmd_WaitLine(cli); } if (CliCmd_RxStartsWithStatic(cli, "rmcStop")) { // GsmWithGnss_StopRMCThread(&env->gsmWithGnss->gsmAt); CliCmd_PrintLnStatic(cli, "+++ is sending"); } if (CliCmd_RxStartsWithStatic(cli, "rmcStart")) { // GsmWithGnss_ActivateRMCPort(&env->gsmWithGnss->gsmAt); // GsmWithGnss_startUrcThread(&env->gsmWithGnss->gsmAt); CliCmd_PrintLnStatic(cli, "rmc is sending"); } if (CliCmd_RxStartsWithStatic(cli, "regBl1")) { RegCost(true); CliCmd_PrintLnStatic(cli, "====== regBl1 ======="); } if (CliCmd_RxStartsWithStatic(cli, "regBl0")) { RegCost(false); CliCmd_PrintLnStatic(cli, "====== regBl0 ======="); } if (CliCmd_RxStartsWithStatic(cli, "shotDown")) { Pwm_Shutdown(env->power); CliCmd_PrintLnStatic(cli, "====== shotDown ======="); } if (CliCmd_RxStartsWithStatic(cli, "mupePOn")) { Pwm_SetPMuteInCar(env->power, true); CliCmd_PrintLnStatic(cli, "====== mupePOn ======="); } if (CliCmd_RxStartsWithStatic(cli, "mupePOff")) { Pwm_SetPMuteInCar(env->power, false); CliCmd_PrintLnStatic(cli, "====== mupePOff ======="); } if (CliCmd_RxStartsWithStatic(cli, "mupeNOn")) { Pwm_SetNMuteInCar(env->power, true); CliCmd_PrintLnStatic(cli, "====== mupeNOn ======="); } if (CliCmd_RxStartsWithStatic(cli, "muteNOff")) { Pwm_SetNMuteInCar(env->power, false); CliCmd_PrintLnStatic(cli, "====== muteNOff ======="); } if (CliCmd_RxStartsWithStatic(cli, "ecallOutSignOn")) { Pwm_SetEcallSignalOutInCar(env->power, true); CliCmd_PrintLnStatic(cli, "====== ecallOutSignOn ======="); } if (CliCmd_RxStartsWithStatic(cli, "ecallOutSignOff")) { Pwm_SetEcallSignalOutInCar(env->power, false); CliCmd_PrintLnStatic(cli, "====== ecallOutSignOff ======="); } if (CliCmd_RxStartsWithStatic(cli, "serviseOutSignOn")) { Pwm_SetServiseSignalOutInCar(env->power, true); CliCmd_PrintLnStatic(cli, "====== serviseOutSignOn ======="); } if (CliCmd_RxStartsWithStatic(cli, "serviseOutSignOff")) { Pwm_SetServiseSignalOutInCar(env->power, false); CliCmd_PrintLnStatic(cli, "====== serviseOutSignOff ======="); } if (CliCmd_RxStartsWithStatic(cli, "getSosButtonState")) { if(Pwm_GetSosButtonState(env->power) == true){ CliCmd_PrintLnStatic(cli, "SOS BUTTON ON"); } else { CliCmd_PrintLnStatic(cli, "SOS BUTTON OFF"); } CliCmd_PrintLnStatic(cli, "====== getSosButtonState ======="); } if (CliCmd_RxStartsWithStatic(cli, "getServiseButtonState")) { if(Pwm_GetServiseButtonState( env->power) == true){ CliCmd_PrintLnStatic(cli, "SERVICE BUTTON ON"); } else { CliCmd_PrintLnStatic(cli, "SERVICE BUTTON OFF"); } CliCmd_PrintLnStatic(cli, "====== getServiseButtonState ======="); } SystemDelayMs(10); } }