public static async Task Execute(this VehicleAction action, TeslaVehicle vehicle, ITeslaAPIWrapper teslaApi) { LogUtil.Debug($"Start Executing {action.Type.GetDescription()}"); // TODO remaining actions switch (action.Type) { case VehicleActionType.WakeUp: await teslaApi.WakeUp(vehicle); break; case VehicleActionType.ClimateACStart: await teslaApi.StartAutoConditioning(vehicle); break; case VehicleActionType.ClimateACStop: await teslaApi.StopAutoConditioning(vehicle); break; case VehicleActionType.ClimateSetTemps: var driverTemp = (double)action.Params["driver_temp"]; var passengerTemp = (double)action.Params["passenger_temp"]; await teslaApi.SetTemps(vehicle, driverTemp, passengerTemp); break; case VehicleActionType.ClimateHeatedSeat: var heater = (int)action.Params["heater"]; var level = (int)action.Params["level"]; await teslaApi.SeatHeaterRequest(vehicle, heater, level); break; case VehicleActionType.ClimateHeatedSteeringWheel: var on = (bool)action.Params["on"]; await teslaApi.SteeringWheelHeaterRequest(vehicle, on); break; case VehicleActionType.ChargingStart: await teslaApi.ChargeStart(vehicle); break; case VehicleActionType.ChargingStop: await teslaApi.ChargeStop(vehicle); break; case VehicleActionType.ChargingSetLimit: var percent = (int)action.Params["percent"]; await teslaApi.SetChargeLimit(vehicle, percent); break; case VehicleActionType.ChargingOpenPort: await teslaApi.ChargePortOpen(vehicle); break; case VehicleActionType.ChargingClosePort: await teslaApi.ChargePortClose(vehicle); break; case VehicleActionType.ControlsDoorsLock: await teslaApi.DoorLock(vehicle); break; case VehicleActionType.ControlsDoorsUnlock: await teslaApi.DoorUnlock(vehicle); break; case VehicleActionType.ControlsFlashLights: await teslaApi.FlashLights(vehicle); break; case VehicleActionType.ControlsHonkHorn: await teslaApi.HonkHorn(vehicle); break; case VehicleActionType.ControlsFrontTrunk: await teslaApi.ActuateTrunk(vehicle, "front"); break; case VehicleActionType.ControlsRearTrunk: await teslaApi.ActuateTrunk(vehicle, "rear"); break; case VehicleActionType.ControlsSunRoof: var state = (string)action.Params["state"]; await teslaApi.SunRoofControl(vehicle, state); break; case VehicleActionType.RemoteStartDrive: case VehicleActionType.SpeedLimitActivate: case VehicleActionType.SpeedLimitClearPin: case VehicleActionType.SpeedLimitDeactivate: case VehicleActionType.SpeedLimitSet: case VehicleActionType.ValetModeResetPin: case VehicleActionType.ValetModeSet: Thread.Sleep(500); break; } LogUtil.Debug($"Finished Executing {action.Type.GetDescription()}"); }
public static async Task CustomizeOrReturn(this VehicleActionType actionType, Profile profile, VehicleAction action, INavigation navigation, IProfileService profileService) { switch (actionType) { case VehicleActionType.ClimateACStart: case VehicleActionType.ClimateACStop: case VehicleActionType.ChargingStart: case VehicleActionType.ChargingStop: case VehicleActionType.ChargingOpenPort: case VehicleActionType.ChargingClosePort: case VehicleActionType.ControlsDoorsLock: case VehicleActionType.ControlsDoorsUnlock: case VehicleActionType.ControlsFlashLights: case VehicleActionType.ControlsHonkHorn: case VehicleActionType.ControlsFrontTrunk: case VehicleActionType.RemoteStartDrive: case VehicleActionType.SpeedLimitActivate: case VehicleActionType.SpeedLimitClearPin: case VehicleActionType.SpeedLimitDeactivate: case VehicleActionType.ValetModeResetPin: case VehicleActionType.ValetModeSet: profile.Actions.Add(new VehicleAction { Type = actionType, }); await profileService.UpsertProfileAsync(profile); await navigation.PopAsync(); break; case VehicleActionType.ClimateSetTemps: await navigation.PushAsync(new ConfigureClimateSetTemps(profile, actionType, action, profileService)); break; case VehicleActionType.ClimateHeatedSeat: case VehicleActionType.ClimateHeatedSteeringWheel: case VehicleActionType.ChargingSetLimit: case VehicleActionType.ControlsRearTrunk: case VehicleActionType.ControlsSunRoof: case VehicleActionType.SpeedLimitSet: //await navigation.PushAsync(new ConfigureActionBasePage(profile, actionType, action)); break; } }