// Copyright (c) 2009 DMTF.  All rights reserved.
   [Version ( "2.22.0" ), 
    UMLPackagePath ( "CIM::Device::Ports" ), 
    Description ( 
       "Provides methods for configuring parameters of Wi-Fi ports and "
       "the Wi-Fi protocol endpoints associated with them." )]
class CIM_WiFiPortConfigurationService : CIM_NetworkPortConfigurationService {


      [Description ( 
          "Shall atomically create settings that enable a "
          "WiFiEndpoint to connect to a given Wi-Fi network. These "
          "settings include the name (SSID) of the network as well "
          "as the security parameters used by the WiFiEndpoint to "
          "authenticate to the network and encrypt frames it "
          "transmits into the network and decrypt the frames it "
          "receives from the network. Upon successful completion, a "
          "new instance of CIM_WiFiEndpointSettings shall be "
          "associated to the CIM_WiFiEndpoint referenced by the "
          "WiFiEndpoint parameter, through a new instance of "
          "CIM_ElementSettingData. If the IEEE8021xSettingsInput "
          "parameter is not null, a new instance of "
          "CIM_IEEE8021xSettings containing its property values "
          "shall be associated to the new instance of "
          "CIM_WiFiEndpointSettings through a new instance of "
          "CIM_ConcreteComponent upon successful completion. "
          "Alternatively, if the IEEE8021xSettingsInputReference "
          "parameter is not null, the CIM_IEEE8021xSettings that it "
          "references shall be associated to the new instance of "
          "CIM_WiFiEndpointSettings through a new instance of "
          "CIM_ConcreteComponent upon successful completion. This "
          "method shall not apply the new settings to WiFiEndpoint. "
          "Rather, it shall make them available for subsequent "
          "manual or autonomous application." ), 
       ValueMap { "0", "1", "2", "3", "4", "5..4095", "4096..32767", 
          "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Failed", "Invalid Parameter", "Invalid Reference", 
          "DMTF Reserved", "Method Reserved", "Vendor Specified" }]
   uint32 AddWiFiSettings(
         [Required, IN, Description ( 
             "References the instance of CIM_WiFiEndpoint with "
             "which the new settings shall be associated." )]
      CIM_WiFiEndpoint REF WiFiEndpoint, 
         [Required, IN, Description ( 
             "Provides the input property values for the "
             "CIM_WiFiEndpointSettings instance that shall be "
             "created by this method. Upon successful completion "
             "of this method, a new instance of "
             "CIM_WiFiEndpointSettings shall be associated to "
             "the CIM_WiFiEndpoint referenced by the "
             "WiFiEndpoint parameter, through a new instance of "
             "CIM_ElementSettingData." ), 
          EmbeddedInstance ( "CIM_WiFiEndpointSettings" )]
      string WiFiEndpointSettingsInput, 
         [IN, Description ( 
             "Provides the property values for a new instance of "
             "CIM_IEEE8021xSettings. If both "
             "IEEE8021xSettingsInput and "
             "IEEE8021xSettingsInputReference are not null, this "
             "method shall return 2 (\"Unknown/Unspecified "
             "Error\").If this parameter is not null and "
             "IEEE8021xSettingsInputReference is null, this "
             "method shall create a new CIM_IEEE8021xSettings "
             "instance with the values in this parameter, and "
             "shall associate it (through a new instance of "
             "CIM_ConcreteComponent) with the newly created "
             "instance of CIM_WiFiEndpointSettings." ), 
          EmbeddedInstance ( "CIM_IEEE8021xSettings" )]
      string IEEE8021xSettingsInput, 
         [IN, Description ( 
             "References a credential that shall be used to "
             "authenticate the CIM_WiFiEndpoint to a IEEE 802.1x "
             "authentication server. This method shall return 2 "
             "(\"Unknown/Unspecified Error\") if "
             "IEEE8021xSettingsInput is null and "
             "IEEE8021xCredential is not null." )]
      CIM_Credential REF ClientCredential, 
         [IN, Description ( 
             "References a credential that shall be used as a "
             "trusted root certificate by the CIM_WiFiEndpoint "
             "when it authenticates the leaf certificate "
             "provided by the authentication server. This method "
             "shall return 2 (\"Unknown/Unspecified Error\") if "
             "IEEE8021xSettingsInput is null and "
             "IEEE8021xCredential is not null." )]
      CIM_Credential REF CACredential, 
         [OUT, Description ( 
             "Upon successful completion, shall contain a "
             "reference to the CIM_WiFiEndpointSettings instance "
             "created by this method." )]
      CIM_WiFiEndpointSettings REF WiFiEndpointSettings, 
         [OUT, Description ( 
             "Upon successful completion, shall contain a "
             "reference to the CIM_IEEE8021xSettings instance "
             "created by this method if and only if "
             "IEEE8021xSettingsInput was not null." )]
      CIM_IEEE8021xSettings REF IEEE8021xSettings);

