Developer's Guide > Get Started with Civil SDK > Activating ODA Software
Activating ODA Software

This section explains ODA Software activation, the activation procedure, and how to maintain custom applications that use activated ODA products.

What is ODA Software Activation

ODA software activation is a mechanism for checking whether a licensed member uses ODA products.

With an ODA subscription, you get unique member activation information. All ODA products require unique member activation information for proper initialization and to provide supported functionality for creating custom applications.

ODA activation information includes:

  • A MemberID is a string that is generated from member credential information and uniquely identifies a member.
  • A digital signature created using an ODA private key that is not even available within ODA sources.

Note: ODA activation data is renewed when a new ODA platform version is released, therefore activation information must be updated during each version upgrade. Otherwise ODA initialization will fail with an exception.

How to Get ODA Activation Information

To obtain activation information:

  1. Follow the activation link https://opendesign.com/members/activation at the ODA official website and log in if required:

    Login form
  2. After login, check your activation name, and if it is correct, choose a version of the ODA platform you use and click the Generate for C++ button.

    Activation Page
  3. Your browser will prompt you to download the OdActivationInfo file that contains the activation information.

    Save this file in a directory that is available via the INCLUDE_PATH variable of your custom application project, for example, the ThirdParty/activation subfolder of the ODA platform installation directory.

How to Use ODA Activation Information when Building ODA Samples or Developing a Custom C++ Application

C++ custom applications need to call the odInitialize() function to get access to ODA API functionality. While running the odInitialize() function, the activation name and signature from the activation information file are validated. ODA API throws the OdError "Not activated!" exception if validation fails.

If a system services object that you pass to the odInitialize() function is inherited from the ExSystemServices class, place the OdActivationInfo file in a directory that has been added to the INCLUDE_PATH variable. In this case your compiler will be able to access the OdActivationInfo file during the build process. For example, you can place your OdActivationInfo file in the ThirdParty/activation directory of the ODA platform folder and add this path to your project's INCLUDE_PATH values.

If you haven't had the ODA activation file, see the How to Get ODA Activation Information section in this document for detailed information about getting the activation file.

If the activation file is placed in a location that your compiler cannot access, you will get a compiler error such as "Kernel/Extensions/ExServices/ExSystemServices.h:43:10: fatal error: 'OdActivationInfo' file not found".

If a system services object that you pass to the odInitialize() function is NOT inherited from the ExSystemServices class, call the odActivate() function explicitly and pass to it the MemberID and digital signature from your OdActivationInfo file. The odActivate() function should be called before calling the odInitialize() function. Please see the code fragment below that illustrates this approach.


      class MyServices : public ExHostAppServices, RxSystemServicesImpl //class MyServices is NOT inherited from ExSystemServices class.
      {
      ...
      };

      ...

      //Create an instance of MyServices
      OdStaticRxObject<MyServices> svcs;

      //Call odActivate
      // odActivate("First string from your OdActivationInfo file", "Second string from your OdActivationInfo file");
      //Or better like below. Upgrading to new version requires new OdActivationInfo file. No code editing will be required.
      odActivate(
       #include "OdActivationInfo"
       );
      ...

      //Only after calling odActivate call OdInitialize
      odInitialize(&svcs);

      ...
     
Copyright © 2002 – 2020. Open Design Alliance. All rights reserved.