Intel AppUp Software Development Kit API Reference for MeeGo C++ Developers on Windows
SDKVersion 0.8 Beta. Copyright(C) 2011 Intel Corporation. All Rights Reserved. Document Number: 324700-001US.
Contents
- About this Document
- Application Reference Information
- Configuration and Build Information
- Application Class Structure
- Application Constructor Call
- Instrumentation
- Crash Reporting
- Exceptions
- InitializationException
- UnauthorizedException
- AdpRuntimeException
- AdpWarningException
- Code Example for Exceptions
- Return/Error Codes
- End User Error Messages
- Revision History
- Disclaimer and Legal Information
About this Page
This page is for developers using the Intel AppUp(TM) Software Development Kit 0.8 Beta for MeeGo C/C++ Developers for Windows to develop C++ applications within a Microsoft* Windows* development environment and targeted for a MeeGo* runtime environment. The SDK (Software Development Kit) includes programming libraries, documentation, and sample code to help developers create, test, and submit C++ applications intended for distribution via the Intel AppUp(SM) center.
Note: This page covers C++ support only, even though the SDK also supports C. Information on C support is provided in separate documentation.
Intended Audience
This page is intended for experienced software developers who are developing applications for the Intel AppUp center. These can be new applications or existing ones being ported forthe Intel AppUp center. This SDK supports development of C++ applications for MeeGo 1.1 with MeeGo 1.1 SDK for Windows. This SDK supports development in a Microsoft Windows 7* or Windows XP* 32-bit OS environment.
Both the MeeGo 1.1 SDK and the Intel AppUp SDK 0.8 Beta for MeeGo C/C++ Developers on Windows need to be installed.
Information about the specific editions and versions of the environments that are supported is provided in the SDK's Release Notes.
Using this API Reference
This API reference contains the following sections:
- About this Document, introduces the contents and conventions of this document.
- Application Reference Information, documents the SDK API Calls for applications. Code examples are provided, as appropriate.
Conventions and Symbols
The following table shows the conventions used in this document.
This type style |
Indicates an element of syntax, reserved word, keyword, filename, computer output, or part of a program example. The text appears in lowercase unless uppercase is significant. |
| This type style | Indicates the exact characters you type as input. Also used to highlight the elements of a graphical user interface, such as buttons and menu names or filenames and labels when discussing program examples. |
| This type style | Indicates a placeholder for an identifier, an expression, a string, a symbol, or a value. Substitute actual item(s) for the placeholder. |
| Hyperlink | Indicates a hyperlink to internal or external information. Use CNTL+mouse click to navigate. |
| Notes, cautions, etc. | Note: Indicates an important comment or side topic for the user. |
Related Information
Getting Started information for the C++ and MeeGo is provided in the Intel AppUp Software Development Kit Developer Guide for MeeGo C++ Developers on Windows document, which is shipped with the Intel AppUp Software Development Kit for MeeGo C/C++ Developers on Windows. The SDK is available on the Intel AppUp Developer Program portal.
Application Reference Information
This section documents the SDK API Calls for Applications. The following subsections are provided:
- Configuration and Build Information — Documents general configuration and build information needed to create applications.
- Application Class Structure — Defines the class structure for applications.
- Application Constructor Call — Documents the SDK library Application Constructor call, which is required to authorize Intel AppUp center applications to run on the client system.
- Instrumentation Calls — Documents the SDK library calls to implement Instrumentation (metering) of applications.
- Custom Crash Reporting — Documents the method to implement custom Crash Reporting, when default Crash Reporting is not desired.
- Exceptions — Documents the SDK Exception Classes that are supported.
- Return/Error Codes — Documents the Return/Error codes that are supported.
- End User Error Messages — Documents the error messages that can be displayed to end users.
Configuration and Build Information
The following list provides basic configuration and build information needed to create applications:
- Verify that the MeeGo 1.1 SDK is installed.
- Verify that the Qt Creator project has statically linked the application to the SDK Library. The following lines must appear in the Qt Creator application project (.pro) files:
LIBS += -lxml2\ -lpthread LIBS += "$$(IADP_SDK_DIR_MEEGO)Cpp\lib\libadpruntime.a"\ "$$(IADP_SDK_DIR_MEEGO)Cpp\lib\libadpcore.a"\ "$$(IADP_SDK_DIR_MEEGO)Cpp\lib\libxerces-c.a"\ "$$(IADP_SDK_DIR_MEEGO)Cpp\lib\libxml-security-c.a"\ "$$(IADP_SDK_DIR_MEEGO)Cpp\lib\libcrypto.a"
- IADP_SDK_DIR_MEEGO is the installation path of the SDK. The default path is Program Files/Intel/IntelAppUpSDKMeeGo/Cpp/lib/.
Application Class Structure
The Application class is the root of the SDK Framework’s class hierarchy, which is based on an internal SDK library Product class. This relationship is shown in the figure below. (A future Component class may also be based on the same Product class. Components are not currently supported and will not be discussed further in this version of the document.)