      [Description ( 
          "Shall atomically update settings that enable a "
          "WiFiEndpoint to connect to a given Wi-Fi network. These "
          "settings include the name (SSID) of the network as well "
          "as the security parameters used by the WiFiEndpoint to "
          "authenticate to the network and encrypt frames it "
          "transmits into the network and decrypt the frames it "
          "receives from the network. This method addresses the "
          "following update scenarios, each of which is given a tag "
          "line that precedes its description. Each tag line is in "
          "the form A to B, in which A indicates the type of "
          "authentication method in the settings before "
          "UpdateWiFiSettings is executed, and B indicates the type "
          "of authentication method in the settings after "
          "UpdateWiFiSettings is executed. Each of A and B is "
          "replaced in the tag lines by either \"IEEE 802.1x\", "
          "which indicates that the authentication method in the "
          "settings is based on IEEE 802.1x, or \"Non-IEEE-802.1x\", "
          "which indicates that the authentication method in the "
          "settings is not based on IEEE 802.1x.\n"
          "\t* IEEE 802.1x to IEEE 802.1x, update all: Updating the "
          "properties of a CIM_WiFiEndpointSettings instance in "
          "which the AuthenticationMethod property indicates an "
          "IEEE 802.1x authentication method and the properties of "
          "the associated CIM_IEEE8021xSettings instance, without "
          "reverting to a non-IEEE-802.1x authentication method. In "
          "this scenario, all parameters should be not null.\n"
          "\t* IEEE 802.1x to IEEE 802.1x, update WiFi only: "
          "Updating the properties of a CIM_WiFiEndpointSettings "
          "instance in which the AuthenticationMethod property "
          "indicates an IEEE 802.1x authentication method and that "
          "accordingly has an associated CIM_IEEE8021xSettings "
          "instance, without updating the CIM_IEEE8021xSettings "
          "instance, and without reverting to a non-IEEE-802.1x "
          "authentication method. In this scenario, the "
          "IEEE8021xSettingsInput parameter should be null and all "
          "other parameters should be not null.\n"
          "\t* IEEE 802.1x to IEEE 802.1x, update IEEE 802.1x only: "
          "Updating the properties of a CIM_IEEE8021xSettings "
          "instance that has an associated CIM_WiFiEndpointSettings "
          "instance without updating the CIM_WiFiEndpointSettings "
          "instance. In this scenario, the "
          "WiFiEndpointSettingsInput parameter should be null and "
          "all other parameters should be not null.\n"
          "\t* Non-IEEE-802.1x to Non-IEEE-802.1x: Updating the "
          "properties of a CIM_WiFiEndpointSettings instance in "
          "which the AuthenticationMethod property indicates a "
          "non-IEEE-802.1x authentication method, and that "
          "accordingly does not have an associated "
          "CIM_IEEE8021xSettings instance, without changing the "
          "authentication method to an IEEE 802.1x method. In this "
          "scenario, the WiFiEndpointSettings and "
          "WiFiEndpointSettingsInput parameters should be not null, "
          "and the IEEE8021xSettings and IEEE8021xSettingsInput "
          "parameters should be null.\n"
          "\t* Non-IEEE-802.1x to IEEE 802.1x: Updating the "
          "properties of a CIM_WiFiEndpointSettings instance in "
          "which the AuthenticationMethod property indicates a "
          "non-IEEE-802.1x authentication method, and that "
          "accordingly does not have an associated "
          "CIM_IEEE8021xSettings instance, and changing the "
          "authentication method to an IEEE 802.1x method. In this "
          "scenario, the IEEE8021xSettingsInput parameter should be "
          "null, and all other parameters should be not null. An "
          "instance of CIM_IEEE8021xSettings should first be "
          "created using the intrinsic method CreateInstance. Then, "
          "this method should be used with all parameters except "
          "IEEE8021xSettingsInput not null. This method shall "
          "update WiFiEndpointSettings and create a new instance of "
          "CIM_ConcreteComponent between WiFiEndpointSettings and IEEE8021xSettings.\n"
          "\t* IEEE 802.1x to Non-IEEE-802.1x: Updating the "
          "properties of a CIM_WiFiEndpointSettings instance in "
          "which the AuthenticationMethod property indicates an "
          "IEEE 802.1x authentication method and that accordingly "
          "has an associated CIM_IEEE8021xSettings instance, and "
          "reverting to a non-IEEE-802.1x authentication method. In "
          "this scenario, the IEEE8021xSettingsInput should be "
          "null, and all other parameters should be not null. This "
          "method shall delete the CIM_ConcreteComponent instance "
          "between the instances referenced by the "
          "WiFiEndpointSettings and IEEE8021xSettings parameters. "
          "If this CIM_ConcreteComponent instance is the last "
          "CIM_ConcreteComponent instance that references the "
          "CIM_IEEE8021xSettings instance referenced by the "
          "IEEE8021xSettings parameter, and the instance of "
          "CIM_IEEE8021xSettings referenced by the "
          "IEEE8021xSettings parameter was created by "
          "AddWiFiEndpointSettings, then this method shall also "
          "delete this CIM_IEEE8021xSettings instance.\n"
          "This method shall not apply the updated settings to any "
          "instance of CIM_WiFiEndpoint." ), 
       ValueMap { "0", "1", "2", "3", "4", "5..4095", "4096..32767", 
          "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Failed", "Invalid Parameter", "Invalid Reference", 
          "DMTF Reserved", "Method Reserved", "Vendor Specified" }]
   uint32 UpdateWiFiSettings(
         [Required, IN, OUT, Description ( 
             "Shall reference the CIM_WiFiEndpointSettings "
             "instance that shall be updated by this method." )]
      CIM_WiFiEndpointSettings REF WiFiEndpointSettings, 
         [IN, Description ( 
             "If not null, shall provide the new property values "
             "for the instance of CIM_WiFiEndpointSettings "
             "referenced by the WiFiEndpointSettings parameter." ), 
          EmbeddedInstance ( "CIM_WiFiEndpointSettings" )]
      string WiFiEndpointSettingsInput, 
         [IN, Description ( 
             "If not null, shall provide the new property values "
             "for the instance of CIM_IEEE8021xSettings "
             "referenced by the IEEE8021xSettings parameter. If "
             "the IEEE8021xSettings is null and the "
             "IEEE8021xSettingsInput parameter is not null, this "
             "method shall return 2 (\"Unknown/Unspecified "
             "Error\")." ), 
          EmbeddedInstance ( "CIM_IEEE8021xSettings" )]
      string IEEE8021xSettingsInput, 
         [IN, Description ( 
             "References a credential that shall be used to "
             "authenticate the CIM_WiFiEndpoint to a IEEE 802.1x "
             "authentication server." )]
      CIM_Credential REF ClientCredential, 
         [IN, Description ( 
             "References a credential that shall be used as a "
             "trusted root certificate by the CIM_WiFiEndpoint "
             "when it authenticates the leaf certificate "
             "provided by the authentication server." )]
      CIM_Credential REF CACredential, 
         [IN, OUT, Description ( 
             "If not null, shall reference the "
             "CIM_IEEE8021xSettings instance that shall be "
             "updated by this method." )]
      CIM_IEEE8021xSettings REF IEEE8021xSettings);

};
