Guest User

ChargeState.swift

a guest
Jun 23rd, 2021
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 12.52 KB | None | 0 0
  1. import Foundation
  2.  
  3. open class ChargeState: Codable {
  4.    
  5.     public enum ChargingState: String, Codable {
  6.         case complete = "Complete"
  7.         case charging = "Charging"
  8.         case disconnected = "Disconnected"
  9.         case stopped = "Stopped"
  10.     }
  11.    
  12.     open var batteryHeaterOn: Bool?
  13.     /**
  14.     Percentage of the battery
  15.     */
  16.     open var batteryLevel: Int?
  17.     /**
  18.     Rated Miles
  19.     */
  20.     open var ratedBatteryRange: Distance?
  21.     open var chargeCurrentRequest: Int?
  22.     open var chargeCurrentRequestMax: Int?
  23.     open var chargeEnableRequest: Bool?
  24.     open var chargeEnergyAdded: Double?
  25.    
  26.     open var chargeLimitSOC: Int?
  27.     open var chargeLimitSOCMax: Int?
  28.     open var chargeLimitSOCMin: Int?
  29.     open var chargeLimitSOCStandard: Int?
  30.    
  31.    
  32.     open var chargeDistanceAddedIdeal: Distance?
  33.     open var chargeDistanceAddedRated: Distance?
  34.    
  35.     /**
  36.     Vehicle charging port is open?
  37.     */
  38.     open var chargePortDoorOpen: Bool?
  39.     open var chargePortLatch: String?
  40.     open var chargePortColdWeatherMode: Bool?
  41.    
  42.     /**
  43.     miles/hour while charging or 0 if not charging
  44.     */
  45.     open var chargeRate: Speed?
  46.     /**
  47.     Charge to max rate or standard
  48.     */
  49.     open var chargeToMaxRange: Bool?
  50.    
  51.     /**
  52.     Current actually being drawn
  53.     */
  54.     open var chargerActualCurrent: Int?
  55.     open var chargerPhases: Int?
  56.     /**
  57.     Max current allowed by charger and adapter
  58.     */
  59.     open var chargerPilotCurrent: Int?
  60.     /**
  61.     KW of charger
  62.     */
  63.     open var chargerPower: Int?
  64.     /**
  65.     Voltage. Only has value while charging
  66.     */
  67.     open var chargerVoltage: Int?
  68.    
  69.     /**
  70.     Current state of the charging
  71.     */
  72.     open var chargingState: ChargingState?
  73.    
  74.     open var connChargeCable: String?
  75.    
  76.     /**
  77.     Range estimated from recent driving
  78.     */
  79.     open var estimatedBatteryRange: Distance?
  80.    
  81.     open var euVehicle: Bool?
  82.    
  83.     open var fastChargerBrand: String?
  84.     /**
  85.     Vehicle connected to supercharger?
  86.     */
  87.     open var fastChargerPresent: Bool?
  88.     open var fastChargerType: String?
  89.    
  90.     /**
  91.     Ideal Miles
  92.     */
  93.     open var idealBatteryRange: Distance?
  94.     open var managedChargingActive: Bool?
  95.     open var managedChargingStartTime: Date?
  96.     open var managedChargingUserCanceled: Bool?
  97.    
  98.     open var maxRangeChargeCounter: Int?
  99.    
  100.     open var notEnoughPowerToHeat: Bool?
  101.    
  102.     open var scheduledChargingPending: Bool?
  103.     open var scheduledChargingStartTime: TimeInterval?
  104.    
  105.     /**
  106.     Only valid while charging
  107.     */
  108.     open var timeToFullCharge: Double?
  109.     open var timeStamp: Double?
  110.    
  111.     open var tripCharging: Bool?
  112.    
  113.     open var usableBatteryLevel: Int?
  114.     open var userChargeEnableRequest: Bool?
  115.    
  116.     enum CodingKeys: String, CodingKey {
  117.        
  118.         case batteryHeaterOn                 = "battery_heater_on"
  119.         case batteryLevel                 = "battery_level"
  120.         case ratedBatteryRange           = "battery_range"
  121.         case chargeCurrentRequest        = "charge_current_request"
  122.         case chargeCurrentRequestMax         = "charge_current_request_max"
  123.         case chargeEnableRequest             = "charge_enable_request"
  124.         case chargeEnergyAdded            = "charge_energy_added"
  125.        
  126.         case chargeLimitSOC               = "charge_limit_soc"
  127.         case chargeLimitSOCMax            = "charge_limit_soc_max"
  128.         case chargeLimitSOCMin            = "charge_limit_soc_min"
  129.         case chargeLimitSOCStandard       = "charge_limit_soc_std"
  130.        
  131.         case chargeDistanceAddedIdeal    = "charge_miles_added_ideal"
  132.         case chargeDistanceAddedRated    = "charge_miles_added_rated"
  133.        
  134.         case chargePortDoorOpen           = "charge_port_door_open"
  135.         case chargePortLatch                 = "charge_port_latch"
  136.         case chargePortColdWeatherMode  = "charge_port_cold_weather_mode"
  137.        
  138.         case chargeRate                  = "charge_rate"
  139.         case chargeToMaxRange             = "charge_to_max_range"
  140.        
  141.         case chargerActualCurrent         = "charger_actual_current"
  142.         case chargerPhases               = "charger_phases"
  143.         case chargerPilotCurrent          = "charger_pilot_current"
  144.         case chargerPower                 = "charger_power"
  145.         case chargerVoltage               = "charger_voltage"
  146.        
  147.         case chargingState                = "charging_state"
  148.        
  149.         case connChargeCable                = "conn_charge_cable"
  150.        
  151.         case estimatedBatteryRange      = "est_battery_range"
  152.        
  153.         case euVehicle                   = "eu_vehicle"
  154.        
  155.         case fastChargerBrand           = "fast_charger_brand"
  156.         case fastChargerPresent           = "fast_charger_present"
  157.         case fastChargerType                 = "fast_charger_type"
  158.        
  159.         case idealBatteryRange          = "ideal_battery_range"
  160.        
  161.         case managedChargingActive       = "managed_charging_active"
  162.         case managedChargingStartTime    = "managed_charging_start_time"
  163.         case managedChargingUserCanceled     = "managed_charging_user_canceled"
  164.        
  165.         case maxRangeChargeCounter        = "max_range_charge_counter"
  166.        
  167.         case notEnoughPowerToHeat        = "not_enough_power_to_heat"
  168.        
  169.         case scheduledChargingPending    = "scheduled_charging_pending"
  170.         case scheduledChargingStartTime  = "scheduled_charging_start_time"
  171.        
  172.         case timeToFullCharge             = "time_to_full_charge"
  173.        
  174.         case timeStamp                  = "timestamp"
  175.        
  176.         case tripCharging                = "trip_charging"
  177.        
  178.         case usableBatteryLevel          = "usable_battery_level"
  179.        
  180.         case userChargeEnableRequest         = "user_charge_enable_request"
  181.     }
  182.    
  183.     required public init(from decoder: Decoder) throws {
  184.        
  185.         let container = try decoder.container(keyedBy: CodingKeys.self)
  186.         batteryHeaterOn = try? container.decode(Bool.self, forKey: .batteryHeaterOn)
  187.        
  188.         batteryLevel = try? container.decode(Int.self, forKey: .batteryLevel)
  189.  
  190.         ratedBatteryRange = try? container.decode(Distance.self, forKey: .ratedBatteryRange)
  191.         chargeCurrentRequest = try? container.decode(Int.self, forKey: .chargeCurrentRequest)
  192.         chargeCurrentRequestMax = try? container.decode(Int.self, forKey: .chargeCurrentRequestMax)
  193.         chargeEnableRequest = try? container.decode(Bool.self, forKey: .chargeEnableRequest)
  194.         chargeEnergyAdded = try? container.decode(Double.self, forKey: .chargeEnergyAdded)
  195.        
  196.         chargeLimitSOC = try? container.decode(Int.self, forKey: .chargeLimitSOC)
  197.         chargeLimitSOCMax = try? container.decode(Int.self, forKey: .chargeLimitSOCMax)
  198.         chargeLimitSOCMin = try? container.decode(Int.self, forKey: .chargeLimitSOCMin)
  199.         chargeLimitSOCStandard = try? container.decode(Int.self, forKey: .chargeLimitSOCStandard)
  200.        
  201.        
  202.         chargeDistanceAddedIdeal = try? container.decode(Distance.self, forKey: .chargeDistanceAddedIdeal)
  203.         chargeDistanceAddedRated = try? container.decode(Distance.self, forKey: .chargeDistanceAddedRated)
  204.        
  205.  
  206.         chargePortDoorOpen = try? container.decode(Bool.self, forKey: .chargePortDoorOpen)
  207.         chargePortLatch = try? container.decode(String.self, forKey: .chargePortLatch)
  208.         chargePortColdWeatherMode = try? container.decode(Bool.self, forKey: .chargePortColdWeatherMode)
  209.        
  210.        
  211.         chargeRate = try? container.decode(Speed.self, forKey: .chargeRate)
  212.  
  213.         chargeToMaxRange = try? container.decode(Bool.self, forKey: .chargeToMaxRange)
  214.        
  215.  
  216.         chargerActualCurrent = try? container.decode(Int.self, forKey: .chargerActualCurrent)
  217.         chargerPhases = try? container.decode(Int.self, forKey: .chargerPhases)
  218.  
  219.         chargerPilotCurrent = try? container.decode(Int.self, forKey: .chargerPilotCurrent)
  220.  
  221.         chargerPower = try? container.decode(Int.self, forKey: .chargerPower)
  222.  
  223.         chargerVoltage = try? container.decode(Int.self, forKey: .chargerVoltage)
  224.        
  225.  
  226.         chargingState = try? container.decode(ChargingState.self, forKey: .chargingState)
  227.        
  228.         connChargeCable = try? container.decode(String.self, forKey: .connChargeCable)
  229.        
  230.  
  231.         estimatedBatteryRange = try? container.decode(Distance.self, forKey: .estimatedBatteryRange)
  232.        
  233.         euVehicle = try? container.decode(Bool.self, forKey: .euVehicle)
  234.        
  235.         fastChargerBrand = try? container.decode(String.self, forKey: .fastChargerBrand)
  236.  
  237.         fastChargerPresent = try? container.decode(Bool.self, forKey: .fastChargerPresent)
  238.         fastChargerType = try? container.decode(String.self, forKey: .fastChargerType)
  239.  
  240.         idealBatteryRange = try? container.decode(Distance.self, forKey: .idealBatteryRange)
  241.         managedChargingActive = try? container.decode(Bool.self, forKey: .managedChargingActive)
  242.         managedChargingStartTime = try? container.decode(Date.self, forKey: .managedChargingStartTime)
  243.         managedChargingUserCanceled = try? container.decode(Bool.self, forKey: .managedChargingUserCanceled)
  244.        
  245.         maxRangeChargeCounter = try? container.decode(Int.self, forKey: .maxRangeChargeCounter)
  246.        
  247.         notEnoughPowerToHeat = try? container.decode(Bool.self, forKey: .notEnoughPowerToHeat)
  248.        
  249.         scheduledChargingPending = try? container.decode(Bool.self, forKey: .scheduledChargingPending)
  250.         scheduledChargingStartTime = try? container.decode(TimeInterval.self, forKey: .scheduledChargingStartTime)
  251.        
  252.  
  253.         timeToFullCharge = try? container.decode(Double.self, forKey: .timeToFullCharge)
  254.         timeStamp = try? container.decode(Double.self, forKey: .timeStamp)
  255.        
  256.         tripCharging = try? container.decode(Bool.self, forKey: .tripCharging)
  257.        
  258.         usableBatteryLevel = try? container.decode(Int.self, forKey: .usableBatteryLevel)
  259.         userChargeEnableRequest = try? container.decode(Bool.self, forKey: .userChargeEnableRequest)
  260.     }
  261.    
  262.     public func encode(to encoder: Encoder) throws {
  263.        
  264.         var container = encoder.container(keyedBy: CodingKeys.self)
  265.         try container.encodeIfPresent(batteryHeaterOn, forKey: .batteryHeaterOn)
  266.        
  267.         try container.encodeIfPresent(batteryLevel, forKey: .batteryLevel)
  268.        
  269.         try container.encodeIfPresent(ratedBatteryRange, forKey: .ratedBatteryRange)
  270.        
  271.         try container.encodeIfPresent(chargeCurrentRequest, forKey: .chargeCurrentRequest)
  272.         try container.encodeIfPresent(chargeCurrentRequestMax, forKey: .chargeCurrentRequestMax)
  273.         try container.encodeIfPresent(chargeEnableRequest, forKey: .chargeEnableRequest)
  274.         try container.encodeIfPresent(chargeEnergyAdded, forKey: .chargeEnergyAdded)
  275.        
  276.         try container.encodeIfPresent(chargeLimitSOC, forKey: .chargeLimitSOC)
  277.         try container.encodeIfPresent(chargeLimitSOCMax, forKey: .chargeLimitSOCMax)
  278.         try container.encodeIfPresent(chargeLimitSOCMin, forKey: .chargeLimitSOCMin)
  279.         try container.encodeIfPresent(chargeLimitSOCStandard, forKey: .chargeLimitSOCStandard)
  280.        
  281.         try container.encodeIfPresent(chargeDistanceAddedIdeal, forKey: .chargeDistanceAddedIdeal)
  282.         try container.encodeIfPresent(chargeDistanceAddedRated, forKey: .chargeDistanceAddedRated)
  283.        
  284.         try container.encodeIfPresent(chargePortDoorOpen, forKey: .chargePortDoorOpen)
  285.         try container.encodeIfPresent(chargePortLatch, forKey: .chargePortLatch)
  286.         try container.encodeIfPresent(chargePortColdWeatherMode, forKey: .chargePortColdWeatherMode)
  287.  
  288.         try container.encodeIfPresent(chargeRate, forKey: .chargeRate)
  289.  
  290.         try container.encodeIfPresent(chargeToMaxRange, forKey: .chargeToMaxRange)
  291.        
  292.         try container.encodeIfPresent(chargerActualCurrent, forKey: .chargerActualCurrent)
  293.         try container.encodeIfPresent(chargerPhases, forKey: .chargerPhases)
  294.  
  295.         try container.encodeIfPresent(chargerPilotCurrent, forKey: .chargerPilotCurrent)
  296.  
  297.         try container.encodeIfPresent(chargerPower, forKey: .chargerPower)
  298.  
  299.         try container.encodeIfPresent(chargerVoltage, forKey: .chargerVoltage)
  300.        
  301.         try container.encodeIfPresent(chargingState, forKey: .chargingState)
  302.        
  303.         try container.encodeIfPresent(connChargeCable, forKey: .connChargeCable)
  304.        
  305.         try container.encodeIfPresent(estimatedBatteryRange, forKey: .estimatedBatteryRange)
  306.        
  307.         try container.encodeIfPresent(euVehicle, forKey: .euVehicle)
  308.        
  309.         try container.encodeIfPresent(fastChargerBrand, forKey: .fastChargerBrand)
  310.  
  311.         try container.encodeIfPresent(fastChargerPresent, forKey: .fastChargerPresent)
  312.         try container.encodeIfPresent(fastChargerType, forKey: .fastChargerType)
  313.        
  314.         try container.encodeIfPresent(idealBatteryRange, forKey: .idealBatteryRange)
  315.         try container.encodeIfPresent(managedChargingActive, forKey: .managedChargingActive)
  316.         try container.encodeIfPresent(managedChargingStartTime, forKey: .managedChargingStartTime)
  317.         try container.encodeIfPresent(managedChargingUserCanceled, forKey: .managedChargingUserCanceled)
  318.        
  319.         try container.encodeIfPresent(maxRangeChargeCounter, forKey: .maxRangeChargeCounter)
  320.        
  321.         try container.encodeIfPresent(notEnoughPowerToHeat, forKey: .notEnoughPowerToHeat)
  322.        
  323.         try container.encodeIfPresent(scheduledChargingPending, forKey: .scheduledChargingPending)
  324.         try container.encodeIfPresent(scheduledChargingStartTime, forKey: .scheduledChargingStartTime)
  325.        
  326.         try container.encodeIfPresent(timeToFullCharge, forKey: .timeToFullCharge)
  327.         try container.encodeIfPresent(timeStamp, forKey: .timeStamp)
  328.        
  329.         try container.encodeIfPresent(tripCharging, forKey: .tripCharging)
  330.        
  331.        
  332.        
  333.         try container.encodeIfPresent(usableBatteryLevel, forKey: .usableBatteryLevel)
  334.         try container.encodeIfPresent(userChargeEnableRequest, forKey: .userChargeEnableRequest)
  335.     }
  336. }
Advertisement
Add Comment
Please, Sign In to add comment