Example #1
0
        /// <summary>
        /// Create a new virtual charging station.
        /// </summary>
        /// <param name="ChargingStation">A charging station.</param>
        /// <param name="EVSEId">The EVSE identification for the EVSE to be created.</param>
        /// <param name="EVSEConfigurator">An optional delegate to configure the new (local) EVSE.</param>
        /// <param name="VirtualEVSEConfigurator">An optional delegate to configure the new EVSE.</param>
        /// <param name="OnSuccess">An optional delegate for reporting success.</param>
        /// <param name="OnError">An optional delegate for reporting an error.</param>
        public static EVSE CreateVirtualEVSE(this ChargingStation ChargingStation,
                                             EVSE_Id EVSEId,
                                             I18NString Description = null,
                                             EVSEAdminStatusTypes InitialAdminStatus = EVSEAdminStatusTypes.Operational,
                                             EVSEStatusTypes InitialStatus           = EVSEStatusTypes.Available,
                                             EnergyMeter_Id?EnergyMeterId            = null,
                                             String EllipticCurve = "P-256",
                                             ECPrivateKeyParameters PrivateKey           = null,
                                             PublicKeyCertificates PublicKeyCertificates = null,
                                             TimeSpan?SelfCheckTimeSpan     = null,
                                             UInt16 MaxAdminStatusListSize  = VirtualEVSE.DefaultMaxAdminStatusListSize,
                                             UInt16 MaxStatusListSize       = VirtualEVSE.DefaultMaxStatusListSize,
                                             Action <EVSE> EVSEConfigurator = null,
                                             Action <VirtualEVSE> VirtualEVSEConfigurator = null,
                                             Action <EVSE> OnSuccess = null,
                                             Action <ChargingStation, EVSE_Id> OnError = null)
        {
            #region Initial checks

            if (ChargingStation == null)
            {
                throw new ArgumentNullException(nameof(ChargingStation), "The given charging station must not be null!");
            }

            #endregion

            return(ChargingStation.CreateEVSE(EVSEId,
                                              EVSEConfigurator,
                                              newevse => {
                var virtualevse = new VirtualEVSE(newevse.Id,
                                                  ChargingStation.RoamingNetwork,
                                                  Description,
                                                  InitialAdminStatus,
                                                  InitialStatus,
                                                  EnergyMeterId,
                                                  EllipticCurve,
                                                  PrivateKey,
                                                  PublicKeyCertificates,
                                                  SelfCheckTimeSpan,
                                                  MaxAdminStatusListSize,
                                                  MaxStatusListSize);

                VirtualEVSEConfigurator?.Invoke(virtualevse);

                return virtualevse;
            },

                                              OnSuccess: OnSuccess,
                                              OnError:   OnError));
        }
        /// <summary>
        /// Check if the given enumeration of EVSEs and their current status
        /// contains the given pair of EVSE identification and status.
        /// </summary>
        /// <param name="AdminStatus">An enumeration of EVSEs and their current status.</param>
        /// <param name="Id">An EVSE identification.</param>
        /// <param name="Status">An EVSE status.</param>
        public static Boolean Contains(this IEnumerable <EVSEAdminStatus> AdminStatus,
                                       EVSE_Id Id,
                                       EVSEAdminStatusTypes Status)
        {
            foreach (var adminstatus in AdminStatus)
            {
                if (adminstatus.Id == Id &&
                    adminstatus.Status == Status)
                {
                    return(true);
                }
            }

            return(false);
        }
        /// <summary>
        /// Convert a WWCP EVSE status into an eMIP EVSE availability status.
        /// </summary>
        /// <param name="EVSEAdminStatusType"></param>
        /// <returns></returns>
        public static EVSEAvailabilityStatusTypes ToEMIP(this EVSEAdminStatusTypes EVSEAdminStatusType)
        {
            switch (EVSEAdminStatusType)
            {
            case EVSEAdminStatusTypes.OutOfService:
            case EVSEAdminStatusTypes.Blocked:
            case EVSEAdminStatusTypes.InternalUse:
                return(EVSEAvailabilityStatusTypes.OutOfOrder);

            case EVSEAdminStatusTypes.Operational:
                return(EVSEAvailabilityStatusTypes.InService);

            case EVSEAdminStatusTypes.Planned:
            case EVSEAdminStatusTypes.InDeployment:
                return(EVSEAvailabilityStatusTypes.Future);

            case EVSEAdminStatusTypes.Deleted:
                return(EVSEAvailabilityStatusTypes.Deleted);

            default:
                return(EVSEAvailabilityStatusTypes.OutOfOrder);
            }
        }
Example #4
0
 /// <summary>
 /// Set the admin status.
 /// </summary>
 /// <param name="Timestamp">The timestamp when this change was detected.</param>
 /// <param name="NewAdminStatus">A new admin status.</param>
 public void SetAdminStatus(EVSEAdminStatusTypes NewAdminStatus,
                            DateTime Timestamp)
 {
     _AdminStatusSchedule.Insert(NewAdminStatus, Timestamp);
 }
Example #5
0
 /// <summary>
 /// Set the admin status.
 /// </summary>
 /// <param name="NewAdminStatus">A new admin status.</param>
 public void SetAdminStatus(EVSEAdminStatusTypes NewAdminStatus)
 {
     _AdminStatusSchedule.Insert(NewAdminStatus);
 }