## Register a license

You have 30 days free trial. For a long term use, you need to buy a license ([See pricing](/order)). Then, we will send you a license key and you will just have to specify it with your company name with the static method `RegisterLicense()` of class `YaskawaRobot`.

A `InvalidLicenseException` exception will be thrown when connecting to the robot with the reason.

You can get full information about current license with the static property `LicenseInfo` of class `StaubliController`.

**C# : License**
```csharp
using UnderAutomation.Staubli;
using UnderAutomation.Staubli.License;

public class License
{
  static void Main(string[] args)
  {
    /**/
    StaubliController.RegisterLicense("YourCompanyName", "YOUR_LICENSE_KEY");

    LicenseInfo myLicenseInfo = StaubliController.LicenseInfo;

    // Number of trial days remaining
    var evaluationDaysLeft = myLicenseInfo.EvaluationDaysLeft;

    bool licenseValid = myLicenseInfo.State == LicenseState.Licensed;
    /**/
  }
}
```

## API Reference

**Members of License.LicenseInfo**
```csharp
public sealed class LicenseInfo {
    // Create a new LicenseInfo instance to retrieve informations about a pair of identifier/key
    // This class should not be used to register your product. Please use static function RegisterLicense to specify your license.
    public LicenseInfo(string licenseIdentifier, string licenseKey)

    // Remaining days of the trial period. Null if the product is licensed. It could be negative if the trial period is ended since several days.
    public int? EvaluationDaysLeft { get; }

    // The date the trial period starts. If the product is licensed, the date of the library first use.
    public DateTime EvaluationStartDate { get; }

    // The date you get the license
    public DateTime? LicenseIssuedDate { get; }

    // The license key supplied by UnderAutomation (null for trial period)
    public string LicenseKey { get; }

    // Name of your organisation
    public string Licensee { get; }

    // The date your maintenance contract end and you no longer can use this license with newer versions.
    public DateTime? MaintenanceExpirationDate { get; }

    // Number of maintenance years included in your license
    public int MaintenanceYears { get; }

    // Commercial name of this .NET Software library
    public string Product { get; }

    // The date this version of the product was released.
    public DateTime ProductReleaseDate { get; }

    // The current license state
    public LicenseState State { get; }

    // A human description of the license
    public override string ToString()

    // The date the product will expire. Null if the product is licensed.
    public DateTime? TrialPeriodExpirationDate { get; }
}
```

**Members of License.LicenseState**
```csharp
public enum LicenseState {
    // The trial period as expired, you no more can use the library
    Expired = 3

    // The library is in an extra trial period, you can use the library
    ExtraTrial = 2

    // The pair License Identifier and License Key are incompatible, you cannot use the library
    Invalid = 0

    // Congratulations, the library is licensed.
    Licensed = 5

    // Your license does not allow you to use such a recent release. Please buy maintenance to use this version
    MaintenanceNeeded = 4

    // No license has been provided
    None = -1

    // The library is in a trial period, you can use the library
    Trial = 1
}
```

**Members of License.InvalidLicenseException**
```csharp
public class InvalidLicenseException : Exception, ISerializable {
    // The license that causes this exception
    public LicenseInfo LicenseInfo { get; }
}
```