Merge "Merge branch '1.3-rel' (1484a56)"
authorC.J. Collier <cjcollier@linuxfoundation.org>
Fri, 26 Jan 2018 20:01:00 +0000 (20:01 +0000)
committerC.J. Collier <cjcollier@linuxfoundation.org>
Fri, 26 Jan 2018 20:01:00 +0000 (20:01 +0000)
23 files changed:
build_common/SConscript
build_common/windows/SConscript
resource/IPCA/samples/ElevatorClientUWP/ElevatorClientUWP.vcxproj
resource/csdk/security/provisioning/include/cloud/utils.h
resource/csdk/security/provisioning/sample/cloud/cloudAuth.c
resource/csdk/security/provisioning/sample/cloud/cloudCommon.c
resource/csdk/security/provisioning/sample/cloud/cloudCommon.h
resource/csdk/security/provisioning/sample/cloud/cloudDiscovery.c
resource/csdk/security/provisioning/sample/cloud/cloudDiscovery.h
resource/csdk/security/provisioning/sample/cloud/cloudWrapper.c
resource/csdk/security/provisioning/sample/provisioningclient.c
resource/csdk/security/provisioning/src/cloud/utils.c
service/easy-setup/enrollee/inc/easysetup.h
service/easy-setup/enrollee/src/easysetup.c
service/easy-setup/enrollee/src/resourcehandler.c
service/easy-setup/enrollee/src/resourcehandler.h
service/easy-setup/sampleapp/enrollee/linux/enrolleewifi.c
service/easy-setup/sampleapp/enrollee/tizen-sdb/EnrolleeSample/enrolleewifi.cpp
service/easy-setup/sampleapp/mediator/linux/richsdk_sample/mediator.cpp
service/easy-setup/sampleapp/mediator/linux/richsdk_sample/submediator.cpp
service/notification/examples/linux/cloud_connector.h
service/notification/include/NSProviderInterface.h
service/notification/src/provider/NSProviderInterface.c

index 4e26164..813d090 100644 (file)
@@ -236,14 +236,13 @@ if target_os == 'windows':
     # Builds differ based on Visual Studio version
     #   For VS2013, MSVC_VERSION is '12.0'.
     #   For VS2015, MSVC_VERSION is '14.0'.
