using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EVCB_OCPP.Packet20.Messages
{
    public class PublishFirmwareRequest
    {
        /// <summary>
        /// This contains a string containing a URI pointing
        ///to a location from which to retrieve the firmware.
        /// </summary>
        [Required]
        [StringLength(512, MinimumLength = 0)]
        public string Location { set; get; }

        /// <summary>
        /// This specifies how many times Charging
        /// Station must try to download the firmware before giving
        ///up.If this field is not present, it is left to Charging Station
        ///to decide how many times it wants to retry.
        /// </summary>
        public int? Retries { set; get; }

        /// <summary>
        /// The MD5 checksum over the entire firmware
        ///file as a hexadecimal string of length 32.
        /// </summary>
        [Required]
        [StringLength(32, MinimumLength = 0)]
        public string Checksum { set; get; }

        /// <summary>
        /// The Id of the request.
        /// </summary>
        [Required]
        public int RequestId { set; get; }

        /// <summary>
        /// The interval in seconds after which a retry may
        ///  be attempted.If this field is not present, it is left to
        /// Charging Station to decide how long to wait between
        /// attempts.
        /// </summary>
        public int? RetryInterval { set; get; }


    }
}
