From: nazib.ullah Date: Fri, 19 Aug 2016 05:28:31 +0000 (+0600) Subject: [TBT][tizen_3.0_wearable][NFC ESE module of tbtcoreapp and tbt_nfceesetestapp Applica... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b6330678bb7fca274ad182dfd9b2a745be63d4db;p=test%2Ftct%2Fnative%2Fbehavior.git [TBT][tizen_3.0_wearable][NFC ESE module of tbtcoreapp and tbt_nfceesetestapp Application added] Change-Id: Ib1bd3da41faee5139e51a1c309cc600065db70d3 --- diff --git a/release/binary-arm/install.sh b/release/binary-arm/install.sh index 6ffb3b5..26123f4 100644 --- a/release/binary-arm/install.sh +++ b/release/binary-arm/install.sh @@ -30,6 +30,7 @@ sdb install org.tizen.coretbt_serviceapp-1.0.0-arm.tpk sdb install org.tizen.coretbt_uiapp-1.0.0-arm.tpk sdb install org.tizen.tbt_hcetestappa-1.0.0-arm.tpk sdb install org.tizen.tbt_hcetestappb-1.0.0-arm.tpk +sdb install org.tizen.tbt_nfcesetestapp-1.0.0-arm.tpk sdb install org.tizen.operationpickviewapp-1.0.0-arm.tpk sdb install org.tizen.coretbtwidgetapp-1.0.0-arm.tpk sdb install org.tizen.tbtcoreapp-1.0.0-arm.tpk diff --git a/release/binary-arm/org.tizen.tbt_nfcesetestapp-1.0.0-arm.tpk b/release/binary-arm/org.tizen.tbt_nfcesetestapp-1.0.0-arm.tpk new file mode 100644 index 0000000..a45e1d3 Binary files /dev/null and b/release/binary-arm/org.tizen.tbt_nfcesetestapp-1.0.0-arm.tpk differ diff --git a/release/binary-arm/org.tizen.tbtcoreapp-1.0.0-arm.tpk b/release/binary-arm/org.tizen.tbtcoreapp-1.0.0-arm.tpk index ec3d78d..2cc14ec 100644 Binary files a/release/binary-arm/org.tizen.tbtcoreapp-1.0.0-arm.tpk and b/release/binary-arm/org.tizen.tbtcoreapp-1.0.0-arm.tpk differ diff --git a/release/binary-x86/install.sh b/release/binary-x86/install.sh index c192f45..22fa9a7 100644 --- a/release/binary-x86/install.sh +++ b/release/binary-x86/install.sh @@ -30,6 +30,7 @@ sdb install org.tizen.coretbt_serviceapp-1.0.0-i386.tpk sdb install org.tizen.coretbt_uiapp-1.0.0-i386.tpk sdb install org.tizen.tbt_hcetestappa-1.0.0-i386.tpk sdb install org.tizen.tbt_hcetestappb-1.0.0-i386.tpk +sdb install org.tizen.tbt_nfcesetestapp-1.0.0-i386.tpk sdb install org.tizen.operationpickviewapp-1.0.0-i386.tpk sdb install org.tizen.coretbtwidgetapp-1.0.0-i386.tpk sdb install org.tizen.tbtcoreapp-1.0.0-i386.tpk diff --git a/release/binary-x86/org.tizen.tbt_nfcesetestapp-1.0.0-i386.tpk b/release/binary-x86/org.tizen.tbt_nfcesetestapp-1.0.0-i386.tpk new file mode 100644 index 0000000..80bbb7c Binary files /dev/null and b/release/binary-x86/org.tizen.tbt_nfcesetestapp-1.0.0-i386.tpk differ diff --git a/release/binary-x86/org.tizen.tbtcoreapp-1.0.0-i386.tpk b/release/binary-x86/org.tizen.tbtcoreapp-1.0.0-i386.tpk index 09daf92..4992134 100644 Binary files a/release/binary-x86/org.tizen.tbtcoreapp-1.0.0-i386.tpk and b/release/binary-x86/org.tizen.tbtcoreapp-1.0.0-i386.tpk differ diff --git a/tbt_nfcesetestapp/.cproject b/tbt_nfcesetestapp/.cproject new file mode 100644 index 0000000..58c792c --- /dev/null +++ b/tbt_nfcesetestapp/.cproject @@ -0,0 +1,545 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tbt_nfcesetestapp/.exportMap b/tbt_nfcesetestapp/.exportMap new file mode 100644 index 0000000..43e310e --- /dev/null +++ b/tbt_nfcesetestapp/.exportMap @@ -0,0 +1,4 @@ +{ + global: main; + local: *; +}; diff --git a/tbt_nfcesetestapp/.package-stamp b/tbt_nfcesetestapp/.package-stamp new file mode 100644 index 0000000..40cbe59 --- /dev/null +++ b/tbt_nfcesetestapp/.package-stamp @@ -0,0 +1 @@ +TPK \ No newline at end of file diff --git a/tbt_nfcesetestapp/.project b/tbt_nfcesetestapp/.project new file mode 100644 index 0000000..90bb8ab --- /dev/null +++ b/tbt_nfcesetestapp/.project @@ -0,0 +1,26 @@ + + + tbt_nfcesetestapp + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/tbt_nfcesetestapp/.rds_delta b/tbt_nfcesetestapp/.rds_delta new file mode 100644 index 0000000..565c53c --- /dev/null +++ b/tbt_nfcesetestapp/.rds_delta @@ -0,0 +1,10 @@ +#delete +#add +#modify +author-signature.xml +signature1.xml +res/edje/nfcesetestapp.edj +bin/tbt_nfcesetestapp +shared/res/nfcesetestapp.png +shared/res/wallet.xml +tizen-manifest.xml diff --git a/tbt_nfcesetestapp/.sdk_delta.info b/tbt_nfcesetestapp/.sdk_delta.info new file mode 100644 index 0000000..52c350f Binary files /dev/null and b/tbt_nfcesetestapp/.sdk_delta.info differ diff --git a/tbt_nfcesetestapp/.sign/.manifest.tmp b/tbt_nfcesetestapp/.sign/.manifest.tmp new file mode 100644 index 0000000..0c01637 --- /dev/null +++ b/tbt_nfcesetestapp/.sign/.manifest.tmp @@ -0,0 +1,6 @@ +bin/tbt_nfcesetestapp__DEL__5XMGhZqQFQ4z2YhxiFsu6ASgnU00B/+iljQmLFHJ74I= +res/edje/nfcesetestapp.edj__DEL__rDjNglqWTJmSA2kC0QL5ThMWahbB3j7ZwPKud8oVK6U= +shared/res/nfcesetestapp.png__DEL__1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= +shared/res/wallet.xml__DEL__BqgKuqJAHXX2vrHNvdTBE8ZwwxEqPeeFoJuY12OICJw= +tizen-manifest.xml__DEL__D8CH0ytlszinjf7AZvQzIFRKiNs7YXx5Mtly/vBweA8= +author-signature.xml__DEL__8O0JRxYZhJlcq4Kjn+oEe0jS91WwUb8gdiCQJS93/5M= diff --git a/tbt_nfcesetestapp/.sign/author-signature.xml b/tbt_nfcesetestapp/.sign/author-signature.xml new file mode 100644 index 0000000..e4b60ec --- /dev/null +++ b/tbt_nfcesetestapp/.sign/author-signature.xml @@ -0,0 +1,74 @@ + + + + + + +5XMGhZqQFQ4z2YhxiFsu6ASgnU00B/+iljQmLFHJ74I= + + + +rDjNglqWTJmSA2kC0QL5ThMWahbB3j7ZwPKud8oVK6U= + + + +1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= + + + +BqgKuqJAHXX2vrHNvdTBE8ZwwxEqPeeFoJuY12OICJw= + + + +D8CH0ytlszinjf7AZvQzIFRKiNs7YXx5Mtly/vBweA8= + + + + + + +lpo8tUDs054eLlBQXiDPVDVKfw30ZZdtkRs1jd7H5K8= + + + +cj7hXG0mipfsrB4VCEwOK2A5uOx55J55hVKJWzy5zsHaQafg0vNRzqhRTwU52HqT/9FwdP/V57LV +JGwVcGIVIhHe5qWeNYLFyrs36G1ZQUuQPrYItF6GTxzKnSOV0kFHawhaZtVsAemHYSvaY6VVSMri +BmOOeWJh8/fFTTRk9ak= + + + + +MIIClTCCAX2gAwIBAgIGAVahIT4pMA0GCSqGSIb3DQEBBQUAMFYxGjAYBgNVBAoMEVRpemVuIEFz +c29jaWF0aW9uMRowGAYDVQQLDBFUaXplbiBBc3NvY2lhdGlvbjEcMBoGA1UEAwwTVGl6ZW4gRGV2 +ZWxvcGVycyBDQTAeFw0xMjExMDEwMDAwMDBaFw0xOTAxMDEwMDAwMDBaMBExDzANBgNVBAMMBmF1 +dGhvcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAnIW6TYtGUdr+6Xb2g8AMlOaSq0djec7O +MdT4bOtJVPDIB0E+jYbJX5iNdXF/Cm4PQSHShjLFSYxDRUqwr159D6m5WFPtbPApi8d4tvskwp67 +/116LS8WL8P65SnOBSCpwX+WiVkBfJWrW7awZlAyhx6tC81evIsjZAdUspbxvGcCAwEAAaMyMDAw +DAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwDQYJKoZIhvcN +AQEFBQADggEBAFj2c4S977OboYKFfrqRQAlMolC2SNPfhGDDhffhmKyWNFWXPU7lATSO019R1hwG +5tElMeOdZuJksDcZurPYOrs85wA1dPa3js7BH53lvW5KY8UyxJN+xvHIxpD+a0rwbzFEWRFqMv+/ +jStZonc0pFP1D9exR8FfjZsOr5ISVNXQc1HfkcsHEKAu5rEXZ9bpwRotBsP/Cahb+H15iSy+g6px +/f2F9drB1kgkm4+13sSZW32CmONqeKxzCaaH0XZzbQh+qeaW2BekAqNF40KwS85zNhIAYjWJKEuH +xUK40BHmIEhqr7Wrg4WMN/MIHwBv22n9hjH4VZWiY6E38QwPm1w= + + +MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMRowGAYDVQQKDBFUaXplbiBBc3NvY2lh +dGlvbjEaMBgGA1UECwwRVGl6ZW4gQXNzb2NpYXRpb24xHjAcBgNVBAMMFVRpemVuIERldmVsb3Bl +cnMgUm9vdDAeFw0xMjAxMDEwMDAwMDBaFw0yNzAxMDEwMDAwMDBaMFYxGjAYBgNVBAoMEVRpemVu +IEFzc29jaWF0aW9uMRowGAYDVQQLDBFUaXplbiBBc3NvY2lhdGlvbjEcMBoGA1UEAwwTVGl6ZW4g +RGV2ZWxvcGVycyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANVGhRGmMIUyBA7o +PCz8Sxut6z6HNkF4oDIuzuKaMzRYPeWodwe9O0gmqAkToQHfwg2giRhE5GoPld0fq+OYMMwSasCu +g8dwODx1eDeSYVuOLWRxpAmbTXOsSFi6VoWeyaPEm18JBHvZBsU5YQtgZ6Kp7MqzvQg3pXOxtajj +vyHxiatJl+xXrHgcXC1wgyG3buty7u/Fi2mvKXJ0PRJcCjjK81dqe/Vr20sRUCrbk02zbm5ggFt/ +jIEhV8wbFRQpliobc7J4dSTKhFfrqGM8rdd54LYhD7gSI1CFSe16pUXfcVR7FhJztRaiGLnCrwBE +dyTZ248+D4L/qR/D0axb3jcCAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOC +AQEAnOXXQ/1O/QTDHyrmQDtFziqPY3xWlJBqJtEqXiT7Y+Ljpe66e+Ee/OjQMlZe8gu21/8cKklH +95RxjopMWCVedXDUbWdvS2+CdyvVW/quT2E0tjqIzXDekUTYwwhlPWlGxvfj3VsxqSFq3p8Brl04 +1Gx5RKAGyKVsMfTLhbbwSWwApuBUxYfcNpKwLWGPXkysu+HctY03OKv4/xKBnVWiN8ex/Sgesi0M ++OBAOMdZMPK32uJBTeKFx1xZgTLIhk45V0hPOomPjZloiv0LSS11eyd451ufjW0iHRE7WlpR6EvI +W6TFyZgMpQq+kg4hWl2SBTf3s2VI8Ygz7gj8TMlClg== + + + + + \ No newline at end of file diff --git a/tbt_nfcesetestapp/.sign/signature1.xml b/tbt_nfcesetestapp/.sign/signature1.xml new file mode 100644 index 0000000..ca27ba9 --- /dev/null +++ b/tbt_nfcesetestapp/.sign/signature1.xml @@ -0,0 +1,76 @@ + + + + + + +8O0JRxYZhJlcq4Kjn+oEe0jS91WwUb8gdiCQJS93/5M= + + + +5XMGhZqQFQ4z2YhxiFsu6ASgnU00B/+iljQmLFHJ74I= + + + +rDjNglqWTJmSA2kC0QL5ThMWahbB3j7ZwPKud8oVK6U= + + + +1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= + + + +BqgKuqJAHXX2vrHNvdTBE8ZwwxEqPeeFoJuY12OICJw= + + + +D8CH0ytlszinjf7AZvQzIFRKiNs7YXx5Mtly/vBweA8= + + + + + + +u/jU3U4Zm5ihTMSjKGlGYbWzDfRkGphPPHx3gJIYEJ4= + + + +LxBgeyqVuZdZKavnWkFs7YPorS089IkPSUMDvoFVx2gFBy/QWKNx/U1WkZLq5fULskql085LNjc8 +R+RVfRQhBj8dELliUnmtWqsWL17n96BuncFv197dzg9/lwIRzctUMfUQzRZV8wSnM30nU+LqTh9T +guA+B4/BDuOdhO6AIpI= + + + + +MIICmzCCAgQCCQDXI7WLdVZwiTANBgkqhkiG9w0BAQUFADCBjzELMAkGA1UEBhMCS1IxDjAMBgNV +BAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6ZW4gVGVzdCBDQTEiMCAGA1UE +CwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwbVGl6ZW4gUHVibGljIERpc3Ry +aWJ1dG9yIENBMB4XDTEyMTAyOTEzMDMwNFoXDTIyMTAyNzEzMDMwNFowgZMxCzAJBgNVBAYTAktS +MQ4wDAYDVQQIDAVTdXdvbjEOMAwGA1UEBwwFU3V3b24xFjAUBgNVBAoMDVRpemVuIFRlc3QgQ0Ex +IjAgBgNVBAsMGVRpemVuIERpc3RyaWJ1dG9yIFRlc3QgQ0ExKDAmBgNVBAMMH1RpemVuIFB1Ymxp +YyBEaXN0cmlidXRvciBTaWduZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALtMvlc5hENK +90ZdA+y66+Sy0enD1gpZDBh5T9RP0oRsptJv5jjNTseQbQi0SZOdOXb6J7iQdlBCtR343RpIEz8H +mrBy7mSY7mgwoU4EPpp4CTSUeAuKcmvrNOngTp5Hv7Ngf02TTHOLK3hZLpGayaDviyNZB5PdqQdB +hokKjzAzAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAvGp1gxxAIlFfhJH1efjb9BJK/rtRkbYn9+Ez +GEbEULg1svsgnyWisFimI3uFvgI/swzr1eKVY3Sc8MQ3+Fdy3EkbDZ2+WAubhcEkorTWjzWz2fL1 +vKaYjeIsuEX6TVRUugHWudPzcEuQRLQf8ibZWjbQdBmpeQYBMg5x+xKLCJc= + + +MIICtDCCAh2gAwIBAgIJAMDbehElPNKvMA0GCSqGSIb3DQEBBQUAMIGVMQswCQYDVQQGEwJLUjEO +MAwGA1UECAwFU3V3b24xDjAMBgNVBAcMBVN1d29uMRYwFAYDVQQKDA1UaXplbiBUZXN0IENBMSMw +IQYDVQQLDBpUVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEpMCcGA1UEAwwgVGl6ZW4gUHVibGlj +IERpc3RyaWJ1dG9yIFJvb3QgQ0EwHhcNMTIxMDI5MTMwMjUwWhcNMjIxMDI3MTMwMjUwWjCBjzEL +MAkGA1UEBhMCS1IxDjAMBgNVBAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6 +ZW4gVGVzdCBDQTEiMCAGA1UECwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwb +VGl6ZW4gUHVibGljIERpc3RyaWJ1dG9yIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDe +OTS/3nXvkDEmsFCJIvRlQ3RKDcxdWJJp625pFqHdmoJBdV+x6jl1raGK2Y1sp2Gdvpjc/z92yzAp +bE/UVLPh/tRNZPeGhzU4ejDDm7kzdr2f7Ia0U98K+OoY12ucwg7TYNItj9is7Cj4blGfuMDzd2ah +2AgnCGlwNwV/pv+uVQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBACqJ +KO33YdoGudwanZIxMdXuxnnD9R6u72ltKk1S4zPfMJJv482CRGCI4FK6djhlsI4i0Lt1SVIJEed+ +yc3qckGm19dW+4xdlkekon7pViEBWuyHw8OWv3RXtTum1+PGHjBJ2eYY4ZKIpz73U/1NC16sTB/0 +VhfnkHwPltmrpYVe + + + + + \ No newline at end of file diff --git a/tbt_nfcesetestapp/.tproject b/tbt_nfcesetestapp/.tproject new file mode 100644 index 0000000..de5a150 --- /dev/null +++ b/tbt_nfcesetestapp/.tproject @@ -0,0 +1,12 @@ + + + + + wearable-3.0 + + + + + + + diff --git a/tbt_nfcesetestapp/inc/logger.h b/tbt_nfcesetestapp/inc/logger.h new file mode 100644 index 0000000..772ceab --- /dev/null +++ b/tbt_nfcesetestapp/inc/logger.h @@ -0,0 +1,57 @@ +/******************************************************************************* + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * + * 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 logger.h + * @brief This file provide necessary macro for logging information. + * @since_tizen 2.3 + * @author Amlan Chowdhury (amlan.c@samsung.com) + * @date October, 2014 + * @bug + * @credit + */ +#ifndef __LOGGER_H__ +#define __LOGGER_H__ + +#include + +#define LOG_TAG_CORE "[TBT_CORE]_" + +#define DLOG(prio, fmt, arg...) dlog_print(prio, LOG_TAG_CORE, "%s (Line: %d) > " fmt, __func__, __LINE__, ##arg) +#define DBG(fmt, arg...) DLOG(DLOG_DEBUG, fmt, ##arg) +#define ERR(fmt, arg...) DLOG(DLOG_ERROR, fmt, ##arg) + +#define RETM_IF(expr, fmt, arg...) \ +{ \ + if (expr) \ + { \ + ERR(fmt, ##arg); \ + return; \ + } \ +} + +#define RETVM_IF(expr, val, fmt, arg...) \ +{ \ + if (expr) \ + { \ + ERR(fmt, ##arg); \ + return (val); \ + } \ +} + +#define SAFE_DELETE(a) if( (a) != NULL ) free (a); (a) = NULL; + +#endif /* __LOGGER_H__ */ diff --git a/tbt_nfcesetestapp/inc/nfcesetestapp.h b/tbt_nfcesetestapp/inc/nfcesetestapp.h new file mode 100644 index 0000000..704d4f6 --- /dev/null +++ b/tbt_nfcesetestapp/inc/nfcesetestapp.h @@ -0,0 +1,18 @@ +#ifndef __nfcesetestapp_H__ +#define __nfcesetestapp_H__ + +#include +#include +#include +#include +#include "logger.h" + +#define EDJ_FILE "edje/nfcesetestapp.edj" +#define GRP_MAIN "main" +#define USE_GENLIST + +#if !defined(PACKAGE) +#define PACKAGE "org.tizen.esetest" +#endif + +#endif /* __nfcesetestapp_H__ */ diff --git a/tbt_nfcesetestapp/project_def.prop b/tbt_nfcesetestapp/project_def.prop new file mode 100644 index 0000000..b1a1b5e --- /dev/null +++ b/tbt_nfcesetestapp/project_def.prop @@ -0,0 +1,11 @@ +APPNAME = nfcesetestapp + +type = app +profile = wearable-3.0 + +USER_SRCS = src/nfcesetestapp.c +USER_DEFS = +USER_INC_DIRS = inc +USER_OBJS = +USER_LIBS = +USER_EDCS = diff --git a/tbt_nfcesetestapp/res/edje/nfcesetestapp.edc b/tbt_nfcesetestapp/res/edje/nfcesetestapp.edc new file mode 100644 index 0000000..d7200d5 --- /dev/null +++ b/tbt_nfcesetestapp/res/edje/nfcesetestapp.edc @@ -0,0 +1,88 @@ +/* +* Copyright (c) 2014 Samsung Electronics Co., Ltd 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. +*/ +collections { + group { name: "main"; + parts { + part { name: "txt_title"; + type: SWALLOW; + description{ + state: "default" 0.0; + align: 0.0 0.0; + visible: 1; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 1.0 0.10; + } + } + } + part { name: "txt_title2"; + type: SWALLOW; + description{ + state: "default" 0.0; + align: 0.0 0.0; + visible: 1; + rel1 { + relative: 0.0 0.10; + } + rel2 { + relative: 1.0 0.20; + } + } + } + part { name: "list"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.20; + } + rel2 { + relative: 1.0 0.70; + } + visible: 1; + } + } + part { name: "padding2"; + type: SPACER; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.70; + } + rel2 { + relative: 1.0 1.0; + } + fixed: 1 0; + } + } + part { name: "button"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 1.0; + } + rel2 { + relative: 1.0 1.0; + } + visible: 1; + } + } + } + } +} diff --git a/tbt_nfcesetestapp/shared/res/nfcesetestapp.png b/tbt_nfcesetestapp/shared/res/nfcesetestapp.png new file mode 100644 index 0000000..9765b1b Binary files /dev/null and b/tbt_nfcesetestapp/shared/res/nfcesetestapp.png differ diff --git a/tbt_nfcesetestapp/shared/res/wallet.xml b/tbt_nfcesetestapp/shared/res/wallet.xml new file mode 100644 index 0000000..980a68f --- /dev/null +++ b/tbt_nfcesetestapp/shared/res/wallet.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tbt_nfcesetestapp/src/nfcesetestapp.c b/tbt_nfcesetestapp/src/nfcesetestapp.c new file mode 100644 index 0000000..b89f51a --- /dev/null +++ b/tbt_nfcesetestapp/src/nfcesetestapp.c @@ -0,0 +1,465 @@ +#include "nfcesetestapp.h" +#include + +#define OFF_HOST_APDU_SERVICE "http://tizen.org/appcontrol/operation/nfc/card_emulation/off_host_apdu_service" + +typedef struct appdata { + Evas_Object *win; + Evas_Object *conform; + Evas_Object *label; + Evas_Object *list; + + Evas_Object* layout; + char **items; + int itemCount; +} appdata_s; + + + +#ifdef USE_GENLIST +typedef struct +{ + int index; + Elm_Object_Item *item; + char* text; +}item_data; + +static void _gl_del_cb(void *data, Evas_Object *obj EINA_UNUSED); +static char *_gl_text_get_cb(void *data, Evas_Object *obj, const char *part); +Elm_Object_Item* _elm_genlist_item_append(appdata_s *this, char *item_text, void* data); +#endif + +static char* get_nfc_error(nfc_error_e error_code); +static void app_get_resource(const char *edj_file_in, char *edj_path_out, int edj_path_max); +static char* get_ese_type(nfc_se_type_e type); +static void nfc_transaction_event_callback(nfc_se_type_e se_type, unsigned char* aid, int aid_size , unsigned char* param, int param_size, void *user_data); + +static inline char *format_string(const char *format, ...) +{ + va_list arg; + char* chTemp; + chTemp= (char*)malloc(1024 * sizeof(char)); + RETVM_IF(!chTemp, NULL,"malloc failed."); + va_start(arg,format); + vsnprintf(chTemp,1024,format,arg); + va_end(arg); + return chTemp; +} + + +#ifdef USE_GENLIST +static void _gl_del_cb(void *data, Evas_Object *obj EINA_UNUSED) +{ + DBG("_gl_del_cb"); + item_data *id = data; + RETM_IF(!id, "item is NULL"); + SAFE_DELETE(id); +} + +static char *_gl_text_get_cb(void *data, Evas_Object *obj, const char *part) +{ + DBG("_gl_text_get_cb"); + item_data *id = data; + + if(part && !strcmp(part, "elm.text")) + { + char buf[1024]; + snprintf(buf, sizeof(buf),"%s", id->text); + return strdup(buf); + } + return NULL; +} + + +Elm_Object_Item* _elm_genlist_item_append(appdata_s *this, char *item_text, void* data) +{ + + DBG("_elm_genlist_item_append%s:", item_text); + static int index = 1; + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + + itc->item_style = "default"; + itc->func.text_get = _gl_text_get_cb; + itc->func.content_get = NULL; + itc->func.del = _gl_del_cb; + + item_data *id = calloc(sizeof(item_data), 1); + id->index = index++; + id->text = strdup(item_text); + + elm_scroller_single_direction_set(this->list, ELM_SCROLLER_SINGLE_DIRECTION_HARD); + + //HOMOGENEOUS MODE + //If item height is same when each style name is same, Use homogeneous mode. + elm_genlist_homogeneous_set(this->list, EINA_TRUE); + + //COMPRESS MODE + //For the Mobile view, because it has full window, compresse mode should be used. + elm_genlist_mode_set(this->list, ELM_LIST_COMPRESS); + + Elm_Object_Item *item = elm_genlist_item_append(this->list, itc,id, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + id->item = item; + + elm_genlist_item_class_free(itc); + + return item; +} +#endif + + +static void +win_delete_request_cb(void *data, Evas_Object *obj, void *event_info) +{ + ui_app_exit(); +} + + +static void layout_back_cb(void *data, Evas_Object *obj, void *event_info) +{ + appdata_s *ad = data; + /* Let window go to hide state. */ + elm_win_lower(ad->win); +} + +static void +app_get_resource(const char *edj_file_in, char *edj_path_out, int edj_path_max) +{ + char *res_path = app_get_resource_path(); + if (res_path) { + snprintf(edj_path_out, edj_path_max, "%s%s", res_path, edj_file_in); + free(res_path); + } +} +static void +create_base_gui(appdata_s *ad) +{ + + char edj_path[PATH_MAX] = {0, }; + + /* Window */ + /* Create and initialize elm_win. + elm_win is mandatory to manipulate window. */ + ad->win = elm_win_util_standard_add(PACKAGE, PACKAGE); + elm_win_conformant_set(ad->win, EINA_TRUE); + elm_win_autodel_set(ad->win, EINA_TRUE); + + if (elm_win_wm_rotation_supported_get(ad->win)) { + int rots[4] = { 0, 90, 180, 270 }; + elm_win_wm_rotation_available_rotations_set(ad->win, (const int *)(&rots), 4); + } + + evas_object_smart_callback_add(ad->win, "delete,request", win_delete_request_cb, NULL); + + /* Conformant */ + /* Create and initialize elm_conformant. + elm_conformant is mandatory for base gui to have proper size + when indicator or virtual keypad is visible. */ + ad->conform = elm_conformant_add(ad->win); + elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW); + elm_win_indicator_opacity_set(ad->win, ELM_WIN_INDICATOR_OPAQUE); + evas_object_size_hint_weight_set(ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(ad->win, ad->conform); + evas_object_show(ad->conform); + + /* Base Layout */ + /* Create an actual view of the base gui. + Modify this part to change the view. */ + app_get_resource(EDJ_FILE, edj_path, (int)PATH_MAX); + ad->layout = elm_layout_add(ad->win); + elm_layout_file_set(ad->layout, edj_path, GRP_MAIN); + evas_object_size_hint_weight_set(ad->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + eext_object_event_callback_add(ad->layout, EEXT_CALLBACK_BACK, layout_back_cb, ad); + elm_object_content_set(ad->conform, ad->layout); + + ad->label = elm_label_add(ad->layout); + elm_object_text_set(ad->label, "NFC ese test"); + elm_object_part_content_set(ad->layout, "txt_title", ad->label); + + +// lets create dummy data :D +// char *data[]={"Artcell", "Dream Theater", "Pink Floyd","Iron Maiden","SOAD","Prisoners","Poets Of The Fall","Endless River","No room for looser!"}; +// ad->items=data; +// ad->itemCount=9; + + // create list +#ifdef USE_GENLIST + ad->list = elm_genlist_add(ad->layout); + evas_object_size_hint_weight_set(ad->list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(ad->list, EVAS_HINT_FILL, EVAS_HINT_FILL); + + + elm_genlist_select_mode_set(ad->list,ELM_OBJECT_SELECT_MODE_ALWAYS); +// int i; +// for (i = 0; iitemCount; ++i) +// { +// DBG("[%d] data is %d %s ",ad->itemCount,i,data[i]); +// _elm_genlist_item_append(ad, data[i], ad->win); +// } + evas_object_show(ad->list); + elm_object_part_content_set(ad->layout, "list", ad->list); +#endif + + evas_object_show(ad->layout); + /* Show window after base gui is set up */ + evas_object_show(ad->win); +} + +static void nfc_transaction_event_callback(nfc_se_type_e se_type, unsigned char* aid, int aid_size , unsigned char* param, int param_size, void *user_data) +{ + DBG("nfc_transaction_event_callback"); + appdata_s *ad = (appdata_s*)user_data; + RETM_IF(NULL == ad, "data is NULL"); + + int i = 0; + char cmd_apdu[1024] = {0,}; + char parameter[1024] = {0,}; + char* str; + + DBG("nfc_transaction_event_callback() se_type : %s", get_ese_type(se_type)); + + for (i = 0; i < aid_size; i++) + { + sprintf(&(cmd_apdu[i * 2]), "%02X", aid[i]); + } + DBG("nfc_transaction_event_callback() aid : %s", cmd_apdu); + str = format_string("aid: %s", cmd_apdu); + _elm_genlist_item_append(ad, str, ad->win); + SAFE_DELETE(str); + + + for (i = 0; i < param_size; i++) + { + sprintf(&(parameter[i * 2]), "%02X", param[i]); + } + DBG("nfc_transaction_event_callback() param : %s", parameter); + str = format_string("param: %s", parameter); + _elm_genlist_item_append(ad, str, ad->win); + SAFE_DELETE(str); + DBG("nfc_transaction_event_callback() param_size : %d", param_size); + str = format_string("param_size: %d", param_size); + _elm_genlist_item_append(ad, str, ad->win); + SAFE_DELETE(str); + + evas_object_show(ad->list); + + return; +} + +static bool +app_create(void *data) +{ + /* Hook to take necessary actions before main event loop starts + Initialize UI resources and application's data + If this function returns true, the main loop of application starts + If this function returns false, the application is terminated */ + appdata_s *ad = data; + nfc_se_transaction_event_cb nfc_transaction_cb = nfc_transaction_event_callback; + + int ret = nfc_manager_initialize(); + RETVM_IF(ret != NFC_ERROR_NONE, false, "nfc_manager_initialize error: %s", get_nfc_error(ret)); + ret = nfc_manager_set_se_transaction_event_cb(NFC_SE_TYPE_ESE, nfc_transaction_cb, ad); + RETVM_IF(ret != NFC_ERROR_NONE, false, "nfc_manager_set_se_transaction_event_cb error: %s", get_nfc_error(ret)); + DBG("nfc_manager_set_se_transaction_event_cb() result : %d", ret); + + + create_base_gui(ad); + + return true; +} + +static void +app_control(app_control_h app_control, void *data) +{ + /* Handle the launch request. */ +} + +static void +app_pause(void *data) +{ + /* Take necessary actions when application becomes invisible. */ +} + +static void +app_resume(void *data) +{ + /* Take necessary actions when application becomes visible. */ +} + +static void +app_terminate(void *data) +{ + /* Release all resources. */ +} + +static void +ui_app_lang_changed(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_LANGUAGE_CHANGED*/ + char *locale = NULL; + system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale); + elm_language_set(locale); + free(locale); + return; +} + +static void +ui_app_orient_changed(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_DEVICE_ORIENTATION_CHANGED*/ + return; +} + +static void +ui_app_region_changed(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_REGION_FORMAT_CHANGED*/ +} + +static void +ui_app_low_battery(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_LOW_BATTERY*/ +} + +static void +ui_app_low_memory(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_LOW_MEMORY*/ +} + +int +main(int argc, char *argv[]) +{ + appdata_s ad = {0,}; + int ret = 0; + + ui_app_lifecycle_callback_s event_callback = {0,}; + app_event_handler_h handlers[5] = {NULL, }; + + event_callback.create = app_create; + event_callback.terminate = app_terminate; + event_callback.pause = app_pause; + event_callback.resume = app_resume; + event_callback.app_control = app_control; + + ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, ui_app_low_battery, &ad); + ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, ui_app_low_memory, &ad); + ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, ui_app_orient_changed, &ad); + ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, &ad); + ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, ui_app_region_changed, &ad); + + ret = ui_app_main(argc, argv, &event_callback, &ad); + if (ret != APP_ERROR_NONE) { + DBG("app_main() is failed. err = %d", ret); + } + + return ret; +} + + +static char* get_nfc_error(nfc_error_e error_code) +{ + char* error; + +switch(error_code) +{ + case NFC_ERROR_NONE: + error = "NFC_ERROR_NONE"; + break; + case NFC_ERROR_OUT_OF_MEMORY: + error = "NFC_ERROR_OUT_OF_MEMORY"; + break; + case NFC_ERROR_OPERATION_FAILED: + error = "NFC_ERROR_OPERATION_FAILED"; + break; + case NFC_ERROR_INVALID_PARAMETER: + error = "NFC_ERROR_INVALID_PARAMETER"; + break; + case NFC_ERROR_INVALID_NDEF_MESSAGE: + error = "NFC_ERROR_INVALID_NDEF_MESSAGE"; + break; + case NFC_ERROR_INVALID_RECORD_TYPE: + error = "NFC_ERROR_INVALID_RECORD_TYPE"; + break; + case NFC_ERROR_TIMED_OUT: + error = "NFC_ERROR_TIMED_OUT"; + break; + case NFC_ERROR_DEVICE_BUSY: + error = "NFC_ERROR_DEVICE_BUSY"; + break; + case NFC_ERROR_NO_DEVICE: + error = "NFC_ERROR_NO_DEVICE"; + break; + case NFC_ERROR_NOT_ACTIVATED: + error = "NFC_ERROR_NOT_ACTIVATED"; + break; + case NFC_ERROR_NOT_SUPPORTED: + error = "NFC_ERROR_NOT_SUPPORTED"; + break; + case NFC_ERROR_ALREADY_ACTIVATED: + error = "NFC_ERROR_ALREADY_ACTIVATED"; + break; + case NFC_ERROR_ALREADY_DEACTIVATED: + error = "NFC_ERROR_ALREADY_DEACTIVATED"; + break; + case NFC_ERROR_READ_ONLY_NDEF: + error = "NFC_ERROR_READ_ONLY_NDEF"; + break; + case NFC_ERROR_NO_SPACE_ON_NDEF: + error = "NFC_ERROR_NO_SPACE_ON_NDEF"; + break; + case NFC_ERROR_NO_NDEF_MESSAGE: + error = "NFC_ERROR_NO_NDEF_MESSAGE"; + break; + case NFC_ERROR_NOT_NDEF_FORMAT: + error = "NFC_ERROR_NOT_NDEF_FORMAT"; + break; + case NFC_ERROR_SECURITY_RESTRICTED: + error = "NFC_ERROR_SECURITY_RESTRICTED"; + break; + case NFC_ERROR_PERMISSION_DENIED: + error = "NFC_ERROR_PERMISSION_DENIED"; + break; + case NFC_ERROR_ILLEGAL_STATE: + error = "NFC_ERROR_ILLEGAL_STATE"; + break; + case NFC_ERROR_NOT_INITIALIZED: + error = "NFC_ERROR_NOT_INITIALIZED"; + break; + case NFC_ERROR_TAG_NOT_SUPPORTED: + error = "NFC_ERROR_TAG_NOT_SUPPORTED"; + break; + case NFC_ERROR_AID_ALREADY_REGISTERED: + error = "NFC_ERROR_AID_ALREADY_REGISTERED"; + } + + return error; +} + +static char* get_ese_type(nfc_se_type_e type) +{ + char* ret; + switch(type) + { + case NFC_SE_TYPE_DISABLE: + ret = "NFC_SE_TYPE_DISABLE"; + break; + case NFC_SE_TYPE_ESE: + ret = "NFC_SE_TYPE_ESE"; + break; + case NFC_SE_TYPE_UICC: + ret = "NFC_SE_TYPE_UICC"; + break; + case NFC_SE_TYPE_SDCARD: + ret = "NFC_SE_TYPE_SDCARD"; + break; + case NFC_SE_TYPE_HCE: + ret = "NFC_SE_TYPE_HCE"; + break; + default: + ret = "UNKNOWN_ERROR"; + break; + } + + return ret; +} diff --git a/tbt_nfcesetestapp/tizen-manifest.xml b/tbt_nfcesetestapp/tizen-manifest.xml new file mode 100644 index 0000000..6cbc6eb --- /dev/null +++ b/tbt_nfcesetestapp/tizen-manifest.xml @@ -0,0 +1,17 @@ + + + + + + nfcesetestapp.png + + + + + + + + http://tizen.org/privilege/nfc + http://tizen.org/privilege/nfc.cardemulation + + diff --git a/tbtcoreapp/inc/model/tbt-info.h b/tbtcoreapp/inc/model/tbt-info.h index a33f21b..4124ddf 100644 --- a/tbtcoreapp/inc/model/tbt-info.h +++ b/tbtcoreapp/inc/model/tbt-info.h @@ -90,6 +90,7 @@ typedef enum { TBT_APP_NFC_P2P, TBT_APP_NFC_TAG, TBT_APP_NFC_HCE_PREFERRED, + TBT_APP_NFC_ESE, TBT_APP_DISPLAY_DISPLAY, diff --git a/tbtcoreapp/inc/utils/app_module_config.h b/tbtcoreapp/inc/utils/app_module_config.h index 0a76708..1847cdf 100644 --- a/tbtcoreapp/inc/utils/app_module_config.h +++ b/tbtcoreapp/inc/utils/app_module_config.h @@ -66,6 +66,7 @@ #define TBT_MODULE_APP_NFC_TAG #define TBT_MODULE_APP_NFC_P2P #define TBT_MODULE_APP_NFC_HCE_PREFERRED +#define TBT_MODULE_APP_NFC_ESE #define TBT_MODULE_DISPLAY #define TBT_MODULE_APP_DISPLAY_DISPLAY diff --git a/tbtcoreapp/inc/view/tbt-nfc-ese-view.h b/tbtcoreapp/inc/view/tbt-nfc-ese-view.h new file mode 100644 index 0000000..f03cf23 --- /dev/null +++ b/tbtcoreapp/inc/view/tbt-nfc-ese-view.h @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * + * 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 tbt-nfc_ese-view.h + * @brief nfc_ese app test. + * + * @author A. B. M. Nazibullah (nazib.ullah@samsung.com) + * @date June, 2016 + * @bug no known bug + * @credit + * + */ + +#ifndef __TBT_NFC_ESE_VIEW_H__ +#define __TBT_NFC_ESE_VIEW_H__ + +#include "utils/app_module_config.h" +#ifdef TBT_MODULE_APP_NFC_ESE + +#include +#include "model/tbt-list.h" + + +/** + * @typedef nfc_ese_view + * @since_tizen 2.3 + * @brief A nfc_ese viewer view handle. + */ +typedef struct _nfc_ese_view nfc_ese_view; + +/** + * @brief Add nfc_ese view + * @since_tizen 2.3 + * @param[in] app The pointer to _app_data instance + * @param[in] navi The naviframe object + * @return nfc_ese view data + */ +nfc_ese_view *nfc_ese_view_add(Evas_Object *navi, tbt_info *tbt_info, Elm_Object_Item *item); + +#endif +#endif // __TBT_NFC_ESE_VIEW_H__ diff --git a/tbtcoreapp/src/model/tbt-list.c b/tbtcoreapp/src/model/tbt-list.c index 5812e41..de7ae71 100644 --- a/tbtcoreapp/src/model/tbt-list.c +++ b/tbtcoreapp/src/model/tbt-list.c @@ -634,6 +634,19 @@ static tbt_info tbtapps[] = .features_required = {17,81} }, #endif + #ifdef TBT_MODULE_APP_NFC_ESE + // NFC ESE Test + { + .name = "NFC ESE", + .parent = "NFC", + .apptype = TBT_APP_NFC_ESE, + .icon_name = "dummy", + .info = "Test NFC HCE ESE card emulation", + .result = 0, + .required_features_count = 2, + .features_required = {17,81} + }, + #endif #endif #ifdef TBT_MODULE_DISPLAY diff --git a/tbtcoreapp/src/view/tbt-genlist-view.c b/tbtcoreapp/src/view/tbt-genlist-view.c index b1a6614..0230eaf 100644 --- a/tbtcoreapp/src/view/tbt-genlist-view.c +++ b/tbtcoreapp/src/view/tbt-genlist-view.c @@ -96,6 +96,7 @@ #include "view/tbt-contacts-view.h" #include "view/tbt-d2d-view.h" #include "view/tbt-nfc-hce-preferred-view.h" +#include "view/tbt-nfc-ese-view.h" typedef struct @@ -799,6 +800,9 @@ static void _gl_item_selected_cb(void *data, Evas_Object *obj EINA_UNUSED, void case TBT_APP_NFC_HCE_PREFERRED: nfc_hce_preferred_view_add(view->navi, info, it); break; + case TBT_APP_NFC_ESE: + nfc_ese_view_add(view->navi, info, it); + break; #endif #ifdef TBT_MODULE_DISPLAY diff --git a/tbtcoreapp/src/view/tbt-nfc-ese-view.c b/tbtcoreapp/src/view/tbt-nfc-ese-view.c new file mode 100644 index 0000000..94d5956 --- /dev/null +++ b/tbtcoreapp/src/view/tbt-nfc-ese-view.c @@ -0,0 +1,262 @@ +/******************************************************************************* + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * + * 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 tbt-nfc_ese-view.c + * @brief nfc_ese app test. + * + * @author A. B. M. Nazibullah (nazib.ullah@samsung.com) + * @date June, 2016 + * @bug no known bug + * @credit + * + */ + +#include "utils/app_module_config.h" +#ifdef TBT_MODULE_APP_NFC_ESE + +#include + +#include "utils/logger.h" +#include "utils/config.h" +#include "utils/ui-utils.h" +#include "view/tbt-nfc-ese-view.h" +#include "view/tbt-common-view.h" + +#define NFC_ESE_APP_PACKAGE_NAME "org.tizen.tbt_nfcesetestapp" + +struct _nfc_ese_view +{ + common_view* view; + + Evas_Object *label; + Evas_Object *data_list; + Evas_Object* single_btn; + Evas_Object* multiple_btn; + + app_control_h service; +}; + +static Evas_Object *add_control_layout(nfc_ese_view *this, Evas_Object *parent); + +static void _app_destroy_cb(void* this); +static void _view_button_pressed_cb(void *data, Evas_Object *obj, void *event_info); +static void app_control_view_reply_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *data); + + +/** + * @function get_app_control_error + * @since_tizen 2.3 + * @description Get App Control Error + * @parameter int: Int + * @return static char* + */ +static char* get_app_control_error(int ret) +{ + char* error = NULL; + + switch (ret) { + case APP_CONTROL_ERROR_NONE: + error = "APP_CONTROL_ERROR_NONE"; + break; + case APP_CONTROL_ERROR_INVALID_PARAMETER: + error = "APP_CONTROL_ERROR_INVALID_PARAMETER"; + break; + case APP_CONTROL_ERROR_OUT_OF_MEMORY: + error = "APP_CONTROL_ERROR_OUT_OF_MEMORY"; + break; + case APP_CONTROL_ERROR_APP_NOT_FOUND: + error = "APP_CONTROL_ERROR_APP_NOT_FOUND"; + break; + case APP_CONTROL_ERROR_KEY_NOT_FOUND: + error = "APP_CONTROL_ERROR_KEY_NOT_FOUND"; + break; + case APP_CONTROL_ERROR_KEY_REJECTED: + error = "APP_CONTROL_ERROR_KEY_REJECTED"; + break; + case APP_CONTROL_ERROR_INVALID_DATA_TYPE: + error = "APP_CONTROL_ERROR_INVALID_DATA_TYPE"; + break; + case APP_CONTROL_ERROR_LAUNCH_REJECTED: + error = "APP_CONTROL_ERROR_LAUNCH_REJECTED"; + break; + case APP_CONTROL_ERROR_PERMISSION_DENIED: + error = "APP_CONTROL_ERROR_PERMISSION_DENIED"; + break; + case APP_CONTROL_ERROR_LAUNCH_FAILED: + error = "APP_CONTROL_ERROR_LAUNCH_FAILED"; + break; + case APP_CONTROL_ERROR_TIMED_OUT: + error = "APP_CONTROL_ERROR_TIMED_OUT"; + break; +#ifdef TIZEN_3_0 + case APP_CONTROL_ERROR_IO_ERROR: + error = "APP_CONTROL_ERROR_IO_ERROR"; + break; +#endif +#ifdef TIZEN_2_4 + case APP_CONTROL_ERROR_IO_ERROR: + error = "APP_CONTROL_ERROR_IO_ERROR"; + break; +#endif + default: + error = "Unknown Error"; + break; + } + return error; +} + + +/** + * @function nfc_ese_view_add + * @since_tizen 2.3 + * @description Pick View Add + * @parameter Evas_Object*: Evas Object Pointer, tbt_info*: Tbt Info Pointer, Elm_Object_Item*: Elm Object Item Pointer + * @return nfc_ese_view* + */ +nfc_ese_view *nfc_ese_view_add(Evas_Object *navi, tbt_info *tbt_info, Elm_Object_Item *item) +{ + RETVM_IF(NULL == navi, NULL, "navi is null"); + + nfc_ese_view *this = NULL; + this = calloc(1, sizeof(nfc_ese_view)); + RETVM_IF(!this, NULL, "calloc failed"); + + this->view = calloc(1, sizeof(common_view)); + RETVM_IF(!this->view, NULL, "calloc failed"); + + tbt_info->layout_group = "4_part_txt_cnt_btn_btn"; + tbt_info->layout_file = get_edje_path("4_part_txt_cnt2_btn_btn.edj"); + + common_view_add(navi, tbt_info, item, this->view, _app_destroy_cb, this); + RETVM_IF(NULL == this->view, NULL, "navi is null"); + + this->label = ui_utils_label_add(this->view->layout, ""); + RETVM_IF(!this->label, NULL, "elm_list_add failed"); + ui_utils_label_set_text(this->label, "Launch nfc ese test app.", "left"); + elm_object_part_content_set(this->view->layout, "1txt", this->label); + + Evas_Object *control = add_control_layout(this, this->view->layout); + elm_object_part_content_set(this->view->layout, "1txt_2cnt_3btn", control); + + return this; +} + + +/** + * @function add_control_layout + * @since_tizen 2.3 + * @description Add Control Layout + * @parameter nfc_ese_view*: Pick View Pointer, Evas_Object*: Evas Object Pointer + * @return static Evas_Object* + */ +static Evas_Object *add_control_layout(nfc_ese_view *this, Evas_Object *parent) +{ + RETVM_IF(NULL == this, NULL, "view is NULL"); + + Evas_Object *table = elm_table_add(parent); + + evas_object_size_hint_weight_set(table, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(table, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(table); + + elm_table_padding_set(table, 0, 0); + this->single_btn = ui_utils_push_button_add(this, table, "Launch App", _view_button_pressed_cb); + elm_table_pack(table, this->single_btn, 0, 0, 1, 1); + + return table; +} + +/** + * @function _view_button_pressed_cb + * @since_tizen 2.3 + * @description View Button Pressed Cb + * @parameter void*: Void Pointer, Evas_Object*: Evas Object Pointer, void*: Void Pointer + * @return static void + */ +static void _view_button_pressed_cb(void *data, Evas_Object *obj, void *event_info) +{ + RETM_IF(NULL == data, "data is NULL"); + + nfc_ese_view *view = NULL; + view = (nfc_ese_view*)data; + RETM_IF(NULL == view, "view is NULL"); + + char *appid = NFC_ESE_APP_PACKAGE_NAME; + int ret = app_control_create(&view->service); + RETM_IF(APP_CONTROL_ERROR_NONE != ret, "app_control_create failed :%s", get_app_control_error(ret)); + RETM_IF(NULL == view->service, "Service NULL! "); + ret = app_control_set_app_id(view->service, appid); + RETM_IF(APP_CONTROL_ERROR_NONE != ret, "app_control_set_app_id failed :%s", get_app_control_error(ret)); + ret = app_control_send_launch_request(view->service , app_control_view_reply_cb, view); + RETM_IF(APP_CONTROL_ERROR_NONE != ret, "app_control_send_launch_request failed :%s", get_app_control_error(ret)); + ui_utils_label_set_text(view->label, "App launch requested.", "left"); +} + + + +/** + * @function app_control_view_reply_cb + * @since_tizen 2.3 + * @description App Control View Reply Cb + * @parameter app_control_h: App Control H, void*: Void Pointer + * @return static void + */ +static void app_control_view_reply_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *data) +{ + RETM_IF(NULL == data, "data is NULL"); + + nfc_ese_view *view = NULL; + view = (nfc_ese_view*)data; + RETM_IF(NULL == view, "view is NULL"); + + if(result == APP_CONTROL_RESULT_SUCCEEDED) + { + int result; + char *app_id; + + if(reply != NULL) + { + result = app_control_get_app_id(reply, &app_id); + RETM_IF(APP_CONTROL_ERROR_NONE != result, "app_control_create failed :%s", get_app_control_error(result)); + DBG("app_id is %s", app_id); + + ui_utils_label_set_text(view->label, "App launched successfully.", "left"); + } + } +} + + + +/** + * @function _app_destroy_cb + * @since_tizen 2.3 + * @description App Destroy Cb + * @parameter void*: Void Pointer + * @return static void + */ +static void _app_destroy_cb(void* this) +{ + RETM_IF(NULL == this, "data is NULL"); + + nfc_ese_view *view = NULL; + view = (nfc_ese_view*)this; + RETM_IF(NULL == view, "view is NULL"); + + SAFE_DELETE(view->view); + SAFE_DELETE(view); +} + +#endif