-    #   For VS2017, MSVC_VERSION is '15.0'.
+    #   For VS2017, MSVC_VERSION is '14.1'.
     # Default value is None, which means SCons will pick
     help_vars.Add(
         EnumVariable('MSVC_VERSION',
                      'MSVC compiler version - Windows',
                      default=None,
-                     allowed_values=('12.0', '14.0')))
-                     #TODO allowed_values=('12.0', '14.0', '15.0')))
+                     allowed_values=('12.0', '14.0', '14.1')))
     help_vars.Add(
         EnumVariable('MSVC_UWP_APP',
                      'Build a Universal Windows Platform (UWP) Application',
index fbd8b8d..a6613b8 100644 (file)
@@ -5,9 +5,22 @@ Import('env')
 import os
 import winreg
 import platform
+import sys
+from SCons.Tool.MSCommon.vc import find_vc_pdir
 
 build_dir = env.get('BUILD_DIR')
 
+_SUPPORTED_UWP_MSVC_VERS = [
+    '14.1', # VS2017
+    '14.0'  # VS2015
+]
+# Note: Not a complete list, just the ones that IoTivity supports
+_VCVER_TO_VSVER = {
+    '14.1' : '15.0', # VS2017
+    '14.0' : '14.0', # VS2015
+    '12.0' : '12.0'  # VS2013
+}
+
 def OpenRegKey(env, key, sub_key, reg_view_64bit=False):
     # Default access
     reg_access_mask = winreg.KEY_READ
@@ -52,17 +65,32 @@ def ReadRegistryStringValue(env, key, sub_key, value_name, reg_view_64bit=False)
     return value
 
 def SetupMSBuildEnv(env):
-    # Add MSBuild path to path
-    msbuild_reg_path = 'SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\' + env.get('MSVC_VERSION')
-    # MSBuild executable arch needs to be the same as the python/SCons environment Arch.
-    # Open the Registry key with the same registry view as the environment (handled by the
-    # winreg.OpenKey function)
-    msbuild_path = env.ReadRegistryStringValue(winreg.HKEY_LOCAL_MACHINE,
-                                               msbuild_reg_path,
-                                               'MSBuildToolsPath')
+    msbuild_path = None
+    msvc_version = env.get('MSVC_VERSION')
+    if msvc_version == '14.1':
+        # VS2017
+        vs_ver = _VCVER_TO_VSVER[msvc_version]
+        vc_dir = find_vc_pdir(msvc_version)
+        msbuild_path = os.path.join(vc_dir, '..', 'MSBuild', vs_ver, 'Bin')
+        # Find python's arch
+        (bits, linkage) = platform.architecture()
+        if '64' in bits:
+            # Running in 64bit python. That means we can run the 64bit msbuild.exe
+            msbuild_path = os.path.join(msbuild_path, 'amd64')
+    else:
+        # VS2015 and below
+        msbuild_reg_path = 'SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\' + msvc_version
+        # MSBuild executable arch needs to be the same as the python/SCons environment Arch.
+        # Open the Registry key with the same registry view as the environment (handled by the
+        # winreg.OpenKey function)
+        msbuild_path = env.ReadRegistryStringValue(winreg.HKEY_LOCAL_MACHINE,
+                                                   msbuild_reg_path,
+                                                   'MSBuildToolsPath')
+
     if not msbuild_path:
         Exit('Error: Could not Find the MSBuild Registry Key/Value')
 
+    # Add MSBuild path to path
     env.AppendUnique(PATH = [msbuild_path])
     # Need to update the 'ENV' dictionary PATH as that's what is used when executing
     # commands
@@ -89,17 +117,22 @@ def GetMSBuildArgs(env):
 def MSBuildGenerator(source, target, env, for_signature):
     env.SetupMSBuildEnv()
     (configuration, platform, outdir) = env.GetMSBuildArgs()
+    vs_ver = _VCVER_TO_VSVER[env.get('MSVC_VERSION')]
 
     msbuild_cmd = 'msbuild.exe %s /p:Configuration=%s /p:Platform=%s /p:OutDir="%s"' \
                   % (source[0], configuration, platform, outdir)
+    msbuild_cmd += ' /p:VisualStudioVersion=%s /fileLogger /fileloggerparameters:LogFile="%s"' \
+                   % (vs_ver, os.path.join(outdir, source[0].name + '.log'))
     return msbuild_cmd
 
 def MSBuildClean(env, target, solutionfile):
     env.SetupMSBuildEnv()
     (configuration, platform, outdir) = env.GetMSBuildArgs()
+    vs_ver = _VCVER_TO_VSVER[env.get('MSVC_VERSION')]
 
-    msbuild_cmd = 'msbuild.exe %s /p:Configuration=%s /p:Platform=%s /p:OutDir="%s" /t:Clean' \
+    msbuild_cmd = 'msbuild.exe %s /p:Configuration=%s /p:Platform=%s /p:OutDir="%s"' \
                   % (solutionfile, configuration, platform, outdir)
+    msbuild_cmd += ' /p:VisualStudioVersion=%s /t:Clean' % (vs_ver)
     env.Execute(msbuild_cmd)
 
 if env.get('MSVC_UWP_APP') == '1':
@@ -121,11 +154,8 @@ if env.get('MSVC_UWP_APP') == '1':
 # Set common flags
 if env['CC'] == 'cl':
     if env.get('MSVC_UWP_APP') == '1':
-        # Currently only supports VS2015 (14.0)
-        # TODO add VS2017 (15.0)
-        supported_uwp_msvc_versions = ['14.0']
         # If MSVC_VERSION is not supported for UWP, exit on error
-        if env.get('MSVC_VERSION') not in supported_uwp_msvc_versions:
+        if env.get('MSVC_VERSION') not in _SUPPORTED_UWP_MSVC_VERS:
             msg = '\nError: Trying to Build UWP binaries with unsupported Visual Studio version\n'
             Exit(msg)
 
index a4a3b43..9d5ba49 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <PropertyGroup Label="Globals">\r
     <ProjectGuid>{d30ae502-76ee-4061-87a3-c7142283d03e}</ProjectGuid>\r
     <RootNamespace>ElevatorClientUWP</RootNamespace>\r
@@ -7,7 +7,11 @@
     <MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>\r
     <AppContainerApplication>true</AppContainerApplication>\r
     <ApplicationType>Windows Store</ApplicationType>\r
-    <WindowsTargetPlatformVersion>10.0.14393.0</WindowsTargetPlatformVersion>\r
+    <!-- Use the SDK that is installed on the Jenkins builds -->\r
+    <!-- For Visual Studio 2015, use SDK 10.0.14393 -->\r
+    <WindowsTargetPlatformVersion Condition="'$(VisualStudioVersion)'=='14.0'">10.0.14393.0</WindowsTargetPlatformVersion>\r
+    <!-- For Visual Studio 2017, use SDK 10.0.15063 -->\r
+    <WindowsTargetPlatformVersion Condition="'$(VisualStudioVersion)'=='15.0'">10.0.15063.0</WindowsTargetPlatformVersion>\r
     <WindowsTargetPlatformMinVersion>10.0.10586.0</WindowsTargetPlatformMinVersion>\r
     <ApplicationTypeRevision>10.0</ApplicationTypeRevision>\r
     <PackageCertificateThumbprint>1D05309EEC0622608A78ABCCA0E20C7528C4C79E</PackageCertificateThumbprint>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseDebugLibraries>true</UseDebugLibraries>\r
-    <PlatformToolset>v140</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseDebugLibraries>true</UseDebugLibraries>\r
-    <PlatformToolset>v140</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseDebugLibraries>true</UseDebugLibraries>\r
-    <PlatformToolset>v140</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseDebugLibraries>false</UseDebugLibraries>\r
     <WholeProgramOptimization>true</WholeProgramOptimization>\r
-    <PlatformToolset>v140</PlatformToolset>\r
     <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseDebugLibraries>false</UseDebugLibraries>\r
     <WholeProgramOptimization>true</WholeProgramOptimization>\r
-    <PlatformToolset>v140</PlatformToolset>\r
     <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseDebugLibraries>false</UseDebugLibraries>\r
     <WholeProgramOptimization>true</WholeProgramOptimization>\r
-    <PlatformToolset>v140</PlatformToolset>\r
     <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
index eb521b0..63c2216 100644 (file)
@@ -55,7 +55,7 @@ void fillCallbackData(OCCallbackData *cbData, void *ctx, OCCloudResponseCB cb,
  *
  * @return  device id
  */
-char *getDeviceId();
+char *getDeviceId(void);
 
 /**
  * Clear previously filled array of strings
index 1f9e691..77deed2 100644 (file)
@@ -62,7 +62,7 @@ static sessionObject_t sessionObject = {NULL, NULL, NULL, 0, NULL, NULL, NULL, N
  *
  * @return  OCStackResult application result
  */
-static void SessionFree()
+static void SessionFree(void)
 {
     OICFree(sessionObject.accesstoken);
     OICFree(sessionObject.refreshtoken);
index 07a7aa3..bc10f49 100644 (file)
@@ -407,7 +407,7 @@ static OCStackResult configSelfOwnership(void)
     return res;
 }
 
-static void wrongRequest()
+static void wrongRequest(void)
 {
     printf(">> Entered Wrong Menu Number. Please Enter Again\n\n");
 }
@@ -685,7 +685,7 @@ bool parseCommandLineArguments(int argc, char *argv[])
     return result;
 }
 
-OCStackResult initPersistentStorage()
+OCStackResult initPersistentStorage(void)
 {
     //Initialize Persistent Storage for SVR database
     static OCPersistentStorage ps = {server_fopen, fread, fwrite, fclose, unlink};
@@ -711,7 +711,7 @@ OCStackResult initProcess(OCMode mode)
     return OCInit(NULL, 0, mode);
 }
 
-void startProcess()
+void startProcess(void)
 {
     while(false == fExit)
     {
@@ -728,7 +728,7 @@ void startProcess()
     }
 }
 
-void freeThreadResources()
+void freeThreadResources(void)
 {
     if (g_requestsThread)
     {
index 928943d..342d269 100644 (file)
@@ -38,7 +38,7 @@ bool parseCommandLineArguments(int argc, char *argv[]);
  *
  * @return  OCStackResult application result
  */
-OCStackResult initPersistentStorage();
+OCStackResult initPersistentStorage(void);
 
 /**
  * Used to display Main Menu and send requests
@@ -59,12 +59,12 @@ OCStackResult initProcess(OCMode mode);
 /**
  * This function starts main process which responds to any requests
  */
-void startProcess();
+void startProcess(void);
 
 /**
  * This function frees thread pool data
  */
-void freeThreadResources();
+void freeThreadResources(void);
 
 /**
  * Used to sync with Main Menu
index ef24622..471b586 100644 (file)
@@ -41,7 +41,7 @@ bool withTcp = true;
 /**
  * This function clears internal data
  */
-static void clearData()
+static void clearData(void)
 {
     memset(&endPoint, 0, sizeof(endPoint));
     memset(gUri, 0, sizeof(gUri));
@@ -211,7 +211,7 @@ static OCStackApplicationResult handleResponse(void *ctx, OCDoHandle handle,
     return OC_STACK_DELETE_TRANSACTION;
 }
 
-OCStackResult InitDiscovery()
+OCStackResult InitDiscovery(void)
 {
     clearData();
 
index e9ad6d4..afd5ad9 100644 (file)
@@ -25,7 +25,7 @@
  *
  * @param[in] secure   secure flag
  */
-OCStackResult InitDiscovery();
+OCStackResult InitDiscovery(void);
 
 /**
  * This function sends GET/PUT/POST request to peer
index 7257153..ab079be 100644 (file)
@@ -53,7 +53,7 @@
 /**
  * Skip special characters from stdin
  * */
-static void skipSpecialCharacters()
+static void skipSpecialCharacters(void)
 {
     for( ; 0x20<=getchar(); );  // for removing overflow garbages
                                 // '0x20<=code' is character region
index bd801ce..3a99252 100644 (file)
@@ -2604,7 +2604,7 @@ static void setDevProtocol(OCProvisionDev_t* lst)
     }
 }
 
-static void selectSecureProtocol()
+static void selectSecureProtocol(void)
 {
     printf("   Select protocol\n");
     printf("   1 - DTLS(Default)\n");
index e10ee8f..daccfda 100644 (file)
@@ -125,7 +125,7 @@ void fillCallbackData(OCCallbackData *cbData, void *ctx, OCCloudResponseCB cb,
     cbData->context = info;
 }
 
-char * getDeviceId()
+char * getDeviceId(void)
 {
     char *deviceId = NULL;
     OicUuid_t uuid;
index b87d15c..ae340ef 100644 (file)
@@ -104,7 +104,7 @@ ESResult ESSetErrorCode(ESErrorCode esErrCode);
  *
  * @return ::ES_OK on success, some other value upon failure.
  */
-ESResult ESTerminateEnrollee();
+ESResult ESTerminateEnrollee(void);
 
 /**
  * This function is to set two function pointer to handle user-specific properties in in-comming
index 0e63140..789ae5b 100644 (file)
@@ -268,7 +268,7 @@ ESResult ESSetErrorCode(ESErrorCode esErrCode)
 #pragma GCC diagnostic pop
 #endif
 
-ESResult ESTerminateEnrollee()
+ESResult ESTerminateEnrollee(void)
 {
     OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESTerminateEnrollee IN");
 
index dd9495d..2079ec6 100644 (file)
@@ -171,7 +171,7 @@ void RegisterConnectRequestEventCallBack(ESConnectRequestCB cb)
     gConnectRequestEvtCb = cb;
 }
 
-void UnRegisterResourceEventCallBack()
+void UnRegisterResourceEventCallBack(void)
 {
     if (gWifiConfRsrcEvtCb)
     {
@@ -1526,7 +1526,7 @@ OCStackResult CreateEasySetupResources(bool isSecured, ESResourceMask resourceMa
     return res;
 }
 
-OCStackResult DeleteEasySetupResources()
+OCStackResult DeleteEasySetupResources(void)
 {
     OCStackResult res = OC_STACK_ERROR;
     if (g_ESWiFiConfResource.handle != NULL)
index 4ac7fff..24728f8 100644 (file)
@@ -96,7 +96,7 @@ extern CoapCloudConfResource g_ESCoapCloudConfResource;
 extern DevConfResource g_ESDevConfResource;
 
 OCStackResult CreateEasySetupResources(bool isSecured, ESResourceMask resourceMask);
-OCStackResult DeleteEasySetupResources();
+OCStackResult DeleteEasySetupResources(void);
 
 OCStackResult SetDeviceProperty(ESDeviceProperty *deviceProperty);
 OCStackResult SetEnrolleeState(ESEnrolleeState esState);
index 20fc972..70e8c95 100644 (file)
@@ -55,7 +55,7 @@ static bool gIsSecured = false;
 
 UserProperties g_userProperties;
 
-void PrintMenu()
+void PrintMenu(void)
 {
     printf("============\n");
     printf("S: Enabled Security\n");
@@ -159,7 +159,7 @@ FILE* server_fopen(const char *path, const char *mode)
     }
 }
 
-void EnableSecurity()
+void EnableSecurity(void)
 {
     printf("Inside EnableSecurity API..\n");
 
@@ -170,7 +170,7 @@ void EnableSecurity()
     OCRegisterPersistentStorageHandler(&ps);
 }
 
-void StartEasySetup()
+void StartEasySetup(void)
 {
     printf("StartEasySetup IN\n");
 
@@ -196,7 +196,7 @@ void StartEasySetup()
     printf("StartEasySetup OUT\n");
 }
 
-void SetDeviceInfo()
+void SetDeviceInfo(void)
 {
     printf("SetDeviceInfo IN\n");
 
@@ -226,7 +226,7 @@ void SetDeviceInfo()
     printf("SetDeviceInfo OUT\n");
 }
 
-void StopEasySetup()
+void StopEasySetup(void)
 {
     printf("StopEasySetup IN\n");
 
@@ -252,12 +252,12 @@ void StopEasySetup()
     printf("StopEasySetup OUT\n");
 }
 
-void SetCallbackForUserdata()
+void SetCallbackForUserdata(void)
 {
     ESSetCallbackForUserdata(&ReadUserdataCb, &WriteUserdataCb);
 }
 
-int main()
+int main(void)
 {
     printf("#########################\n");
     printf("EasySetup Enrollee SAMPLE\n");
index 5f1ec2d..8dc9437 100644 (file)
@@ -62,7 +62,7 @@ static bool gWiFiCBflag = false;
 static char gSSID[OIC_STRING_MAX_VALUE];
 static char gPasswd[OIC_STRING_MAX_VALUE];
 
-void PrintMenu()
+void PrintMenu(void)
 {
     cout << "========================" << endl;
     cout << "A: Enabled Security" << endl;
@@ -180,7 +180,7 @@ FILE* server_fopen(const char *path, const char *mode)
     }
 }
 
-void EnableSecurity()
+void EnableSecurity(void)
 {
     cout << "Inside EnableSecurity API.." << endl;
 
@@ -191,7 +191,7 @@ void EnableSecurity()
     OCRegisterPersistentStorageHandler(&ps);
 }
 
-void StartEasySetup()
+void StartEasySetup(void)
 {
     cout << "StartEasySetup IN" << endl;
 
@@ -242,7 +242,7 @@ void StartEasySetup()
     cout << "StartEasySetup OUT" << endl;
 }
 
-void SetDeviceInfo()
+void SetDeviceInfo(void)
 {
     cout << "SetDeviceInfo IN" << endl;
 
@@ -268,7 +268,7 @@ void SetDeviceInfo()
     cout << "SetDeviceInfo OUT" << endl;
 }
 
-void StopEasySetup()
+void StopEasySetup(void)
 {
     cout << "StopEasySetup IN" << endl;
     if (ESTerminateEnrollee() == ES_ERROR)
@@ -395,7 +395,7 @@ gboolean mainThread(GIOChannel *source, GIOCondition condition, gpointer data)
     return TRUE;
 }
 
-int main()
+int main(void)
 {
     cout << "#########################" << endl;
     cout << "EasySetup Enrollee SAMPLE" << endl;
index a187555..82b28c1 100644 (file)
@@ -559,7 +559,7 @@ static FILE *client_open(const char *path, const char *mode)
     }
 }
 
-int main()
+int main(void)
 {
     OCPersistentStorage ps {client_open, fread, fwrite, fclose, unlink };
 
index 7c0edf5..1e78f64 100644 (file)
@@ -557,7 +557,7 @@ static FILE *client_open(const char *path, const char *mode)
     }
 }
 
-int main()
+int main(void)
 {
     OCPersistentStorage ps {client_open, fread, fwrite, fclose, unlink };
 
index f97bd9f..fc4029e 100644 (file)
@@ -47,7 +47,7 @@ OCStackApplicationResult CloudLoginoutCallback(void *ctx,
 OCStackApplicationResult CloudSignupCallback(void *ctx,
         OCDoHandle handle, OCClientResponse *clientResponse);
 
-bool IsCloudLoggedin();
+bool IsCloudLoggedin(void);
 
 #ifdef __cplusplus
 }
index 46bb949..b4a0432 100644 (file)
-//******************************************************************\r
-//\r
-// Copyright 2016 Samsung Electronics All Rights Reserved.\r
-//\r
-//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
-//\r
-// Licensed under the Apache License, Version 2.0 (the "License");\r
-// you may not use this file except in compliance with the License.\r
-// You may obtain a copy of the License at\r
-//\r
-//      http://www.apache.org/licenses/LICENSE-2.0\r
-//\r
-// Unless required by applicable law or agreed to in writing, software\r
-// distributed under the License is distributed on an "AS IS" BASIS,\r
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-// See the License for the specific language governing permissions and\r
-// limitations under the License.\r
-//\r
-//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
-\r
-/**\r
- * @file\r
- *\r
- * This file provides APIs of Notification Service for Provider.\r
- */\r
-\r
-#ifndef _NS_PROVIDER_INTERFACE_H_\r
-#define _NS_PROVIDER_INTERFACE_H_\r
-\r
-#ifdef __cplusplus\r
-extern "C"\r
-{\r
-#endif // __cplusplus\r
-\r
-#include "NSCommon.h"\r
-#include <stdbool.h>\r
-#include <stdint.h>\r
-/**\r
- * Invoked when provider receives the subscription request of consumer.\r
- * @param[in] consumer  Consumer who subscribes the notification message resource\r
- */\r
-typedef void (*NSSubscribeRequestCallback)(NSConsumer *);\r
-\r
-/**\r
- * Invoked when synchronization data which has notification message\r
- * read/deleted event from consumer is received.\r
- * @param[in] sync  Synchronization information of the notification message\r
- */\r
-typedef void (*NSProviderSyncInfoCallback)(NSSyncInfo *);\r
-\r
-/**\r
- *  Set provider service with the following configuration\r
- */\r
-typedef struct\r
-{\r
-    /* Invoked when the subscription request from consumer is received */\r
-    NSSubscribeRequestCallback subRequestCallback;\r
-    /* Invoked when the synchronization data, read and deleted, is sent by consumer is received */\r
-    NSProviderSyncInfoCallback syncInfoCallback;\r
-    /* Set the policy for notification servcie which checks whether provider is capable of \r
-     * denying the subscription of notification message from consumer\r
-     * and getting controllabliity to set consumer topic list.\r
-     * If true, provider is able to control subscription request and consumer topic list.\r
-     * Otherwise(policy is false), consumer can do the same.\r
-     */\r
-    bool subControllability;\r
-    /* User defined information such as device friendly name */\r
-    char * userInfo;\r
-    /* Set on/off for secure resource channel setting */\r
-    bool resourceSecurity;\r
-\r
-} NSProviderConfig;\r
-\r
-/**\r
- * Initialize notification service for provider\r
- * @param[in]  config   Refer to NSProviderConfig\r
- * @return ::NS_OK if the action is requested succesfully\r
- */\r
-NSResult NSStartProvider(NSProviderConfig config);\r
-\r
-/**\r
- * Terminate notification service for provider\r
- * @return ::NS_OK if the action is requested succesfully\r
- */\r
-NSResult NSStopProvider();\r
-\r
-/**\r
- * Request to publish resource using remote relay server\r
- * @param[in]  serverAddress server address combined with IP address and port number using delimiter :\r
- * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.\r
- */\r
-NSResult NSProviderEnableRemoteService(char * serverAddress);\r
-\r
-/**\r
- * Request to terminate remote service from relay server\r
- * @param[in]  serverAddress server address combined with IP address and port number using delimiter :\r
- * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.\r
- */\r
-NSResult NSProviderDisableRemoteService(char * serverAddress);\r
-\r
-#ifdef WITH_MQ\r
-/**\r
- * Request to subscribe to remote MQ address as parameter.\r
- * @param[in] serverAddress server address combined with IP address and port number and MQ broker uri using delimiter :\r
- * @param[in] topicName the interest Topic name for subscription.\r
- * @return ::NS_OK or result code of NSResult\r
- */\r
-NSResult NSProviderSubscribeMQService(const char * serverAddress, const char * topicName);\r
-#endif\r
-\r
-/**\r
- * Send notification message to all subscribers\r
- * @param[in]  msg  Notification message including id, title, contentText\r
- * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.\r
- */\r
-NSResult NSSendMessage(NSMessage * msg);\r
-\r
-/**\r
- * Send acceptance to consumer who subscribes the resource of notification message\r
- * This function is valid only when subControllability is set true.\r
- * @param[in]  consumerId  Consumer who subscribes the resource\r
- * @param[in]  accepted    the result of acceptance; ALLOW or DENY\r
- * @return ::NS_OK if this function is requested succesfully\r
- * or NS_FAIL if subContollability is false.\r
- */\r
-NSResult NSAcceptSubscription(const char * consumerId, bool accepted);\r
-\r
-/**\r
- * Send synchronizad state of notificaion message to consumers\r
- * @param[in]  messageId  ID of notification message\r
- * @param[in]  type  SyncType of the syncInfo message\r
- * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.\r
- */\r
-NSResult NSProviderSendSyncInfo(uint64_t messageId, NSSyncType type);\r
-\r
-/**\r
- * Initialize NSMessage struct.\r
- * Service sets mandatory fields which message id and provider(device) id are filled with.\r
- * @return ::NSMessage *\r
- */\r
-NSMessage * NSCreateMessage();\r
-\r
-/**\r
- * Add topic to topic list which is located in provider service storage\r
- * @param[in]  topicName Topic name to add\r
- * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.\r
- */\r
-NSResult NSProviderRegisterTopic(const char * topicName);\r
-\r
-/**\r
- * Delete topic from topic list\r
- * @param[in]  topicName Topic name to delete\r
- * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.\r
- */\r
-NSResult NSProviderUnregisterTopic(const char * topicName);\r
-\r
-/**\r
- * Select a topic name for a consumer\r
- * @param[in]  consumerId  consumer id for which the user on provider selects a topic\r
- * @param[in]  topicName Topic name to select\r
- * @return ::NS_OK if the action is requested succesfully or NS_FAIL if subContollability is false\r
- */\r
-NSResult NSProviderSetConsumerTopic(const char * consumerId, const char * topicName);\r
-\r
-/**\r
- * Unselect a topic from the topic list for consumer\r
- * @param[in]  consumerId  consumer id for which the user on provider unselects a topic\r
- * @param[in]  topicName Topic name to unselect\r
- * @return ::NS_OK if the action is requested succesfully or NS_FAIL if subContollability is false\r
- */\r
-NSResult NSProviderUnsetConsumerTopic(const char * consumerId, const char * topicName);\r
-\r
-/**\r
- * Request topic list with selection state for the consumer\r
- * @param[in] consumerId  the id of consumer which topic list is subscribed for\r
- * @return :: Topic list\r
- */\r
-NSTopicLL * NSProviderGetConsumerTopics(const char * consumerId);\r
-\r
-/**\r
- * Request topics list already registered by provider user\r
- * @return :: Topic list\r
- */\r
-NSTopicLL * NSProviderGetTopics();\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif // __cplusplus\r
-\r
-#endif /* _NS_PROVIDER_INTERFACE_H_ */\r
-\r
+//******************************************************************
+//
+// Copyright 2016 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+/**
+ * @file
+ *
+ * This file provides APIs of Notification Service for Provider.
+ */
+
+#ifndef _NS_PROVIDER_INTERFACE_H_
+#define _NS_PROVIDER_INTERFACE_H_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif // __cplusplus
+
+#include "NSCommon.h"
+#include <stdbool.h>
+#include <stdint.h>
+/**
+ * Invoked when provider receives the subscription request of consumer.
+ * @param[in] consumer  Consumer who subscribes the notification message resource
+ */
+typedef void (*NSSubscribeRequestCallback)(NSConsumer *);
+
+/**
+ * Invoked when synchronization data which has notification message
+ * read/deleted event from consumer is received.
+ * @param[in] sync  Synchronization information of the notification message
+ */
+typedef void (*NSProviderSyncInfoCallback)(NSSyncInfo *);
+
+/**
+ *  Set provider service with the following configuration
+ */
+typedef struct
+{
+    /* Invoked when the subscription request from consumer is received */
+    NSSubscribeRequestCallback subRequestCallback;
+    /* Invoked when the synchronization data, read and deleted, is sent by consumer is received */
+    NSProviderSyncInfoCallback syncInfoCallback;
+    /* Set the policy for notification servcie which checks whether provider is capable of 
+     * denying the subscription of notification message from consumer
+     * and getting controllabliity to set consumer topic list.
+     * If true, provider is able to control subscription request and consumer topic list.
+     * Otherwise(policy is false), consumer can do the same.
+     */
+    bool subControllability;
+    /* User defined information such as device friendly name */
+    char * userInfo;
+    /* Set on/off for secure resource channel setting */
+    bool resourceSecurity;
+
+} NSProviderConfig;
+
+/**
+ * Initialize notification service for provider
+ * @param[in]  config   Refer to NSProviderConfig
+ * @return ::NS_OK if the action is requested succesfully
+ */
+NSResult NSStartProvider(NSProviderConfig config);
+
+/**
+ * Terminate notification service for provider
+ * @return ::NS_OK if the action is requested succesfully
+ */
+NSResult NSStopProvider(void);
+
+/**
+ * Request to publish resource using remote relay server
+ * @param[in]  serverAddress server address combined with IP address and port number using delimiter :
+ * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.
+ */
+NSResult NSProviderEnableRemoteService(char * serverAddress);
+
+/**
+ * Request to terminate remote service from relay server
+ * @param[in]  serverAddress server address combined with IP address and port number using delimiter :
+ * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.
+ */
+NSResult NSProviderDisableRemoteService(char * serverAddress);
+
+#ifdef WITH_MQ
+/**
+ * Request to subscribe to remote MQ address as parameter.
+ * @param[in] serverAddress server address combined with IP address and port number and MQ broker uri using delimiter :
+ * @param[in] topicName the interest Topic name for subscription.
+ * @return ::NS_OK or result code of NSResult
+ */
+NSResult NSProviderSubscribeMQService(const char * serverAddress, const char * topicName);
+#endif
+
+/**
+ * Send notification message to all subscribers
+ * @param[in]  msg  Notification message including id, title, contentText
+ * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.
+ */
+NSResult NSSendMessage(NSMessage * msg);
+
+/**
+ * Send acceptance to consumer who subscribes the resource of notification message
+ * This function is valid only when subControllability is set true.
+ * @param[in]  consumerId  Consumer who subscribes the resource
+ * @param[in]  accepted    the result of acceptance; ALLOW or DENY
+ * @return ::NS_OK if this function is requested succesfully
+ * or NS_FAIL if subContollability is false.
+ */
+NSResult NSAcceptSubscription(const char * consumerId, bool accepted);
+
+/**
+ * Send synchronizad state of notificaion message to consumers
+ * @param[in]  messageId  ID of notification message
+ * @param[in]  type  SyncType of the syncInfo message
+ * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.
+ */
+NSResult NSProviderSendSyncInfo(uint64_t messageId, NSSyncType type);
+
+/**
+ * Initialize NSMessage struct.
+ * Service sets mandatory fields which message id and provider(device) id are filled with.
+ * @return ::NSMessage *
+ */
+NSMessage * NSCreateMessage(void);
+
+/**
+ * Add topic to topic list which is located in provider service storage
+ * @param[in]  topicName Topic name to add
+ * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.
+ */
+NSResult NSProviderRegisterTopic(const char * topicName);
+
+/**
+ * Delete topic from topic list
+ * @param[in]  topicName Topic name to delete
+ * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.
+ */
+NSResult NSProviderUnregisterTopic(const char * topicName);
+
+/**
+ * Select a topic name for a consumer
+ * @param[in]  consumerId  consumer id for which the user on provider selects a topic
+ * @param[in]  topicName Topic name to select
+ * @return ::NS_OK if the action is requested succesfully or NS_FAIL if subContollability is false
+ */
+NSResult NSProviderSetConsumerTopic(const char * consumerId, const char * topicName);
+
+/**
+ * Unselect a topic from the topic list for consumer
+ * @param[in]  consumerId  consumer id for which the user on provider unselects a topic
+ * @param[in]  topicName Topic name to unselect
+ * @return ::NS_OK if the action is requested succesfully or NS_FAIL if subContollability is false
+ */
+NSResult NSProviderUnsetConsumerTopic(const char * consumerId, const char * topicName);
+
+/**
+ * Request topic list with selection state for the consumer
+ * @param[in] consumerId  the id of consumer which topic list is subscribed for
+ * @return :: Topic list
+ */
+NSTopicLL * NSProviderGetConsumerTopics(const char * consumerId);
+
+/**
+ * Request topics list already registered by provider user
+ * @return :: Topic list
+ */
+NSTopicLL * NSProviderGetTopics(void);
+
+#ifdef __cplusplus
+}
+#endif // __cplusplus
+
+#endif /* _NS_PROVIDER_INTERFACE_H_ */
+
index 50d8c7d..0d22960 100644 (file)
@@ -122,7 +122,7 @@ NSResult NSStartProvider(NSProviderConfig config)
     return NS_OK;
 }
 
-NSResult NSStopProvider()
+NSResult NSStopProvider(void)
 {
     NS_LOG(DEBUG, "NSStopProvider - IN");
     pthread_mutex_lock(&nsInitMutex);
@@ -310,7 +310,7 @@ NSResult NSAcceptSubscription(const char * consumerId, bool accepted)
     return NS_OK;
 }
 
-NSMessage * NSCreateMessage()
+NSMessage * NSCreateMessage(void)
 {
     NS_LOG(DEBUG, "NSCreateMessage - IN");
     pthread_mutex_lock(&nsInitMutex);
@@ -351,7 +351,7 @@ NSTopicLL * NSProviderGetConsumerTopics(const char * consumerId)
     return topicSync.topics;
 }
 
-NSTopicLL * NSProviderGetTopics()
+NSTopicLL * NSProviderGetTopics(void)
 {
     NS_LOG(DEBUG, "NSProviderGetTopics - IN");
     pthread_mutex_lock(&nsInitMutex);