From 65d6667475c0e0553bbfd744a5a6126ff124857e Mon Sep 17 00:00:00 2001 From: Harish Kumara M Date: Wed, 19 Dec 2018 20:13:00 +0530 Subject: [PATCH] Adding x.com.samsung.deployenv prop Adding new additional properties "x.com.samsung.deployenv" and "x.com.samsung.iatt" as vendor properties to "oic.r.coapcloudconf" easysetup resource. https://github.sec.samsung.net/RS7-IOTIVITY/IoTivity/pull/380 (cherry picked from commit 5b0e8e760da8069c53cf5dd5ef083148c39a2cd2) Change-Id: Ic307cc1fc2551da143fcdfa15b53db83a7871cb4 Signed-off-by: Harish Kumara M Signed-off-by: Amit KS --- .../easy-setup/enrollee/inc/samsung/sc_easysetup.h | 8 ++- .../easy-setup/enrollee/src/samsung/sc_easysetup.c | 82 ++++++++++++++++++++-- .../easy-setup/mediator/richsdk/inc/ESSCCommon.h | 43 +++++++++--- .../sampleapp/enrollee/linux-samsung/sc_enrollee.c | 16 +++-- .../sampleapp/enrollee/linux/enrolleewifi.c | 8 +-- .../linux-samsung/richsdk_sample/mediator_sc.cpp | 4 ++ 6 files changed, 135 insertions(+), 26 deletions(-) diff --git a/service/easy-setup/enrollee/inc/samsung/sc_easysetup.h b/service/easy-setup/enrollee/inc/samsung/sc_easysetup.h index aa56a04..90c5d7d 100644 --- a/service/easy-setup/enrollee/inc/samsung/sc_easysetup.h +++ b/service/easy-setup/enrollee/inc/samsung/sc_easysetup.h @@ -63,6 +63,8 @@ #define SC_RSRVD_ES_VENDOR_SSID "x.com.samsung.ssid" #define SC_RSRVD_ES_VENDOR_PASSPHRASE "x.com.samsung.passphrase" #define SC_RSRVD_ES_VENDOR_CANDIDATE_CHANNEL "x.com.samsung.channel" +#define SC_RSRVD_ES_VENDOR_DEPLOY_ENVIRONMENT "x.com.samsung.deployenv" +#define SC_RSRVD_ES_VENDOR_IATT "x.com.samsung.iatt" #define WIFI_DISCOVERY_CHANNEL_INIT -1 @@ -89,7 +91,7 @@ typedef struct SCWiFiConfProperties { int discoveryChannel; /**< Wi-Fi AP Channel used for fast discovery **/ char bssid[MAXLEN_STRING]; /**< Wi-Fi bssid information. **/ - bool isHidden; + bool isHidden; int numCandidateAP; SCCandidateAPInfo candidateAPInfo[MAXNUM_CANDIDATE_AP]; } SCWiFiConfProperties; @@ -125,6 +127,8 @@ typedef struct SCCoapCloudServerConfProperties char tncResult[MAXLEN_STRING]; /**< Samsung-specific Terms & Conditions result **/ char refreshToken[MAXLEN_STRING]; /**< Samsung-specific refreshToken information. Indicate refresh token to be used if the access token is expired**/ char uid[MAXLEN_STRING]; /**< Samsung-specific aac information. Indicate user ID corresponding to user account **/ + char deployEnv[MAXLEN_STRING]; /**< Samsung-specific deployment server with which device is connected to. For example "PROD", "STG" and etc **/ + int iatt; /**< Samsung-specific Access token type indicator. 0 for SA token, 1 for IoT JWT **/ } SCCoapCloudServerConfProperties; typedef struct SCProperties @@ -161,6 +165,8 @@ typedef struct SCProperties char hubId[MAXLEN_STRING]; /**< HubId of device **/ int numCandidateAP; SCCandidateAPInfo candidateAPInfo[MAXNUM_CANDIDATE_AP]; + char deployEnv[MAXLEN_STRING]; + int iatt; } SCProperties; void ReadUserdataCb(OCRepPayload* payload, char* resourceType, void** userdata); diff --git a/service/easy-setup/enrollee/src/samsung/sc_easysetup.c b/service/easy-setup/enrollee/src/samsung/sc_easysetup.c index 7ebdbee..0f515fe 100644 --- a/service/easy-setup/enrollee/src/samsung/sc_easysetup.c +++ b/service/easy-setup/enrollee/src/samsung/sc_easysetup.c @@ -356,7 +356,7 @@ void ReadUserdataCb(OCRepPayload* payload, char* resourceType, void** userdata) pWifiConfProp->numCandidateAP = (int)dimensions[0]; g_SCProperties.numCandidateAP = (int)dimensions[0]; } - + if (OCRepPayloadGetPropBool(payload, SC_RSRVD_ES_VENDOR_HIDDEN, &isHidden)) { if(*userdata == NULL) @@ -484,7 +484,8 @@ void ReadUserdataCb(OCRepPayload* payload, char* resourceType, void** userdata) if( *userdata == NULL ) { OIC_LOG(ERROR, SC_ENROLLEE_TAG, "OICMalloc for SCCoapCloudServerConfProperties is failed"); - return ; + OICFree(clientID); + return; } memset(*userdata, 0, sizeof(SCCoapCloudServerConfProperties)); } @@ -494,6 +495,7 @@ void ReadUserdataCb(OCRepPayload* payload, char* resourceType, void** userdata) OICStrcpy(pCloudProp->clientID, strlen(clientID)+1, clientID); OICStrcpy(g_SCProperties.clientID, strlen(clientID)+1, clientID); + OICFree(clientID); OIC_LOG_V(INFO_PRIVATE, SC_ENROLLEE_TAG, "[User specific property] %s : %s", SC_RSRVD_ES_VENDOR_CLIENTID, pCloudProp->clientID); @@ -509,7 +511,8 @@ void ReadUserdataCb(OCRepPayload* payload, char* resourceType, void** userdata) if( *userdata == NULL ) { OIC_LOG(ERROR, SC_ENROLLEE_TAG, "OICMalloc for SCCoapCloudServerConfProperties is failed"); - return ; + OICFree(aac); + return; } memset(*userdata, 0, sizeof(SCCoapCloudServerConfProperties)); } @@ -539,7 +542,8 @@ void ReadUserdataCb(OCRepPayload* payload, char* resourceType, void** userdata) if( *userdata == NULL ) { OIC_LOG(ERROR, SC_ENROLLEE_TAG, "OICMalloc for SCCoapCloudServerConfProperties is failed"); - return ; + OICFree(uid); + return; } memset(*userdata, 0, sizeof(SCCoapCloudServerConfProperties)); } @@ -569,7 +573,8 @@ void ReadUserdataCb(OCRepPayload* payload, char* resourceType, void** userdata) if( *userdata == NULL ) { OIC_LOG(ERROR, SC_ENROLLEE_TAG, "OICMalloc for SCCoapCloudServerConfProperties is failed"); - return ; + OICFree(refreshToken); + return; } memset(*userdata, 0, sizeof(SCCoapCloudServerConfProperties)); } @@ -589,6 +594,60 @@ void ReadUserdataCb(OCRepPayload* payload, char* resourceType, void** userdata) } } + // SC_RSRVD_ES_VENDOR_DEPLOY_ENVIRONMENT + char *deployEnv = NULL; + if (OCRepPayloadGetPropString(payload, SC_RSRVD_ES_VENDOR_DEPLOY_ENVIRONMENT, &deployEnv)) + { + if(*userdata == NULL) + { + *userdata = (void*)OICMalloc(sizeof(SCCoapCloudServerConfProperties)); + if( *userdata == NULL ) + { + OIC_LOG(ERROR, SC_ENROLLEE_TAG, "OICMalloc for SCCoapCloudServerConfProperties is failed"); + OICFree(deployEnv); + return; + } + memset(*userdata, 0, sizeof(SCCoapCloudServerConfProperties)); + } + + if (*userdata != NULL) + { + SCCoapCloudServerConfProperties *pCloudProp = + (SCCoapCloudServerConfProperties*) (*userdata); + OICStrcpy(pCloudProp->deployEnv, MAXLEN_STRING, deployEnv); + OICStrcpy(g_SCProperties.deployEnv, MAXLEN_STRING, deployEnv); + OICFree(deployEnv); + + OIC_LOG_V(INFO_PRIVATE, SC_ENROLLEE_TAG, "[User specific property] %s : %s", + SC_RSRVD_ES_VENDOR_REFRESH_TOKEN, pCloudProp->deployEnv); + } + } + + // SC_RSRVD_ES_VENDOR_IATT + int64_t iatt; + if (OCRepPayloadGetPropInt(payload, SC_RSRVD_ES_VENDOR_IATT, &iatt)) + { + if(*userdata == NULL) + { + *userdata = (void*)OICMalloc(sizeof(SCCoapCloudServerConfProperties)); + if( *userdata == NULL ) + { + OIC_LOG(ERROR, SC_ENROLLEE_TAG, "OICMalloc for SCCoapCloudServerConfProperties is failed"); + return; + } + memset(*userdata, 0, sizeof(SCCoapCloudServerConfProperties)); + } + + SCCoapCloudServerConfProperties *pCloudProp = + (SCCoapCloudServerConfProperties*) (*userdata); + + pCloudProp->iatt = iatt; + g_SCProperties.iatt = iatt; + + OIC_LOG_V(INFO_PRIVATE, SC_ENROLLEE_TAG, "[User specific property] %s : %d", + SC_RSRVD_ES_VENDOR_REFRESH_TOKEN, pCloudProp->iatt); + } + ReadTnCdata(payload,userdata); } } @@ -632,7 +691,7 @@ void WriteUserdataCb(OCRepPayload* payload, char* resourceType) size_t dimensions[MAX_REP_ARRAY_DEPTH] = {g_SCProperties.numCandidateAP, 0, 0}; OCRepPayloadSetPropObjectArray(payload,SC_RSRVD_ES_VENDOR_CANDIDATEAPS, (const struct OCRepPayload **)repPayload, dimensions); } - if(strstr(resourceType, OC_RSRVD_ES_RES_TYPE_DEVCONF)) + else if(strstr(resourceType, OC_RSRVD_ES_RES_TYPE_DEVCONF)) { #ifndef __TIZENRT__ OCRepPayloadSetPropString(payload, SC_RSRVD_ES_VENDOR_DEVICE_TYPE, g_SCProperties.deviceType); @@ -705,6 +764,17 @@ void WriteUserdataCb(OCRepPayload* payload, char* resourceType) } #endif } + else if(strstr(resourceType, OC_RSRVD_ES_RES_TYPE_COAPCLOUDCONF)) + { + // x.com.samsung.deployenv + if (g_SCProperties.deployEnv != NULL) + { + OCRepPayloadSetPropString(payload, SC_RSRVD_ES_VENDOR_DEPLOY_ENVIRONMENT, g_SCProperties.deployEnv); + } + + // x.com.samsung.iatt + OCRepPayloadSetPropInt(payload, SC_RSRVD_ES_VENDOR_IATT, g_SCProperties.iatt); + } } WriteTnCdata(payload, resourceType); diff --git a/service/easy-setup/mediator/richsdk/inc/ESSCCommon.h b/service/easy-setup/mediator/richsdk/inc/ESSCCommon.h index db59319..ff298c2 100644 --- a/service/easy-setup/mediator/richsdk/inc/ESSCCommon.h +++ b/service/easy-setup/mediator/richsdk/inc/ESSCCommon.h @@ -33,10 +33,10 @@ using namespace std; #define SC_RSRVD_ES_VENDOR_LOCATION "x.com.samsung.location" #define SC_RSRVD_ES_VENDOR_CLIENTID "x.com.samsung.clientid" #define SC_RSRVD_ES_VENDOR_ACCOUNT "x.com.samsung.account" -#define SC_RSRVD_ES_VENDOR_SSO_LIST "x.com.samsung.ssolist" +#define SC_RSRVD_ES_VENDOR_SSO_LIST "x.com.samsung.ssolist" #define SC_RSRVD_ES_VENDOR_ADDITIONAL_AUTH_CODE "x.com.samsung.aac" -#define SC_RSRVD_ES_VENDOR_SA_API_SERVER "x.com.samsung.saapiserver" -#define SC_RSRVD_ES_VENDOR_SA_AUTH_SERVER "x.com.samsung.saauthserver" +#define SC_RSRVD_ES_VENDOR_SA_API_SERVER "x.com.samsung.saapiserver" +#define SC_RSRVD_ES_VENDOR_SA_AUTH_SERVER "x.com.samsung.saauthserver" #define SC_RSRVD_ES_VENDOR_SA_DEVICE_SECURITY_CODE "x.com.samsung.sadsc" #define SC_RSRVD_ES_VENDOR_ACCESS_TOKEN "x.com.samsung.accesstoken" #define SC_RSRVD_ES_VENDOR_REFRESH_TOKEN "x.com.samsung.refreshtoken" @@ -64,8 +64,9 @@ using namespace std; #define SC_RSRVD_ES_VENDOR_SERVER_ID "x.com.samsung.serverid" #define SC_RSRVD_ES_VENDOR_TIMEZONE_ID "x.com.samsung.timezoneid" #define SC_RSRVD_ES_VENDOR_HIDDEN "x.com.samsung.hidden" -#define SC_RSRVD_ES_VENDOR_HUB_ID "x.com.samsung.hubid" -#define SC_RSRVD_ES_VENDOR_SERVER_DEPLOYMENT_ENVIRONMENT "x.com.samsung.deployenv" +#define SC_RSRVD_ES_VENDOR_HUB_ID "x.com.samsung.hubid" +#define SC_RSRVD_ES_VENDOR_DEPLOY_ENVIRONMENT "x.com.samsung.deployenv" +#define SC_RSRVD_ES_VENDOR_IATT "x.com.samsung.iatt" #define SC_RSRVD_ES_VENDOR_CANDIDATEAPS "x.com.samsung.candidateaps" #define SC_RSRVD_ES_VENDOR_SSID "x.com.samsung.ssid" #define SC_RSRVD_ES_VENDOR_PASSPHRASE "x.com.samsung.passphrase" @@ -631,7 +632,7 @@ namespace OIC */ void setServerDeploymentEnv(const std::string &serverDeploymentEnv) { - m_rep.setValue(SC_RSRVD_ES_VENDOR_SERVER_DEPLOYMENT_ENVIRONMENT, serverDeploymentEnv); + m_rep.setValue(SC_RSRVD_ES_VENDOR_DEPLOY_ENVIRONMENT, serverDeploymentEnv); } /** @@ -641,14 +642,38 @@ namespace OIC */ std::string getServerDeploymentEnv() { - if (m_rep.hasAttribute(SC_RSRVD_ES_VENDOR_SERVER_DEPLOYMENT_ENVIRONMENT)) + if (m_rep.hasAttribute(SC_RSRVD_ES_VENDOR_DEPLOY_ENVIRONMENT)) { - return m_rep.getValue(SC_RSRVD_ES_VENDOR_SERVER_DEPLOYMENT_ENVIRONMENT); + return m_rep.getValue(SC_RSRVD_ES_VENDOR_DEPLOY_ENVIRONMENT); } return {}; } /** + * Set Access token type. + * + * @param type - Access token type + */ + void setAccessTokenType(const int type) + { + m_rep.setValue(SC_RSRVD_ES_VENDOR_IATT, type); + } + + /** + * Get Access token type. + * + * @return Access token type. + */ + int getAccessTokenType(void) + { + if (m_rep.hasAttribute(SC_RSRVD_ES_VENDOR_IATT)) + { + return m_rep.getValue(SC_RSRVD_ES_VENDOR_IATT); + } + return 0; + } + + /** * Set samsung-specific refresh token property to be delivered to Enrollee * * @param refreshtoken - Refresh token. @@ -1323,7 +1348,7 @@ namespace OIC } return std::string(""); } - + /** * Gets the HubId of the device * diff --git a/service/easy-setup/sampleapp/enrollee/linux-samsung/sc_enrollee.c b/service/easy-setup/sampleapp/enrollee/linux-samsung/sc_enrollee.c index 67e2c99..149f516 100644 --- a/service/easy-setup/sampleapp/enrollee/linux-samsung/sc_enrollee.c +++ b/service/easy-setup/sampleapp/enrollee/linux-samsung/sc_enrollee.c @@ -125,25 +125,31 @@ void DevConfProvCbInApp(ESDevConfData *eventData) void CloudDataProvCbInApp(ESCoapCloudConfData *eventData) { - printf("CloudDataProvCbInApp IN\n"); + printf("Cloud provisioning data received\n"); if(eventData == NULL) { printf("ESCloudProvData is NULL\n"); - return ; + return; } printf("AuthCode : %s\n", eventData->authCode); + printf("AcessToken : %s\n", eventData->accessToken); + printf("AcessTokenType : %d\n", eventData->accessTokenType); printf("AuthProvider : %s\n", eventData->authProvider); printf("CI Server : %s\n", eventData->ciServer); if(eventData->userdata != NULL) { SCCoapCloudServerConfProperties *data = eventData->userdata; - printf("[SC] ClientID : %s\n", data->clientID); + printf("[SC] Client id : %s\n", data->clientID); + printf("[SC] aac : %s\n", data->aac); + printf("[SC] TNC result : %s\n", data->tncResult); + printf("[SC] Refresh token : %s\n", data->refreshToken); + printf("[SC] UID : %s\n", data->uid); + printf("[SC] Deploy Env : %s\n", data->deployEnv); + printf("[SC] iatt : %d\n", data->iatt); } - - printf("CloudDataProvCbInApp OUT\n"); } ESProvisioningCallbacks gCallbacks = { diff --git a/service/easy-setup/sampleapp/enrollee/linux/enrolleewifi.c b/service/easy-setup/sampleapp/enrollee/linux/enrolleewifi.c index 9382581..ed828c8 100755 --- a/service/easy-setup/sampleapp/enrollee/linux/enrolleewifi.c +++ b/service/easy-setup/sampleapp/enrollee/linux/enrolleewifi.c @@ -123,12 +123,12 @@ void DevConfProvCbInApp(ESDevConfData *eventData) void CoapCloudConfProvCbInApp(ESCoapCloudConfData *eventData) { - printf("CoapCloudConfProvCbInApp IN\n"); + printf("Cloud provisioning data received\n"); if(eventData == NULL) { printf("ESCoapCloudConfData is NULL\n"); - return ; + return; } printf("AuthCode : %s\n", eventData->authCode); @@ -136,8 +136,6 @@ void CoapCloudConfProvCbInApp(ESCoapCloudConfData *eventData) printf("AcessTokenType : %d\n", eventData->accessTokenType); printf("AuthProvider : %s\n", eventData->authProvider); printf("CI Server : %s\n", eventData->ciServer); - - printf("CoapCloudConfProvCbInApp OUT\n"); } ESProvisioningCallbacks gCallbacks = { @@ -329,7 +327,7 @@ void *listeningFunc(void * data) printf("OCProcess error"); } - // Sleep for 100 ms to avoid high CPU Utilization. + // Sleep for 100 ms to avoid high CPU Utilization. usleep(100 * 1000); // 100 milli-seconds } return NULL; diff --git a/service/easy-setup/sampleapp/mediator/linux-samsung/richsdk_sample/mediator_sc.cpp b/service/easy-setup/sampleapp/mediator/linux-samsung/richsdk_sample/mediator_sc.cpp index 2cffbf6..b25b28a 100644 --- a/service/easy-setup/sampleapp/mediator/linux-samsung/richsdk_sample/mediator_sc.cpp +++ b/service/easy-setup/sampleapp/mediator/linux-samsung/richsdk_sample/mediator_sc.cpp @@ -312,6 +312,10 @@ void provisionCloudProperty() cloudProp.setCredID(1); cloudProp.setClientID("166135d296"); + // Set samsung specific properties + cloudProp.setServerDeploymentEnv("PROD"); + cloudProp.setAccessTokenType(1); + try { remoteEnrollee->provisionCloudProperties(cloudProp, cloudProvisioningStatusCallback); -- 2.7.4