| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um/alljoyn_c/ |
Upload File : |
/**
* @file
* alljoyn_aboutdata is responsible for storing data for the org.alljoyn.About interface.
*/
/******************************************************************************
* Copyright AllSeen Alliance. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
******************************************************************************/
#ifndef _ALLJOYN_ABOUTDATA_C_H
#define _ALLJOYN_ABOUTDATA_C_H
#include <alljoyn_c/AjAPI.h>
#include <alljoyn_c/MsgArg.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* alljoyn_aboutdata is responsible for holding the org.alljoyn.about interface
* Data fields
*/
typedef struct _alljoyn_aboutdata_handle* alljoyn_aboutdata;
/**
* Allocate a new empty alljoyn_aboutdata object. The default language is not set.
* Set the language using either one of the following functions:
* - alljoyn_about_setdefaultlanguage
* - alljoyn_about_createfrommsgarg
* - alljoyn_about_createfromxml
*
* The default language should be specified before any tag that requires
* localization. These tags are the following:
* - DeviceName
* - AppName
* - Manufacturer
* - Description
*
* @return The allocated alljoyn_aboutdata.
*/
extern AJ_API alljoyn_aboutdata AJ_CALL alljoyn_aboutdata_create_empty();
/**
* Allocate a new alljoyn_aboutdata object setting the default language.
*
* @param defaultLanguage the default RFC 5646 language tag for the About data fields
*
* @return The allocated alljoyn_aboutdata.
*/
extern AJ_API alljoyn_aboutdata AJ_CALL alljoyn_aboutdata_create(const char* defaultLanguage);
/**
* Allocate a new alljoyn_aboutdata object filling in the fields of the About data
* using an alljoyn_msgarg. The provided alljoyn_msgarg must contain a dictionary
* with signature a{sv} with About data fields.
*
* If the passed in alljoyn_msgarg is an ill formed About data alljoyn_msgarg
* this call fails silently. If the alljoyn_msgarg does not come from an About
* Announce signal it is best to create an empty alljoyn_aboutdata object
* and use the alljoyn_about_createfrommsgarg function to fill in the About data.
*
* @param arg alljoyn_msgarg with signature a{sv}containing About data fields.
* @param language the language of the arg alljoyn_msgarg. Use NULL for default language
*
* @return The allocated alljoyn_aboutdata.
*/
extern AJ_API alljoyn_aboutdata AJ_CALL alljoyn_aboutdata_create_full(const alljoyn_msgarg arg,
const char* language);
/**
* Free an alljoyn_aboutdata object.
*
* @param data The alljoyn_aboutdata to be freed.
*/
extern AJ_API void AJ_CALL alljoyn_aboutdata_destroy(alljoyn_aboutdata data);
/**
* Initialize the About data held by the specified alljoyn_aboutdata object
* from a character string containing the XML representation of the About data
* specified as an \<About data\> element containing \<AppId\>, \<DeviceName\>, etc.
*
* The AllJoyn software version (AJSoftwareVersion) is automatically set to
* the version of Alljoyn that is being used. The SupportedLanguages tag is
* automatically implied from the DefaultLanguage tag and the lang annotation
* from tags that are localizable.
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] aboutDataXml a string that contains an XML representation of
* the About data fields.
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_createfromxml(alljoyn_aboutdata data,
const char* aboutDataXml);
/**
* Validate if the About data has all of the required fields. If a language
* field is given this will return if all required fields are listed for the
* given language. If no language is given default language will be checked.
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] language IETF language tag specified by RFC 5646
*
* @return true if all required field are listed for the given language
*/
extern AJ_API bool AJ_CALL alljoyn_aboutdata_isvalid(alljoyn_aboutdata data,
const char* language);
/**
* Fill in the About Data fields from the given alljoyn_msgarg. This alljoyn_msgarg
* must contain a dictionary of type a{sv} and is expected to be either obtained
* from an Announce signal or from the GetAboutData method of the org.alljoyn.about
* interface.
*
* @param data alljoyn_aboutdata object this call is made for
* @param arg alljoyn_msgarg contain About data dictionary
* @param language the language for the alljoyn_msgarg About data
* If NULL the default language is used
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_createfrommsgarg(alljoyn_aboutdata data,
const alljoyn_msgarg arg,
const char* language);
/**
* Set the AppId for the About data
*
* AppId (the appId argument) must be a 128-bit UUID as specified by RFC 4122
*
* AppId IS required
* AppId IS part of the Announce signal
* AppId CAN NOT be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] appId the a globally unique array of bytes used as an Id for the application
* @param[in] num the number of bytes in the appId array
*
* @return
* - ER_OK on success
* - #ER_ABOUT_INVALID_ABOUTDATA_FIELD_VALUE if appId is not 128-bits (16 bytes) in size
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_setappid(alljoyn_aboutdata data,
const uint8_t* appId,
const size_t num);
/**
* Set the AppId for the About data using a character string.
*
* The string must be a ether a 32-character hex digit string
* (for example "4a354637564945188a48323c158bc02d") or a UUID string as
* specified in RFC 4122 (for example: "4a354637-5649-4518-8a48-323c158bc02d").
* The AppId contained by this string must be a 128-bit UUID as specified by RFC 4122.
*
* AppId IS required
* AppId IS part of the Announce signal
* AppId CAN NOT be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] appId the a globally unique string of characters used as an Id for the application
*
* @return
* - #ER_OK on success
* - #ER_ABOUT_INVALID_ABOUTDATA_FIELD_VALUE if the AppId is not a 128-bits (16 bytes) in size
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_setappid_fromstring(alljoyn_aboutdata data,
const char* appId);
/**
* Get the AppId from the About data
*
* AppId IS required
* AppId IS part of the Announce signal
* AppId CAN NOT be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[out] appId a pointer to an array of bytes used as a globally unique ID for an application
* @param[out] num the size of the appId array
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_getappid(alljoyn_aboutdata data,
uint8_t** appId,
size_t* num);
/**
* The given language is automatically added to the SupportedLanguage list.
* The language tag should be an IETF language tag specified by RFC 5646.
*
* DefaultLanguage is Required
* DefaultLanguage is part of the Announce signal
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] defaultLanguage the IETF language tag
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_setdefaultlanguage(alljoyn_aboutdata data,
const char* defaultLanguage);
/**
* Get the DefaultLanguage from the About data
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[out] defaultLanguage a pointer to the default language tag
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_getdefaultlanguage(alljoyn_aboutdata data,
char** defaultLanguage);
/**
* Set the DeviceName to the About data
*
* DeviceName is not required
* DeviceName is part of the Announce signal
* DeviceName can be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] deviceName the deviceName (alljoyn_aboutdata data, UTF-8 encoded string)
* @param[in] language the IETF language tag specified by RFC 5646
* If language is NULL the DeviceName will be set for the default language
*
* @return
* - #ER_OK on success
* - #ER_ABOUT_DEFAULT_LANGUAGE_NOT_SPECIFIED if language tag was not specified
* and the default language is also
* not found.
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_setdevicename(alljoyn_aboutdata data,
const char* deviceName,
const char* language);
/**
* Get the DeviceName from the About data
*
* DeviceName is not required
* DeviceName is part of the Announce signal
* DeviceName can be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[out] deviceName the deviceName found in the About data (alljoyn_aboutdata data, UTF-8 encoded string)
* @param[in] language the IETF language tag specified by RFC 5646
* If language is NULL the DeviceName for the default language will be returned
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_getdevicename(alljoyn_aboutdata data,
char** deviceName,
const char* language);
/**
* Set the DeviceId from the About data
*
* DeviceId IS required
* DeviceId IS part of the announce signal
* DeviceId CAN NOT be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] deviceId is a string with a value generated using platform specific means
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_setdeviceid(alljoyn_aboutdata data,
const char* deviceId);
/**
* Get the DeviceId from the About data
*
* DeviceId IS required
* DeviceId IS part of the announce signal
* DeviceId CAN NOT be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[out] deviceId UTF-8 string with a value generated using platform specific means
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_getdeviceid(alljoyn_aboutdata data,
char** deviceId);
/**
* Set the AppName to the About data
*
* AppName is required
* AppName is part of the announce signal
* AppName can be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] appName the AppName (alljoyn_aboutdata data, UTF-8 encoded string)
* @param[in] language the IETF language tag specified by RFC 5646
* If language is NULL the AppName will be set for the default language.
*
* @return
* - #ER_OK on success
* - #ER_ABOUT_DEFAULT_LANGUAGE_NOT_SPECIFIED if language tag was not specified
* and the default language is also
* not found.
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_setappname(alljoyn_aboutdata data,
const char* appName,
const char* language);
/**
* Get the AppName from the About data
*
* AppName is required
* AppName is part of the announce signal
* AppName can be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[out] appName the AppName found in the About data (alljoyn_aboutdata data, UTF-8 encoded string)
* @param[in] language the IETF language tag specified by RFC 5646
* If language is NULL the AppName for the default language will be returned.
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_getappname(alljoyn_aboutdata data,
char** appName,
const char* language);
/**
* Set the Manufacturer to the About data
*
* Manufacturer is required
* Manufacturer is part of the announce signal
* Manufacturer can be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] manufacturer the Manufacturer (alljoyn_aboutdata data, UTF-8 encoded string)
* @param[in] language the IETF language tag specified by RFC 5646
* If language is NULL the Manufacture will be set for the default language.
*
* @return
* - #ER_OK on success
* - #ER_ABOUT_DEFAULT_LANGUAGE_NOT_SPECIFIED if language tag was not specified
* and the default language is also
* not found.
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_setmanufacturer(alljoyn_aboutdata data,
const char* manufacturer,
const char* language);
/**
* Get the Manufacturer from the About data
*
* Manufacturer is required
* Manufacturer is part of the announce signal
* Manufacturer can be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[out] manufacturer the Manufacturer found in the About data (alljoyn_aboutdata data, UTF-8 encoded string)
* @param[in] language the IETF language tag specified by RFC 5646
* If language is NULL the Manufacturer for the default language will be returned.
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_getmanufacturer(alljoyn_aboutdata data,
char** manufacturer,
const char* language);
/**
* Set the ModelNumber to the About data
*
* ModelNumber is required
* ModelNumber is part of the announce signal
* ModelNumber can not be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] modelNumber the application model number
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_setmodelnumber(alljoyn_aboutdata data,
const char* modelNumber);
/**
* Get the ModelNumber from the About data
*
* ModelNumber IS required
* ModelNumber IS part of the announce signal
* ModelNumber CAN NOT be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[out] modelNumber the application model number
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_getmodelnumber(alljoyn_aboutdata data,
char** modelNumber);
/**
* Set a supported language.
*
* This is a string representing the a single language. The language is
* specified using IETF language tags specified by the RFC 5646.
*
* If the language tag has already been added ER_OK will be returned with no
* additional changes being made.
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] language the IETF language tag
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_setsupportedlanguage(alljoyn_aboutdata data,
const char* language);
/**
* Get an array of supported languages
*
* @param data alljoyn_aboutdata object this call is made for
* @param languageTags a pointer to a languageTags array to receive the
* language tags. Can be NULL in which case no
* language tags are returned and the return value gives
* the number of language tags available.
* @param num the size of the languageTags array.
*
* @return The number of languageTags returned or the total number of
* language tags if languageTags is NULL.
*/
extern AJ_API size_t AJ_CALL alljoyn_aboutdata_getsupportedlanguages(alljoyn_aboutdata data,
const char** languageTags,
size_t num);
/**
* Set the Description to the About data
*
* Description IS required
* Description IS NOT part of the announce signal
* Description CAN BE localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] description the Description (alljoyn_aboutdata data, UTF-8 encoded string)
* @param[in] language the IETF language tag specified by RFC 5646
* If language is NULL the Description will be set for the default language.
*
* @return
* - #ER_OK on success
* - #ER_ABOUT_DEFAULT_LANGUAGE_NOT_SPECIFIED if language tag was not specified and
* the default language is also not found.
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_setdescription(alljoyn_aboutdata data,
const char* description,
const char* language);
/**
* Get the Description from the About data
*
* Description IS required
* Description IS NOT part of the announce signal
* Description CAN BE localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[out] description the Description found in the About data (alljoyn_aboutdata data, UTF-8 encoded string)
* @param[in] language the IETF language tag specified by RFC 5646
* If language is NULL the Description for the default language will be returned.
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_getdescription(alljoyn_aboutdata data,
char** description,
const char* language);
/**
* Set the DateOfManufacture to the About data
*
* The date of manufacture using the format YYYY-MM-DD. Known as XML
* DateTime format.
*
* DateOfManufacture IS NOT required
* DateOfManufacture IS NOT part of the announce signal
* DateOfManufacture CAN NOT be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] dateOfManufacture the date of manufacture using YYYY-MM-DD format
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_setdateofmanufacture(alljoyn_aboutdata data,
const char* dateOfManufacture);
/**
* Get the DateOfManufacture from the About data
*
* The date of manufacture using the format YYYY-MM-DD. Known as XML
* DateTime format.
*
* DateOfManufacture IS NOT required
* DateOfManufacture IS NOT part of the announce signal
* DateOfManufacture CAN NOT be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[out] dateOfManufacture the date of manufacture using YYYY-MM-DD format
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_getdateofmanufacture(alljoyn_aboutdata data,
char** dateOfManufacture);
/**
* Set the SoftwareVersion to the About data
*
* SoftwareVersion IS required
* SoftwareVersion IS NOT part of the announce signal
* SoftwareVersion CAN NOT be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] softwareVersion the software version for the OEM software
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_setsoftwareversion(alljoyn_aboutdata data,
const char* softwareVersion);
/**
* Get the SoftwareVersion from the About data
*
* SoftwareVersion IS required
* SoftwareVersion IS NOT part of the announce signal
* SoftwareVersion CAN NOT be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[out] softwareVersion the software version for the OEM software
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_getsoftwareversion(alljoyn_aboutdata data,
char** softwareVersion);
/**
* Get the AJSoftwareVersion from the About data
*
* The AJSoftwareVersion is automatically set when the About data is created
* or when it is read from remote device.
*
* AJSoftwareVersion IS required
* AJSoftwareVersion IS NOT part of the announce signal
* AJSoftwareVersion CAN NOT be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[out] ajSoftwareVersion the current version of AllJoyn SDK utilized
* by the application
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_getajsoftwareversion(alljoyn_aboutdata data,
char** ajSoftwareVersion);
/**
* Set the HardwareVersion to the About data
*
* HardwareVersion IS NOT required
* HardwareVersion IS NOT part of the announce signal
* HardwareVersion CAN NOT be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] hardwareVersion the device hardware version
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_sethardwareversion(alljoyn_aboutdata data,
const char* hardwareVersion);
/**
* Get the HardwareVersion from the About data
*
* HardwareVersion IS NOT required
* HardwareVersion IS NOT part of the announce signal
* HardwareVersion CAN NOT be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[out] hardwareVersion the device hardware version
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_gethardwareversion(alljoyn_aboutdata data,
char** hardwareVersion);
/**
* Set the SupportUrl to the About data
*
* SupportUrl IS NOT required
* SupportUrl IS NOT part of the announce signal
* SupportUrl CAN NOT be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] supportUrl the support URL to be populated by OEM
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_setsupporturl(alljoyn_aboutdata data,
const char* supportUrl);
/**
* Get the SupportUrl from the About data
*
* SupportUrl IS NOT required
* SupportUrl IS NOT part of the announce signal
* SupportUrl CAN NOT be localized for other languages
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[out] supportUrl the support URL
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_getsupporturl(alljoyn_aboutdata data,
char** supportUrl);
/**
* Generic way to set a new field. Everything could be done this way.
*
* Unless the generic field is one of the pre-defined fields when they are
* set they will have the following specifications
* NOT required
* NOT part of the announce signal
* CAN be localized
*
* Since every field can be localized even if the field is not localized it
* must be set for every language.
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] name the name of the field to set
* @param[in] value a alljoyn_msgarg that contains the value that is set for the field
* @param[in] language the IETF language tag specified by RFC 5646
* if language is NULL the default language will be used. Only
* used for fields that are marked as localizable.
*
* @return
* - #ER_OK on success
* - #ER_ABOUT_DEFAULT_LANGUAGE_NOT_SPECIFIED if language tag was not specified
* and the default language is also
* not found.
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_setfield(alljoyn_aboutdata data,
const char* name,
alljoyn_msgarg value,
const char* language);
/**
* Generic way to get a field.
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] name the name of the field to get
* @param[out] value alljoyn_msgarg holding a variant value that represents the field
* @param[in] language the IETF language tag specified by RFC 5646
* If language is NULL the field for the default language will be returned.
*
* @return ER_OK on success
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_getfield(alljoyn_aboutdata data,
const char* name,
alljoyn_msgarg* value,
const char* language);
/**
* Get a list of the fields contained in this alljoyn_aboutdata object.
* This is required if the About data comes from a remote source. User defined fields
* are permitted. Use the GetFields method to get a list of all fields
* currently found known by the alljoyn_aboutdata.
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[out] fields an array of const char* that will contain all the strings
* @param[in] num_fields the size of the array
*
* @return
* The number of fields returned or the total number of fields if the fields parameter is NULL
*/
extern AJ_API size_t AJ_CALL alljoyn_aboutdata_getfields(alljoyn_aboutdata data,
const char** fields,
size_t num_fields);
/**
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[out] msgArg the dictionary containing all of the About data fields for
* the specified language. If language is not specified the default
* language will be returned
* @param[in] language IETF language tag specified by RFC 5646 if the string
* is NULL or an empty string for the default language
*
* @return
* - ER_OK on success
* - ER_LANGUAGE_NOT_SUPPORTED if language is not supported
* - ER_ABOUT_ABOUTDATA_MISSING_REQUIRED_FIELD if a required field is missing
* - other error indicating failure
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_getaboutdata(alljoyn_aboutdata data,
alljoyn_msgarg msgArg,
const char* language);
/**
* Return a alljoyn_msgarg pointer containing dictionary containing the About data that
* is announced with the org.alljoyn.About.announce signal.
* This will always be the default language and will only contain the fields
* that are announced.
*
* The fields that will be part of the announced alljoyn_msgarg are:
* - AppId
* - DefaultLanguage
* - DeviceName
* - DeviceId
* - AppName
* - Manufacture
* - ModelNumber
*
* If you require other fields or need the localized About data the
* org.alljoyn.About.GetAboutData method can be used.
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[out] msgArg a alljoyn_msgarg dictionary with the a{sv} that contains the Announce
* data.
* @return ER_OK if successful
*/
extern AJ_API QStatus AJ_CALL alljoyn_aboutdata_getannouncedaboutdata(alljoyn_aboutdata data,
alljoyn_msgarg msgArg);
/**
* Is the given field name required to make an About announcement
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] fieldName the name of the field
*
* @return
* - true if the field is required to make an About announcement
* - false otherwise. If the fieldName is unknown false will be returned
*/
extern AJ_API bool AJ_CALL alljoyn_aboutdata_isfieldrequired(alljoyn_aboutdata data,
const char* fieldName);
/**
* Is the given field part of the announce signal
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] fieldName the name of the field
*
* @return
* - true if the field is part of the announce signal
* - false otherwise. If the fieldName is unknown false will be returned
*/
extern AJ_API bool AJ_CALL alljoyn_aboutdata_isfieldannounced(alljoyn_aboutdata data,
const char* fieldName);
/**
* Is the given field a localized field.
*
* Localized fields should be provided for every supported language
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] fieldName the name of the field
*
* @return
* - true if the field is a localizable value
* - false otherwise. If the fieldName is unknown false will be returned.
*/
extern AJ_API bool AJ_CALL alljoyn_aboutdata_isfieldlocalized(alljoyn_aboutdata data,
const char* fieldName);
/**
* Get the signature for the given field.
*
* @param[in] data alljoyn_aboutdata object this call is made for
* @param[in] fieldName the name of the field
*
* @return
* - the signature of the field
* - NULL is field is unknown
*/
extern AJ_API const char* AJ_CALL alljoyn_aboutdata_getfieldsignature(alljoyn_aboutdata data,
const char* fieldName);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif