alljoyn-gwagent-1504/0000755000175600017560000000000012724255473014500 5ustar alljoynalljoynalljoyn-gwagent-1504/java/0000755000175600017560000000000012724255335015416 5ustar alljoynalljoynalljoyn-gwagent-1504/java/GatewayController/0000755000175600017560000000000012724255335021063 5ustar alljoynalljoynalljoyn-gwagent-1504/java/GatewayController/res/0000755000175600017560000000000012724255335021654 5ustar alljoynalljoynalljoyn-gwagent-1504/java/GatewayController/res/values-v11/0000755000175600017560000000000012724255335023560 5ustar alljoynalljoynalljoyn-gwagent-1504/java/GatewayController/res/values-v11/styles.xml0000644000175600017560000000247012724255335025630 0ustar alljoynalljoyn alljoyn-gwagent-1504/java/GatewayController/res/drawable-mdpi/0000755000175600017560000000000012724255335024364 5ustar alljoynalljoynalljoyn-gwagent-1504/java/GatewayController/res/drawable-mdpi/ic_drawer.png0000755000175600017560000000173712724255335027044 0ustar alljoynalljoynPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<#iTXtXML:com.adobe.xmp OtRIDATxb?%(j31P(60x/b-"0q@q,Ȥ &4/A=IENDB`alljoyn-gwagent-1504/java/GatewayController/res/drawable-mdpi/ic_launcher.png0000644000175600017560000000226612724255335027354 0ustar alljoynalljoynPNG  IHDR00`ntRNSn pHYs  VIDATXOgwpx|)0J@IgَڎZq~I))h2uDd_n]ڙ&6I#kfTK41og78O?q}%=<QJEEi%pAO?+Σ9ٺ>*A}")b9Mt"NԴV+LTEg1z7nX:?RJ""s⯄7LwOy=4;17(LUnni齸g h'~A7ɔqi3DT9X%NDl*Exի "|Dt#l 瀛,ì[MD2U\|GIeklۧ4swQIVy#LŽ{xMMF[rQTgob`1 br&Sbw#Wl6Ϯvt0Nڻg #' ;-㻉S>@)1zhiLǣ+. h埛㱼4dɛs/WCi3/_ Ơ+q1AA!@ʪn>rL[Pp Y ]{"ZA}*Ag;ड़c  -~Ѿ Fa%|4b?CgO@+er6J ˳4T&3r-tӗep}B%:W:@!g<0[I~ r30H_a6 =i8F~1?ɳMRl_ )Xٗ;y3x*zRZ㲁27f#GQ,3Jކܠ~+FCuyjtE8 ߋL3e~p"R,ςD[3&àT< “ Z eDfH%p 2NQYVpoq)hA\{y:,TrԧBhz? /63VzgJd͌|1n_Jtz\n l47 })by)2Lg,0>q[[ٴopHIENDB`alljoyn-gwagent-1504/java/GatewayController/res/drawable-mdpi/drawer_shadow.9.png0000755000175600017560000000021212724255335030070 0ustar alljoynalljoynPNG  IHDR"b8QIDATxc` 'O~&M;qD &(J@ T79xԩJIA#^p Bp l1cIENDB`alljoyn-gwagent-1504/java/GatewayController/res/drawable-xxhdpi/0000755000175600017560000000000012724255335024737 5ustar alljoynalljoynalljoyn-gwagent-1504/java/GatewayController/res/drawable-xxhdpi/ic_launcher.png0000644000175600017560000000306012724255335027720 0ustar alljoynalljoynPNG  IHDR``motRNSn pHYs  IDATx[KKIBZ5M5B@DZȭ(j6f\1:n||,u۟5)NkHeO[M)i(sżԅF i80CL4УqnzV L ?xϡdQYHӊq3[Z8QU峨Zp lvD8!IhA YY>rE}s҅Y;`h@*΂T@Z Vu˷B V~'@%Dˏ@ \kgAN FU5l<^HZZ*V,ŀfH ΂J'kN e>X Uu Uu-_@R}u2o,ְz2|EhZFt4]|kgAj E F^#M2 ,%N6I{'߿$N wXy4^6I2~߿aYLznCEUB|dT3gkSĉ4L}|4WE32>lc \3{wC;Y4>[ 7lme-@u3cqw+Ϛ@wB(@rX %Д% {n!fÒ6C 0Dއiͅ-n6W^C+52 iIm d`{ Ɩ,J.@<1fVE;``_ДQ^_剉`( NAa3 ~Aa32Ƃf'8fVS yu#bd ˦IENDB`alljoyn-gwagent-1504/java/GatewayController/res/drawable-xhdpi/0000755000175600017560000000000012724255335024547 5ustar alljoynalljoynalljoyn-gwagent-1504/java/GatewayController/res/drawable-xhdpi/ic_drawer.png0000755000175600017560000000172512724255335027224 0ustar alljoynalljoynPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<#iTXtXML:com.adobe.xmp HIDATx X>` vdNεM)(! RLB;t;IENDB`alljoyn-gwagent-1504/java/GatewayController/res/drawable-xhdpi/ic_launcher.png0000644000175600017560000000306012724255335027530 0ustar alljoynalljoynPNG  IHDR``motRNSn pHYs  IDATx[KKIBZ5M5B@DZȭ(j6f\1:n||,u۟5)NkHeO[M)i(sżԅF i80CL4УqnzV L ?xϡdQYHӊq3[Z8QU峨Zp lvD8!IhA YY>rE}s҅Y;`h@*΂T@Z Vu˷B V~'@%Dˏ@ \kgAN FU5l<^HZZ*V,ŀfH ΂J'kN e>X Uu Uu-_@R}u2o,ְz2|EhZFt4]|kgAj E F^#M2 ,%N6I{'߿$N wXy4^6I2~߿aYLznCEUB|dT3gkSĉ4L}|4WE32>lc \3{wC;Y4>[ 7lme-@u3cqw+Ϛ@wB(@rX %Д% {n!fÒ6C 0Dއiͅ-n6W^C+52 iIm d`{ Ɩ,J.@<1fVE;``_ДQ^_剉`( NAa3 ~Aa32Ƃf'8fVS yu#bd ˦IENDB`alljoyn-gwagent-1504/java/GatewayController/res/drawable-xhdpi/drawer_shadow.9.png0000755000175600017560000000024012724255335030254 0ustar alljoynalljoynPNG  IHDRBgIDATxc` 3&Moĉ7@7e _H 4`TyD: YIDATxb?-KSsW EouUܣq@1`h`4F o4'zA q>b89TPnIENDB`alljoyn-gwagent-1504/java/GatewayController/res/drawable-hdpi/ic_launcher.png0000644000175600017560000000226612724255335027347 0ustar alljoynalljoynPNG  IHDR00`ntRNSn pHYs  VIDATXOgwpx|)0J@IgَڎZq~I))h2uDd_n]ڙ&6I#kfTK41og78O?q}%=<QJEEi%pAO?+Σ9ٺ>*A}")b9Mt"NԴV+LTEg1z7nX:?RJ""s⯄7LwOy=4;17(LUnni齸g h'~A7ɔqi3DT9X%NDl*Exի "|Dt#l 瀛,ì[MD2U\|GIeklۧ4swQIVy#LŽ{xMMF[rQTgob`1 br&Sbw#Wl6Ϯvt0Nڻg #' ;-㻉S>@)1zhiLǣ+. h埛㱼4dɛs/WCi3/_ Ơ+q1AA!@ʪn>rL[Pp Y ]{"ZA}*Ag;ड़c  -~Ѿ Fa%|4b?CgO@+er6J ˳4T&3r-tӗep}B%:W:@!g<0[I~ r30H_a6 =i8F~1?ɳMRl_ )Xٗ;y3x*zRZ㲁27f#GQ,3Jކܠ~+FCuyjtE8 ߋL3e~p"R,ςD[3&àT< “ Z eDfH%p 2NQYVpoq)hA\{y:,TrԧBhz? /63VzgJd͌|1n_Jtz\n l47 })by)2Lg,0>q[[ٴopHIENDB`alljoyn-gwagent-1504/java/GatewayController/res/drawable-hdpi/drawer_shadow.9.png0000755000175600017560000000031512724255335030067 0ustar alljoynalljoynPNG  IHDR4 IDATxc` 3&MmO ^ ='LyZ}}}BX5%A 0 L3qD -O THOQC\ 4qht 6ePj'ΨQ8^O`PV ؙck`XBXU5@XVWd .+ kvd .kZd .Jknd ."{D΅0;zzN{ `G.Pd9TZ#$1h͊jC^ xbrzMaGQoyM?F~ Fb+`YiؒD̆+ŐnͺXY Tl)q-sR=}ۘۤ &MLc&D)X&$'0鶳^L 0 0&$`LLI 0&&`Rv}0hTR$"5Hd .E":Bk" c'饞SSh-ۤ &[`LL 0 0&$S|7jπXWX; W Zq`GlKM2.`)f 0f{M&``lм0vzTܦM0aT}QryF ЀYt;umžAwe ։ ^ 0&&``LL 0 0&$`Xn alljoyn-gwagent-1504/java/GatewayController/res/layout/acl_management_interface_item.xml0000755000175600017560000000365412724255335031717 0ustar alljoynalljoyn alljoyn-gwagent-1504/java/GatewayController/res/layout/activity_connector_application.xml0000644000175600017560000001540612724255335032212 0ustar alljoynalljoyn alljoyn-gwagent-1504/java/GatewayController/res/layout/alert_confirm_password.xml0000644000175600017560000000516012724255335030463 0ustar alljoynalljoyn alljoyn-gwagent-1504/java/GatewayController/res/layout/connector_manifest_rules_objectpath_item.xml0000644000175600017560000000412012724255335034223 0ustar alljoynalljoyn alljoyn-gwagent-1504/java/GatewayController/res/layout/activity_acl_management.xml0000644000175600017560000000467612724255335030577 0ustar alljoynalljoyn alljoyn-gwagent-1504/java/GatewayController/res/layout/acl_management_conf_data_fragment.xml0000644000175600017560000000456312724255335032537 0ustar alljoynalljoyn alljoyn-gwagent-1504/java/GatewayController/res/layout/acl_management_header_fragment.xml0000644000175600017560000000603012724255335032040 0ustar alljoynalljoyn alljoyn-gwagent-1504/java/GatewayController/res/layout/acl_management_object_item.xml0000755000175600017560000000471212724255335031221 0ustar alljoynalljoyn alljoyn-gwagent-1504/java/GatewayController/res/layout/discovered_gateways.xml0000644000175600017560000000410312724255335027744 0ustar alljoynalljoyn alljoyn-gwagent-1504/java/GatewayController/res/layout/discovered_gateway_item.xml0000644000175600017560000000147712724255335030612 0ustar alljoynalljoyn alljoyn-gwagent-1504/java/GatewayController/res/layout/connector_manifest_rules_fragment.xml0000755000175600017560000000670612724255335032704 0ustar alljoynalljoyn alljoyn-gwagent-1504/java/GatewayController/res/layout/connector_app_acl_item.xml0000644000175600017560000000416112724255335030404 0ustar alljoynalljoyn alljoyn-gwagent-1504/java/GatewayController/res/layout/connector_manifest_file_fragment.xml0000755000175600017560000000242012724255335032456 0ustar alljoynalljoyn alljoyn-gwagent-1504/java/GatewayController/res/layout/connector_manifest_rules_interface_item.xml0000644000175600017560000000413112724255335034042 0ustar alljoynalljoyn alljoyn-gwagent-1504/java/GatewayController/res/layout/activity_connector_apps.xml0000644000175600017560000000712212724255335030646 0ustar alljoynalljoyn alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/ObjectPathRuleTableViewCell.m0000644000175600017560000000516412724255335031764 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import "ObjectPathRuleTableViewCell.h" @implementation ObjectPathRuleTableViewCell - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; } - (IBAction)configureButtonTouchUpInside:(id)sender { [self.rules switchObjectPathConfiguration:_objPathInfo]; [self updateCell]; } - (IBAction)allowSubObjectsTouchUpInside:(id)sender { [self.rules switchObjectPathAllowSubObjects:_objPathInfo]; [self updateCell]; } -(void)setObjPathInfo:(VisualObjPathInfo *)objPathInfo { _objPathInfo = objPathInfo; NSString *friendlyName = [objPathInfo.objectPath friendlyName]; if (![friendlyName isEqual:@""]) { self.ruleNameLbl.text = friendlyName; } else { self.ruleNameLbl.text = [objPathInfo.objectPath path]; } [self updateCell]; } -(void)updateCell { if (_objPathInfo.configured) { [self.configureButton setTitle:@"Added" forState:UIControlStateNormal]; } else { [self.configureButton setTitle:@"Add" forState:UIControlStateNormal]; } if ([_objPathInfo.objectPath isPrefix]) { [self.allowSubObjectsButton setTitle:@"Sub Objects Allowed" forState:UIControlStateNormal]; } else { [self.allowSubObjectsButton setTitle:@"Allow Sub Objects" forState:UIControlStateNormal]; } self.configureButton.enabled = _objPathInfo.enabled; if (![_objPathInfo.objectPath isPrefixAllowed]) { [self.allowSubObjectsButton setTitle:@"Sub Obj Not Allowed" forState:UIControlStateNormal]; self.allowSubObjectsButton.enabled = NO; } else { self.allowSubObjectsButton.enabled = _objPathInfo.enabled; } } @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/ManifestFileViewController.h0000644000175600017560000000217212724255335031742 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import @interface ManifestFileViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextView *manifestFileTextView; @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/AppDelegate.h0000644000175600017560000000235312724255335026651 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import #import "AJNStatus.h" @interface AppDelegate : UIResponder @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) UIAlertView *av; + (void)AlertAndLog:(NSString *)message status:(QStatus)status; @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/InterfaceRuleTableViewCell.h0000644000175600017560000000246112724255335031631 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import #import "VisualAclRules.h" @interface InterfaceRuleTableViewCell : UITableViewCell @property (weak, nonatomic) IBOutlet UIButton *configureButton; @property (weak, nonatomic) VisualAclRules *rules; @property (strong, nonatomic) NSIndexPath *indexPath; @property (weak, nonatomic) IBOutlet UILabel *ruleNameLbl; @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/AnnounceTextViewController.h0000644000175600017560000000223512724255335032007 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import #import "alljoyn/about/AJNAnnouncement.h" @interface AnnounceTextViewController : UIViewController @property (strong, nonatomic) AJNAnnouncement *ajnAnnouncement; @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/VisualAclRules.h0000644000175600017560000000516212724255335027375 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import #import "alljoyn/gateway/AJGWCRuleObjectDescription.h" @interface VisualInterfaceInfo : NSObject @property (strong,nonatomic) AJGWCRuleInterface *interface; @property (nonatomic) BOOL configured; // is this interface configured to be included in the ACL - if YES, all object paths under it are included @property (nonatomic) BOOL enabled; // can this interface be configured or was a parent configured for it? @end @interface VisualObjPathInfo : NSObject @property (strong,nonatomic) AJGWCRuleObjectPath *objectPath; @property (nonatomic) BOOL enabled; // can this objPath be configured @property (nonatomic) BOOL configured; // is this path configured to be included in the ACL @end @interface VisualAclRules : NSObject @property (nonatomic) BOOL configured; // are these access rules configured to be included in the ACL @property (strong,nonatomic) NSMutableDictionary *aclRulesDictionary; // key - VisualInterfaceInfo, value - array of VisualObjPathInfo -(id)initWithArrayOfRuleObjectDescription:(NSArray *)arrayOfRuleObjectDescription; // return array of AJGWCRuleInterface - (NSArray *)interfaces; // return array of AJGWCRuleObjectPath - (NSArray *)objectPathsForInterface:(VisualInterfaceInfo *)interface; -(void) switchAllAclRules; -(void) switchInterfaceConfiguration:(VisualInterfaceInfo *)interfaceInfo; -(void) switchObjectPathConfiguration:(VisualObjPathInfo *)objectPathInfo; -(void) switchObjectPathAllowSubObjects:(VisualObjPathInfo *)objectPathInfo; -(NSArray *) createAJGWCRuleObjectDescriptions; @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/ManifestTabBarController.h0000644000175600017560000000235312724255335031364 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import #import "AJNSessionOptions.h" #import "alljoyn/gateway/AJGWCConnectorApp.h" @interface ManifestTabBarController : UITabBarController @property (nonatomic) AJNSessionId sessionId; @property (weak, nonatomic) AJGWCConnectorApp* connectorApp; @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/ConnectorAppTableViewCell.h0000644000175600017560000000261012724255335031470 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import @interface ConnectorAppTableViewCell : UITableViewCell @property (weak, nonatomic) IBOutlet UILabel *ConnectorAppNameLbl; @property (weak, nonatomic) IBOutlet UILabel *ConnectorAppInstallLbl; @property (weak, nonatomic) IBOutlet UILabel *ConnectorAppConnectionLbl; @property (weak, nonatomic) IBOutlet UILabel *ConnectorAppOperationalLbl; @property (strong, nonatomic) NSString * ConnectorAppId; @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/GatewayControllerService/0000755000175600017560000000000012724255335031310 5ustar alljoynalljoynalljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/GatewayControllerService/main.m0000644000175600017560000000225112724255335032412 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import #import "AppDelegate.h" int main(int argc, char *argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } ././@LongLink0000644000000000000000000000017200000000000011603 Lustar rootrootalljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/GatewayControllerService/GatewayControllerService-Info.plistalljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/GatewayControllerService/GatewayControl0000644000175600017560000000274012724255335034200 0ustar alljoynalljoyn CFBundleDevelopmentRegion en CFBundleDisplayName ${PRODUCT_NAME} CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier org.alljoyn.${PRODUCT_NAME:rfc1034identifier} CFBundleInfoDictionaryVersion 6.0 CFBundleName ${PRODUCT_NAME} CFBundlePackageType APPL CFBundleShortVersionString 14.10 CFBundleSignature ???? CFBundleVersion 14.10 LSRequiresIPhoneOS UIMainStoryboardFile MainStoryboard_iPhone UIMainStoryboardFile~ipad DetailedStoryboard_ipad UIRequiredDeviceCapabilities armv7 UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UISupportedInterfaceOrientations~ipad UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight ././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootalljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/GatewayControllerService/Default-568h@2x.pngalljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/GatewayControllerService/Default-568h@20000644000175600017560000004424212724255335033477 0ustar alljoynalljoynPNG  IHDRpz$iCCPICC Profile8UoT>oR? XGůUS[IJ*$:7鶪O{7@Hkk?<kktq݋m6nƶد-mR;`zv x#=\% oYRڱ#&?>ҹЪn_;j;$}*}+(}'}/LtY"$].9⦅%{_a݊]hk5'SN{<_ t jM{-4%TńtY۟R6#v\喊x:'HO3^&0::m,L%3:qVE t]~Iv6Wٯ) |ʸ2]G4(6w‹$"AEv m[D;Vh[}چN|3HS:KtxU'D;77;_"e?Yqxl+ pHYs  iTXtXML:com.adobe.xmp 1 5 72 1 72 640 1 1136 2012-07-27T15:07:06 Pixelmator 2.0.5 )q?7IDATx=eQqÙ87;;' RBR(JWw^8w<漏7 @^~:;;>9O @F{}w~|}}ޣ#@~<=9G p;*O_8>^#@ ƻZjLZ9:\oR? XGůUS[IJ*$:7鶪O{7@Hkk?<kktq݋m6nƶد-mR;`zv x#=\% oYRڱ#&?>ҹЪn_;j;$}*}+(}'}/LtY"$].9⦅%{_a݊]hk5'SN{<_ t jM{-4%TńtY۟R6#v\喊x:'HO3^&0::m,L%3:qVE t]~Iv6Wٯ) |ʸ2]G4(6w‹$"AEv m[D;Vh[}چN|3HS:KtxU'D;77;_"e?Yqxl+ pHYs  iTXtXML:com.adobe.xmp 1 5 72 1 72 640 1 960 2012-07-27T15:07:37 Pixelmator 2.0.5 PF5IDATx1e HH܎;qoV..Vb&a^p s3;i^;ޟy!@ <>_{x}~\_Wg @܆vW=̻o]yoλ͇ @vU>yO7ן}* p|W}w}5蛿CaW] @>FmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@0  0" GmM @@W>0  @nVjLJޞy @ܞxޝ<x| @7$pߧ:yOߜ' @~y7O/> @!p[_4lIENDB`alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/GatewayControllerService/Default.png0000644000175600017560000001461412724255335033410 0ustar alljoynalljoynPNG  IHDR@ԌD$iCCPICC Profile8UoT>oR? XGůUS[IJ*$:7鶪O{7@Hkk?<kktq݋m6nƶد-mR;`zv x#=\% oYRڱ#&?>ҹЪn_;j;$}*}+(}'}/LtY"$].9⦅%{_a݊]hk5'SN{<_ t jM{-4%TńtY۟R6#v\喊x:'HO3^&0::m,L%3:qVE t]~Iv6Wٯ) |ʸ2]G4(6w‹$"AEv m[D;Vh[}چN|3HS:KtxU'D;77;_"e?Yqxl+ pHYs  iTXtXML:com.adobe.xmp 1 5 72 1 72 320 1 480 2012-07-27T15:07:80 Pixelmator 2.0.5 X="IDATxICQDDKIq/L {nov}y>( #ifndef __IPHONE_5_0 #warning "This project uses features only available in iOS SDK 5.0 and later." #endif #ifdef __OBJC__ #import #import #endif ././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootalljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/GatewayControllerService/alljoynicon.jpegalljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/GatewayControllerService/alljoynicon.jp0000644000175600017560000000316412724255335034170 0ustar alljoynalljoynJFIF     "" $(4,$&1'-=-157:::#+?I?8C49:7 8$ $7,57377.,647,,+77/45,,--..7708400,,7,/,,,7.77,54,7775!A12Qa"$Bq#Rr3 !1AQ"2aq#3Bb ?p!LKo+{$lY^pwauēt4<ݙ&ZaY[n',Ga ^e_)ruE)<~m{텺T6Lwy~{S.J`B3z5Ty}vlZֺg"dV>g-7Zln;9^#|ʹzcw6V cRx"SkhH\C~lK7nl :]*Uזԑ34"AIN ņ]f5ۅZ/F)qTK$փO{bD{nv])LHuHo:JCKhBu  HtaA,j~0ݭJ[bƋ5J EylzhʷK9ڑ31XҗÝ!cƆ}N.ž0f<0sܮJTEjRlEOYPX0!!ȓ x?~AGZ  -K1ZTT/ẰhWf*{]13қӿa#_u%«~q s|]ZEtOGrk>I.j_ ߫4odɭXg5m-)JE5sΫ6o^P.YI;'`pcg'!V"`jjJ4r$zbх3l;%B&ns^d7?U"Y}*GăOnlHflrw$_B˒MB⮑!:\TFDkrZ)7ү{rLMu^xȝ-N?\eBok% kZߙQfEG=uB 8t A¤ݟ'ppw!e(h\x;YP<Mп././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootalljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/ObjectPathLevelRulesTableViewController.malljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/ObjectPathLevelRulesTableViewController0000644000175600017560000000512512724255335034145 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import "ObjectPathLevelRulesTableViewController.h" #import "ObjectPathRuleTableViewCell.h" @interface ObjectPathLevelRulesTableViewController () @property (weak,nonatomic) NSArray *objectPaths; // entry to aclRules with the specific key @end @implementation ObjectPathLevelRulesTableViewController - (id)initWithStyle:(UITableViewStyle)style { self = [super initWithStyle:style]; if (self) { } return self; } - (void)viewDidLoad { [super viewDidLoad]; self.objectPaths = [self.aclRules objectPathsForInterface:_key]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - Table view data source - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return [self.objectPaths count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { ObjectPathRuleTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ObjectPathRuleCell" forIndexPath:indexPath]; VisualObjPathInfo *objectPathInfo = self.objectPaths[[indexPath row]]; cell.objPathInfo = objectPathInfo; cell.rules = self.aclRules; return cell; } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/ACLTableViewController.m0000644000175600017560000003213712724255335030754 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import "ACLTableViewController.h" #import "alljoyn/gateway/AJGWCRemotedApp.h" #import "alljoyn/gateway/AJGWCRuleObjectDescription.h" #import "AclRulesContainer.h" #import "ObjectPathLevelRulesTableViewController.h" #import "InterfaceRuleTableViewCell.h" #import "AJNStatus.h" #import "AnnouncementManager.h" #import "AppDelegate.h" @interface ACLTableViewController () @property (weak,nonatomic) AJGWCConnectorCapabilities *connectorCapabilities; @property (strong,nonatomic) AclRulesContainer *aclRulesContainer; @end @implementation ACLTableViewController - (id)initWithStyle:(UITableViewStyle)style { self = [super initWithStyle:style]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; UIBarButtonItem *optionsBtn = [[UIBarButtonItem alloc] initWithTitle:@"+" style:UIBarButtonItemStylePlain target:self action:@selector(didTouUpInsideOptionsBtn:)]; self.navigationItem.rightBarButtonItem = optionsBtn; self.refreshControl = [[UIRefreshControl alloc]init]; self.refreshControl.tintColor = [UIColor blueColor]; [self.refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged]; [self retreiveACL]; } -(void)refresh:(UIRefreshControl *)refresh { [self retreiveACL]; [self.refreshControl endRefreshing]; } -(void)retreiveACL { self.title = [self.acl aclName]; QStatus status; AJGWCConnectorCapabilities* localConnectorCapabilities; status = [self.connectorApp retrieveConnectorCapabilitiesUsingSessionId:self.sessionId connectorCapabilities:&localConnectorCapabilities]; self.connectorCapabilities = localConnectorCapabilities; if (ER_OK != status) { [AppDelegate AlertAndLog:@"Failed to retrieve manifest rules" status:status]; return; } self.aclRulesContainer = [[AclRulesContainer alloc]initWithACL:self.acl UsingSessionId:self.sessionId connectorCapabilities:self.connectorCapabilities announcements:[[AnnouncementManager sharedInstance] getAnnouncements] status:status]; if (status != ER_OK) { [AppDelegate AlertAndLog:@"Failed to retrieve Acl" status:status]; self.navigationItem.rightBarButtonItem = nil; return; } [self.tableView reloadData]; } - (void)didTouUpInsideOptionsBtn:(id)sender { UIActionSheet *optionsActionSheet = [[UIActionSheet alloc] initWithTitle:@"" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles: @"Update ACL", @"Rename ACL", @"Show ACL ID", @"Refresh", nil]; optionsActionSheet.tag = 1; [optionsActionSheet showInView:self.view]; } #pragma mark - UIActionSheetDelegate method - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex; { switch (actionSheet.tag) { case 1: { //optionsActionSheet switch (buttonIndex) { case 0: { QStatus status = [self update]; if (status != ER_OK) { [[[UIAlertView alloc]initWithTitle:@"Failed to Update ACL" message:[NSString stringWithFormat:@"error:%@",[AJNStatus descriptionForStatusCode:status]] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; } } break; case 1: //rename ACL { UIAlertView *renameAclAlertView = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"Rename '%@':" , [self.acl aclName]] message:@"" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil]; renameAclAlertView.alertViewStyle = UIAlertViewStylePlainTextInput; [renameAclAlertView textFieldAtIndex:0].text = [self.acl aclName]; [renameAclAlertView show]; } break; case 2: //show ACL Id { [[[UIAlertView alloc]initWithTitle:@"Info" message:[NSString stringWithFormat:@"Selected ACL Id: '%@'",[self.acl aclId] ] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; } break; case 3: // refresh { self.tableView.contentOffset = CGPointMake(0, -(self.refreshControl.frame.size.height*2)); [self.refreshControl beginRefreshing]; [self refresh:nil]; } break; default: break; } break; } default: break; } } - (void)PrintObjectDescriptions:(AJGWCRuleObjectDescription *)objDesc { NSMutableString *interfaces = [[NSMutableString alloc]init]; for (AJGWCRuleInterface *interface in [objDesc interfaces]) { [interfaces appendString:[interface interfaceName]]; } NSLog(@" ObjPath:%@ - interfaces are[%@]",[[objDesc objectPath] path], interfaces); } - (QStatus)update { QStatus status; AJGWCConnectorCapabilities *connectorCapabilities; status = [self.connectorApp retrieveConnectorCapabilitiesUsingSessionId:self.sessionId connectorCapabilities:&connectorCapabilities]; if (status != ER_OK) { NSLog(@"retrieveConnectorCapabilitiesUsingSessionId failed:%@",[AJNStatus descriptionForStatusCode:status]); return status; } AJGWCAclRules *gwAclRules = [self.aclRulesContainer createAJGWCAclRules]; AJGWCAclWriteResponse *response; status = [self.acl update:self.sessionId aclRules:gwAclRules connectorCapabilities:connectorCapabilities aclWriteResponse:&response]; if (status != ER_OK) { NSLog(@"AJGWCAcl update failed:%@",[AJNStatus descriptionForStatusCode:status]); return status; } if ([response.invalidRules.remotedApps count] > 0) { NSArray *invalidRemotedApps = response.invalidRules.remotedApps; NSLog(@"found %d invalid remoted app rules:", [invalidRemotedApps count]); for (AJGWCRemotedApp *invalidRemotedApp in invalidRemotedApps) { NSLog(@" AppName:%@",[invalidRemotedApp appName]); for (AJGWCRuleObjectDescription *objDesc in [invalidRemotedApp ruleObjDescriptions]) { [self PrintObjectDescriptions:objDesc]; } } } if ([response.invalidRules.exposedServices count] > 0) { NSLog(@"found invalid exposed services rules"); for (AJGWCRuleObjectDescription *objDesc in response.invalidRules.exposedServices) { [self PrintObjectDescriptions:objDesc]; } } if (response.responseCode != GW_ACL_RC_SUCCESS) { NSLog(@"update ACL failed with code:%d",response.responseCode); } return status; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return [self.aclRulesContainer numberOfEntries] ; //we add one for the exposed services } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { VisualAclRules *rules =[self.aclRulesContainer aclRulesForSection:section]; NSDictionary *dict = [rules aclRulesDictionary]; NSArray *aclRulesKeys = [dict allKeys]; return [ aclRulesKeys count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { InterfaceRuleTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"InterfaceRuleCell" forIndexPath:indexPath]; NSUInteger section = [indexPath section]; cell.rules = [self.aclRulesContainer aclRulesForSection:section]; cell.indexPath = indexPath; return cell; } - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { NSString *entryName = [self.aclRulesContainer entryNameAt:section]; return entryName; } - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { if ([identifier isEqual:@"ObjectPathSegue"]) { NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; VisualAclRules *rulesForSection = [self.aclRulesContainer aclRulesForSection:[indexPath section]]; NSArray *object_paths = [rulesForSection objectPathsForInterface:[rulesForSection.aclRulesDictionary allKeys][[indexPath row]] ]; if ([object_paths count] == 0) { NSLog(@"error, object path array for interface is 0"); [[[UIAlertView alloc]initWithTitle:@"no object paths" message:@"error, object path array for interface is 0" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; return NO; } return YES; } return NO; } - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.destinationViewController isKindOfClass:[ObjectPathLevelRulesTableViewController class]]){ NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; VisualAclRules *rulesForSection = [self.aclRulesContainer aclRulesForSection:[indexPath section]]; ObjectPathLevelRulesTableViewController *vc = segue.destinationViewController; vc.aclRules = rulesForSection; vc.key = [rulesForSection.aclRulesDictionary allKeys][[indexPath row]]; } } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ - (void) updateConfigButton:(UIButton *)configButton configured:(BOOL)configured { if (configured) { [configButton setTitle:@"Added" forState:UIControlStateNormal]; } else { [configButton setTitle:@"Add All" forState:UIControlStateNormal]; } } - (void) serviceButtonCliecked:(UIButton *) sender { VisualAclRules *rulesForSection = [self.aclRulesContainer aclRulesForSection:sender.tag]; [rulesForSection switchAllAclRules]; [self updateConfigButton:sender configured:[rulesForSection configured]]; [self.tableView reloadData]; } - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { VisualAclRules *rulesForSection = [self.aclRulesContainer aclRulesForSection:section]; CGRect frame = tableView.frame; NSString *titleTxt = @"Add All"; CGSize sizeOfTitle = [titleTxt sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:17.0f]}]; UIButton *configButton = [UIButton buttonWithType: UIButtonTypeSystem]; [configButton setFrame:CGRectMake(frame.size.width-sizeOfTitle.width - 10 , 10, 50, 30)]; [configButton setTag:section]; [configButton addTarget: self action:@selector(serviceButtonCliecked:) forControlEvents: UIControlEventTouchUpInside]; [self updateConfigButton:configButton configured:rulesForSection.configured]; UILabel *title = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 150, 30)]; title.text = [self tableView:tableView titleForHeaderInSection:section]; UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)]; [headerView addSubview:title]; [headerView addSubview:configButton]; return headerView; } #pragma mark - UIAlertViewDelegate method - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { // rename ACL UITextField *aclNameTextField = [alertView textFieldAtIndex:0]; if ([aclNameTextField.text isEqualToString:[self.acl aclName]]) { return; } NSLog(@"renaming '%@' to '%@'", [self.acl aclName], aclNameTextField.text); [self.acl setAclName:aclNameTextField.text]; [self update]; [self.refreshControl beginRefreshing]; [self refresh:nil]; } @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/VisualAclRules.m0000644000175600017560000002177112724255335027406 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import "VisualAclRules.h" #import "alljoyn/gateway/AJGWCRuleInterface.h" #import "alljoyn/gateway/AJGWCRuleObjectPath.h" @implementation VisualInterfaceInfo -(id) init:(AJGWCRuleInterface *)interface isConfigured:(BOOL)configured enabled:(BOOL)enabled { self = [super init]; _interface = interface; _configured = configured; _enabled = enabled; return self; } - (id)copyWithZone:(NSZone *)zone { VisualInterfaceInfo *objectCopy = [[VisualInterfaceInfo allocWithZone:zone] init:self.interface isConfigured:self.configured enabled:self.enabled]; return objectCopy; } - (NSUInteger)hash { return [self.interface hash]; } - (BOOL)isEqual:(id)anObject { if (![anObject isKindOfClass:[VisualInterfaceInfo class]]) return NO; VisualInterfaceInfo *otherRuleInterface = (VisualInterfaceInfo *)anObject; return [otherRuleInterface.interface isEqual:self.interface]; } @end @implementation VisualObjPathInfo -(id) init:(AJGWCRuleObjectPath *)objectPath isConfigured:(BOOL)configured enabled:(BOOL)enabled { self = [super init]; _objectPath = objectPath; _configured = configured; _enabled = enabled; return self; } - (id)copyWithZone:(NSZone *)zone { VisualObjPathInfo *objectCopy = [[VisualObjPathInfo allocWithZone:zone] init:self.objectPath isConfigured:self.configured enabled:self.enabled]; return objectCopy; } - (NSUInteger)hash { return [self.objectPath hash]; } - (BOOL)isEqual:(id)anObject { if (![anObject isKindOfClass:[VisualObjPathInfo class]]) return NO; VisualObjPathInfo *otherObjPathInfo = (VisualObjPathInfo *)anObject; return [otherObjPathInfo.objectPath isEqual:self.objectPath]; } @end @interface VisualAclRules() @end @implementation VisualAclRules -(id)initWithArrayOfRuleObjectDescription:(NSArray *)arrayOfRuleObjectDescription { self = [super init]; self.aclRulesDictionary = [[NSMutableDictionary alloc]init]; // Gather the object paths for each interface for (AJGWCRuleObjectDescription *objectDescription in arrayOfRuleObjectDescription) { NSSet *interfaces = [objectDescription interfaces]; VisualObjPathInfo *objPathInfo = [[VisualObjPathInfo alloc] init:[objectDescription objectPath] isConfigured:[objectDescription isConfigured] enabled:YES] ; for (AJGWCRuleInterface *interface in interfaces) { VisualInterfaceInfo *interfaceInfo = [[VisualInterfaceInfo alloc]init:interface isConfigured:NO enabled:YES]; // we will populate the configured interfaces later in this function // check if this interface already has object paths connected to it NSMutableArray *array = (NSMutableArray *)[self objectPathsForInterface:interfaceInfo]; // if not, allocate if ([array count] == 0) { array = [[NSMutableArray alloc] init]; } // Gather the object paths for this interface into the array [array addObject:objPathInfo]; // Sorting the object paths so the same entries will show at the same lines, only for aesthetics [array sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { VisualObjPathInfo *objPathInfo1 = (VisualObjPathInfo *)obj1; VisualObjPathInfo *objPathInfo2 = (VisualObjPathInfo *)obj2; return [objPathInfo1.objectPath.path compare:objPathInfo2.objectPath.path]; }]; // Add the list of object paths to the interface. this is the important part. [self.aclRulesDictionary setObject:array forKey:interfaceInfo]; } } // run through all of the interfaces and disable object paths that are all enabled under an interface. set that interface to be enabled for (VisualInterfaceInfo *interfaceInfo in [self.aclRulesDictionary allKeys]) { NSArray *array = [self objectPathsForInterface:interfaceInfo]; BOOL allPathsAreConfigured = YES; for (VisualObjPathInfo *objPathInfo in array) { allPathsAreConfigured &= [objPathInfo configured]; } if (allPathsAreConfigured) { [interfaceInfo setConfigured:YES]; NSArray *array = [self objectPathsForInterface:interfaceInfo]; for (VisualObjPathInfo *objPathInfo in array) { [objPathInfo setEnabled:NO]; } } } return self; } - (NSArray *)interfaces { return [self.aclRulesDictionary allKeys]; } - (NSArray *)objectPathsForInterface:(VisualInterfaceInfo *)interface { return (NSArray *)[self.aclRulesDictionary objectForKey:interface]; } -(void) switchAllAclRules { self.configured=!self.configured; if (self.configured==YES) { //configure all elements for (VisualInterfaceInfo *interfaceInfo in [self.aclRulesDictionary allKeys]) { NSArray *array = [self objectPathsForInterface:interfaceInfo]; interfaceInfo.configured = YES; for (VisualObjPathInfo *objPathInfo in array) { objPathInfo.configured = YES; } } } [self changeAllAclRulesElements:!self.configured]; //this should be the opposite of the configured state at the top level. if all access rules should be configured in gui then all of the elements should be disabled, and vice versa. } -(void) changeAllAclRulesElements:(BOOL)enable { for (VisualInterfaceInfo *interfaceInfo in [self.aclRulesDictionary allKeys]) { NSArray *array = [self objectPathsForInterface:interfaceInfo]; interfaceInfo.enabled=enable; if ((!interfaceInfo.configured && (enable == YES)) || (enable == NO)) { for (VisualObjPathInfo *objPathInfo in array) { objPathInfo.enabled=enable; } } } } -(void) switchInterfaceConfiguration:(VisualInterfaceInfo *)interfaceInfo { NSArray *array = [self objectPathsForInterface:interfaceInfo]; interfaceInfo.configured=!interfaceInfo.configured; for (VisualObjPathInfo *objPathInfo in array) { objPathInfo.enabled=!interfaceInfo.configured; } } -(void) switchObjectPathConfiguration:(VisualObjPathInfo *)objectPathInfo { objectPathInfo.configured = !objectPathInfo.configured; } -(void) switchObjectPathAllowSubObjects:(VisualObjPathInfo *)objectPathInfo { [objectPathInfo.objectPath setPrefix:![objectPathInfo.objectPath isPrefix]]; } -(NSArray *) createAJGWCRuleObjectDescriptions { NSMutableArray *objectDescriptions = [[NSMutableArray alloc]init]; NSMutableDictionary *objectPathToInterfaces = [[NSMutableDictionary alloc]init]; //key - VisualObjPathInfo, value - array of VisualInterfaceInfo for (VisualInterfaceInfo *interfaceInfo in [self.aclRulesDictionary allKeys]) { NSArray *array = [self objectPathsForInterface:interfaceInfo]; for (VisualObjPathInfo *objPathInfo in array) { if (objPathInfo.configured == YES || interfaceInfo.configured == YES || self.configured == YES) { NSMutableArray *arrayOfInterfaces = [objectPathToInterfaces objectForKey:objPathInfo]; if (arrayOfInterfaces==nil) { arrayOfInterfaces = [[NSMutableArray alloc]init]; } [arrayOfInterfaces addObject:interfaceInfo]; [objectPathToInterfaces setObject:arrayOfInterfaces forKey:objPathInfo]; } } } for (VisualObjPathInfo *objPathInfo in [objectPathToInterfaces allKeys]) { NSArray *interfacesForObjPath = [objectPathToInterfaces objectForKey:objPathInfo]; NSMutableSet *arrayOfInterfaces = [[NSMutableSet alloc]init]; for (VisualInterfaceInfo *interfaceInfo in interfacesForObjPath) { [arrayOfInterfaces addObject:interfaceInfo.interface]; } AJGWCRuleObjectDescription *objDesc = [[AJGWCRuleObjectDescription alloc] initWithObjectPath:objPathInfo.objectPath interfaces:arrayOfInterfaces isConfigured:YES]; [objectDescriptions addObject:objDesc]; } return objectDescriptions; } @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/ConnectorCapabilitiesViewController.h0000644000175600017560000000231712724255335033641 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import @interface ConnectorCapabilitiesViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextView *exposedServicesTextView; @property (weak, nonatomic) IBOutlet UITextView *remotedServicesTextView; @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/ViewController.h0000644000175600017560000000300212724255335027444 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import #import "AJNBusListener.h" #import "AJNAuthenticationListener.h" #import "alljoyn/about/AJNAnnouncementListener.h" @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIButton *connectButton; @property (weak, nonatomic) IBOutlet UITableView *servicesTable; @property (weak, nonatomic) IBOutlet UILabel *loadingGWLabel; - (IBAction)connectButtonDidTouchUpInside:(id)sender; @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/ConnectorAppTableViewController.m0000644000175600017560000002231612724255335032746 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import "ConnectorAppTableViewController.h" #import "alljoyn/gateway/AJGWCGatewayController.h" #import "alljoyn/gateway/AJGWCConnectorApp.h" #import "alljoyn/gateway/AJGWCConnectorAppStatusSignalHandler.h" #import "alljoyn/gateway/AJGWCConnectorAppStatus.h" #import "alljoyn/gateway/AJGWCEnums.h" #import "ConnectorAppTableViewCell.h" #import "ConnectorAppInfoViewController.h" #import "AppDelegate.h" @interface ConnectorAppTableViewController () @property (strong, nonatomic) AJGWCGatewayMgmtApp* gatewayMgmtApp; @property (nonatomic) AJNSessionId sessionId; @property (strong, nonatomic) NSArray* gwApps; @end @implementation ConnectorAppTableViewController - (id)initWithStyle:(UITableViewStyle)style { self = [super initWithStyle:style]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; [self startGWController]; } - (void)stopGWController { QStatus status = [self.gatewayMgmtApp leaveSession]; if (status != ER_OK) { [AppDelegate AlertAndLog:@"Failed to leaveSession" status:status]; } else { NSLog(@"Successfully leave Session"); } [[AJGWCGatewayController sharedInstance] shutdown]; } - (void)startGWController { UIBarButtonItem *optionsBtn = [[UIBarButtonItem alloc] initWithTitle:@"+" style:UIBarButtonItemStylePlain target:self action:@selector(didTouUpInsideOptionsBtn:)]; self.navigationItem.rightBarButtonItem = optionsBtn; [AJGWCGatewayController startWithBus:self.busAttachment]; AJGWCGatewayController* gwController = [AJGWCGatewayController sharedInstance]; self.gatewayMgmtApp = [gwController createGatewayWithBusName:self.ajnAnnouncement.busName objectDescs:self.ajnAnnouncement.objectDescriptions aboutData:self.ajnAnnouncement.aboutData]; AJGWCSessionResult *sessionResult = [self.gatewayMgmtApp joinSession:self]; if (sessionResult.status != ER_OK) { [AppDelegate AlertAndLog:@"Failed to retrieve installed apps" status:sessionResult.status]; } else { self.sessionId = sessionResult.sid; } NSLog(@"SessionId is %u", self.sessionId); [self retrieveConnectorApps]; } - (void)retrieveConnectorApps { NSMutableArray* connectorApps = [[NSMutableArray alloc] init]; QStatus status = [self.gatewayMgmtApp retrieveConnectorApps:self.sessionId connectorApps:connectorApps]; self.gwApps = [[NSArray alloc] initWithArray:connectorApps]; NSLog(@"retrieveConnectorApps return [%lu] applications", (unsigned long)[self.gwApps count]); if (ER_OK != status) { [AppDelegate AlertAndLog:@"Failed to retrieve installed apps" status:status]; } dispatch_async(dispatch_get_main_queue(), ^{ [self.tableView reloadData]; }); } - (void)statusSignalHandler:(BOOL) flag { for(AJGWCConnectorApp* connectorApp in self.gwApps) { if (flag == YES) { QStatus handlerStatus = [connectorApp setStatusSignalHandler:self]; if (ER_OK != handlerStatus) { NSLog(@"Failed to set status changed handler"); } else { NSLog(@"Successfully set status changed handler for %@", [connectorApp friendlyName]); } } else { NSLog(@"calling unset status changed handler for %@", [connectorApp friendlyName]); [connectorApp unsetStatusSignalHandler]; } } } - (IBAction)didTouUpInsideOptionsBtn:(id)sender { UIActionSheet *optionsActionSheet = [[UIActionSheet alloc] initWithTitle:@"" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles: @"Refresh", nil]; optionsActionSheet.tag = 1; [optionsActionSheet showInView:self.view]; } #pragma mark - UIActionSheetDelegate method - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex; { switch (actionSheet.tag) { case 1: { //optionsActionSheet switch (buttonIndex) { case 0: NSLog(@"Calling refresh"); [self retrieveConnectorApps]; //refresh break; default: break; } break; } default: break; } } #pragma mark - AJGWCConnectorAppStatusSignalHandler method - (void)onStatusSignal:(NSString*) appId status:(AJGWCConnectorAppStatus*) status { NSLog(@"AppID %@ status has changed:", appId); NSLog(@"installStatus: %@", [AJGWCEnums AJGWCInstallStatusToString:[status installStatus]]); NSLog(@"installDescriptions: %@", [status installDescriptions]); NSLog(@"ConnectionStatus: %@", [AJGWCEnums AJGWCConnectionStatusToString:[status connectionStatus]]); NSLog(@"operationalStatus: %@", [AJGWCEnums AJGWCOperationalStatusToString:[status operationalStatus]]); NSLog(@"---------------------"); dispatch_async(dispatch_get_main_queue(), ^{ [self.tableView reloadData]; }); } - (void)onError:(NSString *)appId errorCode:(QStatus)code { [AppDelegate AlertAndLog:[NSString stringWithFormat:@"AppID %@ status event - an error occured in creation of the event data",appId] status:code]; } #pragma mark - Table view data source - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return [self.gwApps count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { ConnectorAppTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ConnectorAppCell" forIndexPath:indexPath]; AJGWCConnectorApp* connectorApp = [self.gwApps objectAtIndex:indexPath.row]; cell.ConnectorAppNameLbl.text = [connectorApp friendlyName]; /* Retrieve Status */ QStatus status = ER_FAIL; AJGWCConnectorAppStatus* connectorAppStatus; status = [connectorApp retrieveStatusUsingSessionId:self.sessionId status:&connectorAppStatus]; if (status == ER_OK) { [ConnectorAppInfoViewController setLabelTextColor:cell.ConnectorAppInstallLbl forStatus:[AJGWCEnums AJGWCInstallStatusToString:[connectorAppStatus installStatus]]]; [ConnectorAppInfoViewController setLabelTextColor:cell.ConnectorAppConnectionLbl forStatus:[AJGWCEnums AJGWCConnectionStatusToString:[connectorAppStatus connectionStatus]]]; [ConnectorAppInfoViewController setLabelTextColor:cell.ConnectorAppOperationalLbl forStatus:[AJGWCEnums AJGWCOperationalStatusToString:[connectorAppStatus operationalStatus]]]; cell.ConnectorAppId = [connectorApp appId]; } else { [AppDelegate AlertAndLog:@"RetrieveStatus error happened, check log" status:status]; [ConnectorAppInfoViewController setLabelTextColor:cell.ConnectorAppInstallLbl forStatus:@"Error"]; [ConnectorAppInfoViewController setLabelTextColor:cell.ConnectorAppConnectionLbl forStatus:@"Error"]; [ConnectorAppInfoViewController setLabelTextColor:cell.ConnectorAppOperationalLbl forStatus:@"Error"]; } return cell; } - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.destinationViewController isKindOfClass:[ConnectorAppInfoViewController class]]) { ConnectorAppInfoViewController *connectorAppInfo = segue.destinationViewController; connectorAppInfo.connectorApp = [self.gwApps objectAtIndex:[self.tableView indexPathForSelectedRow].row]; connectorAppInfo.sessionId = self.sessionId; } } - (void)viewWillDisappear:(BOOL)animated { [self statusSignalHandler:NO]; } - (void)didMoveToParentViewController:(UIViewController *)parent { if (parent==nil) { //only on the way back [self stopGWController]; } } - (void)viewWillAppear:(BOOL)animated { [self statusSignalHandler:YES]; } - (void)sessionEstablished:(AJGWCGatewayMgmtApp*) gatewayMgmtApp { NSLog(@"Session established"); } - (void)sessionLost:(AJGWCGatewayMgmtApp*) gatewayMgmtApp { NSLog(@"Session lost"); [[[UIAlertView alloc]initWithTitle:@"Session lost" message:@"Connection to the gateway lost" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil] show]; [self.navigationController popToRootViewControllerAnimated:YES]; } @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/ConnectorAppInfoViewController.m0000644000175600017560000002665712724255335032626 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import "ConnectorAppInfoViewController.h" #import "AJNStatus.h" #import "alljoyn/gateway/AJGWCAcl.h" #import "alljoyn/gateway/AJGWCConnectorAppStatusSignalHandler.h" #import "ConnectorAppInfoAclsTableViewCell.h" #import "ACLTableViewController.h" #import "ManifestTabBarController.h" #import "CreateAclViewController.h" #import "AppDelegate.h" @interface ConnectorAppInfoViewController () @property (strong, nonatomic) NSMutableArray *acls; // array of AJGWCAcl @property (strong, nonatomic) NSString *manifestFileText; @property (nonatomic) NSIndexPath* indexPathToDelete; @property (strong, nonatomic) UIAlertView* deleteAclAlertView; @end @implementation ConnectorAppInfoViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. } - (void)startConnectorAppInfoViewController { self.title = [self.connectorApp friendlyName]; UIBarButtonItem *optionsBtn = [[UIBarButtonItem alloc] initWithTitle:@"+" style:UIBarButtonItemStylePlain target:self action:@selector(didTouchUpInsideOptionsBtn:)]; self.navigationItem.rightBarButtonItem = optionsBtn; self.friendlyNameLbl.text = [self.connectorApp friendlyName]; self.appVersionLbl.text = [self.connectorApp appVersion]; [self retrieveStatus]; [self retrieveAcls]; QStatus handlerStatus = [self.connectorApp setStatusSignalHandler:self]; if (ER_OK != handlerStatus) { [AppDelegate AlertAndLog:@"Failed to set status changed handler" status:handlerStatus]; } else { NSLog(@"Successfully set status changed handler for %@", [self.connectorApp friendlyName]); } self.deleteAclAlertView = [[UIAlertView alloc] initWithTitle:@"" message:@"Delete selected acl?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles: @"OK", nil]; self.deleteAclAlertView.tag = 1; [self.aclsTableView reloadData]; } - (void)stopConnectorAppInfoViewController { } - (void)retrieveAcls { QStatus status = ER_FAIL; self.acls = [[NSMutableArray alloc] init]; status = [self.connectorApp retrieveAclsUsingSessionId:self.sessionId acls:self.acls]; if (ER_OK != status) { [AppDelegate AlertAndLog:@"Failed to retrieve Acl(s)" status:status]; } else { NSLog(@"got %lu acl(s)", (unsigned long)[self.acls count]); } } - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.destinationViewController isKindOfClass:[ACLTableViewController class]]) { ACLTableViewController *aclTVC = segue.destinationViewController; aclTVC.sessionId = self.sessionId; aclTVC.acl = [self.acls objectAtIndex:[self.aclsTableView indexPathForSelectedRow].row]; aclTVC.connectorApp = self.connectorApp; } else if ([segue.destinationViewController isKindOfClass:[ManifestTabBarController class]]) { ManifestTabBarController *manifestVC = segue.destinationViewController; manifestVC.sessionId = self.sessionId; manifestVC.connectorApp = self.connectorApp; } else if ([segue.destinationViewController isKindOfClass:[CreateAclViewController class]]) { CreateAclViewController *createAclVC = segue.destinationViewController; createAclVC.sessionId = self.sessionId; createAclVC.connectorApp = self.connectorApp; } } - (void)didTouchUpInsideOptionsBtn:(id)sender { UIActionSheet *optionsActionSheet = [[UIActionSheet alloc] initWithTitle:@"" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles: @"Create ACL", @"Restart", @"Refresh", @"Show Manifest", nil]; optionsActionSheet.tag = 1; [optionsActionSheet showInView:self.view]; } - (void)createACL { [self performSegueWithIdentifier:@"CreateAclSegue" sender:self]; } - (void)retrieveManifestFile { QStatus status = ER_FAIL; NSString *xml; status = [self.connectorApp retrieveManifestFileUsingSessionId:self.sessionId fileContent:&xml]; self.manifestFileText = xml; if (ER_OK != status) { [AppDelegate AlertAndLog:@"Failed to retrieve manifest file" status:status]; } else { NSLog(@"Successfully retrieved manifest file."); [self performSegueWithIdentifier:@"ManifestSegue" sender:self]; } } - (BOOL)AJGWCAclStatusToBOOL:(AJGWCAclStatus) aclStatus { return aclStatus == GW_AS_ACTIVE ? YES : NO; } #pragma mark - UIActionSheetDelegate method - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex; { switch (actionSheet.tag) { case 1: { //optionsActionSheet switch (buttonIndex) { case 0: // Create ACL [self createACL]; break; case 1: // Restart { NSLog(@"Calling restart"); AJGWCRestartStatus restartStatus; QStatus status = [self.connectorApp restartUsingSessionId:self.sessionId status:restartStatus]; if (ER_OK != status) { [AppDelegate AlertAndLog:@"Failed to restart application" status:status]; } } break; case 2: // Refresh { NSLog(@"Calling refresh"); [self retrieveAcls]; [self.aclsTableView reloadData]; } break; case 3: // Show Manifest [self performSegueWithIdentifier:@"ManifestSegue" sender:self]; break; default: break; } break; } default: break; } } #pragma mark - UITableViewDataSource - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { return YES; } - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { return UITableViewCellEditingStyleDelete; } // Swipe to delete. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { self.indexPathToDelete = indexPath; [self.deleteAclAlertView show]; } } - (void)deleteAcl { QStatus status; AJGWCAclResponseCode resCode; NSString* aclId = [[self.acls objectAtIndex:self.indexPathToDelete.row] aclId]; status = [self.connectorApp deleteAclUsingSessionId:self.sessionId aclId:aclId status:resCode]; if (ER_OK != status || resCode != GW_ACL_RC_SUCCESS) { NSLog(@"Failed to delete acl. status:%@ responseCode:%@", [AJNStatus descriptionForStatusCode:status], [AJGWCEnums AJGWCAclResponseCodeToString:resCode]); [[[UIAlertView alloc] initWithTitle:@"Error" message:@"Failed to delete acl." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil] show]; } else { [self.acls removeObjectAtIndex:self.indexPathToDelete.row]; [self.aclsTableView deleteRowsAtIndexPaths:@[self.indexPathToDelete] withRowAnimation:UITableViewRowAnimationAutomatic]; } } - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { switch (alertView.tag) { case 1: // self.deleteAclAlertView if (buttonIndex == 1) // OK { [self deleteAcl]; } break; default: NSLog(@"alertView.tag is wrong"); break; } } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return [self.acls count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { ConnectorAppInfoAclsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AclCell" forIndexPath:indexPath]; AJGWCAcl* aclList = [self.acls objectAtIndex:indexPath.row]; cell.aclObject = aclList; cell.sessionId = self.sessionId; cell.aclNameLbl.text = [aclList aclName]; [cell.aclActiveSwitch setOn:[self AJGWCAclStatusToBOOL:[aclList status]]]; return cell; } #pragma mark - AJGWCConnectorAppStatusSignalHandler method - (void)onStatusSignal:(NSString*) appId status:(AJGWCConnectorAppStatus*) status { NSLog(@"AppID %@ status has changed", appId); if ([[self.connectorApp appId] isEqualToString:appId]) { [self updateLabelsStatus:status]; } } - (void)onError:(NSString *)appId errorCode:(QStatus)code { [AppDelegate AlertAndLog:[NSString stringWithFormat:@"AppID %@ status event - an error occured in creation of the event data",appId] status:code]; } - (void)retrieveStatus { NSLog(@"Retrieving application status for %@", [self.connectorApp appId]); QStatus status = ER_FAIL; AJGWCConnectorAppStatus* connectorAppStatus; status = [self.connectorApp retrieveStatusUsingSessionId:self.sessionId status:&connectorAppStatus]; if (ER_OK != status) { [AppDelegate AlertAndLog:@"Failed to retrieve application status" status:status]; } else { [self updateLabelsStatus:connectorAppStatus]; } } - (void)updateLabelsStatus:(AJGWCConnectorAppStatus*) connectorAppStatus { [ConnectorAppInfoViewController setLabelTextColor:self.connectivityLbl forStatus:[AJGWCEnums AJGWCConnectionStatusToString:[connectorAppStatus connectionStatus]]]; [ConnectorAppInfoViewController setLabelTextColor:self.operationLbl forStatus:[AJGWCEnums AJGWCOperationalStatusToString:[connectorAppStatus operationalStatus]]]; [ConnectorAppInfoViewController setLabelTextColor:self.installationLbl forStatus:[AJGWCEnums AJGWCInstallStatusToString:[connectorAppStatus installStatus]]]; } + (void)setLabelTextColor:(UILabel*) label forStatus:(NSString*) statusString { dispatch_async(dispatch_get_main_queue(), ^{ label.text = statusString; [label setTextColor: [STATUS_COLOR objectForKey:statusString]]; }); } - (void)viewWillAppear:(BOOL)animated { [self startConnectorAppInfoViewController]; } - (void)viewWillDisappear:(BOOL)animated { NSLog(@"calling unset status changed handler for %@", [self.connectorApp friendlyName]); [self.connectorApp unsetStatusSignalHandler]; [self stopConnectorAppInfoViewController]; } @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/ConnectorAppInfoAclsTableViewCell.h0000644000175600017560000000261312724255335033112 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import #import "AJNSessionOptions.h" #import "alljoyn/gateway/AJGWCAcl.h" @interface ConnectorAppInfoAclsTableViewCell : UITableViewCell @property (weak, nonatomic) IBOutlet UILabel *aclNameLbl; @property (weak, nonatomic) IBOutlet UISwitch *aclActiveSwitch; @property (weak, nonatomic) AJGWCAcl* aclObject; @property (nonatomic) AJNSessionId sessionId; - (IBAction)aclActiveSwitchValueChanged:(id)sender; @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/ConnectorCapabilitiesViewController.m0000644000175600017560000000250012724255335033640 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import "ConnectorCapabilitiesViewController.h" @interface ConnectorCapabilitiesViewController () @end @implementation ConnectorCapabilitiesViewController - (void)viewDidLoad { [super viewDidLoad]; } - (void)viewWillDisappear:(BOOL)animated { [self.exposedServicesTextView setText:@""]; [self.remotedServicesTextView setText:@""]; } @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/ConnectorAppInfoViewController.h0000644000175600017560000000565012724255335032607 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import #import "alljoyn/gateway/AJGWCConnectorApp.h" #import "AJNSessionOptions.h" static NSDictionary* STATUS_COLOR = [[NSDictionary alloc] initWithObjectsAndKeys: //AJGWCConnectionStatus [UIColor purpleColor], @"Not initialized", [UIColor blueColor], @"In progress", [UIColor greenColor], @"Connected", [UIColor orangeColor], @"Not connected", [UIColor redColor], @"Error", //AJGWCInstallStatus [UIColor greenColor], @"Installed", [UIColor blueColor],@"Install in progress", [UIColor blueColor], @"Upgrade in progress", [UIColor blueColor], @"Uninstall in progress", [UIColor redColor], @"Installation failed", //AJGWCOperationalStatus [UIColor greenColor], @"Running", [UIColor orangeColor], @"Stopped", nil]; @interface ConnectorAppInfoViewController : UIViewController @property (weak, nonatomic) AJGWCConnectorApp* connectorApp; @property (nonatomic) AJNSessionId sessionId; @property (strong, nonatomic) IBOutlet UILabel *friendlyNameLbl; @property (strong, nonatomic) IBOutlet UILabel *appVersionLbl; @property (weak, nonatomic) IBOutlet UILabel *connectivityLbl; @property (weak, nonatomic) IBOutlet UILabel *operationLbl; @property (weak, nonatomic) IBOutlet UILabel *installationLbl; @property (weak, nonatomic) IBOutlet UITableView *aclsTableView; + (void)setLabelTextColor:(UILabel*) label forStatus:(NSString*) statusString; @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/ConnectorAppTableViewController.h0000644000175600017560000000237612724255335032745 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import #import "AJNBusAttachment.h" #import "alljoyn/about/AJNAnnouncement.h" @interface ConnectorAppTableViewController : UITableViewController @property (weak, nonatomic) AJNBusAttachment *busAttachment; @property (strong, nonatomic) AJNAnnouncement *ajnAnnouncement; @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/AppDelegate.m0000644000175600017560000000630512724255335026657 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import "AppDelegate.h" @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. return YES; } - (void)applicationWillResignActive:(UIApplication *)application { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. } - (void)applicationDidEnterBackground:(UIApplication *)application { // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. } - (void)applicationWillEnterForeground:(UIApplication *)application { // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. } - (void)applicationDidBecomeActive:(UIApplication *)application { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. } - (void)applicationWillTerminate:(UIApplication *)application { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } + (void)AlertAndLog:(NSString *)message status:(QStatus)status { NSString *alertText = [NSString stringWithFormat:@"%@ (%@)",message, [AJNStatus descriptionForStatusCode:status]]; NSLog(@"%@", alertText); dispatch_async(dispatch_get_main_queue(), ^{ [[[UIAlertView alloc] initWithTitle:@"Startup Error" message:alertText delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil] show]; }); } @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/ClientInformation.m0000644000175600017560000000244012724255335030124 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import "ClientInformation.h" #import "alljoyn/about/AJNAboutDataConverter.h" @implementation ClientInformation - (void)setAnnouncement:(AJNAnnouncement *)announcement { _announcement = announcement; _currLang = [AJNAboutDataConverter messageArgumentToString:[_announcement aboutData][@"DefaultLanguage"]]; } @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/GetAboutCallViewController.h0000644000175600017560000000236412724255335031705 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import #import "AJNBusAttachment.h" #import "ClientInformation.h" @interface GetAboutCallViewController : UIViewController @property (weak, nonatomic) AJNBusAttachment *clientBusAttachment; @property (weak, nonatomic) ClientInformation *clientInformation; @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/InterfaceRuleTableViewCell.m0000644000175600017560000000371312724255335031637 0ustar alljoynalljoyn/****************************************************************************** * Copyright (c) 2014, AllSeen Alliance. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************************/ #import "InterfaceRuleTableViewCell.h" @interface InterfaceRuleTableViewCell() @property (strong,nonatomic) VisualInterfaceInfo *interfaceInfo; @end @implementation InterfaceRuleTableViewCell - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; } - (IBAction)configureButtonTouchUpInside:(id)sender { [self.rules switchInterfaceConfiguration:_interfaceInfo]; [self updateCell]; } -(void)setIndexPath:(NSIndexPath *)indexPath { _indexPath = indexPath; _interfaceInfo = [self.rules.aclRulesDictionary allKeys][[indexPath row]]; self.ruleNameLbl.text = [_interfaceInfo.interface friendlyName]; [self updateCell]; } -(void)updateCell { if (_interfaceInfo.configured) { [self.configureButton setTitle:@"Added" forState:UIControlStateNormal]; } else { [self.configureButton setTitle:@"Add" forState:UIControlStateNormal]; } self.configureButton.enabled = _interfaceInfo.enabled; } @end alljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/GatewayControllerService.xcodeproj/0000755000175600017560000000000012724255335033304 5ustar alljoynalljoyn././@LongLink0000644000000000000000000000016000000000000011600 Lustar rootrootalljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/GatewayControllerService.xcodeproj/project.pbxprojalljoyn-gwagent-1504/ios/GatewayController/samples/sampleApp/GatewayControllerService.xcodeproj/proj0000644000175600017560000013224712724255335034212 0ustar alljoynalljoyn// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 46; objects = { /* Begin PBXBuildFile section */ 19373DF71920B5E3001617EB /* ManifestTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 19373DF61920B5E3001617EB /* ManifestTabBarController.m */; }; 19373DFA1920D9F0001617EB /* AnnouncementManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 19373DF91920D9F0001617EB /* AnnouncementManager.m */; }; 19373E001923A794001617EB /* ConnectorCapabilitiesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 19373DFF1923A794001617EB /* ConnectorCapabilitiesViewController.m */; }; 19373E031923A80D001617EB /* ManifestFileViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 19373E021923A80D001617EB /* ManifestFileViewController.m */; }; 1945A64818ED8A9600F1E9F9 /* alljoynicon.jpeg in Resources */ = {isa = PBXBuildFile; fileRef = 1945A64118ED8A9600F1E9F9 /* alljoynicon.jpeg */; }; 1945A64918ED8A9600F1E9F9 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1945A64218ED8A9600F1E9F9 /* Default-568h@2x.png */; }; 1945A64A18ED8A9600F1E9F9 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 1945A64318ED8A9600F1E9F9 /* Default.png */; }; 1945A64B18ED8A9600F1E9F9 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1945A64418ED8A9600F1E9F9 /* Default@2x.png */; }; 1945A64D18ED8A9600F1E9F9 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1945A64718ED8A9600F1E9F9 /* main.m */; }; 1945A65E18ED92EC00F1E9F9 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1945A65D18ED92EC00F1E9F9 /* AppDelegate.m */; }; 19DE6B631928D8C200F636DD /* CreateAclViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 19DE6B621928D8C200F636DD /* CreateAclViewController.m */; }; 19E2263A19111F0400BD3927 /* ConnectorAppTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 19E2263919111F0400BD3927 /* ConnectorAppTableViewCell.m */; }; 19E226401911273600BD3927 /* ConnectorAppTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 19E2263F1911273600BD3927 /* ConnectorAppTableViewController.m */; }; 19E2264619161EBD00BD3927 /* ConnectorAppInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 19E2264519161EBD00BD3927 /* ConnectorAppInfoViewController.m */; }; 19E2264F1916563400BD3927 /* ConnectorAppInfoAclsTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 19E2264E1916563400BD3927 /* ConnectorAppInfoAclsTableViewCell.m */; }; 19E2F04317E87CE10005851F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 19E2F04217E87CE10005851F /* UIKit.framework */; }; 19E2F04517E87CE10005851F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 19E2F04417E87CE10005851F /* Foundation.framework */; }; 19E2F04717E87CE10005851F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 19E2F04617E87CE10005851F /* CoreGraphics.framework */; }; 19E2F06917E88AF20005851F /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 19E2F06817E88AF20005851F /* SystemConfiguration.framework */; }; 19E2F06D17E88B030005851F /* libstdc++.6.0.9.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 19E2F06A17E88B030005851F /* libstdc++.6.0.9.dylib */; }; 19E2F06E17E88B030005851F /* libstdc++.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 19E2F06B17E88B030005851F /* libstdc++.6.dylib */; }; 19E2F06F17E88B030005851F /* libstdc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 19E2F06C17E88B030005851F /* libstdc++.dylib */; }; 19E2F07417E88B120005851F /* libc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 19E2F07117E88B120005851F /* libc++.dylib */; }; 19E2F07517E88B120005851F /* libc++abi.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 19E2F07217E88B120005851F /* libc++abi.dylib */; }; 9A06D5B219161F6D003FCFA7 /* AclRulesContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A06D5B119161F6D003FCFA7 /* AclRulesContainer.m */; }; 9A3DB0C4183A0D2A0063D6BE /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A3DB00C183A0D290063D6BE /* ViewController.m */; }; 9A3DB315183A19CB0063D6BE /* libc.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A3DB314183A19CB0063D6BE /* libc.dylib */; }; 9A53BE65191F598D00B50DF9 /* InterfaceRuleTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A53BE64191F598D00B50DF9 /* InterfaceRuleTableViewCell.m */; }; 9A5CC10F183D073E002327C0 /* GetAboutCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A5CC10E183D073E002327C0 /* GetAboutCallViewController.m */; }; 9A5EFF7D187044BC002833C1 /* ClientInformation.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A5EFF7C187044BC002833C1 /* ClientInformation.m */; }; 9A65BCFC1900116000784D9E /* liballjoyn_about_cpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A65BCF51900116000784D9E /* liballjoyn_about_cpp.a */; }; 9A65BCFD1900116000784D9E /* liballjoyn_about_objc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A65BCF61900116000784D9E /* liballjoyn_about_objc.a */; }; 9A65BCFE1900116000784D9E /* liballjoyn_gateway_cpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A65BCF71900116000784D9E /* liballjoyn_gateway_cpp.a */; }; 9A65BCFF1900116000784D9E /* liballjoyn_gateway_objc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A65BCF81900116000784D9E /* liballjoyn_gateway_objc.a */; }; 9A65BD021900116000784D9E /* libAllJoynFramework_iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A65BCFB1900116000784D9E /* libAllJoynFramework_iOS.a */; }; 9A822B22191BC5FF00EB156E /* ObjectPathLevelRulesTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A822B21191BC5FF00EB156E /* ObjectPathLevelRulesTableViewController.m */; }; 9AAACF4119126804001D575E /* MainStoryboard_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9AAACF4019126804001D575E /* MainStoryboard_iPhone.storyboard */; }; 9AAACF4419126869001D575E /* ACLTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AAACF4219126869001D575E /* ACLTableViewController.m */; }; 9AAACF4819126C3F001D575E /* VisualAclRules.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AAACF4719126C3F001D575E /* VisualAclRules.m */; }; 9AC0B4D51920C4A9000C68AA /* ObjectPathRuleTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AC0B4D41920C4A9000C68AA /* ObjectPathRuleTableViewCell.m */; }; 9AD3D2DE187191AC00D15544 /* AnnounceTextViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD3D2DD187191AC00D15544 /* AnnounceTextViewController.m */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 19373DF51920B5E3001617EB /* ManifestTabBarController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ManifestTabBarController.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 19373DF61920B5E3001617EB /* ManifestTabBarController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = ManifestTabBarController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 19373DF81920D9F0001617EB /* AnnouncementManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnnouncementManager.h; sourceTree = ""; }; 19373DF91920D9F0001617EB /* AnnouncementManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AnnouncementManager.m; sourceTree = ""; }; 19373DFE1923A794001617EB /* ConnectorCapabilitiesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ConnectorCapabilitiesViewController.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 19373DFF1923A794001617EB /* ConnectorCapabilitiesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = ConnectorCapabilitiesViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 19373E011923A80D001617EB /* ManifestFileViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ManifestFileViewController.h; sourceTree = ""; }; 19373E021923A80D001617EB /* ManifestFileViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ManifestFileViewController.m; sourceTree = ""; }; 1945A64118ED8A9600F1E9F9 /* alljoynicon.jpeg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = alljoynicon.jpeg; path = GatewayControllerService/alljoynicon.jpeg; sourceTree = SOURCE_ROOT; }; 1945A64218ED8A9600F1E9F9 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-568h@2x.png"; path = "GatewayControllerService/Default-568h@2x.png"; sourceTree = SOURCE_ROOT; }; 1945A64318ED8A9600F1E9F9 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default.png; path = GatewayControllerService/Default.png; sourceTree = SOURCE_ROOT; }; 1945A64418ED8A9600F1E9F9 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default@2x.png"; path = "GatewayControllerService/Default@2x.png"; sourceTree = SOURCE_ROOT; }; 1945A64518ED8A9600F1E9F9 /* GatewayControllerService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "GatewayControllerService-Info.plist"; path = "GatewayControllerService/GatewayControllerService-Info.plist"; sourceTree = SOURCE_ROOT; }; 1945A64618ED8A9600F1E9F9 /* GatewayControllerService-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "GatewayControllerService-Prefix.pch"; path = "GatewayControllerService/GatewayControllerService-Prefix.pch"; sourceTree = SOURCE_ROOT; }; 1945A64718ED8A9600F1E9F9 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = main.m; path = GatewayControllerService/main.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 1945A64F18ED8A9C00F1E9F9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = GatewayControllerService/en.lproj/InfoPlist.strings; sourceTree = SOURCE_ROOT; }; 1945A65218ED8D8900F1E9F9 /* libAllJoynFramework_iOS.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libAllJoynFramework_iOS.a; path = "../../../../../../../../Library/Developer/Xcode/DerivedData/GatewayControllerServiceWorkspace-acioescdnprvgoahhnpjlhfceial/Build/Products/Debug-iphoneos/libAllJoynFramework_iOS.a"; sourceTree = ""; }; 1945A65418ED8D8900F1E9F9 /* liballjoyn_about_objc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liballjoyn_about_objc.a; path = "../../../../../../../../Library/Developer/Xcode/DerivedData/GatewayControllerServiceWorkspace-acioescdnprvgoahhnpjlhfceial/Build/Products/Debug-iphoneos/liballjoyn_about_objc.a"; sourceTree = ""; }; 1945A65618ED8D8A00F1E9F9 /* liballjoyn_gateway_objc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liballjoyn_gateway_objc.a; path = "../../../../../../../../Library/Developer/Xcode/DerivedData/GatewayControllerServiceWorkspace-acioescdnprvgoahhnpjlhfceial/Build/Products/Debug-iphoneos/liballjoyn_gateway_objc.a"; sourceTree = ""; }; 1945A65C18ED92EC00F1E9F9 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AppDelegate.h; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 1945A65D18ED92EC00F1E9F9 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AppDelegate.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 1945A66118EDA26800F1E9F9 /* liballjoyn_about_cpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liballjoyn_about_cpp.a; path = "../../../../../../../../Library/Developer/Xcode/DerivedData/GatewayControllerServiceWorkspace-acioescdnprvgoahhnpjlhfceial/Build/Products/Debug-iphoneos/liballjoyn_about_cpp.a"; sourceTree = ""; }; 1945A66218EDA26800F1E9F9 /* liballjoyn_gateway_cpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liballjoyn_gateway_cpp.a; path = "../../../../../../../../Library/Developer/Xcode/DerivedData/GatewayControllerServiceWorkspace-acioescdnprvgoahhnpjlhfceial/Build/Products/Debug-iphoneos/liballjoyn_gateway_cpp.a"; sourceTree = ""; }; 19C8E9BF18F1B1AB00747599 /* liballjoyn_services_common_objc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liballjoyn_services_common_objc.a; path = "../../../../../../services_common/ios/samples/alljoyn_services_objc/build/Debug-iphoneos/liballjoyn_services_common_objc.a"; sourceTree = ""; }; 19C8E9C018F1B1AB00747599 /* liballjoyn_services_common_cpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liballjoyn_services_common_cpp.a; path = "../../../../../../services_common/ios/samples/alljoyn_services_cpp/build/Debug-iphoneos/liballjoyn_services_common_cpp.a"; sourceTree = ""; }; 19DE6B611928D8C200F636DD /* CreateAclViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CreateAclViewController.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 19DE6B621928D8C200F636DD /* CreateAclViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CreateAclViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 19E2263819111F0400BD3927 /* ConnectorAppTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ConnectorAppTableViewCell.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 19E2263919111F0400BD3927 /* ConnectorAppTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = ConnectorAppTableViewCell.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 19E2263E1911273600BD3927 /* ConnectorAppTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ConnectorAppTableViewController.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 19E2263F1911273600BD3927 /* ConnectorAppTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = ConnectorAppTableViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 19E2264419161EBD00BD3927 /* ConnectorAppInfoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ConnectorAppInfoViewController.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 19E2264519161EBD00BD3927 /* ConnectorAppInfoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = ConnectorAppInfoViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 19E2264D1916563400BD3927 /* ConnectorAppInfoAclsTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ConnectorAppInfoAclsTableViewCell.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 19E2264E1916563400BD3927 /* ConnectorAppInfoAclsTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = ConnectorAppInfoAclsTableViewCell.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 19E2F03F17E87CE10005851F /* GatewayControllerService.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GatewayControllerService.app; sourceTree = BUILT_PRODUCTS_DIR; }; 19E2F04217E87CE10005851F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 19E2F04417E87CE10005851F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 19E2F04617E87CE10005851F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 19E2F06817E88AF20005851F /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; 19E2F06A17E88B030005851F /* libstdc++.6.0.9.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.0.9.dylib"; path = "usr/lib/libstdc++.6.0.9.dylib"; sourceTree = SDKROOT; }; 19E2F06B17E88B030005851F /* libstdc++.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.dylib"; path = "usr/lib/libstdc++.6.dylib"; sourceTree = SDKROOT; }; 19E2F06C17E88B030005851F /* libstdc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.dylib"; path = "usr/lib/libstdc++.dylib"; sourceTree = SDKROOT; }; 19E2F07017E88B120005851F /* libc++.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.1.dylib"; path = "usr/lib/libc++.1.dylib"; sourceTree = SDKROOT; }; 19E2F07117E88B120005851F /* libc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.dylib"; path = "usr/lib/libc++.dylib"; sourceTree = SDKROOT; }; 19E2F07217E88B120005851F /* libc++abi.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++abi.dylib"; path = "usr/lib/libc++abi.dylib"; sourceTree = SDKROOT; }; 9A06D5B019161F6D003FCFA7 /* AclRulesContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AclRulesContainer.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 9A06D5B119161F6D003FCFA7 /* AclRulesContainer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AclRulesContainer.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 9A3DB00B183A0D290063D6BE /* ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ViewController.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 9A3DB00C183A0D290063D6BE /* ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = ViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 9A3DB314183A19CB0063D6BE /* libc.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libc.dylib; path = usr/lib/libc.dylib; sourceTree = SDKROOT; }; 9A53BE63191F598D00B50DF9 /* InterfaceRuleTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = InterfaceRuleTableViewCell.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 9A53BE64191F598D00B50DF9 /* InterfaceRuleTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = InterfaceRuleTableViewCell.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 9A5CC10D183D073E002327C0 /* GetAboutCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = GetAboutCallViewController.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 9A5CC10E183D073E002327C0 /* GetAboutCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GetAboutCallViewController.m; sourceTree = ""; }; 9A5EFF7B187044BC002833C1 /* ClientInformation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ClientInformation.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 9A5EFF7C187044BC002833C1 /* ClientInformation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = ClientInformation.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 9A65BCF51900116000784D9E /* liballjoyn_about_cpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liballjoyn_about_cpp.a; path = "../../../../../../../core/alljoyn/services/about/ios/samples/alljoyn_services_cpp/build/Debug-iphoneos/liballjoyn_about_cpp.a"; sourceTree = ""; }; 9A65BCF61900116000784D9E /* liballjoyn_about_objc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liballjoyn_about_objc.a; path = "../../../../../../../core/alljoyn/services/about/ios/samples/alljoyn_services_objc/build/Debug-iphoneos/liballjoyn_about_objc.a"; sourceTree = ""; }; 9A65BCF71900116000784D9E /* liballjoyn_gateway_cpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liballjoyn_gateway_cpp.a; path = "../alljoyn_services_cpp/build/Debug-iphoneos/liballjoyn_gateway_cpp.a"; sourceTree = ""; }; 9A65BCF81900116000784D9E /* liballjoyn_gateway_objc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liballjoyn_gateway_objc.a; path = "../alljoyn_services_objc/build/Debug-iphoneos/liballjoyn_gateway_objc.a"; sourceTree = ""; }; 9A65BCF91900116000784D9E /* liballjoyn_services_common_cpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liballjoyn_services_common_cpp.a; path = "../../../../../../services_common/ios/samples/alljoyn_services_cpp/build/Debug-iphoneos/liballjoyn_services_common_cpp.a"; sourceTree = ""; }; 9A65BCFA1900116000784D9E /* liballjoyn_services_common_objc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liballjoyn_services_common_objc.a; path = "../../../../../../services_common/ios/samples/alljoyn_services_objc/build/Debug-iphoneos/liballjoyn_services_common_objc.a"; sourceTree = ""; }; 9A65BCFB1900116000784D9E /* libAllJoynFramework_iOS.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libAllJoynFramework_iOS.a; path = "../../../../../../../core/alljoyn/alljoyn_objc/AllJoynFramework_iOS/build/Debug-iphoneos/libAllJoynFramework_iOS.a"; sourceTree = ""; }; 9A822B20191BC5FF00EB156E /* ObjectPathLevelRulesTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ObjectPathLevelRulesTableViewController.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 9A822B21191BC5FF00EB156E /* ObjectPathLevelRulesTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = ObjectPathLevelRulesTableViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 9AAACF4019126804001D575E /* MainStoryboard_iPhone.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = MainStoryboard_iPhone.storyboard; sourceTree = ""; }; 9AAACF4219126869001D575E /* ACLTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = ACLTableViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 9AAACF4319126869001D575E /* ACLTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ACLTableViewController.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 9AAACF4619126C3F001D575E /* VisualAclRules.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = VisualAclRules.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 9AAACF4719126C3F001D575E /* VisualAclRules.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = VisualAclRules.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 9AC0B4D31920C4A9000C68AA /* ObjectPathRuleTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ObjectPathRuleTableViewCell.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 9AC0B4D41920C4A9000C68AA /* ObjectPathRuleTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ObjectPathRuleTableViewCell.m; sourceTree = ""; }; 9AD3D2DC187191AC00D15544 /* AnnounceTextViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AnnounceTextViewController.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 9AD3D2DD187191AC00D15544 /* AnnounceTextViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AnnounceTextViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 19E2F03C17E87CE10005851F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 9A65BCFC1900116000784D9E /* liballjoyn_about_cpp.a in Frameworks */, 9A65BCFD1900116000784D9E /* liballjoyn_about_objc.a in Frameworks */, 9A65BCFE1900116000784D9E /* liballjoyn_gateway_cpp.a in Frameworks */, 9A65BCFF1900116000784D9E /* liballjoyn_gateway_objc.a in Frameworks */, 9A65BD021900116000784D9E /* libAllJoynFramework_iOS.a in Frameworks */, 9A3DB315183A19CB0063D6BE /* libc.dylib in Frameworks */, 19E2F07417E88B120005851F /* libc++.dylib in Frameworks */, 19E2F07517E88B120005851F /* libc++abi.dylib in Frameworks */, 19E2F06D17E88B030005851F /* libstdc++.6.0.9.dylib in Frameworks */, 19E2F06E17E88B030005851F /* libstdc++.6.dylib in Frameworks */, 19E2F06F17E88B030005851F /* libstdc++.dylib in Frameworks */, 19E2F06917E88AF20005851F /* SystemConfiguration.framework in Frameworks */, 19E2F04317E87CE10005851F /* UIKit.framework in Frameworks */, 19E2F04517E87CE10005851F /* Foundation.framework in Frameworks */, 19E2F04717E87CE10005851F /* CoreGraphics.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 19E2F03617E87CE10005851F = { isa = PBXGroup; children = ( 9A3DAFF9183A0D290063D6BE /* GatewayControllerService */, 19E2F04117E87CE10005851F /* Frameworks */, 19E2F04017E87CE10005851F /* Products */, ); sourceTree = ""; }; 19E2F04017E87CE10005851F /* Products */ = { isa = PBXGroup; children = ( 19E2F03F17E87CE10005851F /* GatewayControllerService.app */, ); name = Products; sourceTree = ""; }; 19E2F04117E87CE10005851F /* Frameworks */ = { isa = PBXGroup; children = ( 9A65BCF51900116000784D9E /* liballjoyn_about_cpp.a */, 9A65BCF61900116000784D9E /* liballjoyn_about_objc.a */, 9A65BCF71900116000784D9E /* liballjoyn_gateway_cpp.a */, 9A65BCF81900116000784D9E /* liballjoyn_gateway_objc.a */, 9A65BCF91900116000784D9E /* liballjoyn_services_common_cpp.a */, 9A65BCFA1900116000784D9E /* liballjoyn_services_common_objc.a */, 9A65BCFB1900116000784D9E /* libAllJoynFramework_iOS.a */, 19C8E9BF18F1B1AB00747599 /* liballjoyn_services_common_objc.a */, 19C8E9C018F1B1AB00747599 /* liballjoyn_services_common_cpp.a */, 1945A66118EDA26800F1E9F9 /* liballjoyn_about_cpp.a */, 1945A66218EDA26800F1E9F9 /* liballjoyn_gateway_cpp.a */, 1945A65218ED8D8900F1E9F9 /* libAllJoynFramework_iOS.a */, 1945A65418ED8D8900F1E9F9 /* liballjoyn_about_objc.a */, 1945A65618ED8D8A00F1E9F9 /* liballjoyn_gateway_objc.a */, 19E2F07017E88B120005851F /* libc++.1.dylib */, 19E2F07117E88B120005851F /* libc++.dylib */, 19E2F07217E88B120005851F /* libc++abi.dylib */, 19E2F06A17E88B030005851F /* libstdc++.6.0.9.dylib */, 19E2F06B17E88B030005851F /* libstdc++.6.dylib */, 19E2F06C17E88B030005851F /* libstdc++.dylib */, 19E2F06817E88AF20005851F /* SystemConfiguration.framework */, 9A3DB314183A19CB0063D6BE /* libc.dylib */, 19E2F04217E87CE10005851F /* UIKit.framework */, 19E2F04417E87CE10005851F /* Foundation.framework */, 19E2F04617E87CE10005851F /* CoreGraphics.framework */, ); name = Frameworks; sourceTree = ""; }; 19F6D03B1875A89400709EC0 /* ViewControllers */ = { isa = PBXGroup; children = ( 9A822B20191BC5FF00EB156E /* ObjectPathLevelRulesTableViewController.h */, 9A822B21191BC5FF00EB156E /* ObjectPathLevelRulesTableViewController.m */, 9AAACF4219126869001D575E /* ACLTableViewController.m */, 9AAACF4319126869001D575E /* ACLTableViewController.h */, 19E2263819111F0400BD3927 /* ConnectorAppTableViewCell.h */, 19E2263919111F0400BD3927 /* ConnectorAppTableViewCell.m */, 9A5CC10D183D073E002327C0 /* GetAboutCallViewController.h */, 9A5CC10E183D073E002327C0 /* GetAboutCallViewController.m */, 9A3DB00B183A0D290063D6BE /* ViewController.h */, 9A3DB00C183A0D290063D6BE /* ViewController.m */, 9AD3D2DC187191AC00D15544 /* AnnounceTextViewController.h */, 9AD3D2DD187191AC00D15544 /* AnnounceTextViewController.m */, 19E2263E1911273600BD3927 /* ConnectorAppTableViewController.h */, 19E2263F1911273600BD3927 /* ConnectorAppTableViewController.m */, 19E2264419161EBD00BD3927 /* ConnectorAppInfoViewController.h */, 19E2264519161EBD00BD3927 /* ConnectorAppInfoViewController.m */, 19E2264D1916563400BD3927 /* ConnectorAppInfoAclsTableViewCell.h */, 19E2264E1916563400BD3927 /* ConnectorAppInfoAclsTableViewCell.m */, 9A53BE63191F598D00B50DF9 /* InterfaceRuleTableViewCell.h */, 9A53BE64191F598D00B50DF9 /* InterfaceRuleTableViewCell.m */, 19373DF51920B5E3001617EB /* ManifestTabBarController.h */, 19373DF61920B5E3001617EB /* ManifestTabBarController.m */, 9AC0B4D31920C4A9000C68AA /* ObjectPathRuleTableViewCell.h */, 9AC0B4D41920C4A9000C68AA /* ObjectPathRuleTableViewCell.m */, 19373DFE1923A794001617EB /* ConnectorCapabilitiesViewController.h */, 19373DFF1923A794001617EB /* ConnectorCapabilitiesViewController.m */, 19373E011923A80D001617EB /* ManifestFileViewController.h */, 19373E021923A80D001617EB /* ManifestFileViewController.m */, 19DE6B611928D8C200F636DD /* CreateAclViewController.h */, 19DE6B621928D8C200F636DD /* CreateAclViewController.m */, ); name = ViewControllers; sourceTree = ""; }; 19F6D03C1875A8E400709EC0 /* StoryBoards */ = { isa = PBXGroup; children = ( 9AAACF4019126804001D575E /* MainStoryboard_iPhone.storyboard */, ); name = StoryBoards; sourceTree = ""; }; 19F6D03D1875A8FC00709EC0 /* Utils */ = { isa = PBXGroup; children = ( 9A5EFF7B187044BC002833C1 /* ClientInformation.h */, 9A5EFF7C187044BC002833C1 /* ClientInformation.m */, ); name = Utils; sourceTree = ""; }; 9A3DAFF9183A0D290063D6BE /* GatewayControllerService */ = { isa = PBXGroup; children = ( 9AAACF4519126B72001D575E /* Models */, 19F6D03D1875A8FC00709EC0 /* Utils */, 19F6D03C1875A8E400709EC0 /* StoryBoards */, 19F6D03B1875A89400709EC0 /* ViewControllers */, 9A3DAFFA183A0D290063D6BE /* Resources */, 9A8B043D190FC5E900DD5CAA /* iPad */, ); name = GatewayControllerService; sourceTree = ""; }; 9A3DAFFA183A0D290063D6BE /* Resources */ = { isa = PBXGroup; children = ( 1945A65C18ED92EC00F1E9F9 /* AppDelegate.h */, 1945A65D18ED92EC00F1E9F9 /* AppDelegate.m */, 1945A64E18ED8A9C00F1E9F9 /* InfoPlist.strings */, 1945A64118ED8A9600F1E9F9 /* alljoynicon.jpeg */, 1945A64218ED8A9600F1E9F9 /* Default-568h@2x.png */, 1945A64318ED8A9600F1E9F9 /* Default.png */, 1945A64418ED8A9600F1E9F9 /* Default@2x.png */, 1945A64518ED8A9600F1E9F9 /* GatewayControllerService-Info.plist */, 1945A64618ED8A9600F1E9F9 /* GatewayControllerService-Prefix.pch */, 1945A64718ED8A9600F1E9F9 /* main.m */, ); name = Resources; path = ConfigService; sourceTree = ""; }; 9A8B043D190FC5E900DD5CAA /* iPad */ = { isa = PBXGroup; children = ( ); name = iPad; sourceTree = ""; }; 9AAACF4519126B72001D575E /* Models */ = { isa = PBXGroup; children = ( 9AAACF4619126C3F001D575E /* VisualAclRules.h */, 9AAACF4719126C3F001D575E /* VisualAclRules.m */, 9A06D5B019161F6D003FCFA7 /* AclRulesContainer.h */, 9A06D5B119161F6D003FCFA7 /* AclRulesContainer.m */, 19373DF81920D9F0001617EB /* AnnouncementManager.h */, 19373DF91920D9F0001617EB /* AnnouncementManager.m */, ); name = Models; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ 19E2F03E17E87CE10005851F /* GatewayControllerService */ = { isa = PBXNativeTarget; buildConfigurationList = 19E2F06517E87CE10005851F /* Build configuration list for PBXNativeTarget "GatewayControllerService" */; buildPhases = ( 19E2F03B17E87CE10005851F /* Sources */, 19E2F03C17E87CE10005851F /* Frameworks */, 19E2F03D17E87CE10005851F /* Resources */, ); buildRules = ( ); dependencies = ( ); name = GatewayControllerService; productName = ConfigService; productReference = 19E2F03F17E87CE10005851F /* GatewayControllerService.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 19E2F03717E87CE10005851F /* Project object */ = { isa = PBXProject; attributes = { LastUpgradeCheck = 0510; ORGANIZATIONNAME = AllJoyn; TargetAttributes = { 19E2F03E17E87CE10005851F = { DevelopmentTeam = 3CDNU3SH4G; SystemCapabilities = { com.apple.BackgroundModes = { enabled = 0; }; }; }; }; }; buildConfigurationList = 19E2F03A17E87CE10005851F /* Build configuration list for PBXProject "GatewayControllerService" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( en, ); mainGroup = 19E2F03617E87CE10005851F; productRefGroup = 19E2F04017E87CE10005851F /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 19E2F03E17E87CE10005851F /* GatewayControllerService */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 19E2F03D17E87CE10005851F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 9AAACF4119126804001D575E /* MainStoryboard_iPhone.storyboard in Resources */, 1945A64B18ED8A9600F1E9F9 /* Default@2x.png in Resources */, 1945A64918ED8A9600F1E9F9 /* Default-568h@2x.png in Resources */, 1945A64818ED8A9600F1E9F9 /* alljoynicon.jpeg in Resources */, 1945A64A18ED8A9600F1E9F9 /* Default.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 19E2F03B17E87CE10005851F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 9A3DB0C4183A0D2A0063D6BE /* ViewController.m in Sources */, 9AD3D2DE187191AC00D15544 /* AnnounceTextViewController.m in Sources */, 1945A65E18ED92EC00F1E9F9 /* AppDelegate.m in Sources */, 9A5EFF7D187044BC002833C1 /* ClientInformation.m in Sources */, 9AAACF4819126C3F001D575E /* VisualAclRules.m in Sources */, 19373E001923A794001617EB /* ConnectorCapabilitiesViewController.m in Sources */, 19E2264619161EBD00BD3927 /* ConnectorAppInfoViewController.m in Sources */, 19E226401911273600BD3927 /* ConnectorAppTableViewController.m in Sources */, 19373DF71920B5E3001617EB /* ManifestTabBarController.m in Sources */, 1945A64D18ED8A9600F1E9F9 /* main.m in Sources */, 9A5CC10F183D073E002327C0 /* GetAboutCallViewController.m in Sources */, 9AC0B4D51920C4A9000C68AA /* ObjectPathRuleTableViewCell.m in Sources */, 9A822B22191BC5FF00EB156E /* ObjectPathLevelRulesTableViewController.m in Sources */, 19373DFA1920D9F0001617EB /* AnnouncementManager.m in Sources */, 9A53BE65191F598D00B50DF9 /* InterfaceRuleTableViewCell.m in Sources */, 9AAACF4419126869001D575E /* ACLTableViewController.m in Sources */, 19373E031923A80D001617EB /* ManifestFileViewController.m in Sources */, 9A06D5B219161F6D003FCFA7 /* AclRulesContainer.m in Sources */, 19DE6B631928D8C200F636DD /* CreateAclViewController.m in Sources */, 19E2264F1916563400BD3927 /* ConnectorAppInfoAclsTableViewCell.m in Sources */, 19E2263A19111F0400BD3927 /* ConnectorAppTableViewCell.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ 1945A64E18ED8A9C00F1E9F9 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( 1945A64F18ED8A9C00F1E9F9 /* en */, ); name = InfoPlist.strings; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 19E2F06317E87CE10005851F /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 6.1; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 19E2F06417E87CE10005851F /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 6.1; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; 19E2F06617E87CE10005851F /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; CLANG_CXX_LIBRARY = "compiler-default"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; GCC_C_LANGUAGE_STANDARD = "compiler-default"; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_ENABLE_CPP_RTTI = NO; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_INPUT_FILETYPE = sourcecode.cpp.objcpp; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "GatewayControllerService/GatewayControllerService-Prefix.pch"; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( "\"$(SRCROOT)/../../../cpp/inc/\"", "\"$(SRCROOT)/../../../objc/inc/\"", "\"$(ALLJOYN_SDK_ROOT)/build/darwin/arm/$(PLATFORM_NAME)/$(CONFIGURATION)/dist/cpp/inc\"", "\"$(ALLJOYN_SDK_ROOT)/build/darwin/arm/$(PLATFORM_NAME)/$(CONFIGURATION)/dist/cpp/inc/alljoyn\"", "$(SRCROOT)/../../../../../../../common/inc", "\"$(ALLJOYN_SDK_ROOT)/alljoyn_objc/AllJoynFramework/AllJoynFramework/\"", "\"$(ALLJOYN_SDK_ROOT)/services/about/ios/inc\"", "\"$(ALLJOYN_SDK_ROOT)/services/about/cpp/inc\"", "\"$(SRCROOT)\"", ../../../../cpp/GatewayController/inc/, ../../../../ios/GatewayController/inc/, ); INFOPLIST_FILE = "$(SRCROOT)/GatewayControllerService/GatewayControllerService-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(ALLJOYN_SDK_ROOT)/build/darwin/$(CURRENT_ARCH)/$(PLATFORM_NAME)/$(CONFIGURATION)/dist/cpp/lib", "$(OPENSSL_ROOT)/build/$(CONFIGURATION)-$(PLATFORM_NAME)", "$(ALLJOYN_SDK_ROOT)/build/darwin/arm/$(PLATFORM_NAME)/$(CONFIGURATION)/dist/about/lib", ../../../cpp/lib/, ../../../objc/lib/, ); ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "-DQCC_OS_GROUP_POSIX", "-DQCC_OS_DARWIN", ); OTHER_LDFLAGS = ( "-lalljoyn", "-lajrouter", "-lBundledRouter.o", "-lssl", "-lcrypto", ); PRODUCT_NAME = GatewayControllerService; PROVISIONING_PROFILE = ""; TARGETED_DEVICE_FAMILY = 1; VALID_ARCHS = "armv7 armv7s i386"; WRAPPER_EXTENSION = app; }; name = Debug; }; 19E2F06717E87CE10005851F /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; CLANG_CXX_LIBRARY = "compiler-default"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; GCC_C_LANGUAGE_STANDARD = "compiler-default"; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_ENABLE_CPP_RTTI = NO; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_INPUT_FILETYPE = sourcecode.cpp.objcpp; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "GatewayControllerService/GatewayControllerService-Prefix.pch"; HEADER_SEARCH_PATHS = ( "\"$(SRCROOT)/../../../cpp/inc/\"", "\"$(SRCROOT)/../../../objc/inc/\"", "\"$(ALLJOYN_SDK_ROOT)/build/darwin/arm/$(PLATFORM_NAME)/$(CONFIGURATION)/dist/cpp/inc\"", "\"$(ALLJOYN_SDK_ROOT)/build/darwin/arm/$(PLATFORM_NAME)/$(CONFIGURATION)/dist/cpp/inc/alljoyn\"", "$(SRCROOT)/../../../../../../../common/inc", "\"$(ALLJOYN_SDK_ROOT)/alljoyn_objc/AllJoynFramework/AllJoynFramework/\"", "\"$(ALLJOYN_SDK_ROOT)/services/about/ios/inc\"", "\"$(ALLJOYN_SDK_ROOT)/services/about/cpp/inc\"", "\"$(SRCROOT)\"", ../../../../cpp/GatewayController/inc/, ../../../../ios/GatewayController/inc/, ); INFOPLIST_FILE = "$(SRCROOT)/GatewayControllerService/GatewayControllerService-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(ALLJOYN_SDK_ROOT)/build/darwin/$(CURRENT_ARCH)/$(PLATFORM_NAME)/$(CONFIGURATION)/dist/cpp/lib", "$(OPENSSL_ROOT)/build/$(CONFIGURATION)-$(PLATFORM_NAME)", "$(ALLJOYN_SDK_ROOT)/build/darwin/arm/$(PLATFORM_NAME)/$(CONFIGURATION)/dist/about/lib", ../../../cpp/lib/, ../../../objc/lib/, ); ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "-DNS_BLOCK_ASSERTIONS=1", "-DQCC_OS_GROUP_POSIX", "-DQCC_OS_DARWIN", ); OTHER_LDFLAGS = ( "-lalljoyn", "-lajrouter", "-lBundledRouter.o", "-lssl", "-lcrypto", ); PRODUCT_NAME = GatewayControllerService; PROVISIONING_PROFILE = ""; TARGETED_DEVICE_FAMILY = 1; VALID_ARCHS = "armv7 armv7s i386"; WRAPPER_EXTENSION = app; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 19E2F03A17E87CE10005851F /* Build configuration list for PBXProject "GatewayControllerService" */ = { isa = XCConfigurationList; buildConfigurations = ( 19E2F06317E87CE10005851F /* Debug */, 19E2F06417E87CE10005851F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 19E2F06517E87CE10005851F /* Build configuration list for PBXNativeTarget "GatewayControllerService" */ = { isa = XCConfigurationList; buildConfigurations = ( 19E2F06617E87CE10005851F /* Debug */, 19E2F06717E87CE10005851F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; rootObject = 19E2F03717E87CE10005851F /* Project object */; } alljoyn-gwagent-1504/ios/GatewayController/samples/GatewayControllerServiceWorkspace.xcworkspace/0000755000175600017560000000000012724255335033575 5ustar alljoynalljoyn././@LongLink0000644000000000000000000000017200000000000011603 Lustar rootrootalljoyn-gwagent-1504/ios/GatewayController/samples/GatewayControllerServiceWorkspace.xcworkspace/contents.xcworkspacedataalljoyn-gwagent-1504/ios/GatewayController/samples/GatewayControllerServiceWorkspace.xcworkspace/con0000644000175600017560000000060412724255335034277 0ustar alljoynalljoyn alljoyn-gwagent-1504/ios/.gitignore0000644000175600017560000000011012724255335017247 0ustar alljoynalljoyn*.developerprofile *.xcuserdata .DS_Store xcshareddata .xcworkspacedata alljoyn-gwagent-1504/ReleaseNotes.txt0000644000175600017560000000541312724255335017632 0ustar alljoynalljoynGateWay agent 14.12 Release Notes ==================================== Platform Support ---------------- 1) Gateway Agent & sample connector - OpenWRT BB - Linux Ubuntu 14.04 LTS (64 bit) 2) Controller - Android KitKat 4.4 (ARM7) - iOS 7.1 (32-bit) Features added in Version 14.12 ------------------------------ Issues Addressed in This Version -------------------------------- ASAGW-3 Inconsistent naming convention in gateway public interface ASAGW-4 Inconsistent ways to return QStatus making it hard to use the gateway API ASAGW-8 Some mandatory fields are not initialised in AboutPropertyStoreImpl of GatewayAgent Manager App ASAGW-11 XSD limits object path to 50 characters. This is too short. Should be longer or not limtied. ASAGW-12 installPackage.sh shell script does not function on openwrt (TPLINK842ND) ASAGW-13 Add support for ALLJOYN_ECDHE_PSK ASAGW-15 3rd party sample app stops after update of an ACL and GetMergedAcl method call ASAGW-16 Getting error "Bad substitution" from sample app ASAGW-17 Remoting Config interface fails due to ER_AUTH_FAIL at Exchange Guids. ASAGW-20 Add about testing to connector sample app ASAGW-21 Error thrown when ACL name is in UTF-8 ASAGW-24 IOS sample app project fails to compile due to wrong path in the project ASAGW-26 Gateway Agent does not need onborading service ASAGW-28 Policy entries not generated properly with some ACLs ASAGW-29 Gateway Manager About App Name Misspelled ASAGW-31 Documentation needed for GatewayConnector and GatewayController components ASAGW-32 Output binaries and installation folders for Gateway need to conform to other AllJoyn projects ASAGW-36 running postTweet.sh script with "sh -i" can hang on Ubuntu ASAGW-41 Sample Connector App ipk not built properly for OpenWRT ASAGW-42 Connector interface not registered as secured by Gateway Agent A complete list of closed issues can be found at: https://jira.allseenalliance.org/issues/?jql=project%20%3D%20ASAGW%20AND%20issuetype%20in%20%28Bug%29%20AND%20fixVersion%20%3D%20%2214.12%22%20AND%20status%20in%20%28Resolved%2CClosed%29%20ORDER%20BY%20key%20ASC Known Issues ------------ ASAGW-18 New Gateway 3rd party apps are not registered without a restart of the GW agent. ASAGW-25 Very small leak reported by Valgrind for Gateway Agent ASAGW-40 GatewayMgmtApp should clean up "old" lost devices from policy db xml file sooner than a router restart For a complete list of open issues: https://jira.allseenalliance.org/issues/?jql=project%20%3D%20ASAGW%20AND%20status%20not%20in%20%28closed%2C%20resolved%29%20and%20type%20not%20in%20%28task%2C%20%22New%20Feature%22%29%20ORDER%20BY%20priority%20DESC%2C%20key%20ASC Compatibility ------------- Change history -------------- 14.12 - Initial Alliance Alliance release alljoyn-gwagent-1504/build_scripts/0000755000175600017560000000000012724255410017335 5ustar alljoynalljoynalljoyn-gwagent-1504/build_scripts/build_openwrt.sh0000755000175600017560000002777612724255335022602 0ustar alljoynalljoyn#!/bin/bash # Copyright AllSeen Alliance. All rights reserved. # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # # Builds OpenWRT ipks needed to install the gwagent and sample connector # # OPENWRT_REPO_URL - OpenWRT git repo URL to use # - defaults to git://git.openwrt.org/14.07/openwrt.git # - ex) git://git.openwrt.org/14.07/openwrt.git # - ex) git://git.openwrt.org/12.09/openwrt.git # OPENWRT_ROOT_DIR - directory to clone OpenWRT git repo to # - defaults to build/jobs/openwrt_root # - ex) ${WORKSPACE}/openwrt # OPENWRT_FEED_SRC - path to the AllJoyn OpenWRT feed src dir # - defaults to https://git.allseenalliance.org/gerrit/core/openwrt_feed.git # - ex) file://${WORKSPACE}/allseen/core/openwrt_feed # - ex) https://git.allseenalliance.org/gerrit/core/openwrt_feed.git # OPENWRT_DL_DIR - directory for storing packages downloaded (optional) # ARTIFACTS_DIR - directory to copy build products (defaults to build/jobs/artifacts) # WORKING_DIR - temporary directory for use by this script (defaults to build/jobs/tmp) # CORE_SRCTAR - file containing the core source for building (optional) # if set the file will be extracted and CORE_SOURCE_DIR set to the extracted source # SERVICES_SRCTAR - file containing the services source for building (optional) # if set the file will be extracted and SERVICES_SOURCE_DIR set to the extracted source # GATEWAY_SRCTAR - file containing the gateway source for building (optional) # if set the file will be extracted and GATEWAY_SOURCE_DIR set to the extracted source # USE_SOURCE_DIR_OPTION - if set to y then CORE_SOURCE_DIR, SERVICES_SOURCE_DIR, and GATEWAY_SOURCE_DIR # will default to relative directories # CORE_SOURCE_DIR - directory contains the core source for building (optional) # if USE_SOURCE_DIR_OPTION=y then it defaults to ../../../core/alljoyn # SERVICES_SOURCE_DIR - directory contains the services source for building (optional) # if USE_SOURCE_DIR_OPTION=y then it defaults to ../../.. # GATEWAY_SOURCE_DIR - direcory contains the gateway source for building (optional) # if USE_SOURCE_DIR_OPTION=y then it defaults to ../../.. # # Some ways to use this build script to build the OpenWrt ipks # 1. Build the ipks using the source as specified from the feed # - this is the default build when none of the environment variables mentioned below are set # 2. Provide the source tar files for one of more of the packages (core, services, or gateway) # - CORE_SRCTAR - source tar file for building core packages # - SERVICES_SRCTAR - source tar file for building services packages # - GATEWAY_SRCTAR - source tar file for building the gateway packages # 3. Use local directories for the sources (assumes all git projects are peers on local file system # and the directory names match the project names) # - USE_SOURCE_DIR_OPTION="y" set -o nounset set -o errexit set -o verbose set -o xtrace #======================================== # Set default values for any unset environment variables export OPENWRT_REPO_URL=${OPENWRT_REPO_URL:-git://git.openwrt.org/14.07/openwrt.git} if [ -z "${GWAGENT_SRC_DIR:-}" ] then # set it to the top level directory for the git repo # (based on relative position of the build_scripts) export GWAGENT_SRC_DIR=$(dirname $(dirname $(readlink -f $0))) fi export OPENWRT_ROOT_DIR=${OPENWRT_ROOT_DIR:-$GWAGENT_SRC_DIR/build/jobs/openwrt_root} export WORKING_DIR=${WORKING_DIR:-$GWAGENT_SRC_DIR/build/jobs/tmp} export ARTIFACTS_DIR=${ARTIFACTS_DIR:-$GWAGENT_SRC_DIR/build/jobs/artifacts} export OPENWRT_FEED_SRC=${OPENWRT_FEED_SRC:-https://git.allseenalliance.org/gerrit/core/openwrt_feed.git} #======================================== # extract source tar (if given) # CORE_SRCTAR - file containing the core source for building (optional) # SERVICES_SRCTAR - file containing the services source for building (optional) # GATEWAY_SRCTAR - file containing the gateway source for building (optional) if [ -n "${CORE_SRCTAR:-}" ] then CORE_SOURCE_DIR=${WORKING_DIR}/core_source rm -fr ${CORE_SOURCE_DIR} mkdir -p ${CORE_SOURCE_DIR} tar -zxf ${CORE_SRCTAR} -C ${CORE_SOURCE_DIR} CORE_SOURCE_DIR=$(readlink -f ${CORE_SOURCE_DIR}/*) fi if [ -n "${SERVICES_SRCTAR:-}" ] then SERVICES_SOURCE_DIR=${WORKING_DIR}/services_source rm -fr ${SERVICES_SOURCE_DIR} mkdir -p ${SERVICES_SOURCE_DIR} tar -zxf ${SERVICES_SRCTAR} -C ${SERVICES_SOURCE_DIR} SERVICES_SOURCE_DIR=$(readlink -f ${SERVICES_SOURCE_DIR}/*) fi if [ -n "${GATEWAY_SRCTAR:-}" ] then GATEWAY_SOURCE_DIR=${WORKING_DIR}/gateway_source rm -fr ${GATEWAY_SOURCE_DIR} mkdir -p ${GATEWAY_SOURCE_DIR} tar -zxf ${GATEWAY_SRCTAR} -C ${GATEWAY_SOURCE_DIR} GATEWAY_SOURCE_DIR=$(readlink -f ${GATEWAY_SOURCE_DIR}/*) fi #======================================== # if USE_SOURCE_DIR_OPTION is given then set the source directories if [ "${USE_SOURCE_DIR_OPTION:-}" == "y" ] then # use relative paths for the other projects rootGitDir=$(dirname $(dirname $GWAGENT_SRC_DIR)) export CORE_SOURCE_DIR=${CORE_SOURCE_DIR:-$rootGitDir/core/alljoyn} export SERVICES_SOURCE_DIR=${SERVICES_SOURCE_DIR:-$rootGitDir} export GATEWAY_SOURCE_DIR=${GATEWAY_SOURCE_DIR:-$rootGitDir} fi #======================================== # OpenWRT vars OPENWRT_FEEDS_CONF=$OPENWRT_ROOT_DIR/feeds.conf OPENWRT_CONFIG=$OPENWRT_ROOT_DIR/.config # Start build routine if ! [ -d "$OPENWRT_ROOT_DIR" ]; then git clone $OPENWRT_REPO_URL $OPENWRT_ROOT_DIR fi # create link to DL directory (if provided) if [ -n "${OPENWRT_DL_DIR:-}" ] then [ -d "${OPENWRT_DL_DIR}" ] || mkdir -p ${OPENWRT_DL_DIR} if [ -d "${OPENWRT_ROOT_DIR}/dl" ] then rm -fr "${OPENWRT_ROOT_DIR}/dl" fi ln -s $OPENWRT_DL_DIR ${OPENWRT_ROOT_DIR}/dl else mkdir -p ${OPENWRT_ROOT_DIR}/dl/ fi # Clean up from previous build rm -f $OPENWRT_CONFIG rm -rf $OPENWRT_ROOT_DIR/dl/*alljoyn* pushd $OPENWRT_ROOT_DIR # Add basic feeds to feeds.conf grep "src-git packages" $OPENWRT_FEEDS_CONF.default > $OPENWRT_FEEDS_CONF grep "src-git luci" $OPENWRT_FEEDS_CONF.default >> $OPENWRT_FEEDS_CONF # Add AllJoyn feed to feeds.conf echo "src-git alljoyn $OPENWRT_FEED_SRC" >> $OPENWRT_FEEDS_CONF ./scripts/feeds list -r alljoyn | awk '{ print $1 }' | xargs -r -n 1 ./scripts/feeds uninstall rm -rf $OPENWRT_ROOT_DIR/feeds/alljoyn* ./scripts/feeds update -a ./scripts/feeds install -a -p alljoyn -d m make defconfig AJ_CORE_PKG="CONFIG_PACKAGE_alljoyn" AJ_ABOUT_PKG="CONFIG_PACKAGE_alljoyn-about" AJ_C_PKG="CONFIG_PACKAGE_alljoyn-c" AJ_CONFIG_PKG="CONFIG_PACKAGE_alljoyn-config" AJ_CONTROLPANEL_PKG="CONFIG_PACKAGE_alljoyn-controlpanel" AJ_NON_GW_CONFIG_PKG="CONFIG_PACKAGE_alljoyn-non-gw-config" AJ_NOTIFICATION_PKG="CONFIG_PACKAGE_alljoyn-notification" AJ_ONBOARDING_PKG="CONFIG_PACKAGE_alljoyn-onboarding" AJ_SAMPLES_PKG="CONFIG_PACKAGE_alljoyn-samples" AJ_SERVICES_COMMON_PKG="CONFIG_PACKAGE_alljoyn-services_common" AJ_SERVICES_SAMPLE_APPS_PKG="CONFIG_PACKAGE_alljoyn-sample_apps" AJ_CONFIG_SAMPLES_PKG="CONFIG_PACKAGE_alljoyn-config-samples" AJ_CONTROLPANEL_SAMPLES_PKG="CONFIG_PACKAGE_alljoyn-controlpanel-samples" AJ_NOTIFICATION_SAMPLES_PKG="CONFIG_PACKAGE_alljoyn-notification-samples" AJ_ONBOARDING_SAMPLES_PKG="CONFIG_PACKAGE_alljoyn-onboarding-samples" AJ_GWAGENT_PKG="CONFIG_PACKAGE_alljoyn-gwagent" AJ_GWAGENT_SAMPLES_PKG="CONFIG_PACKAGE_alljoyn-gwagent-samples" # Enable these AllJoyn packages sed -i "s/.*$AJ_CORE_PKG is not set/$AJ_CORE_PKG\=m/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_CORE_PKG\=y/$AJ_CORE_PKG\=m/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_ABOUT_PKG is not set/$AJ_ABOUT_PKG\=m/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_ABOUT_PKG\=y/$AJ_ABOUT_PKG\=m/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_CONFIG_PKG is not set/$AJ_CONFIG_PKG\=m/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_CONFIG_PKG\=y/$AJ_CONFIG_PKG\=m/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_NOTIFICATION_PKG is not set/$AJ_NOTIFICATION_PKG\=m/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_NOTIFICATION_PKG\=y/$AJ_NOTIFICATION_PKG\=m/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_SERVICES_COMMON_PKG is not set/$AJ_SERVICES_COMMON_PKG\=m/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_SERVICES_COMMON_PKG\=y/$AJ_SERVICES_COMMON_PKG\=m/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_GWAGENT_PKG is not set/$AJ_GWAGENT_PKG\=m/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_GWAGENT_PKG\=y/$AJ_GWAGENT_PKG\=m/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_GWAGENT_SAMPLES_PKG is not set/$AJ_GWAGENT_SAMPLES_PKG\=m/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_GWAGENT_SAMPLES_PKG\=y/$AJ_GWAGENT_SAMPLES_PKG\=m/g" $OPENWRT_CONFIG # Disable these AllJoyn packages sed -i "s/.*$AJ_C_PKG\=.*$/# $AJ_C_PKG is not set/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_CONFIG_SAMPLES_PKG\=.*$/# $AJ_CONFIG_SAMPLES_PKG is not set/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_NOTIFICATION_SAMPLES_PKG\=.*$/# $AJ_NOTIFICATION_SAMPLES_PKG is not set/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_CONTROLPANEL_PKG\=.*$/# $AJ_CONTROLPANEL_PKG is not set/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_CONTROLPANEL_SAMPLES_PKG\=.*$/# $AJ_CONTROLPANEL_SAMPLES_PKG is not set/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_NON_GW_CONFIG_PKG\=.*$/# $AJ_NON_GW_CONFIG_PKG is not set/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_ONBOARDING_PKG\=.*$/# $AJ_ONBOARDING_PKG is not set/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_ONBOARDING_SAMPLES_PKG\=.*$/# $AJ_ONBOARDING_SAMPLES_PKG is not set/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_SAMPLES_PKG\=.*$/# $AJ_SAMPLES_PKG is not set/g" $OPENWRT_CONFIG sed -i "s/.*$AJ_SERVICES_SAMPLE_APPS_PKG\=.*$/# $AJ_SERVICES_SAMPLE_APPS_PKG is not set/g" $OPENWRT_CONFIG make V=s tools/install make V=s toolchain/install make V=s package/zlib/{clean,compile,install} make V=s package/openssl/{clean,compile,install} make V=s package/libcap/{clean,compile,install} make V=s package/libxml2/{clean,compile,install} function makeSourceBuild() { # we need to run prepare once without the USE_SOURCE_DIR so that the source # package gets downloaded or it will get downloaded later during the compile # phase and override our USE_SOURCE_DIR setting make V=s $1/clean make V=s $1/prepare make V=s $1/clean make V=s $1/prepare USE_SOURCE_DIR=$2 make V=s $1/compile } if [ -z "${CORE_SOURCE_DIR:-}" ] then make V=s package/feeds/alljoyn/alljoyn/{clean,compile,install} else makeSourceBuild package/alljoyn $CORE_SOURCE_DIR fi if [ -z "${SERVICES_SOURCE_DIR:-}" ] then make V=s package/feeds/alljoyn/alljoyn-services_common/{clean,compile,install} make V=s package/feeds/alljoyn/alljoyn-config/{clean,compile,install} make V=s package/feeds/alljoyn/alljoyn-notification/{clean,compile,install} else makeSourceBuild package/alljoyn-services_common ${SERVICES_SOURCE_DIR} makeSourceBuild package/alljoyn-config ${SERVICES_SOURCE_DIR} makeSourceBuild package/alljoyn-notification ${SERVICES_SOURCE_DIR} fi if [ -z "${GATEWAY_SOURCE_DIR:-}" ] then make V=s package/feeds/alljoyn/alljoyn-gwagent else makeSourceBuild package/alljoyn-gwagent ${GATEWAY_SOURCE_DIR} fi # set variables for the different directories needed ipksDir=${ARTIFACTS_DIR}/ipks # create the directory if needed mkdir -p $ipksDir # copy ipks find . -name alljoyn*.ipk | xargs -I{} cp {} $ipksDir popd # package ipks pushd $ipksDir tar zcvf $ARTIFACTS_DIR/gwagent_ipks.tar.gz --owner=0 --group=0 *.ipk popd alljoyn-gwagent-1504/build_scripts/build_documentation.sh0000755000175600017560000000651212724255335023736 0ustar alljoynalljoyn#!/bin/bash # Copyright AllSeen Alliance. All rights reserved. # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # # Builds an archive file of the Linux build for gwagent # # GWAGENT_SDK_VERSION - version name ot use in building the archive file (version number left out if not given) # GWAGENT_SRC_DIR - root directory of the gwagent git repo (defaults to relative location if not given) # ARTIFACTS_DIR - directory to copy build products (defaults to build/jobs/artifacts) # WORKING_DIR - directory for working with files (defaults to build/jobs/tmp) set -o nounset set -o errexit set -o verbose set -o xtrace #======================================== # Set default values for any unset environment variables if [ -z "${GWAGENT_SRC_DIR:-}" ] then # set it to the top level directory for the git repo # (based on relative position of the build_scripts) export GWAGENT_SRC_DIR=$(dirname $(dirname $(readlink -f $0))) fi export ARTIFACTS_DIR=${ARTIFACTS_DIR:-$GWAGENT_SRC_DIR/build/jobs/artifacts} export WORKING_DIR=${WORKING_DIR:-$GWAGENT_SRC_DIR/build/jobs/tmp} versionString="" if [ -n "${GWAGENT_SDK_VERSION:-}" ] then versionString="${GWAGENT_SDK_VERSION}-" fi #======================================== # set variables for different directories needed sdkStaging=${WORKING_DIR}/sdk_stage sdksDir=${ARTIFACTS_DIR}/sdks # create the directories needed mkdir -p $sdkStaging mkdir -p ${ARTIFACTS_DIR} mkdir -p $sdksDir #======================================== # generate the docs md5File=$sdksDir/md5-alljoyn-gwagent-${versionString}docs.txt rm -f $md5File generateDocs() { docName=$1 docSrc=$2 pushd ${GWAGENT_SRC_DIR} scons V=1 BINDINGS=cpp DOCS=html VARIANT=release -u ${docName}_docs popd docArtifacts=$sdkStaging/$docName cp -r ${GWAGENT_SRC_DIR}/build/linux/x86_64/release/dist/$2/docs/* $docArtifacts # create Manifest.txt file pushd ${GWAGENT_SRC_DIR} python ${GWAGENT_SRC_DIR}/build_scripts/genversion.py > $docArtifacts/Manifest.txt popd # create the documentation package sdkName=alljoyn-gwagent-${versionString}$docName-docs tarFile=$sdksDir/$sdkName.tar.gz pushd $docArtifacts tar zcvf $tarFile * --exclude=SConscript popd pushd $sdksDir md5sum $sdkName.tar.gz >> $md5File popd } generateDocs gwma gatewayMgmtApp generateDocs gwcnc gatewayConnector generateDocs gwc gatewayController iosDocsZip=alljoyn-gwagent-${versionString}ios-sdk-docs.zip androidDocsZip=alljoyn-gwagent-${versionString}android-sdk-docs.zip pushd $sdksDir [[ ! -f $iosDocsZip ]] || md5sum $iosDocsZip >> $md5File [[ ! -f $androidDocsZip ]] || md5sum $androidDocsZip >> $md5File popd alljoyn-gwagent-1504/build_scripts/genversion.py0000755000175600017560000001051112724255335022075 0ustar alljoynalljoyn # Copyright AllSeen Alliance. All rights reserved. # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. import re import sys from subprocess import * def GetBuildInfo(env, source, stderr=PIPE, given_branch=None ): branches = [] tags = [] remotes = [] if env.has_key('GIT'): try: remotes = Popen([env['GIT'], 'remote', '-v'], stdout = PIPE, stderr = stderr, cwd = source).communicate()[0].splitlines() branches = Popen([env['GIT'], 'branch'], stdout = PIPE, stderr = stderr, cwd = source).communicate()[0].splitlines() tags = Popen([env['GIT'], 'describe', '--always', '--long', '--abbrev=40'], stdout = PIPE, stderr = stderr, cwd = source).communicate()[0].splitlines() except WindowsError as e: if e[0] == 2: try: project = Popen([env['GIT'], 'remote', '-v'], stdout = PIPE, stderr = stderr, cwd = source).communicate()[0].splitlines() branches = Popen([env['GIT'] + '.cmd', 'branch'], stdout = PIPE, stderr = stderr, cwd = source).communicate()[0].splitlines() tags = Popen([env['GIT'] + '.cmd', 'describe', '--always', '--long', '--abbrev=40'], stdout = PIPE, stderr = stderr, cwd = source).communicate()[0].splitlines() except: pass except: pass branch = None if given_branch: branch = '(given as ' + given_branch + ')' for b in branches: if b[0] == '*' and not re.search( r'detached from', b[2:] ) and not re.search( r'no branch', b[2:] ): branch = b[2:] break tag = None commit_delta = None commit_hash = None gitname = 'Git' if remotes: for l in remotes: m = re.search( r'^\S+\s(?P.*)\s\(fetch\)$', l ) if m: n = re.search( r'^.*/(?P.+)$', m.group('url').strip() ) if n: p = re.sub( r'\.git$', '', n.group('gitname').strip(), flags=re.I ) gitname = 'Git: %s.git' % ( p ) break if tags: if tags[0].find('-') >= 0: tag, commit_delta, commit_hash = tuple(tags[0].rsplit('-',2)) commit_hash = commit_hash[1:] # lop off the "g" else: tag = '' commit_delta = 0; commit_hash = tags[0] if branch or commit_hash: bld_string = gitname else: bld_string = '' if branch: bld_string += " branch: '%s'" % branch if commit_hash: bld_string += " tag: '%s'" % tag if commit_delta: bld_string += ' (+%s changes)' % commit_delta if commit_delta or tag == '': bld_string += ' commit ref: %s' % commit_hash return bld_string # "main" calls GetBuildInfo() and prints bld_string on stdout # "main" takes one argument: path to git workspace (optional) # "git" executable is expected to be found in PATH def main( argv=None ): env = dict() env['GIT'] = 'git' source = '.' given_branch = None if argv and argv[0] and argv[0].strip() != '': source = argv[0].strip() if len(argv) > 1 and argv[1] and argv[1].strip() != '': given_branch = argv[1].strip() bld_string = GetBuildInfo( env, source, stderr=None, given_branch=given_branch ) if bld_string and bld_string != '': print '%s' % ( bld_string ) return 0 else: sys.stderr.write( 'error, unable to get Git version info\n' ) sys.stderr.flush() return 1 if __name__ == '__main__': if len(sys.argv) > 1: sys.exit(main(sys.argv[1:])) else: sys.exit(main()) alljoyn-gwagent-1504/build_scripts/build_linux.sh0000755000175600017560000001304012724255410022210 0ustar alljoynalljoyn#!/bin/bash # Copyright AllSeen Alliance. All rights reserved. # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # # Builds an archive of the Linux build for gwagent # # BUILD_VARIANT - release or debug (default to release if not given) # GWAGENT_SDK_VERSION - version name to use in building the archive file (version number left out if not given) # GWAGENT_SRC_DIR - root directory of the gwagent git repo (defaults to relative location if not given) # ARTIFACTS_DIR - directory to copy build products (defaults to build/jobs/artifacts) # WORKING_DIR - directory for working with files (defaults to build/jobs/tmp) # CPU - CPU parameter to give to scons, x86_64 or x86 (defaults to x86_64) set -o nounset set -o errexit set -o verbose set -o xtrace #======================================== # Set default values for any unset environment variables export BUILD_VARIANT=${BUILD_VARIANT:-release} if [ -z "${GWAGENT_SRC_DIR:-}" ] then # set it to the top level directory for the git repo # (based on relative position of the build_scripts) export GWAGENT_SRC_DIR=$(dirname $(dirname $(readlink -f $0))) fi export ARTIFACTS_DIR=${ARTIFACTS_DIR:-$GWAGENT_SRC_DIR/build/jobs/artifacts} export WORKING_DIR=${WORKING_DIR:-$GWAGENT_SRC_DIR/build/jobs/tmp} export CPU=${CPU:-x86_64} #======================================== # set variables for the different directories needed sdkStaging=${WORKING_DIR}/sdk_stage sdksDir=${ARTIFACTS_DIR}/sdks # remove any existing directory and contents rm -fr $sdkStaging # create the directories needed mkdir -p $sdkStaging mkdir -p $sdksDir # determine the variant string case ${BUILD_VARIANT} in debug) variantString=dbg ;; release) variantString=rel ;; esac #======================================== # build the code pushd ${GWAGENT_SRC_DIR} scons V=1 OS=linux CPU=${CPU} BINDINGS=cpp BR=off VARIANT=${BUILD_VARIANT} WS=detail POLICYDB=on BUILD_SERVICES_SAMPLES=on popd #======================================== # copy build products to staging directories # create directory structure mkdir -p $sdkStaging/usr/bin mkdir -p $sdkStaging/usr/lib mkdir -p $sdkStaging/etc/alljoyn/gwagent mkdir -p $sdkStaging/etc/alljoyn/gwagent-apps mkdir -p $sdkStaging/apps mkdir -p $sdkStaging/app-manager mkdir -p $sdkStaging/gwagent mkdir -p $sdkStaging/daemon mkdir -p $sdkStaging/notificationSamples distDir=${GWAGENT_SRC_DIR}/build/linux/${CPU}/${BUILD_VARIANT}/dist # copy gateway agent files cp $distDir/gatewayMgmtApp/bin/alljoyn-gwagent $sdkStaging/usr/bin cp $distDir/gatewayMgmtApp/bin/manifest.xsd $sdkStaging/gwagent cp $distDir/gatewayMgmtApp/bin/gwApp-config.xml $sdkStaging/gwagent cp $distDir/cpp/lib/liballjoyn_about.so $sdkStaging/usr/lib cp $distDir/gatewayMgmtApp/bin/gwagent-config.xml $sdkStaging/etc/alljoyn/gwagent/gwagent.conf # copy sample scripts to app-manager directory cp $distDir/gatewayMgmtApp/bin/*.sh $sdkStaging/app-manager/ chmod a+rx $sdkStaging/app-manager/*.sh # copy routing node files cp $distDir/cpp/bin/alljoyn-daemon $sdkStaging/daemon/ cp $distDir/cpp/lib/liballjoyn.so $sdkStaging/usr/lib chmod a+rx $sdkStaging/daemon/alljoyn-daemon # copy sample routing node config.xml to daemon directory cp ${GWAGENT_SRC_DIR}/cpp/GatewayMgmtApp/samples/config.xml $sdkStaging/etc/alljoyn/alljoyn.conf chmod a+rx $sdkStaging/usr/bin/* # copy init.d scripts to initd folder cp -r ${GWAGENT_SRC_DIR}/cpp/initd $sdkStaging/ # copy example acl notifications.acl to apps folder cp ${GWAGENT_SRC_DIR}/cpp/GatewayMgmtApp/notifications.acl $sdkStaging/apps/ # copy other base services so files needed by the sample connector cp $distDir/services_common/lib/liballjoyn_services_common.so $sdkStaging/usr/lib cp $distDir/notification/lib/liballjoyn_notification.so $sdkStaging/usr/lib cp $distDir/config/lib/liballjoyn_config.so $sdkStaging/usr/lib cp $distDir/gatewayConnector/lib/liballjoyn_gwconnector.so $sdkStaging/usr/lib # copy notification samples cp -r $distDir/notification/bin/* $sdkStaging/notificationSamples # package sample connector pushd $distDir/gatewayConnector/tar chmod a+rx $distDir/gatewayConnector/tar/bin/*.sh tar zcvf $sdkStaging/app-manager/dummyApp.tar.gz --owner=0 --group=0 * popd #======================================== # create the SDK package # copy ReleaseNotes.txt cp ${GWAGENT_SRC_DIR}/ReleaseNotes.txt $sdkStaging/ # copy README.md cp ${GWAGENT_SRC_DIR}/README.md $sdkStaging/ # create Manifest.txt file pushd ${GWAGENT_SRC_DIR} python ${GWAGENT_SRC_DIR}/build_scripts/genversion.py > $sdkStaging/Manifest.txt popd versionString="" if [ -n "${GWAGENT_SDK_VERSION:-}" ] then versionString="${GWAGENT_SDK_VERSION}-" fi sdkName=alljoyn-gwagent-${versionString}linux-sdk-$variantString tarFile=$sdkName.tar.gz pushd $sdkStaging tar zcvf $sdksDir/$tarFile --owner=0 --group=0 * popd pushd $sdksDir md5File=$sdksDir/md5-$sdkName.txt rm -f $md5File md5sum $tarFile > $md5File popd alljoyn-gwagent-1504/build_scripts/strip_core_android_sdk.sh0000755000175600017560000000525112724255335024417 0ustar alljoynalljoyn#!/bin/bash # Copyright AllSeen Alliance. All rights reserved. # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # # Strips down the AllJoyn Core Android SDK to the minimum needed for building the gateway project # # DEPENDENCIES_DIR - directory contains the zip files of the dependencies # CORE_VERSION - version of AllJoyn core # WORKING_DIR - directory for working with files # ARTIFACTS_DIR - directory to which to copy the prepared dependencies set -o nounset set -o errexit set -o verbose set -o xtrace # check for required env variables for var in DEPENDENCIES_DIR CORE_VERSION ARTIFACTS_DIR WORKING_DIR do if [ -z "${!var:-}" ] then printf "$var must be defined!\n" exit 1 fi done # set variables for different directories needed extractedSdks=${WORKING_DIR}/unzipped_sdks sdkStaging=${WORKING_DIR}/sdk_stage sdksDir=${ARTIFACTS_DIR}/sdks mkdir -p $sdksDir mkdir -p $extractedSdks mkdir -p $sdkStaging # Extract subset of Android SDK for dbg and rel variants for variantString in dbg rel do # determine the name of the SDK sdkName=alljoyn-${CORE_VERSION}-android-sdk-$variantString # create directory to unzip into zipContent=$extractedSdks/$sdkName mkdir -p $zipContent zipFile=$sdkName.zip # unzip the SDK into the directory unzip ${DEPENDENCIES_DIR}/$zipFile -d $zipContent # create directory for staging content for stripped down zip file zipStage=$sdkStaging/$sdkName mkdir -p $zipStage # determine the source and destination directories for copying files javaDir=alljoyn-android/core/alljoyn-${CORE_VERSION}-$variantString/java srcJavaDir=$zipContent/$javaDir destJavaDir=$zipStage/$javaDir # create the destination directory structure and copy a subset of the files from the source mkdir -p $destJavaDir cp -r $srcJavaDir/lib $destJavaDir/ cp -r $srcJavaDir/jar $destJavaDir/ # create the stripped down zip file cd $zipStage zip $sdksDir/$zipFile -r alljoyn-android done alljoyn-gwagent-1504/build_scripts/build_android_sdk.sh0000755000175600017560000001744012724255335023350 0ustar alljoynalljoyn#!/bin/bash # Copyright AllSeen Alliance. All rights reserved. # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # # Builds the Android SDK for the gateway agent # # ANDROID_SDK - Android SDK (required to be defined) # GWAGENT_SRC_DIR - root directory of the gwagent git repo (defaults to relative location if not given) # BUILD_VARIANT - release or debug (defaults to release if not given) # GWAGENT_SDK_VERSION - version name to use in building the SDK (version number left out if not given) # LIBRARIES_DIR - directory containing dependent jars/shared objects # (either LIBRARIES_DIR or DEPENDENCIES_DIR must be given) # DEPENDENCIES_DIR - directory containing the SDK dependencies needed to build # (either LIBRARIES_DIR or DEPENDENCIES_DIR must be given) # ARTIFACTS_DIR - directory to copy build products (defaults to build/jobs/artifacts) # WORKING_DIR - directory for working with files (default to build/jobs/tmp) set -o nounset set -o errexit set -o verbose set -o xtrace #======================================== # Set default values for any unset environment variables export BUILD_VARIANT=${BUILD_VARIANT:-release} if [ -z "${GWAGENT_SRC_DIR:-}" ] then # set it to the top level directory for the git repo # (based on relative position of the build_scripts) export GWAGENT_SRC_DIR=$(dirname $(dirname $(readlink -f $0))) fi export ARTIFACTS_DIR=${ARTIFACTS_DIR:-$GWAGENT_SRC_DIR/build/jobs/artifacts} export WORKING_DIR=${WORKING_DIR:-$GWAGENT_SRC_DIR/build/jobs/tmp} #======================================== if [ -z "${LIBRARIES_DIR:-}" ] && [ -z "${DEPENDENCIES_DIR:-}" ] then printf "DEPENDENCIES_DIR or LIBRARIES_DIR must be defined!\n" exit 1 fi # check for required env variables for var in ANDROID_SDK do if [ -z "${!var:-}" ] then printf "$var must be defined!\n" exit 1 fi done #======================================== # set variables for different directories needed jarsDepends=${WORKING_DIR}/jars libsDepends=${WORKING_DIR}/libs sdkStaging=${WORKING_DIR}/sdk_stage docStaging=${WORKING_DIR}/doc_stage sdksDir=${ARTIFACTS_DIR}/sdks # create the directories needed mkdir -p $jarsDepends mkdir -p $libsDepends mkdir -p $sdkStaging mkdir -p $sdksDir #======================================== # retrieve dependent jars/libs for the core and services # determine the variant string case ${BUILD_VARIANT} in debug) variantString=dbg ;; release) variantString=rel ;; esac # get jars and shared objects from SDKs if [ -n "${DEPENDENCIES_DIR:-}" ] then extractedSdks=${WORKING_DIR}/unzipped_sdks mkdir -p $extractedSdks # get alljoyn_apps_android_utils.jar from config SDK configSdkNameMatch=alljoyn-config-service-framework-*-android-sdk-rel configSdkName=alljoyn-config-service-framework-android-sdk-rel configSdkContent=$extractedSdks/$configSdkName mkdir -p $configSdkContent unzip ${DEPENDENCIES_DIR}/$configSdkNameMatch.zip -d $configSdkContent cp $configSdkContent/alljoyn-android/services/alljoyn-config-*-rel/samples/ConfigClientSample/libs/alljoyn_apps_android_utils.jar $jarsDepends/ # get alljoyn_config.jar from config SDK cp $configSdkContent/alljoyn-android/services/alljoyn-config-*-rel/java/libs/alljoyn_config.jar $jarsDepends/ # get alljoyn jars/so from the AllJoyn SDK coreSdkNameMatch=alljoyn-[^a-z]*-android-sdk-${variantString} coreSdkName=alljoyn-android-sdk-${variantString} coreSdkContent=$extractedSdks/$coreSdkName mkdir -p $coreSdkContent unzip ${DEPENDENCIES_DIR}/$coreSdkNameMatch.zip -d $coreSdkContent javaDir=alljoyn-android/core/alljoyn-*-${variantString}/java javaContentDir=$coreSdkContent/$javaDir cp $javaContentDir/jar/alljoyn.jar $jarsDepends/ cp $javaContentDir/jar/alljoyn_about.jar $jarsDepends/ cp $javaContentDir/lib/liballjoyn_java.so $libsDepends/ fi # get android-support-v4.jar cp ${ANDROID_SDK}/extras/android/support/v4/android-support-v4.jar $jarsDepends/ # get android-support-v13.jar cp ${ANDROID_SDK}/extras/android/support/v13/android-support-v13.jar $jarsDepends/ # get the necessary jars/shared objects from the LIBRARIES_DIR (if set) if [ -n "${LIBRARIES_DIR:-}" ] then cp ${LIBRARIES_DIR}/*.jar $jarsDepends/ cp ${LIBRARIES_DIR}/*.so $libsDepends/ fi #======================================== # build the SDK and generate the javadocs controllerDir=${GWAGENT_SRC_DIR}/java/GatewayController jarDir=$controllerDir/libs soDir=$controllerDir/libs/armeabi # copy dependent jars mkdir -p $jarDir cp $jarsDepends/* $jarDir/ # copy alljoyn shared object mkdir -p $soDir cp $libsDepends/* $soDir/ # save artifact of sample project code mkdir -p ${ARTIFACTS_DIR}/samples cp -r $controllerDir ${ARTIFACTS_DIR}/samples/ # remove the android support jars from the sample project code find ${ARTIFACTS_DIR}/samples -name "android-support*.jar" -exec rm -f {} \; # build the project pushd $controllerDir ant -Dsdk.dir=${ANDROID_SDK} # build the javadoc ant -Dsdk.dir=${ANDROID_SDK} jdoc popd #======================================== # copy build products to artifacts directory # save artifacts from build cp $controllerDir/build/deploy/GatewayController.jar ${ARTIFACTS_DIR} cp $controllerDir/bin/GatewayController.apk ${ARTIFACTS_DIR} docArtifacts=${ARTIFACTS_DIR}/docs mkdir -p $docArtifacts cp -r $controllerDir/docs/* $docArtifacts #======================================== # create the SDK package versionString="" if [ -n "${GWAGENT_SDK_VERSION:-}" ] then versionString="${GWAGENT_SDK_VERSION}-" fi sdkName=alljoyn-gwagent-${versionString}android-sdk-$variantString zipFile=$sdkName.zip # create directory path for gwagent SDK gwagentSdkDir=$sdkStaging/alljoyn-android/gwagent/alljoyn-gwagent-${versionString}$variantString mkdir -p $gwagentSdkDir # create directory structure mkdir -p $gwagentSdkDir/docs mkdir -p $gwagentSdkDir/samples mkdir -p $gwagentSdkDir/tools mkdir -p $gwagentSdkDir/java/libs # copy ReleaseNotes.txt cp ${GWAGENT_SRC_DIR}/ReleaseNotes.txt $gwagentSdkDir/ # copy README.md cp ${GWAGENT_SRC_DIR}/README.md $gwagentSdkDir/ # create Manifest.txt file pushd ${GWAGENT_SRC_DIR} python ${GWAGENT_SRC_DIR}/build_scripts/genversion.py > $gwagentSdkDir/Manifest.txt popd # copy docs cp -r ${docArtifacts}/* $gwagentSdkDir/docs/ # copy libs cp ${ARTIFACTS_DIR}/GatewayController.jar $gwagentSdkDir/java/libs/ # copy apk cp ${ARTIFACTS_DIR}/GatewayController.apk $gwagentSdkDir/tools/ # copy samples cp -r ${ARTIFACTS_DIR}/samples/* $gwagentSdkDir/samples/ # build the SDK zip mkdir -p $sdksDir pushd $sdkStaging zip -q -r $sdksDir/$zipFile * popd # build a zip of the Javadoc on release builds docZipFile= if [ "$BUILD_VARIANT" == "release" ] then docName=alljoyn-gwagent-${versionString}android-sdk-docs docZipDir=$docStaging/$docName mkdir -p $docZipDir cp -r $docArtifacts/* $docZipDir/ docZipFile=$docName.zip pushd $docStaging zip -q -r $sdksDir/$docZipFile * popd fi # generate md5s pushd $sdksDir md5File=$sdksDir/md5-$sdkName.txt rm -f $md5File md5sum $zipFile > $md5File [[ -z "$docZipFile" ]] || md5sum $docZipFile >> $md5File popd alljoyn-gwagent-1504/build_scripts/build_ios_sdk.sh0000755000175600017560000001570612724255335022525 0ustar alljoynalljoyn#!/bin/bash # Copyright AllSeen Alliance. All rights reserved. # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # # Build the iOS SDK for the gateway agent # # CORE_VERSION - version of the Core iOS SDK to use # BUILD_VARIANT - release or debug # DEPENDENCIES_DIR - directory containing dependencies needed to build # GWAGENT_SDK_VERSION - version name to use in building the SDK # GWAGENT_SRC_DIR - root directory of gwagent git repo # ARTIFACTS_DIR - directory to copy build products # WORKING_DIR - directory for working with files set -o nounset set -o errexit set -o verbose set -o xtrace # check for required env variables for var in BUILD_VARIANT CORE_VERSION GWAGENT_SDK_VERSION DEPENDENCIES_DIR GWAGENT_SRC_DIR ARTIFACTS_DIR WORKING_DIR do if [ -z "${!var:-}" ] then printf "$var must be defined!\n" exit 1 fi done #======================================== # set variables for different directories needed extractedSdks=${WORKING_DIR}/unzipped_sdks sdkStaging=${WORKING_DIR}/sdk_stage buildDir=${WORKING_DIR}/build sdksDir=${ARTIFACTS_DIR}/sdks docStaging=${WORKING_DIR}/doc_stage # create the directories needed mkdir -p $extractedSdks mkdir -p $sdkStaging mkdir -p $buildDir mkdir -p $sdksDir #======================================== # retrieve core SDK # determine the variant string case ${BUILD_VARIANT} in debug) variantString=dbg buildVariantString=Debug ;; release) variantString=rel buildVariantString=Release ;; esac # unzip the core SDK coreSdkName=alljoyn-${CORE_VERSION}-osx_ios-sdk unzip ${DEPENDENCIES_DIR}/$coreSdkName.zip -d $extractedSdks coreSdkContent=$extractedSdks/$coreSdkName coreBuildDir=$buildDir/core/alljoyn gwagentBuildDir=$buildDir/gateway/gwagent mkdir -p $coreBuildDir/build/darwin cp -r $coreSdkContent/alljoyn_objc $coreBuildDir/ cp -r $coreSdkContent/build/darwin/* $coreBuildDir/build/darwin/ cp -r $coreSdkContent/services $coreBuildDir/ mkdir -p $gwagentBuildDir #======================================== # build the SDK and docs export ALLJOYN_SDK_ROOT=$coreBuildDir export ALLSEEN_BASE_SERVICES_ROOT=${GWAGENT_SRC_DIR} export OPENSSL_ROOT=/usr/local/openssl-1.0.1e libArtifacts=${ARTIFACTS_DIR}/lib mkdir $libArtifacts docArtifacts=${ARTIFACTS_DIR}/docs mkdir -p $docArtifacts for language in objc cpp do # build product directory proj_dir=${GWAGENT_SRC_DIR}/ios/GatewayController/samples/alljoyn_services_$language chmod -R 777 $proj_dir cd $proj_dir for sdk in "iphonesimulator -arch i386" iphoneos do xcodebuild -project $proj_dir/alljoyn_gateway_$language.xcodeproj -sdk $sdk -configuration $buildVariantString CONFIGURATION_BUILD_DIR=$gwagentBuildDir archiveFile=liballjoyn_gateway_${language}.a renamedArchive=${archiveFile}_`echo $sdk | awk '{print $1}'` cp $gwagentBuildDir/$archiveFile $gwagentBuildDir/$renamedArchive cp $gwagentBuildDir/$renamedArchive $libArtifacts/$renamedArchive done # create multi architecture library lipo -create $libArtifacts/liballjoyn_gateway_${language}.a_* -output $libArtifacts/liballjoyn_gateway_${language}.a lipo -create $gwagentBuildDir/liballjoyn_gateway_${language}.a_* -output $coreBuildDir/build/liballjoyn_gateway_${language}.a # generate documentation if [ $language = objc ] then doc_builddir=$gwagentBuildDir/docs/gateway/$language mkdir -p $doc_builddir chmod -R 777 $doc_builddir #doc_status=0 (appledoc --keep-intermediate-files $proj_dir \ --output $doc_builddir \ --project-name "GatewayControllerService" \ --project-company "AllSeen Alliance" --company-id "org.allseen" \ --no-install-docset --no-publish-docset \ --include ${GWAGENT_SRC_DIR}/ios/GatewayController/inc/alljoyn/gateway) tar cf - -C $doc_builddir docset html | tar xf - -C $docArtifacts fi # save header files for packaging case $language in cpp) lang=cpp ;; objc) lang=ios ;; esac includeDir=${ARTIFACTS_DIR}/include/$language mkdir -p $includeDir tar cf - --exclude .gitignore --exclude '*.mm' -C ${GWAGENT_SRC_DIR}/$lang/GatewayController inc | \ tar xf - -C $includeDir done # docs separately tar czf docs-gwagent.tgz -C $gwagentBuildDir/ docs mv docs-gwagent.tgz ${ARTIFACTS_DIR}/ #======================================== # create the SDK package sdkName=alljoyn-gwagent-${GWAGENT_SDK_VERSION}-ios-sdk-$variantString zipFile=$sdkName.zip # create directory path for gwagent SDK gwagentSdkDir=$sdkStaging/alljoyn-ios/gwagent/alljoyn-gwagent-${GWAGENT_SDK_VERSION}-$variantString mkdir -p $gwagentSdkDir # create directory structure mkdir -p $gwagentSdkDir/cpp/inc mkdir -p $gwagentSdkDir/cpp/lib mkdir -p $gwagentSdkDir/docs/gateway mkdir -p $gwagentSdkDir/objc/inc mkdir -p $gwagentSdkDir/objc/lib mkdir -p $gwagentSdkDir/objc/samples # copy ReleaseNotes.txt cp ${GWAGENT_SRC_DIR}/ReleaseNotes.txt $gwagentSdkDir/ # copy README.md cp ${GWAGENT_SRC_DIR}/README.md $gwagentSdkDir/ # create Manifest.txt file pushd ${GWAGENT_SRC_DIR} python ${GWAGENT_SRC_DIR}/build_scripts/genversion.py > $gwagentSdkDir/Manifest.txt popd # copy docs cp -r ${docArtifacts}/* $gwagentSdkDir/docs/gateway/ # copy libs cp ${ARTIFACTS_DIR}/lib/liballjoyn_gateway_cpp.a $gwagentSdkDir/cpp/lib/ cp ${ARTIFACTS_DIR}/lib/liballjoyn_gateway_objc.a $gwagentSdkDir/objc/lib/ # copy inc directories cp -r ${GWAGENT_SRC_DIR}/ios/GatewayController/inc/* $gwagentSdkDir/objc/inc cp -r ${GWAGENT_SRC_DIR}/cpp/GatewayController/inc/* $gwagentSdkDir/cpp/inc # copy samples cp -r ${GWAGENT_SRC_DIR}/ios/GatewayController/samples/sampleApp $gwagentSdkDir/objc/samples/sampleApp # build the SDK zip mkdir -p $sdksDir pushd $sdkStaging zip -q -r $sdksDir/$zipFile alljoyn-ios popd docZipFile= if [ "$BUILD_VARIANT" == "release" ] then docName=alljoyn-gwagent-${GWAGENT_SDK_VERSION}-ios-sdk-docs docZipDir=$docStaging/$docName mkdir -p $docZipDir cp -r ${docArtifacts}/* $docZipDir/ docZipFile=$docName.zip pushd $docStaging zip -q -r $sdksDir/$docZipFile * popd fi # generate md5s pushd $sdksDir md5File=$sdksDir/md5-$sdkName.txt rm -f $md5File md5 $zipFile > $md5File [[ -z "$docZipFile" ]] || md5 $docZipFile >> $md5File popd alljoyn-gwagent-1504/build_scripts/build_srctar.sh0000755000175600017560000000551312724255410022355 0ustar alljoynalljoyn#!/bin/bash # Copyright AllSeen Alliance. All rights reserved. # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # # # Builds a source tar of the gwagent project # # GWAGENT_SRC_DIR - root directory of the gwagent git repo (defaults to relative location if not given) # GWAGENT_SDK_VERSION - version name to use in building the archive file (version number left out if not given) # ARTIFACTS_DIR - directory to copy build products (default to build/jobs/artifacts) # WORKING_DIR - directory for working with files (default to build/jobs/tmp) set -o nounset set -o errexit set -o verbose set -o xtrace #======================================== # Set default values for any unset environment variables if [ -z "${GWAGENT_SRC_DIR:-}" ] then # set it to the top level directory for the git repo # (based on relative position of the build_scripts) export GWAGENT_SRC_DIR=$(dirname $(dirname $(readlink -f $0))) fi export ARTIFACTS_DIR=${ARTIFACTS_DIR:-$GWAGENT_SRC_DIR/build/jobs/artifacts} export WORKING_DIR=${WORKING_DIR:-$GWAGENT_SRC_DIR/build/jobs/tmp} #======================================== # create the directories needed mkdir -p ${ARTIFACTS_DIR} mkdir -p ${WORKING_DIR} versionString="" if [ -n "${GWAGENT_SDK_VERSION:-}" ] then versionString="${GWAGENT_SDK_VERSION}-" fi outputTarFileName=alljoyn-gwagent-${versionString}src.tar pushd ${GWAGENT_SRC_DIR} git archive --prefix=alljoyn-gwagent-${versionString}src/gateway/gwagent/ HEAD^{tree} -o ${WORKING_DIR}/$outputTarFileName cd ../../core/alljoyn git archive --prefix=alljoyn-gwagent-${versionString}src/core/alljoyn/ HEAD^{tree} -o ${WORKING_DIR}/core.tar cd ../../services/base git archive --prefix=alljoyn-gwagent-${versionString}src/services/base/ HEAD^{tree} -o ${WORKING_DIR}/services.tar cd ../.. tar --concatenate --file=${WORKING_DIR}/$outputTarFileName ${WORKING_DIR}/core.tar tar --concatenate --file=${WORKING_DIR}/$outputTarFileName ${WORKING_DIR}/services.tar gzip ${WORKING_DIR}/$outputTarFileName pushd ${WORKING_DIR} md5sum $outputTarFileName.gz > md5sum.txt popd cp ${WORKING_DIR}/$outputTarFileName.gz ${ARTIFACTS_DIR} cp ${WORKING_DIR}/md5sum.txt ${ARTIFACTS_DIR}