Application Constructor Call
The Application Constructor call is the only required call for Intel AppUp Developer Program C++ applications. When invoked, the application constructor performs the following operations: (1) it initializes the SDK library, and (2) it authorizes the application via the Intel AppUp center. Exceptions are thrown if these operations fail. In addition, default Crash Reporting is enabled, unless custom Crash Reporting is implemented.
The Application Constructor call must be placed in the initialization code for the application. Header code and Cleanup code must also be included in the application to support this call. The Application Constructor call should be followed by an exception handler.
Syntax
const ApplicationId myApplicationID(ApplicationID);
int main(int argc, char** argv) {
Application * myApplication = NULL;
try {
myApplication = new Application(myApplicationID);
}
// catches for exception handling
}
Parameters
myApplication: name of the object (the application)
ApplicationID: Application GUID in string or integer format. The data type of the GUID is four unsigned, long integers, as follows:
ApplicationID(unsigned long l1, unsigned long l2, unsigned long l3, unsigned long l4)
See the Application ID discussion later.
If the Application Constructor is successful, then an Application object is returned. Otherwise an exception is thrown. The following exceptions are supported:
- InitializationException – Failure while attempting to initialize the SDK library code.
- UnauthorizedException – Failure while attempting to authorize the application.
- AdpRuntimeException – Failure in the general runtime environment.
Error Codes (ADP_RET_CODE data type)
| Value | Meaning |
| ADP_FAILURE | Operation was unsuccessful. It can also indicate that more than one instantiation of the application was attempted. |
| ADP_NOT_AVAILABLE | Operation failed because the SDK library was not available. This can occur if the Intel AppUp center software is not installed properly. |
| ADP_NOT_INITIALIZED | Operation failed because the SDK library is not initialized. Any API call made prior to initialization causes this code to be generated. |
| ADP_INCOMPATIBLE_VERSION | Operation failed because the API version of the application is not supported by the current Intel AppUp center software. |
| ADP_NOT_AUTHORIZED | The application is not authorized to run. Applications can choose how to respond, such as preventing an application from running, allowing the application to run for a grace period so the user can obtain a license, allowing the application to run with limited functionality, etc. |
| ADP_AUTHORIZATION_EXPIRED | The application’s license has expired. Applications can choose how to respond, such as preventing an application from running, allowing the application to run for a grace period, so the user can obtain a license, allowing the application to run with limited functionality, etc. |
| ADP_TIMEOUT | Operation failed because the connection between the SDK and the Intel AppUp center software timed out. |
Application IDs
The Application ID is a unique identifier for Intel AppUp Developer Program applications. There are two types of application GUIDs: (1) a Debug Application ID, and (2) a Production Application ID. Debug Application IDs are used for testing applications. You must replace the Debug Application ID with a Production Application ID after testing to upload your application to the Intel AppUp Developer Program portal.
Debug Application ID — During development, the Application Debug ID allows testing with the Intel AppUp(TM) Software Debugger. This Debug ID is a 128-bit number, expressed as a string using predefined constants. Two versions of a Debug ID exist:
- ADP_DEBUG_APPLICATIONID: Used with the Intel AppUp Software Debugger to get an ADP_AUTHORIZED response back. This allows most of the application to be tested and debugged. The value of this Debug ID is all ones.
- ADP_EXPIRED_APPLICATIONID: Used with the Intel AppUp Software Debugger to get an ADP_AUTHORIZATION_EXPIRED response back. This allows the "expired" branch of the application to be tested and debugged. The value of this Debug ID is all zeros.
Production Application ID — Production IDs are obtained from the Intel AppUp Developer Program portal, which requires that you enroll in the Intel AppUp Developer Program. The Production ID is a 128-bit number organized as four integers in hex format.
Notes
- The following header must be included prior to invoking the Application Constructor call:
/// <ADP>
#include "adpcppf.h"
/// </ADP>
- A sensible approach to handling an ADP_TIMEOUT error during the first authorization attempt is to attempt authorization again.
- The recommended method to check the original authorization status of an application at any point after the Application Constructor call has completed is via a developer-created, local variable.
Authorization Code Examples
Using Debug Application ID From SDK Library
The following example uses a Debug Application ID and includes a basic exception handler. The header code has been previously inserted.
/// <ADP>
const ApplicationId myApplicationID(AdpConstants.ADP_DEBUG_APPLICATIONID);
/// Note: replace AdpConstants.ADP_DEBUG_APPLICATIONID with the actual application ID
/// once you obtain it from Intel AppUp Developer Program web portal
/// To test Expired ID, use AdpConstants.ADP_EXPIRED_APPLICATIONID
int main(int argc, char** argv) {
Application * myApplication = NULL;
try {
myApplication = new Application(myApplicationID);
} catch (AdpException& e) {
qDebug("Caught exception in application. Exception code:
%ld/n", e.code());
}
}
/// </ADP>
Using Production Application ID
The following example uses a Production Application ID and a basic exception handler. The header code has been previously inserted.
/// <ADP>
const ApplicationId myApplicationID(0x12341234, 0x56785678, 0x12341234, 0x56785678);
int main(int argc, char** argv) {
Application * myApplication = NULL;
try {
myApplication = new Application(myApplicationID);
}
/// Exception handler goes here
}
/// </ADP>
Cleanup Code
On application or process exit, the SDK library must be instructed to release the object and close the SDK library. The following code performs this cleanup.
/// <ADP>
if (myApplication != NULL){
delete myApplication;
myApplication = NULL;
}
return 0;
/// </ADP>
Instrumentation
The SDK supports the following Instrumentation events to measure application usage:
- Application Begin Event – Triggers sending a Begin Event message to the Intel AppUp center for the application.
- Application End Event – Triggers sending an End Event message to the Intel AppUp center for the application.
A usage record is only generated when a Begin Event is followed eventually by an End Event. A Begin Event alone does not cause a usage record to be generated.
Begin Event Call
Insert the BeginEvent call at the point where you wish to trigger the Begin Event. It is recommended to insert it in the same sequence as, and immediately after, the Application Constructor call. This starts usage measurement when the application is first authorized and allows the BeginEvent call to share the same exception handler as the Application Constructor call.
Syntax
try {
myApp->BeginEvent();
}
Parameters
myApp: name of the object (the application)
If the BeginEvent call is successful, then a Begin Event message is triggered. Otherwise an exception is thrown. The following exception is supported:
- AdpRuntimeException – Failure in the general runtime environment.
Error Codes (ADP_RET_CODE data type)
| Value | Meaning |
| ADP_FAILURE | Operation was unsuccessful. |
| ADP_NOT_INITIALIZED | Operation failed because the SDK library is not initialized. Any API call made prior to initialization causes this code to be generated. |
| ADP_NOT_AUTHORIZED | The application is not authorized to run. Applications can choose how to respond, such as preventing an application from running, allowing the application to run for a grace period so the user can obtain a license, allowing the application to run with limited functionality, etc. |
Notes
- A BeginEvent call must be preceded by a successful Application Constructor call or an exception is thrown.
- A sensible approach to handling the first occurence of an ADP_FAILURE return code (in critical situations) is to attempt the authorization sequence. This may re-establish a valid session with the Intel AppUp center software.
Code Example
The following example shows the use of the BeginEvent call. A basic exception handler is used.
#include "adpcppf.h"
#include <iostream>
int main( int argc, char** argv ) {
try {
Application *myApp = new Application(ApplicationId::DEBUG_ID );
myApp->BeginEvent();
}
catch (AdpErrorException& e) {
// Your code to handle exceptions
qDebug("Caught exception in application with Exception code:
%ld\n", e.code());
}
/// Application code goes here
}
End Event Call
End Events must be preceded by Begin Events, or an exception is thrown. The EndEvent call is typically used as part of the application shutdown sequence.
Syntax
try {
myApp->EndEvent();
}
Parameters
myApp: name of the object (the application)
If the EndEventcall is successful, then an End Event message is triggered. Otherwise an exception is thrown. The following exception is supported:
- AdpRuntimeException – Failure in the general runtime environment.
- AdpWarningException – A warning condition was detected, such as no prior BeginEvent call.
Error Codes (ADP_RET_CODE data type)
| Value | Meaning |
| ADP_FAILURE | Operation was unsuccessful. |
| ADP_NOT_INITIALIZED | Operation failed because the SDK library is not initialized. Any API call made prior to initialization causes this code to be generated. |
| ADP_NOT_AUTHORIZED | The application is not authorized to run. Applications can choose how to respond, such as preventing an application from running, allowing the application to run for a grace period so the user can obtain a license, allowing the application to run with limited functionality, etc. |
| ADP_NO_APP_BEGIN_EVENT | Operation failed because an End Event has been attempted with no prior Begin Event. A Begin Event call must precede an End Event call in the application. |
Notes
- An EndEvent call must be preceded by a BeginEvent call call or a warning exception is thrown.
- A sensible approach to handling the first occurrence of an ADP_FAILURE return code (in critical situations) is to attempt the authorization sequence. This may re-establish a valid session with the Intel AppUp center software.
Code Example
The following example shows the use of the EndEvent call. The code triggers an End Event message and includes exception handlers for AdpRuntimeException and AdpWarningException.
// Application code goes here
try {
myApp->EndEvent();
}
catch (AdpRuntimeException& e) {
// Your code to handle EndEvent errors
qDebug("Caught EndEvent exception in application with Exception code:
%ld\n", e.code());
}
catch (AdpWarningException& e) {
// Your code to handle EndEvent warnings
qDebug("Caught EndEvent warning in application with Exception code:
%ld\n", e.code());
}
// Application code goes here
Crash Reporting
The Intel AppUp SDK library supports Crash Reporting to provide a snapshot of the state of the application when a crash occurs. Default crash reports are automatically enabled when the application constructor runs. You do not have to explicitly enable this capability. Default crash reports are viewable via My Dashboard on the Intel AppUp Developer Program portal. This information includes application context information, runtime environment information, SDK identification information, and a core stack dump. The complete report can be viewed by clicking on the Details link for a specific report. The Intel AppUp™ Software Development Kit Developer Guide for C++ and MeeGo provides more information on My Dashboard and on how Crash Reporting works at the client system level.
Customized Crash Reporting allows you to provide different information than default Crash Reporting. Customized Crash Reporting is implemented by defining a crash report class MyCrashReport derived from the SDK DefaultCrashReport class. Then setting MyCrashReport (or any other object derived from DefaultCrashReport) in the source code automatically disables default Crash Reporting.
The table below lists the possible fields in a crash report, with the Source column defining the source (SDK or Developer) of the information for the respective field. As a developer, you can modify the fields where the Source is listed as Developer. Fields are modified by overriding the default field.
Note: It is your responsibility to ensure that custom Crash Reports do not include any data that violates Intel Privacy rules. See http://appdeveloper.intel.com for details.
| Crash Report Fields | My Dashboard Column | Source |
| Application Name | No (but included in Details) | SDK |
| Application ID | No (but included in Details) | SDK |
| ModuleName | Module (and in Details) | Developer |
| LineNumber | Line (and in Details) | Developer |
| Category | No (but included in Details) | Developer |
| Message | Messages (and in Details) | Developer |
| ErrorData | No (but included in Details) | Developer |
| SDK API Level | No (but included in Details) | SDK |
| Runtime | Runtime (and in Details) | SDK |
| Runtime version | No (but included in Details) | SDK |
| OS | OS (and in Details) | SDK |
| OS version | No (but included in Details) | SDK |
| Timestamp | Timestamp (and in Details) | SDK |
| Up to 20 custom fields | (reserved for future use) | Developer |
Custom crash reports are set immediately after the SDK Application Constructor call so that crash reports can include data as early in application execution as is reasonably possible.
The fields with the greatest flexibility for customization are listed below:
- The Category field allows you to create categories to sort your crash reports on the Intel AppUp Developer Program portal. For example, you may wish to create categories called "MEMORY", "IO", "USER ERROR", etc.
- The Error Data field allows you to create your own stack dumps or long error messages to help you understand why your application crashed.
Note: Some crashes can lead to a client system eventually halting. In these cases, the time to store a crash report on the client system may be limited. To maximize obtaining crash information, you should consider the tradeoffs between the amount of information to include in a custom crash report versus a potentially narrow window of time to store the information on the client system.
The following crash reporting classes are included in the SDK C++ framework.
AbstractCrashReport
AbstractCrashReport is an abstract class with pure virtual methods that are designed to populate data existing within the class. Since the system may be at an unstable state, allocation of data on the stack is to be avoided, if possible. These methods will be called by the underlying framework to collect data to be submitted in crash reports. By implementing a subclass of AbstractCrashReport, you can gain control of every field that will be returned during the crash reporting process. However, you are also required to implement every field.
DefaultCrashReport
The DefaultCrashReport class is a reference implementation of the AbstractCrashReport class and is installed by default. This default implementation performs best-effort collection of data that should be appropriate and accurate in most cases. However, you may subclass DefaultCrashReport to customize one or more fields.
AbstractCrashReport Details
AbstractCrashReport is the base class from which all crash reports are derived. You may inherit from AbstractCrashReport as long as you implement every method in the class. (Alternatively, you can extend the DefaultCrashReport class if you only want to override some of these methods.) The C ADP_ReportCrash is developed against the following signature:
ADP_RET_CODE ADP_ReportCrash(
const wchar_t *Module,
unsigned long LineNumber,
const wchar_t *Message,
const wchar_t *Category,
const wchar_t *ErrorData,
unsigned long ErrorDataSize,
ADP_CrashReportField *CustomFields,
unsigned long CustomFieldNumber
};
The arguments below have been declared in AbstractCrashReport as member variables with the following names:
wchar_t module[80];
wchar_t message[80];
wchar_t category[80];
wchar_t errorData[4000];
long lineNumber;
ADP_CrashReportField* pCrashReportFields;
long crashReportFieldCount;
If you wish to provide customized unhandled crash reporting, you need to override the pure abstract methods in AbstractCrashReport, populating these variables. (These variables, in turn, are used in the call to the C ADP_ReportCrash.)
The AbstractCrashReport class offers the following virtual overrides
virtual void PopulateModuleName()This method is provided to populate the AbstractCrashReport::module member variable.
virtual void PopulateLineNumber()This method is provided to populate the AbstractCrashReport::lineNumber member variable.
virtual void PopulateMessage()This method is provided to populate the AbstractCrashReport::message
member variable
virtual void PopulateCategory()This method is provided to populate the AbstractCrashReport::category member variable.
virtual void PopulateErrorData()This method is provided to populate the AbstractCrashReport::errorData member variable.
virtual void PopulateCrashReportFields()This method is provided to populate the AbstractCrashReport:: pCrashReportFields
and AbstractCrashReport::crashReportFieldCount member variables.
The arguments below have been declared in style="font-weight: bold;">AbstractCrashReport as member variables with the following names:
protected StringBuffer errorData = new StringBuffer();
protected String errorMessage = "";
protected String errorModule = "";
protected long errorLine = 0;
protected String errorCategory = "";
protected AdpCrashReportField[] crashReportFields = null;
DefaultCrashReport Details
The DefaultCrashReport class provides a reference implementation of the AbstractCrashReport class. This implementation leverages a class CallStack, which is provided for your use as an hpp file. In this configuration, all business logic is exposed as a header file, and all methods of the class are declared inline. CallStack attempts to traverse the callstack of the calling thread, compiling information on each stack frame into CallStackEntry structures, and storing each into an STL templated list container. See the Intel AppUp™ Software Development Kit Developer Guide for C++ for a custom report example based on DefaultCrashReport. The structure of a CallStackEntry is as follows:
struct CallStackEntry {
wstring fileName;
wstring moduleName;
wstring symbolName;
unsigned long lineNumber;
void* pAddress;
CallStackEntry();
wstring str();
};
Exceptions
The SDK library includes three pre-defined exception classes for errors and one pre-defined exception class for warnings to provide greater granularity in exception handling. These exception classes are as follows:
Error Exception Classes
- InitializationException – Catches error exceptions thrown while the SDK library application constructor attempts to initialize the SDK library code. This class is derived from AdpErrorException.
- UnauthorizedException– Catches error exceptions thrown while the SDK library code attempts to authorize the application. This class is derived from AdpErrorException.
- AdpRuntimeException – Catches general runtime error exceptions while executing SDK library code. This class is derived from AdpErrorException.
Warning Exception Class
- AdpWarningException – Catches warning exceptions while executing SDK library code.
Note that the AdpErrorException is the base class for the three Error Exception classes, as shown below. AdpErrorException and AdpWarningException are both derived from the same base class, AdpException.

The following subsections described these exception classes in detail.
InitializationException
Represents an error during the initialization of the application. The error code helps specify the cause of the initialization error exception. Once initialization completes, this exception will not occur.
UnauthorizedException
Represents a failure to cleanly authorize an application. The error code helps specify the cause of the authorization error exception. Once authorization completes, this exception will not occur.
AdpRuntimeException
Represents an underlying core library error. The error code helps specify the cause of the runtime error exception. This exception can occur at any point after authorization.
AdpWarningException
This is the exception class for situations that are important, but not considered an error. An example is encountering an EndEventcall with no prior BeginEvent call. The return code helps specify the cause of the warning exception.
Code Examples for Exceptions
The following example shows the C++ catch sequence following an Application Constructor call. This sequence includes catches for the error and exception classes. See the EndEvent call earlier for an example of a catch for the warning exception class.
com::intel::adp::Application *pBasicSampleApp = NULL;
try{
// NOTE: Most testing is done with the ADP_DEBUG_APPLICATIONID GUID, which
// is the Authorized Application ID. When validation/testing is completed,
// replace ADP_DEBUG_APPLICATIONID with Production Application ID
pBasicSampleApp = new Application(ADP_DEBUG_APPLICATIONID);
qDebug("Application Authorized to run.\n");
}
catch (com::intel::adp::InitializationException& e) {
/* Catches error exceptions thrown while the SDK application constructor
* attempts to initialize the SDK library code.
* It can also occur if a Component is
* instantiated before the Application object.
* Inherits the AdpErrorException Class
*/
qDebug("Caught Initialization exception in application with exception
code: %ld\n", e.code());
}
catch (com::intel::adp::UnauthorizedException& e) {
/*This exception is thrown if an application or component is not
* authorized or is expired. Exceptions thrown while the SDK library
* code attempts to authorize the application and is unauthorized.
* Inherits the AdpErrorException Class
*/
qDebug("Caught Unauthorized exception in application with exception
code: %ld\n", e.code());
}
catch (com::intel::adp::AdpRuntimeException& e) {
/* This exception is a catch all for all errors that are not covered
* by InitializationException or UnauthorizedException. Catches
* general runtime error exceptions while executing SDK library code.
* Inherits the AdpErrorException Class
*/
qDebug("Caught Runtime exception in application with exception code:
%ld\n", e.code());
}
Return/Error Codes
The following table is a comprehensive list of the return/error codes returned by SDK API calls to the calling routine, along with description of possible conditions that caused each code to be returned. Not every result code is returned for every API call. Refer to the information for a specific API call to see what codes may be returned for that call. (The information on a specific API call also may contain additional details on specific conditions that may cause a code to be returned for that call.)
Results codes can be obtained from any of the exception classes by using the code() function in the message declaration.
API Call Return/Error Codes
| Value | Meaning |
| ADP_SUCCESS | Operation was successful. |
| ADP_FAILURE | Operation was unsuccessful. |
| ADP_NOT_AVAILABLE | Operation failed because the SDK library was not available. This can occur if the Intel AppUp center software is not installed properly. |
| ADP_NOT_INITIALIZED | Operation failed because the SDK library is not initialized. Any API call made prior to initialization causes this code to be generated. |
| ADP_INCOMPATIBLE_VERSION | Operation failed because the API version of the application is not supported by the current Intel AppUp center software. |
| ADP_AUTHORIZED | The application is authorized to run. |
| ADP_NOT_AUTHORIZED | The application is not authorized to run. Applications can choose how to respond, such as preventing an application from running, allowing the application to run for a grace period so the user can obtain a license, allowing the application to run with limited functionality, etc. |
| ADP_AUTHORIZATION_EXPIRED | The application’s license has expired. Applications can choose how to respond, such as preventing an application from running, allowing the application to run for a grace period so the user can obtain a license, allowing the application to run with limited functionality, etc. |
| ADP_NO_APP_BEGIN_EVENT | Operation failed because an End Event has been attempted with no prior Begin Event. A Begin Event call must precede an End Event call in the application. |
| ADP_TIMEOUT | Operation failed because the connection between the SDK library and the Intel AppUp center software timed out. |
End User Error Messages
The SDK contains error message strings that can be retrieved by applications and displayed to end users. These messages are accessed via their unique Message ID. They do not map directly to the Return Codes.
End User Error Messages
| Message ID | Message Text |
| String_ADP_AUTHORIZATION_EXPIRED | The license for this application has expired. |
| String_ADP_BEGINEVENT_ERROMSG | The application experienced an error while starting a usage record. |
| String_ADP_ENDEVENT_ERRORMSG | The application experienced an error while ending a usage record. |
| String_ADP_FAILURE | The application experienced a critical error. |
| String_ADP_INCOMPATIBLE_VERSION | The current Intel AppUp center software does not support this version of the application. |
| String_ADP_NO_APP_BEGIN_EVENT | The application did not complete a start of usage record. |
| String_ADP_NOT_AUTHORIZED | The application is not authorized to run under this account on this device. |
| String_ADP_NOT_AVAILABLE | The application cannot connect to the Intel AppUp center. |
| String_ADP_NOT_INITIALIZED | The application did not initialize properly. |
| String_ADP_TIMEOUT | The Intel AppUp center response timed out. |
Revision History
| Document Number | Revision Number | Description | Revision Date |
| 324700 | 001 | Initial C++ framework document release to support SDK 0.8 Beta for MeeGo C/C++. | January 2011 |
Disclaimer and Legal Information
INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL(R) PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.
UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL PRODUCTS ARE NOT DESIGNED NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL PRODUCT COULD CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR.
Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. The information here is subject to change without notice. Do not finalize a design with this information.
The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request.
Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order.
Copies of documents which have an order number and are referenced in this document, or other Intel literature, may be obtained by calling 1-800-548-4725, or by visiting Intel's Web Site.
Intel processor numbers are not a measure of performance. Processor numbers differentiate features within each processor family, not across different processor families. See http://www.intel.com/products/processor_number for details.
For beta and pre-release product versions. This document contains information on products in the design phase of development.
BunnyPeople, Celeron, Celeron Inside, Centrino, Centrino Atom, Centrino Atom Inside, Centrino Inside, Centrino logo, Core Inside, FlashFile, i960, InstantIP, Intel, Intel logo, Intel386, Intel486, IntelDX2, IntelDX4, IntelSX2, Intel Atom, Intel Atom Inside, Intel Core, Intel Inside, Intel Inside logo, Intel. Leap ahead., Intel. Leap ahead. logo, Intel NetBurst, Intel NetMerge, Intel NetStructure, Intel SingleDriver, Intel SpeedStep, Intel StrataFlash, Intel Viiv, Intel vPro, Intel XScale, Itanium, Itanium Inside, MCS, MMX, Oplus, OverDrive, PDCharm, Pentium, Pentium Inside, skoool, Sound Mark, The Journey Inside, Viiv Inside, vPro Inside, VTune, Xeon, and Xeon Inside are trademarks of Intel Corporation in the U.S. and other countries.
*Other names and brands may be claimed as the property of others.
Copyright(C) 2011, Intel Corporation. All rights reserved.
Microsoft product screen shot(s) reprinted with permission from Microsoft Corporation.
Comments
Just realised that IADP_SDK_DIR_MEEGO is an environment variable and we didn't restart the system after installing AppUp SDK. After restarting we just added all those LIB lines to our .PRO file and it seems to be working now. Need to verify once again with Beta-Testing but looks like its working, so please ignore my previous comment. Thanks.
We see that our project is not statically linked with AppUp SDK for Meego. How do we statically link?
Article just says:
Verify that the Qt Creator project has statically linked the application to the SDK Library. The following lines must appear in the Qt Creator application project (.pro) files:
LIBS += -lxml2\
-lpthread
LIBS += “$$(IADP_SDK_DIR_MEEGO)Cpp\lib\libadpruntime.a”\
“$$(IADP_SDK_DIR_MEEGO)Cpp\lib\libadpcore.a”\
“$$(IADP_SDK_DIR_MEEGO)Cpp\lib\libxerces-c.a”\
“$$(IADP_SDK_DIR_MEEGO)Cpp\lib\libxml-security-c.a”\
“$$(IADP_SDK_DIR_MEEGO)Cpp\lib\libcrypto.a”
We don't see those LIBS file in our pro. Just including those lines does not work for us.
Its nowhere mentioned how we can link if project is not linked to SDK Library.