Updated Iotivity to compile DTLS modules using SCons
authorSachin Agrawal <sachin.agrawal@intel.com>
Wed, 14 Jan 2015 05:16:00 +0000 (21:16 -0800)
committerSachin Agrawal <sachin.agrawal@intel.com>
Wed, 14 Jan 2015 05:16:00 +0000 (21:16 -0800)
Added Scons script for compiling security samples. Also, updated
CA Scons script to compile connectivity_abstraction.so with DTLS
when scons is invoked with WITH_DTLS=1. Also updated security samples
to use updated OCDoResource API with connectivity_type argument.

Change-Id: I1561266dda1c0ff88e1ad3684a1921b44f12839d
Signed-off-by: Sachin Agrawal <sachin.agrawal@intel.com>
resource/SConscript
resource/csdk/connectivity/SConscript
resource/csdk/stack/samples/linux/secure/SConscript [new file with mode: 0644]
resource/csdk/stack/samples/linux/secure/occlientbasicops.cpp

index 6c969c2..bc498c0 100644 (file)
@@ -28,5 +28,8 @@ if target_os != 'arduino':
        SConscript('examples/SConscript')
 
        SConscript('csdk/stack/samples/linux/SimpleClientServer/SConscript')
+
+       # Build secure samples
+       SConscript('csdk/stack/samples/linux/secure/SConscript')
 else:
        SConscript('csdk/stack/samples/arduino/SimpleClientServer/ocserver/SConscript')
index 7cb81e2..b6c06f5 100644 (file)
@@ -8,6 +8,22 @@ lib_env = env.Clone()
 SConscript(env.get('SRC_DIR') + '/resource/third_party_libs.scons', 'lib_env')
 
 calib_env = lib_env.Clone()
+
+######################################################################
+# Add build options (WITH_DTLS) info for help command
+######################################################################
+help_vars = Variables()
+help_vars.Add(BoolVariable('WITH_DTLS', 'enable security support?', False))
+help_vars.Update(env)
+Help(help_vars.GenerateHelpText(env))
+
+######################################################################
+# Get build options (the options from command line)
+######################################################################
+with_dtls = env.get('WITH_DTLS')
+if (with_dtls):
+       print "Info: Building CA library with DTLS support"
+
 ######################################################################
 # Build flags
 ######################################################################
@@ -22,6 +38,12 @@ calib_env.AppendUnique(CPPPATH = [
                './lib/libcoap-4.1.1'
                ])
 
+if (with_dtls):
+       calib_env.AppendUnique(CPPPATH = [
+                       './lib/extlibs/tinydtls',
+                       '../stack/include'
+                       ])
+
 target_os = env.get('TARGET_OS')
 
 if target_os not in ['windows', 'winrt']:
@@ -32,6 +54,13 @@ if target_os not in ['windows', 'winrt']:
                        'WIFI_ADAPTER', 'ETHERNET_ADAPTER',
                        #'TB_LOG'
                        ])
+       if (with_dtls):
+               calib_env.AppendUnique(CPPDEFINES = [
+                               '__WITH_DTLS__',
+                               ])
+               calib_env.AppendUnique(LIBPATH = ['./lib/extlibs/tinydtls'])
+               calib_env.PrependUnique(LIBS = ['tinydtls'])
+
 
 calib_env.ParseConfig('pkg-config --cflags glib-2.0')
 
@@ -72,6 +101,9 @@ calib_src = [
                './src/ethernet_adapter/linux/caethernetnwmonitor.c'
        ]
 
+if (with_dtls):
+       calib_src = calib_src + ['./src/adapter_util/caadapternetdtls.c']
+
 calib = calib_env.SharedLibrary('connectivity_abstraction', calib_src)
 calib_env.InstallTarget(calib, 'libconnectivity_abstraction')
 
diff --git a/resource/csdk/stack/samples/linux/secure/SConscript b/resource/csdk/stack/samples/linux/secure/SConscript
new file mode 100644 (file)
index 0000000..0132d3a
--- /dev/null
@@ -0,0 +1,53 @@
+
+Import('env')
+
+samples_env = env.Clone()
+######################################################################
+# Build flags
+######################################################################
+samples_env.PrependUnique(CPPPATH = [
+               '../../../../ocsocket/include',
+               '../../../../logger/include',
+               '../../../../stack/include',
+               '../../../../../../extlibs/cjson',
+               '../../../../../oc_logger/include'
+               ])
+
+target_os = env.get('TARGET_OS')
+if target_os not in ['windows', 'winrt']:
+       samples_env.AppendUnique(CXXFLAGS = ['-std=c++0x', '-Wall', '-pthread'])
+
+       # Note: 'pthread' is in libc for android.
+       if target_os != 'android':
+               samples_env.AppendUnique(LIBS = ['-lpthread'])
+
+samples_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
+samples_env.PrependUnique(LIBS = ['oc', 'octbstack', 'm', 'coap', 'coap_csdk', 'oc_logger', 'connectivity_abstraction'])
+samples_env.Append(LINKFLAGS = ['-Wl,--no-as-needed'])
+
+samples_env.ParseConfig('pkg-config --libs glib-2.0');
+
+if target_os == 'android':
+       samples_env.AppendUnique(CXXFLAGS = ['-frtti', '-fexceptions'])
+       samples_env.AppendUnique(LIBS = ['gnustl_static'])
+       samples_env.AppendUnique(CPPDEFINES = ['_GLIBCXX_USE_C99=1', '_GLIBCXX_HAVE_WCSTOF=1'])
+
+       if not env.get('RELEASE'):
+               samples_env.AppendUnique(LIBS = ['log'])
+
+if target_os in ['darwin', 'ios']:
+       samples_env.AppendUnique(CPPDEFINES = ['_DARWIN_C_SOURCE'])
+
+samples_env.AppendUnique(CPPDEFINES = ['CA_INT', 'CA_INT_DTLS', 'TB_LOG'])
+
+######################################################################
+# Source files and Targets
+######################################################################
+ocserverbasicops = samples_env.Program('ocserverbasicops', ['common.cpp', 'ocserverbasicops.cpp'])
+occlientbasicops = samples_env.Program('occlientbasicops', ['common.cpp', 'occlientbasicops.cpp'])
+gen_sec_bin = samples_env.Program('gen_sec_bin', ['gen_sec_bin.cpp'])
+
+
+Alias("samples", [ocserverbasicops, occlientbasicops])
+
+env.AppendTarget('samples')
index ce051d0..3cf8256 100644 (file)
@@ -87,6 +87,9 @@ OCStackResult InvokeOCDoResource(std::ostringstream &query,
 
     ret = OCDoResource(&handle, method, query.str().c_str(), 0,
             (method == OC_REST_PUT || method == OC_REST_POST) ? putPayload.c_str() : NULL,
+#ifdef CA_INT
+            (OC_WIFI),
+#endif
             qos, &cbData, options, numOptions);
 
     if (ret != OC_STACK_OK)
@@ -260,7 +263,11 @@ int InitDiscovery()
     cbData.cb = discoveryReqCB;
     cbData.context = NULL;
     cbData.cd = NULL;
-    ret = OCDoResource(&handle, OC_REST_GET, szQueryUri, 0, 0, OC_LOW_QOS, &cbData, NULL, 0);
+    ret = OCDoResource(&handle, OC_REST_GET, szQueryUri, 0, 0,
+#ifdef CA_INT
+            (OC_WIFI),
+#endif
+            OC_LOW_QOS, &cbData, NULL, 0);
     if (ret != OC_STACK_OK)
     {
         OC_LOG(ERROR, TAG, "OCStack resource error");