diff --git a/.DS_Store b/.DS_Store index 2919688..6cdfbae 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/CS108iOSClient.xcodeproj/project.pbxproj b/CS108iOSClient.xcodeproj/project.pbxproj index 3c9fac6..fe1fb55 100644 --- a/CS108iOSClient.xcodeproj/project.pbxproj +++ b/CS108iOSClient.xcodeproj/project.pbxproj @@ -7,8 +7,10 @@ objects = { /* Begin PBXBuildFile section */ - 2EA900284254819337E0A31A /* Pods_CS108iOSClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57F9447957572ACB6DCB964E /* Pods_CS108iOSClient.framework */; }; CA411CDF21D8C59F0029E779 /* CSLTagLockVC.m in Sources */ = {isa = PBXBuildFile; fileRef = CA411CDE21D8C59F0029E779 /* CSLTagLockVC.m */; }; + CA4661A1223AD3A80028333B /* CSLTemperatureTagSettingsVC.m in Sources */ = {isa = PBXBuildFile; fileRef = CA4661A0223AD3A80028333B /* CSLTemperatureTagSettingsVC.m */; }; + CA4D5CA0222860DA007A55B3 /* CSLTemperatureTabVC.m in Sources */ = {isa = PBXBuildFile; fileRef = CA4D5C9F222860DA007A55B3 /* CSLTemperatureTabVC.m */; }; + CA4D5CA32228EF91007A55B3 /* CSLTemperatureReadVC.m in Sources */ = {isa = PBXBuildFile; fileRef = CA4D5CA22228EF91007A55B3 /* CSLTemperatureReadVC.m */; }; CA4E78E6213528FC0035F075 /* CSLBleReader.m in Sources */ = {isa = PBXBuildFile; fileRef = CA4E78E5213528FC0035F075 /* CSLBleReader.m */; }; CA4E78E9213698DD0035F075 /* CSLBleTag.m in Sources */ = {isa = PBXBuildFile; fileRef = CA4E78E8213698DD0035F075 /* CSLBleTag.m */; }; CA5066412157889C00C3C9C8 /* CSLAboutVC.m in Sources */ = {isa = PBXBuildFile; fileRef = CA5066402157889C00C3C9C8 /* CSLAboutVC.m */; }; @@ -17,16 +19,19 @@ CA5C059421E4517D00E68E44 /* CSLMQTTClientSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = CA5C059321E4517D00E68E44 /* CSLMQTTClientSettings.m */; }; CA5C05A021E4736700E68E44 /* CSLMQTTSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = CA5C059F21E4736700E68E44 /* CSLMQTTSettings.m */; }; CA5C9BA1217FF7400079827C /* CSLBleReader+AccessControl.m in Sources */ = {isa = PBXBuildFile; fileRef = CA5C9BA0217FF7400079827C /* CSLBleReader+AccessControl.m */; }; + CA722980222AB13300D8C2CF /* CSLTemperatureTagListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = CA72297E222AB13300D8C2CF /* CSLTemperatureTagListCell.m */; }; + CA722981222AB13300D8C2CF /* CSLTemperatureTagListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = CA72297F222AB13300D8C2CF /* CSLTemperatureTagListCell.xib */; }; CA787361214CC154009B7FE6 /* CSLHomeVC.m in Sources */ = {isa = PBXBuildFile; fileRef = CA787360214CC153009B7FE6 /* CSLHomeVC.m */; }; CA787367214CC9C8009B7FE6 /* CSLTabVC.m in Sources */ = {isa = PBXBuildFile; fileRef = CA787366214CC9C8009B7FE6 /* CSLTabVC.m */; }; CA78736A214CCA47009B7FE6 /* CSLSettingsVC.m in Sources */ = {isa = PBXBuildFile; fileRef = CA787369214CCA47009B7FE6 /* CSLSettingsVC.m */; }; CA78736D214CD49D009B7FE6 /* CSLInventoryVC.m in Sources */ = {isa = PBXBuildFile; fileRef = CA78736C214CD49D009B7FE6 /* CSLInventoryVC.m */; }; CA787370214CD7C4009B7FE6 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA78736F214CD7C4009B7FE6 /* UIKit.framework */; }; - CA787372214CD7CF009B7FE6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA787371214CD7CF009B7FE6 /* Foundation.framework */; }; + CA787372214CD7CF009B7FE6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA787371214CD7CF009B7FE6 /* Foundation.framework */; settings = {ATTRIBUTES = (Required, ); }; }; CA7873782150DF7A009B7FE6 /* CSLDeviceTV.m in Sources */ = {isa = PBXBuildFile; fileRef = CA7873772150DF7A009B7FE6 /* CSLDeviceTV.m */; }; CA78737C21514E61009B7FE6 /* CSLRfidAppEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = CA78737B21514E61009B7FE6 /* CSLRfidAppEngine.m */; }; CA78737F21543B6F009B7FE6 /* CSLReaderSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = CA78737E21543B6F009B7FE6 /* CSLReaderSettings.m */; }; CA7873822155F59C009B7FE6 /* CSLReaderInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = CA7873812155F59C009B7FE6 /* CSLReaderInfo.m */; }; + CAA89F45223D23D50066B601 /* CSLTemperatureUploadVC.m in Sources */ = {isa = PBXBuildFile; fileRef = CAA89F44223D23D50066B601 /* CSLTemperatureUploadVC.m */; }; CAB31377221A75330048DA62 /* CSLTagListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = CAB31375221A75330048DA62 /* CSLTagListCell.m */; }; CAB31378221A75330048DA62 /* CSLTagListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = CAB31376221A75330048DA62 /* CSLTagListCell.xib */; }; CAB3137B221BE17D0048DA62 /* CSLMoreFunctionsVC.m in Sources */ = {isa = PBXBuildFile; fileRef = CAB3137A221BE17D0048DA62 /* CSLMoreFunctionsVC.m */; }; @@ -41,14 +46,21 @@ CACFBBBB21C8E4D0001161F6 /* CSLTagSearchVC.m in Sources */ = {isa = PBXBuildFile; fileRef = CACFBBBA21C8E4D0001161F6 /* CSLTagSearchVC.m */; }; CAD168572175AD6600DC218E /* CSLTagAccessVC.m in Sources */ = {isa = PBXBuildFile; fileRef = CAD168562175AD6600DC218E /* CSLTagAccessVC.m */; }; CADDF6AA21DDF41E00E05D75 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CADDF6A921DDF41E00E05D75 /* CoreGraphics.framework */; }; + CAE95309222DA3DE00C4EC73 /* CSLTemperatureDetailsVC.m in Sources */ = {isa = PBXBuildFile; fileRef = CAE95308222DA3DE00C4EC73 /* CSLTemperatureDetailsVC.m */; }; CAECD0C1214973EF003321CF /* CSLRfidDemoApp.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CAECD0C0214973EF003321CF /* CSLRfidDemoApp.storyboard */; }; CAF5CC2821626F1500C420EF /* CSLReaderBattery.m in Sources */ = {isa = PBXBuildFile; fileRef = CAF5CC2721626F1500C420EF /* CSLReaderBattery.m */; }; CAF5CC2B21640E7F00C420EF /* CSLReaderBarcode.m in Sources */ = {isa = PBXBuildFile; fileRef = CAF5CC2A21640E7F00C420EF /* CSLReaderBarcode.m */; }; + CAF7FFF822376AB00016F6E7 /* CSLTemperatureTagSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = CAF7FFF722376AB00016F6E7 /* CSLTemperatureTagSettings.m */; }; + CAF8351D2226901B002F90AC /* Lato-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CAF8351922268F96002F90AC /* Lato-Bold.ttf */; }; + CAF8351E2226901D002F90AC /* Lato-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CAF8351C22268F97002F90AC /* Lato-Italic.ttf */; }; + CAF8351F22269021002F90AC /* Lato-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CAF8351A22268F97002F90AC /* Lato-Regular.ttf */; }; + CAF8352022269024002F90AC /* Lato-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CAF8351B22268F97002F90AC /* Lato-Light.ttf */; }; CAFF2698221D3F7000D89112 /* CSLMultibankAccessVC.m in Sources */ = {isa = PBXBuildFile; fileRef = CAFF2697221D3F7000D89112 /* CSLMultibankAccessVC.m */; }; + F5ECCDD9EA81EA7C6A3EFD87 /* Pods_CS108iOSClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88353A6E485674B1C2AB0B20 /* Pods_CS108iOSClient.framework */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ - CA5C05A321E483DF00E68E44 /* Embed Frameworks */ = { + CA4661A4223B49430028333B /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; @@ -61,10 +73,17 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 57F9447957572ACB6DCB964E /* Pods_CS108iOSClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CS108iOSClient.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C113074B365A9123BEB8DC91 /* Pods-CS108iOSClient.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CS108iOSClient.release.xcconfig"; path = "Target Support Files/Pods-CS108iOSClient/Pods-CS108iOSClient.release.xcconfig"; sourceTree = ""; }; + 84CF1AC1DC7B7241A83886CF /* Pods-CS108iOSClient.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CS108iOSClient.debug.xcconfig"; path = "Target Support Files/Pods-CS108iOSClient/Pods-CS108iOSClient.debug.xcconfig"; sourceTree = ""; }; + 88353A6E485674B1C2AB0B20 /* Pods_CS108iOSClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CS108iOSClient.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8C38EEE82B5D5911C071188B /* Pods-CS108iOSClient.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CS108iOSClient.release.xcconfig"; path = "Target Support Files/Pods-CS108iOSClient/Pods-CS108iOSClient.release.xcconfig"; sourceTree = ""; }; CA411CDD21D8C59F0029E779 /* CSLTagLockVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLTagLockVC.h; sourceTree = ""; }; CA411CDE21D8C59F0029E779 /* CSLTagLockVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLTagLockVC.m; sourceTree = ""; }; + CA46619F223AD3A80028333B /* CSLTemperatureTagSettingsVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLTemperatureTagSettingsVC.h; sourceTree = ""; }; + CA4661A0223AD3A80028333B /* CSLTemperatureTagSettingsVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLTemperatureTagSettingsVC.m; sourceTree = ""; }; + CA4D5C9E222860DA007A55B3 /* CSLTemperatureTabVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLTemperatureTabVC.h; sourceTree = ""; }; + CA4D5C9F222860DA007A55B3 /* CSLTemperatureTabVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLTemperatureTabVC.m; sourceTree = ""; }; + CA4D5CA12228EF91007A55B3 /* CSLTemperatureReadVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLTemperatureReadVC.h; sourceTree = ""; }; + CA4D5CA22228EF91007A55B3 /* CSLTemperatureReadVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLTemperatureReadVC.m; sourceTree = ""; }; CA4E78E4213528FC0035F075 /* CSLBleReader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLBleReader.h; sourceTree = ""; }; CA4E78E5213528FC0035F075 /* CSLBleReader.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLBleReader.m; sourceTree = ""; }; CA4E78E7213698DD0035F075 /* CSLBleTag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLBleTag.h; sourceTree = ""; }; @@ -80,6 +99,9 @@ CA5C059F21E4736700E68E44 /* CSLMQTTSettings.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLMQTTSettings.m; sourceTree = ""; }; CA5C9B9F217FF7400079827C /* CSLBleReader+AccessControl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CSLBleReader+AccessControl.h"; sourceTree = ""; }; CA5C9BA0217FF7400079827C /* CSLBleReader+AccessControl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "CSLBleReader+AccessControl.m"; sourceTree = ""; }; + CA72297D222AB13300D8C2CF /* CSLTemperatureTagListCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLTemperatureTagListCell.h; sourceTree = ""; }; + CA72297E222AB13300D8C2CF /* CSLTemperatureTagListCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLTemperatureTagListCell.m; sourceTree = ""; }; + CA72297F222AB13300D8C2CF /* CSLTemperatureTagListCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CSLTemperatureTagListCell.xib; sourceTree = ""; }; CA78735F214CC153009B7FE6 /* CSLHomeVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLHomeVC.h; sourceTree = ""; }; CA787360214CC153009B7FE6 /* CSLHomeVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLHomeVC.m; sourceTree = ""; }; CA787365214CC9C8009B7FE6 /* CSLTabVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLTabVC.h; sourceTree = ""; }; @@ -98,6 +120,8 @@ CA78737E21543B6F009B7FE6 /* CSLReaderSettings.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLReaderSettings.m; sourceTree = ""; }; CA7873802155F59C009B7FE6 /* CSLReaderInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLReaderInfo.h; sourceTree = ""; }; CA7873812155F59C009B7FE6 /* CSLReaderInfo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLReaderInfo.m; sourceTree = ""; }; + CAA89F43223D23D50066B601 /* CSLTemperatureUploadVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLTemperatureUploadVC.h; sourceTree = ""; }; + CAA89F44223D23D50066B601 /* CSLTemperatureUploadVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLTemperatureUploadVC.m; sourceTree = ""; }; CAB31374221A75330048DA62 /* CSLTagListCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLTagListCell.h; sourceTree = ""; }; CAB31375221A75330048DA62 /* CSLTagListCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLTagListCell.m; sourceTree = ""; }; CAB31376221A75330048DA62 /* CSLTagListCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CSLTagListCell.xib; sourceTree = ""; }; @@ -122,14 +146,21 @@ CAD168552175AD6600DC218E /* CSLTagAccessVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLTagAccessVC.h; sourceTree = ""; }; CAD168562175AD6600DC218E /* CSLTagAccessVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLTagAccessVC.m; sourceTree = ""; }; CADDF6A921DDF41E00E05D75 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + CAE95307222DA3DE00C4EC73 /* CSLTemperatureDetailsVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLTemperatureDetailsVC.h; sourceTree = ""; }; + CAE95308222DA3DE00C4EC73 /* CSLTemperatureDetailsVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLTemperatureDetailsVC.m; sourceTree = ""; }; CAECD0C0214973EF003321CF /* CSLRfidDemoApp.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = CSLRfidDemoApp.storyboard; sourceTree = ""; }; CAF5CC2621626F1500C420EF /* CSLReaderBattery.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLReaderBattery.h; sourceTree = ""; }; CAF5CC2721626F1500C420EF /* CSLReaderBattery.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLReaderBattery.m; sourceTree = ""; }; CAF5CC2921640E7F00C420EF /* CSLReaderBarcode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLReaderBarcode.h; sourceTree = ""; }; CAF5CC2A21640E7F00C420EF /* CSLReaderBarcode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLReaderBarcode.m; sourceTree = ""; }; + CAF7FFF622376AB00016F6E7 /* CSLTemperatureTagSettings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLTemperatureTagSettings.h; sourceTree = ""; }; + CAF7FFF722376AB00016F6E7 /* CSLTemperatureTagSettings.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLTemperatureTagSettings.m; sourceTree = ""; }; + CAF8351922268F96002F90AC /* Lato-Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Lato-Bold.ttf"; sourceTree = ""; }; + CAF8351A22268F97002F90AC /* Lato-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Lato-Regular.ttf"; sourceTree = ""; }; + CAF8351B22268F97002F90AC /* Lato-Light.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Lato-Light.ttf"; sourceTree = ""; }; + CAF8351C22268F97002F90AC /* Lato-Italic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Lato-Italic.ttf"; sourceTree = ""; }; CAFF2696221D3F7000D89112 /* CSLMultibankAccessVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSLMultibankAccessVC.h; sourceTree = ""; }; CAFF2697221D3F7000D89112 /* CSLMultibankAccessVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSLMultibankAccessVC.m; sourceTree = ""; }; - E192BA5EB01CF6048E9452C2 /* Pods-CS108iOSClient.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CS108iOSClient.debug.xcconfig"; path = "Target Support Files/Pods-CS108iOSClient/Pods-CS108iOSClient.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -141,18 +172,18 @@ CA787372214CD7CF009B7FE6 /* Foundation.framework in Frameworks */, CA787370214CD7C4009B7FE6 /* UIKit.framework in Frameworks */, CAB810842133E16F009D2F8F /* CoreBluetooth.framework in Frameworks */, - 2EA900284254819337E0A31A /* Pods_CS108iOSClient.framework in Frameworks */, + F5ECCDD9EA81EA7C6A3EFD87 /* Pods_CS108iOSClient.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 660A82CFCEC2215BB03911C2 /* Pods */ = { + B5D80DFEDCD0D58B42FFA1C2 /* Pods */ = { isa = PBXGroup; children = ( - E192BA5EB01CF6048E9452C2 /* Pods-CS108iOSClient.debug.xcconfig */, - C113074B365A9123BEB8DC91 /* Pods-CS108iOSClient.release.xcconfig */, + 84CF1AC1DC7B7241A83886CF /* Pods-CS108iOSClient.debug.xcconfig */, + 8C38EEE82B5D5911C071188B /* Pods-CS108iOSClient.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -160,6 +191,10 @@ CA5066422159962000C3C9C8 /* fonts */ = { isa = PBXGroup; children = ( + CAF8351922268F96002F90AC /* Lato-Bold.ttf */, + CAF8351C22268F97002F90AC /* Lato-Italic.ttf */, + CAF8351B22268F97002F90AC /* Lato-Light.ttf */, + CAF8351A22268F97002F90AC /* Lato-Regular.ttf */, CA506643215996A000C3C9C8 /* digital-7 (mono).ttf */, ); path = fonts; @@ -199,6 +234,19 @@ CAB3137A221BE17D0048DA62 /* CSLMoreFunctionsVC.m */, CAFF2696221D3F7000D89112 /* CSLMultibankAccessVC.h */, CAFF2697221D3F7000D89112 /* CSLMultibankAccessVC.m */, + CA4D5C9E222860DA007A55B3 /* CSLTemperatureTabVC.h */, + CA4D5C9F222860DA007A55B3 /* CSLTemperatureTabVC.m */, + CA4D5CA12228EF91007A55B3 /* CSLTemperatureReadVC.h */, + CA4D5CA22228EF91007A55B3 /* CSLTemperatureReadVC.m */, + CA72297D222AB13300D8C2CF /* CSLTemperatureTagListCell.h */, + CA72297E222AB13300D8C2CF /* CSLTemperatureTagListCell.m */, + CA72297F222AB13300D8C2CF /* CSLTemperatureTagListCell.xib */, + CAE95307222DA3DE00C4EC73 /* CSLTemperatureDetailsVC.h */, + CAE95308222DA3DE00C4EC73 /* CSLTemperatureDetailsVC.m */, + CA46619F223AD3A80028333B /* CSLTemperatureTagSettingsVC.h */, + CA4661A0223AD3A80028333B /* CSLTemperatureTagSettingsVC.m */, + CAA89F43223D23D50066B601 /* CSLTemperatureUploadVC.h */, + CAA89F44223D23D50066B601 /* CSLTemperatureUploadVC.m */, ); path = ViewControllers; sourceTree = ""; @@ -237,6 +285,8 @@ CAF5CC2A21640E7F00C420EF /* CSLReaderBarcode.m */, CA5C059E21E4736700E68E44 /* CSLMQTTSettings.h */, CA5C059F21E4736700E68E44 /* CSLMQTTSettings.m */, + CAF7FFF622376AB00016F6E7 /* CSLTemperatureTagSettings.h */, + CAF7FFF722376AB00016F6E7 /* CSLTemperatureTagSettings.m */, ); path = model; sourceTree = ""; @@ -248,7 +298,7 @@ CA787371214CD7CF009B7FE6 /* Foundation.framework */, CA78736F214CD7C4009B7FE6 /* UIKit.framework */, CAB810832133E16F009D2F8F /* CoreBluetooth.framework */, - 57F9447957572ACB6DCB964E /* Pods_CS108iOSClient.framework */, + 88353A6E485674B1C2AB0B20 /* Pods_CS108iOSClient.framework */, ); name = Frameworks; sourceTree = ""; @@ -259,7 +309,7 @@ CABA714721325BF500D15BB1 /* CS108iOSClient */, CABA714621325BF500D15BB1 /* Products */, CAB810822133E16F009D2F8F /* Frameworks */, - 660A82CFCEC2215BB03911C2 /* Pods */, + B5D80DFEDCD0D58B42FFA1C2 /* Pods */, ); sourceTree = ""; }; @@ -294,12 +344,12 @@ isa = PBXNativeTarget; buildConfigurationList = CABA715B21325BF600D15BB1 /* Build configuration list for PBXNativeTarget "CS108iOSClient" */; buildPhases = ( - CE4E024E693E529CEF924D1B /* [CP] Check Pods Manifest.lock */, + DC3B9B209519BC5F553A8C5A /* [CP] Check Pods Manifest.lock */, CABA714121325BF500D15BB1 /* Sources */, CABA714221325BF500D15BB1 /* Frameworks */, CABA714321325BF500D15BB1 /* Resources */, - CA5C05A321E483DF00E68E44 /* Embed Frameworks */, - BF0062EE3E6AA41EC6CA42A5 /* [CP] Embed Pods Frameworks */, + CA4661A4223B49430028333B /* Embed Frameworks */, + DE8D8319B4FB861B398A4EE8 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -353,7 +403,12 @@ buildActionMask = 2147483647; files = ( CABA715521325BF600D15BB1 /* LaunchScreen.storyboard in Resources */, + CAF8351E2226901D002F90AC /* Lato-Italic.ttf in Resources */, + CAF8351D2226901B002F90AC /* Lato-Bold.ttf in Resources */, + CAF8352022269024002F90AC /* Lato-Light.ttf in Resources */, + CAF8351F22269021002F90AC /* Lato-Regular.ttf in Resources */, CAECD0C1214973EF003321CF /* CSLRfidDemoApp.storyboard in Resources */, + CA722981222AB13300D8C2CF /* CSLTemperatureTagListCell.xib in Resources */, CAB31378221A75330048DA62 /* CSLTagListCell.xib in Resources */, CABA715221325BF600D15BB1 /* Assets.xcassets in Resources */, CA506644215996A000C3C9C8 /* digital-7 (mono).ttf in Resources */, @@ -363,7 +418,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - BF0062EE3E6AA41EC6CA42A5 /* [CP] Embed Pods Frameworks */ = { + DC3B9B209519BC5F553A8C5A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -371,21 +426,21 @@ inputFileListPaths = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-CS108iOSClient/Pods-CS108iOSClient-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/MQTTClient/MQTTClient.framework", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); - name = "[CP] Embed Pods Frameworks"; + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( ); outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MQTTClient.framework", + "$(DERIVED_FILE_DIR)/Pods-CS108iOSClient-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-CS108iOSClient/Pods-CS108iOSClient-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - CE4E024E693E529CEF924D1B /* [CP] Check Pods Manifest.lock */ = { + DE8D8319B4FB861B398A4EE8 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -393,18 +448,18 @@ inputFileListPaths = ( ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", + "${PODS_ROOT}/Target Support Files/Pods-CS108iOSClient/Pods-CS108iOSClient-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/MQTTClient/MQTTClient.framework", ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-CS108iOSClient-checkManifestLockResult.txt", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MQTTClient.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-CS108iOSClient/Pods-CS108iOSClient-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -415,14 +470,21 @@ buildActionMask = 2147483647; files = ( CABA71682132631F00D15BB1 /* CSLBleInterface.m in Sources */, + CA4D5CA0222860DA007A55B3 /* CSLTemperatureTabVC.m in Sources */, + CAA89F45223D23D50066B601 /* CSLTemperatureUploadVC.m in Sources */, CAFF2698221D3F7000D89112 /* CSLMultibankAccessVC.m in Sources */, + CAF7FFF822376AB00016F6E7 /* CSLTemperatureTagSettings.m in Sources */, + CAE95309222DA3DE00C4EC73 /* CSLTemperatureDetailsVC.m in Sources */, CA78737C21514E61009B7FE6 /* CSLRfidAppEngine.m in Sources */, CA5066412157889C00C3C9C8 /* CSLAboutVC.m in Sources */, CABA71662132631F00D15BB1 /* CSLCircularQueue.m in Sources */, + CA4D5CA32228EF91007A55B3 /* CSLTemperatureReadVC.m in Sources */, CA787367214CC9C8009B7FE6 /* CSLTabVC.m in Sources */, CA7873782150DF7A009B7FE6 /* CSLDeviceTV.m in Sources */, + CA722980222AB13300D8C2CF /* CSLTemperatureTagListCell.m in Sources */, CA411CDF21D8C59F0029E779 /* CSLTagLockVC.m in Sources */, CA78736D214CD49D009B7FE6 /* CSLInventoryVC.m in Sources */, + CA4661A1223AD3A80028333B /* CSLTemperatureTagSettingsVC.m in Sources */, CA57AA7821CAC45E00D081F9 /* LMGaugeView.m in Sources */, CAB31377221A75330048DA62 /* CSLTagListCell.m in Sources */, CAF5CC2821626F1500C420EF /* CSLReaderBattery.m in Sources */, @@ -571,11 +633,11 @@ }; CABA715C21325BF600D15BB1 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E192BA5EB01CF6048E9452C2 /* Pods-CS108iOSClient.debug.xcconfig */; + baseConfigurationReference = 84CF1AC1DC7B7241A83886CF /* Pods-CS108iOSClient.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = ZDHT9HGJF7; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)", @@ -593,11 +655,11 @@ }; CABA715D21325BF600D15BB1 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C113074B365A9123BEB8DC91 /* Pods-CS108iOSClient.release.xcconfig */; + baseConfigurationReference = 8C38EEE82B5D5911C071188B /* Pods-CS108iOSClient.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = ZDHT9HGJF7; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)", diff --git a/CS108iOSClient.xcodeproj/project.xcworkspace/xcuserdata/TurtleMac01.xcuserdatad/UserInterfaceState.xcuserstate b/CS108iOSClient.xcodeproj/project.xcworkspace/xcuserdata/TurtleMac01.xcuserdatad/UserInterfaceState.xcuserstate index 1125a2a..1ee0c12 100644 Binary files a/CS108iOSClient.xcodeproj/project.xcworkspace/xcuserdata/TurtleMac01.xcuserdatad/UserInterfaceState.xcuserstate and b/CS108iOSClient.xcodeproj/project.xcworkspace/xcuserdata/TurtleMac01.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/CS108iOSClient.xcodeproj/xcuserdata/TurtleMac01.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/CS108iOSClient.xcodeproj/xcuserdata/TurtleMac01.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index f4e9afc..fe2b454 100644 --- a/CS108iOSClient.xcodeproj/xcuserdata/TurtleMac01.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/CS108iOSClient.xcodeproj/xcuserdata/TurtleMac01.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -2,22 +2,4 @@ - - - - - - diff --git a/CS108iOSClient.xcworkspace/xcuserdata/TurtleMac01.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/CS108iOSClient.xcworkspace/xcuserdata/TurtleMac01.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..ed9a9b4 --- /dev/null +++ b/CS108iOSClient.xcworkspace/xcuserdata/TurtleMac01.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/CS108iOSClient/Assets.xcassets/Access-25.imageset/Access-25.png b/CS108iOSClient/Assets.xcassets/Access-25.imageset/Access-25.png deleted file mode 100644 index cf9df40..0000000 Binary files a/CS108iOSClient/Assets.xcassets/Access-25.imageset/Access-25.png and /dev/null differ diff --git a/CS108iOSClient/Assets.xcassets/Access-icon.imageset/Access-icon-50.png b/CS108iOSClient/Assets.xcassets/Access-icon.imageset/Access-icon-50.png new file mode 100644 index 0000000..bd90cf9 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Access-icon.imageset/Access-icon-50.png differ diff --git a/CS108iOSClient/Assets.xcassets/Access-icon.imageset/Access-icon-75.png b/CS108iOSClient/Assets.xcassets/Access-icon.imageset/Access-icon-75.png new file mode 100644 index 0000000..0561ac7 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Access-icon.imageset/Access-icon-75.png differ diff --git a/CS108iOSClient/Assets.xcassets/Access-icon.imageset/Access-icon.png b/CS108iOSClient/Assets.xcassets/Access-icon.imageset/Access-icon.png new file mode 100644 index 0000000..ec200e0 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Access-icon.imageset/Access-icon.png differ diff --git a/CS108iOSClient/Assets.xcassets/Access-icon.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/Access-icon.imageset/Contents.json new file mode 100644 index 0000000..4b74911 --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/Access-icon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Access-icon.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Access-icon-50.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Access-icon-75.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/Access.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/Access.imageset/Contents.json index 508791e..ba951a5 100644 --- a/CS108iOSClient/Assets.xcassets/Access.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/Access.imageset/Contents.json @@ -2,16 +2,7 @@ "images" : [ { "idiom" : "universal", - "filename" : "Access.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" + "filename" : "Access.png" } ], "info" : { diff --git a/CS108iOSClient/Assets.xcassets/Battery-icon.imageset/Battery-icon-50.png b/CS108iOSClient/Assets.xcassets/Battery-icon.imageset/Battery-icon-50.png new file mode 100644 index 0000000..95a2978 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Battery-icon.imageset/Battery-icon-50.png differ diff --git a/CS108iOSClient/Assets.xcassets/Battery-icon.imageset/Battery-icon-75.png b/CS108iOSClient/Assets.xcassets/Battery-icon.imageset/Battery-icon-75.png new file mode 100644 index 0000000..266d266 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Battery-icon.imageset/Battery-icon-75.png differ diff --git a/CS108iOSClient/Assets.xcassets/Battery-icon.imageset/Battery-icon.png b/CS108iOSClient/Assets.xcassets/Battery-icon.imageset/Battery-icon.png new file mode 100644 index 0000000..418aee2 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Battery-icon.imageset/Battery-icon.png differ diff --git a/CS108iOSClient/Assets.xcassets/Battery-icon.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/Battery-icon.imageset/Contents.json new file mode 100644 index 0000000..f832588 --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/Battery-icon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Battery-icon.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Battery-icon-50.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Battery-icon-75.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/Check-icon.imageset/Check-icon-50.png b/CS108iOSClient/Assets.xcassets/Check-icon.imageset/Check-icon-50.png new file mode 100644 index 0000000..3707e9d Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Check-icon.imageset/Check-icon-50.png differ diff --git a/CS108iOSClient/Assets.xcassets/Check-icon.imageset/Check-icon-75.png b/CS108iOSClient/Assets.xcassets/Check-icon.imageset/Check-icon-75.png new file mode 100644 index 0000000..1f4eef4 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Check-icon.imageset/Check-icon-75.png differ diff --git a/CS108iOSClient/Assets.xcassets/Check-icon.imageset/Check-icon.png b/CS108iOSClient/Assets.xcassets/Check-icon.imageset/Check-icon.png new file mode 100644 index 0000000..77e7671 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Check-icon.imageset/Check-icon.png differ diff --git a/CS108iOSClient/Assets.xcassets/Inventory-25.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/Check-icon.imageset/Contents.json similarity index 69% rename from CS108iOSClient/Assets.xcassets/Inventory-25.imageset/Contents.json rename to CS108iOSClient/Assets.xcassets/Check-icon.imageset/Contents.json index d6b42f2..69d66d9 100644 --- a/CS108iOSClient/Assets.xcassets/Inventory-25.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/Check-icon.imageset/Contents.json @@ -2,15 +2,17 @@ "images" : [ { "idiom" : "universal", - "filename" : "Inventory-25.png", + "filename" : "Check-icon.png", "scale" : "1x" }, { "idiom" : "universal", + "filename" : "Check-icon-50.png", "scale" : "2x" }, { "idiom" : "universal", + "filename" : "Check-icon-75.png", "scale" : "3x" } ], diff --git a/CS108iOSClient/Assets.xcassets/Clear-icon.imageset/Clear-icon-50.png b/CS108iOSClient/Assets.xcassets/Clear-icon.imageset/Clear-icon-50.png new file mode 100644 index 0000000..55f7110 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Clear-icon.imageset/Clear-icon-50.png differ diff --git a/CS108iOSClient/Assets.xcassets/Clear-icon.imageset/Clear-icon-75.png b/CS108iOSClient/Assets.xcassets/Clear-icon.imageset/Clear-icon-75.png new file mode 100644 index 0000000..1c98514 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Clear-icon.imageset/Clear-icon-75.png differ diff --git a/CS108iOSClient/Assets.xcassets/Clear-icon.imageset/Clear-icon.png b/CS108iOSClient/Assets.xcassets/Clear-icon.imageset/Clear-icon.png new file mode 100644 index 0000000..2584faf Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Clear-icon.imageset/Clear-icon.png differ diff --git a/CS108iOSClient/Assets.xcassets/Clear-icon.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/Clear-icon.imageset/Contents.json new file mode 100644 index 0000000..e80812f --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/Clear-icon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Clear-icon.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Clear-icon-50.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Clear-icon-75.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/Delete-icon.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/Delete-icon.imageset/Contents.json new file mode 100644 index 0000000..ed02ed8 --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/Delete-icon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Delete-icon.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Delete-icon-50.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Delete-icon-75.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/Delete-icon.imageset/Delete-icon-50.png b/CS108iOSClient/Assets.xcassets/Delete-icon.imageset/Delete-icon-50.png new file mode 100644 index 0000000..ad21b81 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Delete-icon.imageset/Delete-icon-50.png differ diff --git a/CS108iOSClient/Assets.xcassets/Delete-icon.imageset/Delete-icon-75.png b/CS108iOSClient/Assets.xcassets/Delete-icon.imageset/Delete-icon-75.png new file mode 100644 index 0000000..36ff982 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Delete-icon.imageset/Delete-icon-75.png differ diff --git a/CS108iOSClient/Assets.xcassets/Delete-icon.imageset/Delete-icon.png b/CS108iOSClient/Assets.xcassets/Delete-icon.imageset/Delete-icon.png new file mode 100644 index 0000000..ea6b748 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Delete-icon.imageset/Delete-icon.png differ diff --git a/CS108iOSClient/Assets.xcassets/Inventory-25.imageset/Inventory-25.png b/CS108iOSClient/Assets.xcassets/Inventory-25.imageset/Inventory-25.png deleted file mode 100644 index ffcae43..0000000 Binary files a/CS108iOSClient/Assets.xcassets/Inventory-25.imageset/Inventory-25.png and /dev/null differ diff --git a/CS108iOSClient/Assets.xcassets/Inventory.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/Inventory.imageset/Contents.json index fbc2f33..78d85f2 100644 --- a/CS108iOSClient/Assets.xcassets/Inventory.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/Inventory.imageset/Contents.json @@ -2,16 +2,7 @@ "images" : [ { "idiom" : "universal", - "filename" : "Inventory.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" + "filename" : "Inventory.png" } ], "info" : { diff --git a/CS108iOSClient/Assets.xcassets/LaunchScreen.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/LaunchScreen.imageset/Contents.json index 410d6ad..be3e7d1 100644 --- a/CS108iOSClient/Assets.xcassets/LaunchScreen.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/LaunchScreen.imageset/Contents.json @@ -2,16 +2,7 @@ "images" : [ { "idiom" : "universal", - "filename" : "CSLLaunchScreen.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" + "filename" : "CSLLaunchScreen.png" } ], "info" : { diff --git a/CS108iOSClient/Assets.xcassets/MQTT.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/MQTT.imageset/Contents.json index 34a419f..32d61f2 100644 --- a/CS108iOSClient/Assets.xcassets/MQTT.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/MQTT.imageset/Contents.json @@ -2,16 +2,7 @@ "images" : [ { "idiom" : "universal", - "filename" : "MQTT.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" + "filename" : "MQTT.png" } ], "info" : { diff --git a/CS108iOSClient/Assets.xcassets/Search-25.imageset/Search-25.png b/CS108iOSClient/Assets.xcassets/Search-25.imageset/Search-25.png deleted file mode 100644 index 2f1926b..0000000 Binary files a/CS108iOSClient/Assets.xcassets/Search-25.imageset/Search-25.png and /dev/null differ diff --git a/CS108iOSClient/Assets.xcassets/Search-icon.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/Search-icon.imageset/Contents.json new file mode 100644 index 0000000..481ec4c --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/Search-icon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Search-icon.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Search-icon-50.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Search-icon-75.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/Search-icon.imageset/Search-icon-50.png b/CS108iOSClient/Assets.xcassets/Search-icon.imageset/Search-icon-50.png new file mode 100644 index 0000000..8387004 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Search-icon.imageset/Search-icon-50.png differ diff --git a/CS108iOSClient/Assets.xcassets/Search-icon.imageset/Search-icon-75.png b/CS108iOSClient/Assets.xcassets/Search-icon.imageset/Search-icon-75.png new file mode 100644 index 0000000..b2cb25c Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Search-icon.imageset/Search-icon-75.png differ diff --git a/CS108iOSClient/Assets.xcassets/Search-icon.imageset/Search-icon.png b/CS108iOSClient/Assets.xcassets/Search-icon.imageset/Search-icon.png new file mode 100644 index 0000000..146476c Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Search-icon.imageset/Search-icon.png differ diff --git a/CS108iOSClient/Assets.xcassets/Search.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/Search.imageset/Contents.json index edb819e..eac54c5 100644 --- a/CS108iOSClient/Assets.xcassets/Search.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/Search.imageset/Contents.json @@ -2,16 +2,7 @@ "images" : [ { "idiom" : "universal", - "filename" : "Search.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" + "filename" : "Search.png" } ], "info" : { diff --git a/CS108iOSClient/Assets.xcassets/Signal-icon.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/Signal-icon.imageset/Contents.json new file mode 100644 index 0000000..45d0a1c --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/Signal-icon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Signal-icon.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Signal-icon-50.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Signal-icon-75.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/Signal-icon.imageset/Signal-icon-50.png b/CS108iOSClient/Assets.xcassets/Signal-icon.imageset/Signal-icon-50.png new file mode 100644 index 0000000..c27ad1f Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Signal-icon.imageset/Signal-icon-50.png differ diff --git a/CS108iOSClient/Assets.xcassets/Signal-icon.imageset/Signal-icon-75.png b/CS108iOSClient/Assets.xcassets/Signal-icon.imageset/Signal-icon-75.png new file mode 100644 index 0000000..5d67db1 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Signal-icon.imageset/Signal-icon-75.png differ diff --git a/CS108iOSClient/Assets.xcassets/Signal-icon.imageset/Signal-icon.png b/CS108iOSClient/Assets.xcassets/Signal-icon.imageset/Signal-icon.png new file mode 100644 index 0000000..9e936c8 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Signal-icon.imageset/Signal-icon.png differ diff --git a/CS108iOSClient/Assets.xcassets/Start-icon.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/Start-icon.imageset/Contents.json new file mode 100644 index 0000000..2c8217d --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/Start-icon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Start-icon.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Start-icon-50.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Start-icon-75.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/Start-icon.imageset/Start-icon-50.png b/CS108iOSClient/Assets.xcassets/Start-icon.imageset/Start-icon-50.png new file mode 100644 index 0000000..9387f7b Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Start-icon.imageset/Start-icon-50.png differ diff --git a/CS108iOSClient/Assets.xcassets/Start-icon.imageset/Start-icon-75.png b/CS108iOSClient/Assets.xcassets/Start-icon.imageset/Start-icon-75.png new file mode 100644 index 0000000..602ef1c Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Start-icon.imageset/Start-icon-75.png differ diff --git a/CS108iOSClient/Assets.xcassets/Start-icon.imageset/Start-icon.png b/CS108iOSClient/Assets.xcassets/Start-icon.imageset/Start-icon.png new file mode 100644 index 0000000..ad0e31e Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Start-icon.imageset/Start-icon.png differ diff --git a/CS108iOSClient/Assets.xcassets/Access-25.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/Stop-icon.imageset/Contents.json similarity index 70% rename from CS108iOSClient/Assets.xcassets/Access-25.imageset/Contents.json rename to CS108iOSClient/Assets.xcassets/Stop-icon.imageset/Contents.json index 1061a78..7ad1c59 100644 --- a/CS108iOSClient/Assets.xcassets/Access-25.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/Stop-icon.imageset/Contents.json @@ -2,15 +2,17 @@ "images" : [ { "idiom" : "universal", - "filename" : "Access-25.png", + "filename" : "Stop-icon.png", "scale" : "1x" }, { "idiom" : "universal", + "filename" : "Stop-icon-50.png", "scale" : "2x" }, { "idiom" : "universal", + "filename" : "Stop-icon-75.png", "scale" : "3x" } ], diff --git a/CS108iOSClient/Assets.xcassets/Stop-icon.imageset/Stop-icon-50.png b/CS108iOSClient/Assets.xcassets/Stop-icon.imageset/Stop-icon-50.png new file mode 100644 index 0000000..8052f0f Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Stop-icon.imageset/Stop-icon-50.png differ diff --git a/CS108iOSClient/Assets.xcassets/Stop-icon.imageset/Stop-icon-75.png b/CS108iOSClient/Assets.xcassets/Stop-icon.imageset/Stop-icon-75.png new file mode 100644 index 0000000..a93d1fa Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Stop-icon.imageset/Stop-icon-75.png differ diff --git a/CS108iOSClient/Assets.xcassets/Stop-icon.imageset/Stop-icon.png b/CS108iOSClient/Assets.xcassets/Stop-icon.imageset/Stop-icon.png new file mode 100644 index 0000000..224bb92 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Stop-icon.imageset/Stop-icon.png differ diff --git a/CS108iOSClient/Assets.xcassets/Temperature-2.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/Temperature-2.imageset/Contents.json new file mode 100644 index 0000000..9280cf9 --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/Temperature-2.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Temperature-2.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/Temperature-2.imageset/Temperature-2.png b/CS108iOSClient/Assets.xcassets/Temperature-2.imageset/Temperature-2.png new file mode 100644 index 0000000..f307a72 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/Temperature-2.imageset/Temperature-2.png differ diff --git a/CS108iOSClient/Assets.xcassets/arrow.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/arrow.imageset/Contents.json new file mode 100644 index 0000000..2c09900 --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/arrow.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "right-arrow.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/arrow.imageset/right-arrow.png b/CS108iOSClient/Assets.xcassets/arrow.imageset/right-arrow.png new file mode 100644 index 0000000..80ab680 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/arrow.imageset/right-arrow.png differ diff --git a/CS108iOSClient/Assets.xcassets/clock.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/clock.imageset/Contents.json new file mode 100644 index 0000000..007ca4b --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/clock.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "clock.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/clock.imageset/clock.png b/CS108iOSClient/Assets.xcassets/clock.imageset/clock.png new file mode 100644 index 0000000..2e74f7d Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/clock.imageset/clock.png differ diff --git a/CS108iOSClient/Assets.xcassets/cloud-connected.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/cloud-connected.imageset/Contents.json new file mode 100644 index 0000000..da5cc6b --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/cloud-connected.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "cloud-connected.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/cloud-connected.imageset/cloud-connected.png b/CS108iOSClient/Assets.xcassets/cloud-connected.imageset/cloud-connected.png new file mode 100644 index 0000000..0fce6fd Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/cloud-connected.imageset/cloud-connected.png differ diff --git a/CS108iOSClient/Assets.xcassets/cloud-offline.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/cloud-offline.imageset/Contents.json new file mode 100644 index 0000000..1abc7d7 --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/cloud-offline.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "cloud-offline.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/cloud-offline.imageset/cloud-offline.png b/CS108iOSClient/Assets.xcassets/cloud-offline.imageset/cloud-offline.png new file mode 100644 index 0000000..5d6e68b Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/cloud-offline.imageset/cloud-offline.png differ diff --git a/CS108iOSClient/Assets.xcassets/connected.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/connected.imageset/Contents.json index 4c2ff88..e904b61 100644 --- a/CS108iOSClient/Assets.xcassets/connected.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/connected.imageset/Contents.json @@ -2,16 +2,7 @@ "images" : [ { "idiom" : "universal", - "filename" : "connected.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" + "filename" : "connected.png" } ], "info" : { diff --git a/CS108iOSClient/Assets.xcassets/disconnected.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/disconnected.imageset/Contents.json index a0ce849..e01d205 100644 --- a/CS108iOSClient/Assets.xcassets/disconnected.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/disconnected.imageset/Contents.json @@ -2,16 +2,7 @@ "images" : [ { "idiom" : "universal", - "filename" : "disconnected.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" + "filename" : "disconnected.png" } ], "info" : { diff --git a/CS108iOSClient/Assets.xcassets/filter.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/filter.imageset/Contents.json index a551c18..b2a5e1d 100644 --- a/CS108iOSClient/Assets.xcassets/filter.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/filter.imageset/Contents.json @@ -2,16 +2,7 @@ "images" : [ { "idiom" : "universal", - "filename" : "filter.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" + "filename" : "filter.png" } ], "info" : { diff --git a/CS108iOSClient/Assets.xcassets/function.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/function.imageset/Contents.json index 9dfdee0..aff36a8 100644 --- a/CS108iOSClient/Assets.xcassets/function.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/function.imageset/Contents.json @@ -2,16 +2,7 @@ "images" : [ { "idiom" : "universal", - "filename" : "function.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" + "filename" : "function.png" } ], "info" : { diff --git a/CS108iOSClient/Assets.xcassets/inventory-icon.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/inventory-icon.imageset/Contents.json new file mode 100644 index 0000000..54cff79 --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/inventory-icon.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "inventory-icon.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "inventory-icon-50.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "inventory-icon-75.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + }, + "properties" : { + "auto-scaling" : "auto" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/inventory-icon.imageset/inventory-icon-50.png b/CS108iOSClient/Assets.xcassets/inventory-icon.imageset/inventory-icon-50.png new file mode 100644 index 0000000..7d77db4 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/inventory-icon.imageset/inventory-icon-50.png differ diff --git a/CS108iOSClient/Assets.xcassets/inventory-icon.imageset/inventory-icon-75.png b/CS108iOSClient/Assets.xcassets/inventory-icon.imageset/inventory-icon-75.png new file mode 100644 index 0000000..33af395 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/inventory-icon.imageset/inventory-icon-75.png differ diff --git a/CS108iOSClient/Assets.xcassets/inventory-icon.imageset/inventory-icon.png b/CS108iOSClient/Assets.xcassets/inventory-icon.imageset/inventory-icon.png new file mode 100644 index 0000000..4331cb7 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/inventory-icon.imageset/inventory-icon.png differ diff --git a/CS108iOSClient/Assets.xcassets/multibank.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/multibank.imageset/Contents.json index ec83de2..0386486 100644 --- a/CS108iOSClient/Assets.xcassets/multibank.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/multibank.imageset/Contents.json @@ -2,16 +2,7 @@ "images" : [ { "idiom" : "universal", - "filename" : "multibank.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" + "filename" : "multibank.png" } ], "info" : { diff --git a/CS108iOSClient/Assets.xcassets/Search-25.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/rfm-info.imageset/Contents.json similarity index 70% rename from CS108iOSClient/Assets.xcassets/Search-25.imageset/Contents.json rename to CS108iOSClient/Assets.xcassets/rfm-info.imageset/Contents.json index 6125307..3a37251 100644 --- a/CS108iOSClient/Assets.xcassets/Search-25.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/rfm-info.imageset/Contents.json @@ -2,15 +2,17 @@ "images" : [ { "idiom" : "universal", - "filename" : "Search-25.png", + "filename" : "rfm-info.png", "scale" : "1x" }, { "idiom" : "universal", + "filename" : "rfm-info-50.png", "scale" : "2x" }, { "idiom" : "universal", + "filename" : "rfm-info-75.png", "scale" : "3x" } ], diff --git a/CS108iOSClient/Assets.xcassets/rfm-info.imageset/rfm-info-50.png b/CS108iOSClient/Assets.xcassets/rfm-info.imageset/rfm-info-50.png new file mode 100644 index 0000000..64d647d Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/rfm-info.imageset/rfm-info-50.png differ diff --git a/CS108iOSClient/Assets.xcassets/rfm-info.imageset/rfm-info-75.png b/CS108iOSClient/Assets.xcassets/rfm-info.imageset/rfm-info-75.png new file mode 100644 index 0000000..e90dd4c Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/rfm-info.imageset/rfm-info-75.png differ diff --git a/CS108iOSClient/Assets.xcassets/rfm-info.imageset/rfm-info.png b/CS108iOSClient/Assets.xcassets/rfm-info.imageset/rfm-info.png new file mode 100644 index 0000000..8239896 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/rfm-info.imageset/rfm-info.png differ diff --git a/CS108iOSClient/Assets.xcassets/rfm-settings.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/rfm-settings.imageset/Contents.json new file mode 100644 index 0000000..5c94f76 --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/rfm-settings.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "rfm-settings.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "rfm-settings-50.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "rfm-settings-75.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/rfm-settings.imageset/rfm-settings-50.png b/CS108iOSClient/Assets.xcassets/rfm-settings.imageset/rfm-settings-50.png new file mode 100644 index 0000000..d1b27e1 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/rfm-settings.imageset/rfm-settings-50.png differ diff --git a/CS108iOSClient/Assets.xcassets/rfm-settings.imageset/rfm-settings-75.png b/CS108iOSClient/Assets.xcassets/rfm-settings.imageset/rfm-settings-75.png new file mode 100644 index 0000000..d80a36f Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/rfm-settings.imageset/rfm-settings-75.png differ diff --git a/CS108iOSClient/Assets.xcassets/rfm-settings.imageset/rfm-settings.png b/CS108iOSClient/Assets.xcassets/rfm-settings.imageset/rfm-settings.png new file mode 100644 index 0000000..1e45308 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/rfm-settings.imageset/rfm-settings.png differ diff --git a/CS108iOSClient/Assets.xcassets/rfm-taggroup.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/rfm-taggroup.imageset/Contents.json new file mode 100644 index 0000000..407d1af --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/rfm-taggroup.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "rfm-taggroup.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "rfm-taggroup-50.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "rfm-taggroup-75.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/rfm-taggroup.imageset/rfm-taggroup-50.png b/CS108iOSClient/Assets.xcassets/rfm-taggroup.imageset/rfm-taggroup-50.png new file mode 100644 index 0000000..6a78e74 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/rfm-taggroup.imageset/rfm-taggroup-50.png differ diff --git a/CS108iOSClient/Assets.xcassets/rfm-taggroup.imageset/rfm-taggroup-75.png b/CS108iOSClient/Assets.xcassets/rfm-taggroup.imageset/rfm-taggroup-75.png new file mode 100644 index 0000000..499da86 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/rfm-taggroup.imageset/rfm-taggroup-75.png differ diff --git a/CS108iOSClient/Assets.xcassets/rfm-taggroup.imageset/rfm-taggroup.png b/CS108iOSClient/Assets.xcassets/rfm-taggroup.imageset/rfm-taggroup.png new file mode 100644 index 0000000..924c1c3 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/rfm-taggroup.imageset/rfm-taggroup.png differ diff --git a/CS108iOSClient/Assets.xcassets/rfm-temperature.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/rfm-temperature.imageset/Contents.json new file mode 100644 index 0000000..fac7fcb --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/rfm-temperature.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "rfm-temperature.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "rfm-temperature-50.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "rfm-temperature-75.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/rfm-temperature.imageset/rfm-temperature-50.png b/CS108iOSClient/Assets.xcassets/rfm-temperature.imageset/rfm-temperature-50.png new file mode 100644 index 0000000..d740132 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/rfm-temperature.imageset/rfm-temperature-50.png differ diff --git a/CS108iOSClient/Assets.xcassets/rfm-temperature.imageset/rfm-temperature-75.png b/CS108iOSClient/Assets.xcassets/rfm-temperature.imageset/rfm-temperature-75.png new file mode 100644 index 0000000..5c111bb Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/rfm-temperature.imageset/rfm-temperature-75.png differ diff --git a/CS108iOSClient/Assets.xcassets/rfm-temperature.imageset/rfm-temperature.png b/CS108iOSClient/Assets.xcassets/rfm-temperature.imageset/rfm-temperature.png new file mode 100644 index 0000000..45605c4 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/rfm-temperature.imageset/rfm-temperature.png differ diff --git a/CS108iOSClient/Assets.xcassets/rfm-upload.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/rfm-upload.imageset/Contents.json new file mode 100644 index 0000000..f257554 --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/rfm-upload.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "rfm-upload.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "rfm-upload-50.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "rfm-upload-75.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/rfm-upload.imageset/rfm-upload-50.png b/CS108iOSClient/Assets.xcassets/rfm-upload.imageset/rfm-upload-50.png new file mode 100644 index 0000000..509b1cd Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/rfm-upload.imageset/rfm-upload-50.png differ diff --git a/CS108iOSClient/Assets.xcassets/rfm-upload.imageset/rfm-upload-75.png b/CS108iOSClient/Assets.xcassets/rfm-upload.imageset/rfm-upload-75.png new file mode 100644 index 0000000..c9de7c1 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/rfm-upload.imageset/rfm-upload-75.png differ diff --git a/CS108iOSClient/Assets.xcassets/rfm-upload.imageset/rfm-upload.png b/CS108iOSClient/Assets.xcassets/rfm-upload.imageset/rfm-upload.png new file mode 100644 index 0000000..9fe4db5 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/rfm-upload.imageset/rfm-upload.png differ diff --git a/CS108iOSClient/Assets.xcassets/settings.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/settings.imageset/Contents.json index 77b2e1f..9341e75 100644 --- a/CS108iOSClient/Assets.xcassets/settings.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/settings.imageset/Contents.json @@ -2,16 +2,7 @@ "images" : [ { "idiom" : "universal", - "filename" : "settings.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" + "filename" : "settings.png" } ], "info" : { diff --git a/CS108iOSClient/Assets.xcassets/tag.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/tag.imageset/Contents.json new file mode 100644 index 0000000..78240c4 --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/tag.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "tag.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/tag.imageset/tag.png b/CS108iOSClient/Assets.xcassets/tag.imageset/tag.png new file mode 100644 index 0000000..ca1c732 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/tag.imageset/tag.png differ diff --git a/CS108iOSClient/Assets.xcassets/tagList-bg-barcode-swipe.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/tagList-bg-barcode-swipe.imageset/Contents.json index 594bd47..88cf2f1 100644 --- a/CS108iOSClient/Assets.xcassets/tagList-bg-barcode-swipe.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/tagList-bg-barcode-swipe.imageset/Contents.json @@ -2,16 +2,7 @@ "images" : [ { "idiom" : "universal", - "filename" : "tagList-bg-barcode-swipe.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" + "filename" : "tagList-bg-barcode-swipe.png" } ], "info" : { diff --git a/CS108iOSClient/Assets.xcassets/tagList-bg-barcode.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/tagList-bg-barcode.imageset/Contents.json index b7eb27f..f1bfbac 100644 --- a/CS108iOSClient/Assets.xcassets/tagList-bg-barcode.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/tagList-bg-barcode.imageset/Contents.json @@ -2,16 +2,7 @@ "images" : [ { "idiom" : "universal", - "filename" : "tagList-bg-barcode.jpg", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" + "filename" : "tagList-bg-barcode.jpg" } ], "info" : { diff --git a/CS108iOSClient/Assets.xcassets/tagList-bg-rfid-swipe.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/tagList-bg-rfid-swipe.imageset/Contents.json index aba9f00..ae1a79b 100644 --- a/CS108iOSClient/Assets.xcassets/tagList-bg-rfid-swipe.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/tagList-bg-rfid-swipe.imageset/Contents.json @@ -2,16 +2,7 @@ "images" : [ { "idiom" : "universal", - "filename" : "tagList-bg-rfid-swipe.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" + "filename" : "tagList-bg-rfid-swipe.png" } ], "info" : { diff --git a/CS108iOSClient/Assets.xcassets/tagList-bg-rfid.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/tagList-bg-rfid.imageset/Contents.json index f9ec2fd..d833dfb 100644 --- a/CS108iOSClient/Assets.xcassets/tagList-bg-rfid.imageset/Contents.json +++ b/CS108iOSClient/Assets.xcassets/tagList-bg-rfid.imageset/Contents.json @@ -2,16 +2,7 @@ "images" : [ { "idiom" : "universal", - "filename" : "tagList-bg-rfid.jpg", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" + "filename" : "tagList-bg-rfid.jpg" } ], "info" : { diff --git a/CS108iOSClient/Assets.xcassets/temperature.imageset/Contents.json b/CS108iOSClient/Assets.xcassets/temperature.imageset/Contents.json new file mode 100644 index 0000000..2c9aacf --- /dev/null +++ b/CS108iOSClient/Assets.xcassets/temperature.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "temperature.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CS108iOSClient/Assets.xcassets/temperature.imageset/temperature.png b/CS108iOSClient/Assets.xcassets/temperature.imageset/temperature.png new file mode 100644 index 0000000..fccf369 Binary files /dev/null and b/CS108iOSClient/Assets.xcassets/temperature.imageset/temperature.png differ diff --git a/CS108iOSClient/Base.lproj/LaunchScreen.storyboard b/CS108iOSClient/Base.lproj/LaunchScreen.storyboard index ce9ee95..916ee2e 100644 --- a/CS108iOSClient/Base.lproj/LaunchScreen.storyboard +++ b/CS108iOSClient/Base.lproj/LaunchScreen.storyboard @@ -1,11 +1,11 @@ - + - + diff --git a/CS108iOSClient/CSLReader/CSLBleReader.h b/CS108iOSClient/CSLReader/CSLBleReader.h index e83696e..5229a79 100644 --- a/CS108iOSClient/CSLReader/CSLBleReader.h +++ b/CS108iOSClient/CSLReader/CSLBleReader.h @@ -17,6 +17,7 @@ #define COMMAND_TIMEOUT_3S 30 #define COMMAND_TIMEOUT_4S 40 #define COMMAND_TIMEOUT_5S 50 +#define COMMAND_TIMEOUT_10S 100 #define COMMAND_ANTCYCLE_CONTINUOUS 0xFFFF diff --git a/CS108iOSClient/CSLReader/CSLBleReader.m b/CS108iOSClient/CSLReader/CSLBleReader.m index 515e7a4..31b18b5 100644 --- a/CS108iOSClient/CSLReader/CSLBleReader.m +++ b/CS108iOSClient/CSLReader/CSLBleReader.m @@ -1911,6 +1911,7 @@ - (void)decodePacketsInBufferAsync; CSLBleTag* tag=[[CSLBleTag alloc] init]; tag.EPC=@""; tag.rssi=0; + tag.timestamp=[NSDate date]; NSLog(@"[decodePacketsInBufferAsync] Tag search response with no tag found recieved: %@", rfidPacketBufferInHexString); //return packet directly to the API for decoding @@ -1986,6 +1987,7 @@ - (void)decodePacketsInBufferAsync; ptr+= datalen; NSLog(@"[decodePacketsInBufferAsync] Tag data found: PC=%04X EPC=%@ rssi=%d", tag.PC, tag.EPC, tag.rssi); + tag.timestamp=[NSDate date]; if (tagInventoryPacketOnly) { NSLog(@"[decodePacketsInBufferAsync] Finished decode inventory response (full) packet."); @@ -2122,37 +2124,40 @@ - (void)decodePacketsInBufferAsync; [self.readerDelegate didReceiveTagResponsePacket:self tagReceived:tag]; //this will call the method for handling the tag response. NSLog(@"[decodePacketsInBufferAsync] Tag data found: PC=%04X EPC=%@ DATA1=%@ DATA2=%@ rssi=%d", tag.PC, tag.EPC, tag.DATA1, tag.DATA2, tag.rssi); + tag.timestamp=[NSDate date]; rangingTagCount++; - //insert the tag data to the sorted filteredBuffer if not duplicated - - //check and see if epc exists on the array using binary search - NSRange searchRange = NSMakeRange(0, [filteredBuffer count]); - NSUInteger findIndex = [filteredBuffer indexOfObject:tag - inSortedRange:searchRange - options:NSBinarySearchingInsertionIndex - usingComparator:^(id obj1, id obj2) - { - NSString* str1=((CSLBleTag*)obj1).EPC; - NSString* str2=((CSLBleTag*)obj2).EPC; - return [str1 compare:str2 options:NSCaseInsensitiveSearch]; - }]; - - if ( findIndex >= [filteredBuffer count] ) //tag to be the largest. Append to the end. - { - [filteredBuffer insertObject:tag atIndex:findIndex]; - uniqueTagCount++; + @synchronized(filteredBuffer) { + //insert the tag data to the sorted filteredBuffer if not duplicated - } - else if ( [((CSLBleTag*)filteredBuffer[findIndex]).EPC caseInsensitiveCompare:tag.EPC] != NSOrderedSame) - { - //new tag found. insert into buffer in sorted order - [filteredBuffer insertObject:tag atIndex:findIndex]; - uniqueTagCount++; - } - else //tag is duplicated, but will replace the existing tag information with the new one for updating the RRSI value. - { - [filteredBuffer replaceObjectAtIndex:findIndex withObject:tag]; + //check and see if epc exists on the array using binary search + NSRange searchRange = NSMakeRange(0, [filteredBuffer count]); + NSUInteger findIndex = [filteredBuffer indexOfObject:tag + inSortedRange:searchRange + options:NSBinarySearchingInsertionIndex + usingComparator:^(id obj1, id obj2) + { + NSString* str1=((CSLBleTag*)obj1).EPC; + NSString* str2=((CSLBleTag*)obj2).EPC; + return [str1 compare:str2 options:NSCaseInsensitiveSearch]; + }]; + + if ( findIndex >= [filteredBuffer count] ) //tag to be the largest. Append to the end. + { + [filteredBuffer insertObject:tag atIndex:findIndex]; + uniqueTagCount++; + + } + else if ( [((CSLBleTag*)filteredBuffer[findIndex]).EPC caseInsensitiveCompare:tag.EPC] != NSOrderedSame) + { + //new tag found. insert into buffer in sorted order + [filteredBuffer insertObject:tag atIndex:findIndex]; + uniqueTagCount++; + } + else //tag is duplicated, but will replace the existing tag information with the new one for updating the RRSI value. + { + [filteredBuffer replaceObjectAtIndex:findIndex withObject:tag]; + } } //for the cases where we reaches the end of the RFID reponse packet but there are still data within the bluetooth reader packet. @@ -2237,35 +2242,37 @@ - (void)decodePacketsInBufferAsync; NSLog(@"[decodePacketsInBufferAsync] Tag data found: PC=%04X EPC=%@ rssi=%d", tag.PC, tag.EPC, tag.rssi); rangingTagCount++; - //insert the tag data to the sorted filteredBuffer if not duplicated - - //check and see if epc exists on the array using binary search - NSRange searchRange = NSMakeRange(0, [filteredBuffer count]); - NSUInteger findIndex = [filteredBuffer indexOfObject:tag - inSortedRange:searchRange - options:NSBinarySearchingInsertionIndex - usingComparator:^(id obj1, id obj2) - { - NSString* str1=((CSLBleTag*)obj1).EPC; - NSString* str2=((CSLBleTag*)obj2).EPC; - return [str1 compare:str2 options:NSCaseInsensitiveSearch]; - }]; - - if ( findIndex >= [filteredBuffer count] ) //tag to be the largest. Append to the end. - { - [filteredBuffer insertObject:tag atIndex:findIndex]; - uniqueTagCount++; + @synchronized(filteredBuffer) { + //insert the tag data to the sorted filteredBuffer if not duplicated - } - else if ( [((CSLBleTag*)filteredBuffer[findIndex]).EPC caseInsensitiveCompare:tag.EPC] != NSOrderedSame) - { - //new tag found. insert into buffer in sorted order - [filteredBuffer insertObject:tag atIndex:findIndex]; - uniqueTagCount++; - } - else //tag is duplicated, but will replace the existing tag information with the new one for updating the RRSI value. - { - [filteredBuffer replaceObjectAtIndex:findIndex withObject:tag]; + //check and see if epc exists on the array using binary search + NSRange searchRange = NSMakeRange(0, [filteredBuffer count]); + NSUInteger findIndex = [filteredBuffer indexOfObject:tag + inSortedRange:searchRange + options:NSBinarySearchingInsertionIndex + usingComparator:^(id obj1, id obj2) + { + NSString* str1=((CSLBleTag*)obj1).EPC; + NSString* str2=((CSLBleTag*)obj2).EPC; + return [str1 compare:str2 options:NSCaseInsensitiveSearch]; + }]; + + if ( findIndex >= [filteredBuffer count] ) //tag to be the largest. Append to the end. + { + [filteredBuffer insertObject:tag atIndex:findIndex]; + uniqueTagCount++; + + } + else if ( [((CSLBleTag*)filteredBuffer[findIndex]).EPC caseInsensitiveCompare:tag.EPC] != NSOrderedSame) + { + //new tag found. insert into buffer in sorted order + [filteredBuffer insertObject:tag atIndex:findIndex]; + uniqueTagCount++; + } + else //tag is duplicated, but will replace the existing tag information with the new one for updating the RRSI value. + { + [filteredBuffer replaceObjectAtIndex:findIndex withObject:tag]; + } } //for the cases where we reaches the end of the RFID reponse packet but there are still data within the bluetooth reader packet. @@ -2401,25 +2408,27 @@ - (void)decodePacketsInBufferAsync; if (barcode.aimId != nil && barcode.codeId != nil && barcode.barcodeValue!=nil) { NSLog(@"[decodePacketsInBufferAsync] Barcode received: Code ID=%@ AIM ID=%@ Barcode=%@", barcode.codeId, barcode.aimId, barcode.barcodeValue); - //check and see if epc exists on the array using binary search - NSRange searchRange = NSMakeRange(0, [filteredBuffer count]); - NSUInteger findIndex = [filteredBuffer indexOfObject:barcode - inSortedRange:searchRange - options:NSBinarySearchingInsertionIndex - usingComparator:^(id obj1, id obj2) - { - NSString* str1=((CSLReaderBarcode*)obj1).barcodeValue; - NSString* str2=((CSLReaderBarcode*)obj2).barcodeValue; - return [str1 compare:str2 options:NSCaseInsensitiveSearch]; - }]; - - if ( findIndex >= [filteredBuffer count] ) //tag to be the largest. Append to the end. - [filteredBuffer insertObject:barcode atIndex:findIndex]; - else if ( [((CSLReaderBarcode*)filteredBuffer[findIndex]).barcodeValue caseInsensitiveCompare:barcode.barcodeValue] != NSOrderedSame) - //new tag found. insert into buffer in sorted order - [filteredBuffer insertObject:barcode atIndex:findIndex]; - else //tag is duplicated, but will replace the existing tag information with the new one for updating the RRSI value. - [filteredBuffer replaceObjectAtIndex:findIndex withObject:barcode]; + @synchronized(filteredBuffer) { + //check and see if epc exists on the array using binary search + NSRange searchRange = NSMakeRange(0, [filteredBuffer count]); + NSUInteger findIndex = [filteredBuffer indexOfObject:barcode + inSortedRange:searchRange + options:NSBinarySearchingInsertionIndex + usingComparator:^(id obj1, id obj2) + { + NSString* str1=((CSLReaderBarcode*)obj1).barcodeValue; + NSString* str2=((CSLReaderBarcode*)obj2).barcodeValue; + return [str1 compare:str2 options:NSCaseInsensitiveSearch]; + }]; + + if ( findIndex >= [filteredBuffer count] ) //tag to be the largest. Append to the end. + [filteredBuffer insertObject:barcode atIndex:findIndex]; + else if ( [((CSLReaderBarcode*)filteredBuffer[findIndex]).barcodeValue caseInsensitiveCompare:barcode.barcodeValue] != NSOrderedSame) + //new tag found. insert into buffer in sorted order + [filteredBuffer insertObject:barcode atIndex:findIndex]; + else //tag is duplicated, but will replace the existing tag information with the new one for updating the RRSI value. + [filteredBuffer replaceObjectAtIndex:findIndex withObject:barcode]; + } [self.readerDelegate didReceiveBarcodeData:self scannedBarcode:barcode]; } [rfidPacketBuffer setLength:0]; diff --git a/CS108iOSClient/CSLReader/CSLBleTag.h b/CS108iOSClient/CSLReader/CSLBleTag.h index b59597b..74555aa 100644 --- a/CS108iOSClient/CSLReader/CSLBleTag.h +++ b/CS108iOSClient/CSLReader/CSLBleTag.h @@ -37,7 +37,7 @@ Tag data information ///Return RRSI of the tag response @property (assign) Byte rssi; ///Return timestamp of the tag readtime -@property (assign) NSDate* timestamp; +@property NSDate* timestamp; ///CRC error flag @property (assign) BOOL CRCError; ///command of the tag access operation diff --git a/CS108iOSClient/CSLRfidDemoApp.storyboard b/CS108iOSClient/CSLRfidDemoApp.storyboard index 73eaff2..4cbbf72 100644 --- a/CS108iOSClient/CSLRfidDemoApp.storyboard +++ b/CS108iOSClient/CSLRfidDemoApp.storyboard @@ -10,6 +10,12 @@ + + Lato-Bold + + + Lato-Regular + Digital-7Mono @@ -19,7 +25,7 @@ - + @@ -36,29 +42,77 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -1338,9 +1434,10 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1711,19 +2809,19 @@ - + - + @@ -1738,13 +2836,13 @@ - + @@ -1760,19 +2858,20 @@ + - + @@ -1788,19 +2887,20 @@ + - + @@ -1816,19 +2916,20 @@ + - + @@ -1844,19 +2945,20 @@ + - + @@ -1872,19 +2974,21 @@ + - + @@ -2017,7 +3134,7 @@ - + @@ -2063,13 +3180,13 @@ - + @@ -2080,13 +3197,13 @@ - + @@ -2098,7 +3215,7 @@ @@ -2107,7 +3224,10 @@ - + + + + @@ -2119,7 +3239,7 @@ @@ -2128,7 +3248,10 @@ - + + + + @@ -2140,7 +3263,7 @@ @@ -2149,7 +3272,10 @@ - + + + + @@ -2161,7 +3287,7 @@ @@ -2170,7 +3296,10 @@ - + + + + @@ -2182,7 +3311,7 @@ @@ -2191,7 +3320,10 @@ - + + + + @@ -2203,6 +3335,9 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CS108iOSClient/ViewControllers/CSLTemperatureTagSettingsVC.h b/CS108iOSClient/ViewControllers/CSLTemperatureTagSettingsVC.h new file mode 100644 index 0000000..efcfc99 --- /dev/null +++ b/CS108iOSClient/ViewControllers/CSLTemperatureTagSettingsVC.h @@ -0,0 +1,34 @@ +// +// CSLTemperatureTagSettingsVC.h +// CS108iOSClient +// +// Created by Lam Ka Shun on 14/3/2019. +// Copyright © 2019 Convergence Systems Limited. All rights reserved. +// + +#import +#import "CSLRfidAppEngine.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface CSLTemperatureTagSettingsVC : UIViewController + +@property (weak, nonatomic) IBOutlet UISwitch *swEnableTemperatureAlert; +@property (weak, nonatomic) IBOutlet UITextField *txtLowTemperatureThreshold; +@property (weak, nonatomic) IBOutlet UITextField *txtHighTemperatureThreshold; +@property (weak, nonatomic) IBOutlet UITextField *txtOcrssiMin; +@property (weak, nonatomic) IBOutlet UITextField *txtOcrssiMax; +@property (weak, nonatomic) IBOutlet UITextField *txtNumberOfTemperatureAveraging; +@property (weak, nonatomic) IBOutlet UIButton *btnSave; +@property (weak, nonatomic) IBOutlet UISegmentedControl *scTemperatureUnit; + +- (IBAction)btnSavePressed:(id)sender; +- (IBAction)txtLowTemperatureThresholdChanged:(id)sender; +- (IBAction)txtHighTemperatureThresholdChanged:(id)sender; +- (IBAction)txtOcrssiMinChanged:(id)sender; +- (IBAction)txtOcrssiMaxChanged:(id)sender; +- (IBAction)txtNumberOfTemperatureAveragingChanged:(id)sender; + +@end + +NS_ASSUME_NONNULL_END diff --git a/CS108iOSClient/ViewControllers/CSLTemperatureTagSettingsVC.m b/CS108iOSClient/ViewControllers/CSLTemperatureTagSettingsVC.m new file mode 100644 index 0000000..8503742 --- /dev/null +++ b/CS108iOSClient/ViewControllers/CSLTemperatureTagSettingsVC.m @@ -0,0 +1,224 @@ +// +// CSLTemperatureTagSettingsVC.m +// CS108iOSClient +// +// Created by Lam Ka Shun on 14/3/2019. +// Copyright © 2019 Convergence Systems Limited. All rights reserved. +// + +#import "CSLTemperatureTagSettingsVC.h" + +@interface CSLTemperatureTagSettingsVC () + +@end + +@implementation CSLTemperatureTagSettingsVC + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. + + self.btnSave.layer.borderWidth=1.0f; + self.btnSave.layer.borderColor=[UIColor clearColor].CGColor; + self.btnSave.layer.cornerRadius=5.0f; + + [self.txtOcrssiMax setDelegate:self]; + [self.txtOcrssiMin setDelegate:self]; + [self.txtLowTemperatureThreshold setDelegate:self]; + [self.txtHighTemperatureThreshold setDelegate:self]; + [self.txtNumberOfTemperatureAveraging setDelegate:self]; +} + +- (void)viewWillAppear:(BOOL)animated { + + [self.tabBarController setTitle:@"Settings"]; + + //reload previously stored settings + [[CSLRfidAppEngine sharedAppEngine] reloadSettingsFromUserDefaults]; + + //refresh UI with stored values + [self.swEnableTemperatureAlert setOn:[CSLRfidAppEngine sharedAppEngine].temperatureSettings.isTemperatureAlertEnabled]; + if ([CSLRfidAppEngine sharedAppEngine].temperatureSettings.unit == CELCIUS) { + self.txtHighTemperatureThreshold.text=[NSString stringWithFormat:@"%3.1f", [CSLRfidAppEngine sharedAppEngine].temperatureSettings.temperatureAlertUpperLimit]; + self.txtLowTemperatureThreshold.text=[NSString stringWithFormat:@"%3.1f", [CSLRfidAppEngine sharedAppEngine].temperatureSettings.temperatureAlertLowerLimit]; + } + else { + self.txtHighTemperatureThreshold.text=[NSString stringWithFormat:@"%3.1f", [CSLTemperatureTagSettings convertCelciusToFahrenheit:[CSLRfidAppEngine sharedAppEngine].temperatureSettings.temperatureAlertUpperLimit]]; + self.txtLowTemperatureThreshold.text=[NSString stringWithFormat:@"%3.1f", [CSLTemperatureTagSettings convertCelciusToFahrenheit:[CSLRfidAppEngine sharedAppEngine].temperatureSettings.temperatureAlertLowerLimit]]; + } + self.txtOcrssiMax.text=[NSString stringWithFormat:@"%d", [CSLRfidAppEngine sharedAppEngine].temperatureSettings.rssiUpperLimit]; + self.txtOcrssiMin.text=[NSString stringWithFormat:@"%d", [CSLRfidAppEngine sharedAppEngine].temperatureSettings.rssiLowerLimit]; + self.txtNumberOfTemperatureAveraging.text=[NSString stringWithFormat:@"%d", [CSLRfidAppEngine sharedAppEngine].temperatureSettings.NumberOfRollingAvergage]; + ([CSLRfidAppEngine sharedAppEngine].temperatureSettings.unit) ? (self.scTemperatureUnit.selectedSegmentIndex = 1) : (self.scTemperatureUnit.selectedSegmentIndex = 0); + + [self.scTemperatureUnit addTarget:self action:@selector(SegmentChangeViewValueChanged:) forControlEvents:UIControlEventValueChanged]; +} + + +/* +#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. +} +*/ + +- (IBAction)btnSavePressed:(id)sender { + //store the UI input to the settings object on appEng + [CSLRfidAppEngine sharedAppEngine].temperatureSettings.isTemperatureAlertEnabled=self.swEnableTemperatureAlert.isOn; + if (self.scTemperatureUnit.selectedSegmentIndex == CELCIUS) { + [CSLRfidAppEngine sharedAppEngine].temperatureSettings.temperatureAlertUpperLimit=[self.txtHighTemperatureThreshold.text doubleValue]; + [CSLRfidAppEngine sharedAppEngine].temperatureSettings.temperatureAlertLowerLimit=[self.txtLowTemperatureThreshold.text doubleValue]; + } + else { + [CSLRfidAppEngine sharedAppEngine].temperatureSettings.temperatureAlertUpperLimit=[CSLTemperatureTagSettings convertFahrenheitToCelcius:[self.txtHighTemperatureThreshold.text doubleValue]]; + [CSLRfidAppEngine sharedAppEngine].temperatureSettings.temperatureAlertLowerLimit=[CSLTemperatureTagSettings convertFahrenheitToCelcius:[self.txtLowTemperatureThreshold.text doubleValue]]; + } + [CSLRfidAppEngine sharedAppEngine].temperatureSettings.rssiUpperLimit=[self.txtOcrssiMax.text intValue]; + [CSLRfidAppEngine sharedAppEngine].temperatureSettings.rssiLowerLimit=[self.txtOcrssiMin.text intValue]; + [CSLRfidAppEngine sharedAppEngine].temperatureSettings.NumberOfRollingAvergage=[self.txtNumberOfTemperatureAveraging.text intValue]; + [CSLRfidAppEngine sharedAppEngine].temperatureSettings.unit=(TEMPERATUREUNIT)self.scTemperatureUnit.selectedSegmentIndex; + + [[CSLRfidAppEngine sharedAppEngine] saveTemperatureTagSettingsToUserDefaults]; + + UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Settings" message:@"Settings saved." preferredStyle:UIAlertControllerStyleAlert]; + + UIAlertAction *ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]; + [alert addAction:ok]; + [self presentViewController:alert animated:YES completion:nil]; + +} + +- (IBAction)txtLowTemperatureThresholdChanged:(id)sender { + NSScanner* scan = [NSScanner scannerWithString:self.txtLowTemperatureThreshold.text]; + double val; + double lowLimit, highLimit; + if (self.scTemperatureUnit.selectedSegmentIndex == CELCIUS) { + lowLimit=MIN_TEMP_VALUE; + highLimit=MAX_TEMP_VALUE; + } + else { + lowLimit=[CSLTemperatureTagSettings convertCelciusToFahrenheit:MIN_TEMP_VALUE]; + highLimit=[CSLTemperatureTagSettings convertCelciusToFahrenheit:MAX_TEMP_VALUE];; + } + if ([scan scanDouble:&val] && [scan isAtEnd] && [self.txtLowTemperatureThreshold.text doubleValue] >= lowLimit && [self.txtLowTemperatureThreshold.text doubleValue] <= highLimit) + { + NSLog(@"Low temperature threshold entered: OK"); + self.txtLowTemperatureThreshold.text=[NSString stringWithFormat:@"%3.1f", val]; + } + else { //invalid input. reset to stored configurations + if ([CSLRfidAppEngine sharedAppEngine].temperatureSettings.unit == CELCIUS) { + self.txtLowTemperatureThreshold.text=[NSString stringWithFormat:@"%3.1f", [CSLRfidAppEngine sharedAppEngine].temperatureSettings.temperatureAlertLowerLimit]; + } + else { + self.txtLowTemperatureThreshold.text=[NSString stringWithFormat:@"%3.1f", [CSLTemperatureTagSettings convertCelciusToFahrenheit:[CSLRfidAppEngine sharedAppEngine].temperatureSettings.temperatureAlertLowerLimit]]; + } + } +} + +- (IBAction)txtHighTemperatureThresholdChanged:(id)sender { + NSScanner* scan = [NSScanner scannerWithString:self.txtHighTemperatureThreshold.text]; + double val; + double lowLimit, highLimit; + if (self.scTemperatureUnit.selectedSegmentIndex == CELCIUS) { + lowLimit=MIN_TEMP_VALUE; + highLimit=MAX_TEMP_VALUE; + } + else { + lowLimit=[CSLTemperatureTagSettings convertCelciusToFahrenheit:MIN_TEMP_VALUE]; + highLimit=[CSLTemperatureTagSettings convertCelciusToFahrenheit:MAX_TEMP_VALUE];; + } + if ([scan scanDouble:&val] && [scan isAtEnd] && [self.txtHighTemperatureThreshold.text doubleValue] >= lowLimit && [self.txtHighTemperatureThreshold.text doubleValue] <= highLimit) + { + NSLog(@"High temperature threshold entered: OK"); + self.txtHighTemperatureThreshold.text=[NSString stringWithFormat:@"%3.1f", val]; + } + else { //invalid input. reset to stored configurations + if ([CSLRfidAppEngine sharedAppEngine].temperatureSettings.unit == CELCIUS) { + self.txtHighTemperatureThreshold.text=[NSString stringWithFormat:@"%3.1f", [CSLRfidAppEngine sharedAppEngine].temperatureSettings.temperatureAlertUpperLimit]; + } + else { + self.txtHighTemperatureThreshold.text=[NSString stringWithFormat:@"%3.1f", [CSLTemperatureTagSettings convertCelciusToFahrenheit:[CSLRfidAppEngine sharedAppEngine].temperatureSettings.temperatureAlertUpperLimit]]; + } + } +} + +- (IBAction)txtOcrssiMinChanged:(id)sender { + NSScanner* scan = [NSScanner scannerWithString:self.txtOcrssiMin.text]; + int val; + if ([scan scanInt:&val] && [scan isAtEnd] && [self.txtOcrssiMin.text intValue] >= 0 && [self.txtOcrssiMin.text intValue] <= 15) //valid int between 0 to 15 + { + NSLog(@"On-chip RSSI low value entered: OK"); + } + else //invalid input. reset to stored configurations + self.txtOcrssiMin.text=[NSString stringWithFormat:@"%d", [CSLRfidAppEngine sharedAppEngine].temperatureSettings.rssiLowerLimit]; +} + +- (IBAction)txtOcrssiMaxChanged:(id)sender { + NSScanner* scan = [NSScanner scannerWithString:self.txtOcrssiMax.text]; + int val; + if ([scan scanInt:&val] && [scan isAtEnd] && [self.txtOcrssiMax.text intValue] >= 0 && [self.txtOcrssiMax.text intValue] <= 15) //valid int between 0 to 15 + { + NSLog(@"On-chip RSSI high value entered: OK"); + } + else //invalid input. reset to stored configurations + self.txtOcrssiMax.text=[NSString stringWithFormat:@"%d", [CSLRfidAppEngine sharedAppEngine].temperatureSettings.rssiUpperLimit]; +} + +- (IBAction)txtNumberOfTemperatureAveragingChanged:(id)sender { + NSScanner* scan = [NSScanner scannerWithString:self.txtNumberOfTemperatureAveraging.text]; + int val; + if ([scan scanInt:&val] && [scan isAtEnd] && [self.txtNumberOfTemperatureAveraging.text intValue] >= 0 && [self.txtNumberOfTemperatureAveraging.text intValue] <= 10) //valid int between 0 to 10 + { + NSLog(@"Temperature averaging value entered: OK"); + } + else //invalid input. reset to stored configurations + self.txtNumberOfTemperatureAveraging.text=[NSString stringWithFormat:@"%d", [CSLRfidAppEngine sharedAppEngine].temperatureSettings.NumberOfRollingAvergage]; +} + +- (void) didInterfaceChangeConnectStatus: (CSLBleInterface *) sender { + +} + +- (void) didReceiveTagResponsePacket: (CSLBleReader *) sender tagReceived:(CSLBleTag*)tag { + +} +- (void) didReceiveTagAccessData: (CSLBleReader *) sender tagReceived:(CSLBleTag*)tag { + +} + +- (void) didReceiveBatteryLevelIndicator: (CSLBleReader *) sender batteryPercentage:(int)battPct { + [CSLRfidAppEngine sharedAppEngine].readerInfo.batteryPercentage=battPct; +} + +- (void) didTriggerKeyChangedState: (CSLBleReader *) sender keyState:(BOOL)state { + +} + + +- (void) didReceiveBarcodeData: (CSLBleReader *) sender scannedBarcode:(CSLReaderBarcode*)barcode { + +} + +-(IBAction)SegmentChangeViewValueChanged:(UISegmentedControl *)SControl +{ + if (self.scTemperatureUnit.selectedSegmentIndex==CELCIUS) { + self.txtLowTemperatureThreshold.text=[NSString stringWithFormat:@"%3.1f", [CSLTemperatureTagSettings convertFahrenheitToCelcius:[self.txtLowTemperatureThreshold.text doubleValue]]]; + self.txtHighTemperatureThreshold.text=[NSString stringWithFormat:@"%3.1f", [CSLTemperatureTagSettings convertFahrenheitToCelcius:[self.txtHighTemperatureThreshold.text doubleValue]]]; + } + else { + self.txtLowTemperatureThreshold.text=[NSString stringWithFormat:@"%3.1f", [CSLTemperatureTagSettings convertCelciusToFahrenheit:[self.txtLowTemperatureThreshold.text doubleValue]]]; + self.txtHighTemperatureThreshold.text=[NSString stringWithFormat:@"%3.1f", [CSLTemperatureTagSettings convertCelciusToFahrenheit:[self.txtHighTemperatureThreshold.text doubleValue]]]; + } + +} + +-(BOOL) textFieldShouldReturn:(UITextField *)textField{ + + [textField resignFirstResponder]; + return YES; +} + +@end diff --git a/CS108iOSClient/ViewControllers/CSLTemperatureUploadVC.h b/CS108iOSClient/ViewControllers/CSLTemperatureUploadVC.h new file mode 100644 index 0000000..e3cd194 --- /dev/null +++ b/CS108iOSClient/ViewControllers/CSLTemperatureUploadVC.h @@ -0,0 +1,26 @@ +// +// CSLTemperatureUploadVC.h +// CS108iOSClient +// +// Created by Lam Ka Shun on 16/3/2019. +// Copyright © 2019 Convergence Systems Limited. All rights reserved. +// + +#import +#import "CSLRfidAppEngine.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface CSLTemperatureUploadVC : UIViewController +@property (weak, nonatomic) IBOutlet UIImageView *imgMQTTStatus; +@property (weak, nonatomic) IBOutlet UIButton *btnMQTTStatus; +@property (weak, nonatomic) IBOutlet UILabel *lbMQTTMessage; +@property (weak, nonatomic) IBOutlet UITextField *txtMQTTPublishTopic; +@property (weak, nonatomic) IBOutlet UIButton *btnMQTTUpload; +@property (weak, nonatomic) IBOutlet UIActivityIndicatorView *actMQTTConnectIndicator; + +- (IBAction)btnMQTTUpload:(id)sender; + +@end + +NS_ASSUME_NONNULL_END diff --git a/CS108iOSClient/ViewControllers/CSLTemperatureUploadVC.m b/CS108iOSClient/ViewControllers/CSLTemperatureUploadVC.m new file mode 100644 index 0000000..908044e --- /dev/null +++ b/CS108iOSClient/ViewControllers/CSLTemperatureUploadVC.m @@ -0,0 +1,237 @@ +// +// CSLTemperatureUploadVC.m +// CS108iOSClient +// +// Created by Lam Ka Shun on 16/3/2019. +// Copyright © 2019 Convergence Systems Limited. All rights reserved. +// + +#import "CSLTemperatureUploadVC.h" + +@interface CSLTemperatureUploadVC () { + + NSTimer* scrMQTTStatusRefresh; +} + +@end + +@implementation CSLTemperatureUploadVC + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. + + [self.txtMQTTPublishTopic setDelegate:self]; +} + +- (void)viewWillAppear:(BOOL)animated { + [self.tabBarController setTitle:@"Data Upload"]; + + self.btnMQTTStatus.layer.borderWidth=1.0f; + self.btnMQTTStatus.layer.borderColor=[UIColor clearColor].CGColor; + self.btnMQTTStatus.layer.cornerRadius=5.0f; + self.btnMQTTUpload.layer.borderWidth=1.0f; + self.btnMQTTUpload.layer.borderColor=[UIColor clearColor].CGColor; + self.btnMQTTUpload.layer.cornerRadius=5.0f; + + //clear UI + [self.imgMQTTStatus setImage:nil]; + [self.btnMQTTStatus setHidden:true]; + [self.btnMQTTUpload setEnabled:false]; + self.lbMQTTMessage.text=[NSString stringWithFormat:@"Number of Records: %d", (int)[[CSLRfidAppEngine sharedAppEngine].reader.filteredBuffer count]]; + + if ([CSLRfidAppEngine sharedAppEngine].MQTTSettings.isMQTTEnabled) { + if ([CSLRfidAppEngine sharedAppEngine].MQTTSettings.mqttStatus!=MQTTStatusConnected) { + [CSLRfidAppEngine sharedAppEngine].MQTTSettings.mqttStatus=MQTTStatusNotConnected; + + [self.actMQTTConnectIndicator startAnimating]; + [[CSLRfidAppEngine sharedAppEngine].MQTTSettings connectToMQTTBroker:self.txtMQTTPublishTopic.text]; + + for (int i=0;i 0) { + [self.btnMQTTUpload setEnabled:true]; + } + + //timer event on updating MQTT status UI + scrMQTTStatusRefresh = [NSTimer scheduledTimerWithTimeInterval:0.5 + target:self + selector:@selector(refreshMQTTStatus) + userInfo:nil + repeats:YES]; + [[NSRunLoop mainRunLoop] addTimer:scrMQTTStatusRefresh forMode:NSRunLoopCommonModes]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [scrMQTTStatusRefresh invalidate]; + scrMQTTStatusRefresh=nil; +} + +- (void)refreshMQTTStatus { + if (![CSLRfidAppEngine sharedAppEngine].MQTTSettings.isMQTTEnabled) { + [self.imgMQTTStatus setImage:[UIImage imageNamed:@"cloud-offline"]]; + [self.btnMQTTStatus setHidden:false]; + [self.btnMQTTStatus setTitle:@"OFFLINE" forState:UIControlStateNormal]; + [self.btnMQTTStatus setBackgroundColor:UIColorFromRGB(0xA3A3A3)]; //grey + [self.btnMQTTUpload setEnabled:false]; + } + else { + if ([CSLRfidAppEngine sharedAppEngine].MQTTSettings.mqttStatus==MQTTStatusConnected) { + [self.imgMQTTStatus setImage:[UIImage imageNamed:@"cloud-connected"]]; + [self.btnMQTTStatus setHidden:false]; + [self.btnMQTTStatus setTitle:@"CONNECTED" forState:UIControlStateNormal]; + [self.btnMQTTStatus setBackgroundColor:UIColorFromRGB(0x26A65B)]; //green + if([[CSLRfidAppEngine sharedAppEngine].reader.filteredBuffer count]) { + [self.btnMQTTUpload setEnabled:true]; + } + } + else { + [self.imgMQTTStatus setImage:[UIImage imageNamed:@"cloud-offline"]]; + [self.btnMQTTStatus setHidden:false]; + [self.btnMQTTStatus setTitle:@"DISCONNECTED" forState:UIControlStateNormal]; + [self.btnMQTTStatus setBackgroundColor:UIColorFromRGB(0xd63031)]; //red + [self.btnMQTTUpload setEnabled:false]; + [[CSLRfidAppEngine sharedAppEngine].MQTTSettings connectToMQTTBroker:self.txtMQTTPublishTopic.text]; //reconnect + } + } +} + +/* +#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) didReceiveBatteryLevelIndicator: (CSLBleReader *) sender batteryPercentage:(int)battPct { + [CSLRfidAppEngine sharedAppEngine].readerInfo.batteryPercentage=battPct; +} + + +- (void) didInterfaceChangeConnectStatus: (CSLBleInterface *) sender { + +} + +- (void) didReceiveTagResponsePacket: (CSLBleReader *) sender tagReceived:(CSLBleTag*)tag { + +} +- (void) didReceiveTagAccessData: (CSLBleReader *) sender tagReceived:(CSLBleTag*)tag { + +} + +- (void) didTriggerKeyChangedState: (CSLBleReader *) sender keyState:(BOOL)state { + +} + + +- (void) didReceiveBarcodeData: (CSLBleReader *) sender scannedBarcode:(CSLReaderBarcode*)barcode { + [[CSLRfidAppEngine sharedAppEngine] soundAlert:1005]; +} + +- (IBAction)btnMQTTUpload:(id)sender { + [self.btnMQTTUpload setEnabled:false]; + + if ([CSLRfidAppEngine sharedAppEngine].MQTTSettings.isMQTTEnabled && [CSLRfidAppEngine sharedAppEngine].MQTTSettings.isMQTTEnabled==true) { + + [self.imgMQTTStatus setHidden:true]; + [self.actMQTTConnectIndicator startAnimating]; + [CSLRfidAppEngine sharedAppEngine].MQTTSettings.publishTopicCounter=0; + + for (CSLBleTag* tag in [CSLRfidAppEngine sharedAppEngine].reader.filteredBuffer) { + CSLBleTag* lastGoodRead=[[CSLRfidAppEngine sharedAppEngine].temperatureSettings.lastGoodReadBuffer objectForKey:tag.EPC]; + //tag read timestamp + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"dd/MM/YY HH:mm:ss"]; + NSDate* date=lastGoodRead.timestamp; + NSString *stringFromDate = [dateFormatter stringFromDate:date]; + + //build an info object and convert to json + NSDictionary* info = [NSDictionary dictionaryWithObjectsAndKeys: + [[NSUUID UUID] UUIDString], + @"messageid", + tag.EPC, + @"epc", + [NSString stringWithFormat:@"%.1f",[[[CSLRfidAppEngine sharedAppEngine].temperatureSettings getTemperatureValueAveraging:tag.EPC] doubleValue]], + @"temperature", + lastGoodRead.DATA2, + @"calibration", + [lastGoodRead.DATA1 substringWithRange:NSMakeRange(0, 4)], + @"sensorcode", + [lastGoodRead.DATA1 substringWithRange:NSMakeRange(4, 4)], + @"ocrssi", + [lastGoodRead.DATA1 substringWithRange:NSMakeRange(8, 4)], + @"temperaturecode", + [NSString stringWithFormat:@"%d",tag.rssi], + @"rssi", + stringFromDate, + @"timestamp", + nil]; + + NSError * err; + NSData * jsonData = [NSJSONSerialization dataWithJSONObject:info options:NSJSONWritingPrettyPrinted error:&err]; + NSString* topic=[self.txtMQTTPublishTopic.text stringByReplacingOccurrencesOfString:@"{deviceId}" withString:[CSLRfidAppEngine sharedAppEngine].MQTTSettings.clientId]; + + [[CSLRfidAppEngine sharedAppEngine].MQTTSettings publishData:jsonData onTopic:topic]; + } + + for (int i=0;i +#import NS_ASSUME_NONNULL_BEGIN -@interface CSLMQTTSettings : NSObject +/** + Enumeration of MQTT status + */ +typedef NS_ENUM(NSInteger, MQTTStatus) { + MQTTStatusConnected, + MQTTStatusNotConnected, + MQTTStatusError +}; + +@interface CSLMQTTSettings : NSObject ///MQTT enable/disable @property (assign) BOOL isMQTTEnabled; @@ -30,8 +40,21 @@ NS_ASSUME_NONNULL_BEGIN @property (assign) int QoS; ///LWT setting - retaind messages @property (assign) BOOL retained; +///MQTT connection status +@property (assign) MQTTStatus mqttStatus; +///MQTT submission counter +@property (assign) int publishTopicCounter; - +/** Connect to MQTT broker + @param topicToPublish Topic to be published for retain message + */ +- (void)connectToMQTTBroker:(NSString*)topicToPublish; +/** + Pulbish data to a defined topic + @param jsonData Data to be published in JSON format + @param topic Topic where the data will be published + */ +- (void)publishData:(NSData*)jsonData onTopic:(NSString*)topic; @end NS_ASSUME_NONNULL_END diff --git a/CS108iOSClient/model/CSLMQTTSettings.m b/CS108iOSClient/model/CSLMQTTSettings.m index f719056..dfb33b8 100644 --- a/CS108iOSClient/model/CSLMQTTSettings.m +++ b/CS108iOSClient/model/CSLMQTTSettings.m @@ -8,7 +8,10 @@ #import "CSLMQTTSettings.h" -@implementation CSLMQTTSettings +@implementation CSLMQTTSettings { + MQTTCFSocketTransport *transport; + MQTTSession* session; +} -(id)init { if (self = [super init]) { @@ -22,7 +25,59 @@ -(id)init { self.isTLSEnabled = true; self.QoS = 1; self.retained=false; + self.mqttStatus=MQTTStatusNotConnected; + self.publishTopicCounter=0; } return self; } + +- (void)connectToMQTTBroker:(NSString*)topicToPublish { + if (self.isMQTTEnabled) { + transport = [[MQTTCFSocketTransport alloc] init]; + transport.host = self.brokerAddress; + transport.port = self.brokerPort; + transport.tls = self.isTLSEnabled; + + session = [[MQTTSession alloc] init]; + session.transport = transport; + session.userName=self.userName; + session.password=self.password; + session.keepAliveInterval = 60; + session.clientId=self.clientId; + session.willFlag=true; + session.willMsg=[@"offline" dataUsingEncoding:NSUTF8StringEncoding]; + session.willTopic=[topicToPublish stringByReplacingOccurrencesOfString:@"{deviceId}" withString:session.clientId]; + session.willQoS=self.QoS; + session.willRetainFlag=self.retained; + + [session setDelegate:self]; + [session connectWithConnectHandler:^(NSError *error) { + if (error == nil) { + self->_mqttStatus=MQTTStatusConnected; + } + else { + self->_mqttStatus=MQTTStatusError; + } + }]; + } +} + +- (void)publishData:(NSData*)jsonData onTopic:(NSString*)topic { + [self->session publishData:jsonData onTopic:topic retain:self.retained qos:self.QoS publishHandler:^(NSError *error) { + if (error != nil) { + NSLog(@"Failed sending data to MQTT broker. Error message: %@", error.debugDescription); + } + else { + if (![topic containsString:@"cmnd"]) { + @synchronized (self) { + self.publishTopicCounter++; + } + } + } + }]; +} + +- (void)connectionClosed:(MQTTSession *)session { + self.mqttStatus=MQTTStatusNotConnected; +} @end diff --git a/CS108iOSClient/model/CSLRfidAppEngine.h b/CS108iOSClient/model/CSLRfidAppEngine.h index a75b096..c4a2cc7 100644 --- a/CS108iOSClient/model/CSLRfidAppEngine.h +++ b/CS108iOSClient/model/CSLRfidAppEngine.h @@ -15,8 +15,11 @@ #import "CSLReaderSettings.h" #import "CSLReaderInfo.h" #import "CSLMQTTSettings.h" +#import "CSLTemperatureTagSettings.h" #import +#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0] + /** Singleton class that handles all activities on the reader. It provides a centralize point and allows data to be moved across different controllers @@ -32,10 +35,14 @@ @property CSLReaderInfo* readerInfo; ///Tag selected for tag read/write/search @property NSString* tagSelected; +///Tag selected for tag read/write/search +@property CSLBleTag* CSLBleTagSelected; ///Defines the current reader mode (RFID/Barcode) @property (assign) BOOL isBarcodeMode; ///Reader settings on MQTT broker @property CSLMQTTSettings* MQTTSettings; +///Reader settings for temperature tags +@property CSLTemperatureTagSettings* temperatureSettings; ///Initialize the app engine ///@return Reference to the singleton class CSLRfidAppEngine @@ -58,6 +65,10 @@ -(void)reloadMQTTSettingsFromUserDefaults; ///Save current MQTT settings to User Defaults -(void)saveMQTTSettingsToUserDefaults; +///Load temperature tag settings from User Defaults +-(void)reloadTemperatureTagSettingsFromUserDefaults; +///Save current temperature tag settings to User Defaults +-(void)saveTemperatureTagSettingsToUserDefaults; ///Play iOS default sound alerts -(void)soundAlert:(SystemSoundID) soundId; diff --git a/CS108iOSClient/model/CSLRfidAppEngine.m b/CS108iOSClient/model/CSLRfidAppEngine.m index 72698d2..8109346 100644 --- a/CS108iOSClient/model/CSLRfidAppEngine.m +++ b/CS108iOSClient/model/CSLRfidAppEngine.m @@ -21,8 +21,10 @@ @implementation CSLRfidAppEngine @synthesize readerInfo; @synthesize settings; @synthesize tagSelected; +@synthesize CSLBleTagSelected; @synthesize isBarcodeMode; @synthesize MQTTSettings; +@synthesize temperatureSettings; + (CSLRfidAppEngine *) sharedAppEngine { @@ -74,6 +76,8 @@ -(id)init [self reloadSettingsFromUserDefaults]; MQTTSettings = [[CSLMQTTSettings alloc] init]; [self reloadMQTTSettingsFromUserDefaults]; + temperatureSettings = [[CSLTemperatureTagSettings alloc] init]; + [self reloadTemperatureTagSettingsFromUserDefaults]; readerInfo = [[CSLReaderInfo alloc] init]; } @@ -150,25 +154,25 @@ -(void)saveSettingsToUserDefaults { -(void)reloadMQTTSettingsFromUserDefaults { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - if([defaults boolForKey:@"isMQTTEnabled"]) + if([defaults objectForKey:@"isMQTTEnabled"]) MQTTSettings.isMQTTEnabled = (BOOL)[defaults boolForKey:@"isMQTTEnabled"]; - if([defaults stringForKey:@"brokerAddress"]) + if([defaults objectForKey:@"brokerAddress"]) MQTTSettings.brokerAddress = (NSString*)[defaults stringForKey:@"brokerAddress"]; - if([defaults stringForKey:@"brokerAddress"]) + if([defaults objectForKey:@"brokerAddress"]) MQTTSettings.brokerAddress = (NSString*)[defaults stringForKey:@"brokerAddress"]; - if([defaults integerForKey:@"brokerPort"]) + if([defaults objectForKey:@"brokerPort"]) MQTTSettings.brokerPort = (int)[defaults integerForKey:@"brokerPort"]; - if([defaults stringForKey:@"clientId"]) + if([defaults objectForKey:@"clientId"]) MQTTSettings.clientId =(NSString*)[defaults stringForKey:@"clientId"]; - if([defaults stringForKey:@"userName"]) + if([defaults objectForKey:@"userName"]) MQTTSettings.userName = (NSString*)[defaults stringForKey:@"userName"]; - if([defaults stringForKey:@"password"]) + if([defaults objectForKey:@"password"]) MQTTSettings.password = (NSString*)[defaults stringForKey:@"password"]; - if([defaults boolForKey:@"isTLSEnabled"]) + if([defaults objectForKey:@"isTLSEnabled"]) MQTTSettings.isTLSEnabled = (BOOL)[defaults boolForKey:@"isTLSEnabled"]; - if([defaults integerForKey:@"QoS"]) + if([defaults objectForKey:@"QoS"]) MQTTSettings.QoS = (int)[defaults integerForKey:@"QoS"]; - if([defaults boolForKey:@"retained"]) + if([defaults objectForKey:@"retained"]) MQTTSettings.retained = (BOOL)[defaults boolForKey:@"retained"]; } -(void)saveMQTTSettingsToUserDefaults { @@ -187,6 +191,39 @@ -(void)saveMQTTSettingsToUserDefaults { } +-(void)reloadTemperatureTagSettingsFromUserDefaults { + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + + if([defaults objectForKey:@"isTemperatureAlertEnabled"]) + temperatureSettings.isTemperatureAlertEnabled = (BOOL)[defaults boolForKey:@"isTemperatureAlertEnabled"]; + if([defaults objectForKey:@"temperatureAlertLowerLimit"]) + temperatureSettings.temperatureAlertLowerLimit = (double)[defaults doubleForKey:@"temperatureAlertLowerLimit"]; + if([defaults objectForKey:@"temperatureAlertUpperLimit"]) + temperatureSettings.temperatureAlertUpperLimit = (double)[defaults doubleForKey:@"temperatureAlertUpperLimit"]; + if([defaults objectForKey:@"rssiLowerLimit"]) + temperatureSettings.rssiLowerLimit = (int)[defaults integerForKey:@"rssiLowerLimit"]; + if([defaults objectForKey:@"rssiUpperLimit"]) + temperatureSettings.rssiUpperLimit = (int)[defaults integerForKey:@"rssiUpperLimit"]; + if([defaults objectForKey:@"NumberOfRollingAvergage"]) + temperatureSettings.NumberOfRollingAvergage = (UInt32)[defaults integerForKey:@"NumberOfRollingAvergage"]; + if([defaults objectForKey:@"temperatureUnit"]) + temperatureSettings.unit = (BOOL)[defaults boolForKey:@"temperatureUnit"]; +} +-(void)saveTemperatureTagSettingsToUserDefaults { + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + + [defaults setBool:temperatureSettings.isTemperatureAlertEnabled forKey:@"isTemperatureAlertEnabled"]; + [defaults setDouble:temperatureSettings.temperatureAlertLowerLimit forKey:@"temperatureAlertLowerLimit"]; + [defaults setDouble:temperatureSettings.temperatureAlertUpperLimit forKey:@"temperatureAlertUpperLimit"]; + [defaults setInteger:temperatureSettings.rssiLowerLimit forKey:@"rssiLowerLimit"]; + [defaults setInteger:temperatureSettings.rssiUpperLimit forKey:@"rssiUpperLimit"]; + [defaults setInteger:temperatureSettings.NumberOfRollingAvergage forKey:@"NumberOfRollingAvergage"]; + [defaults setInteger:temperatureSettings.unit forKey:@"temperatureUnit"]; + + [defaults synchronize]; + +} + -(void)soundAlert:(SystemSoundID)soundId { if(settings.enableSound) AudioServicesPlaySystemSound(soundId); diff --git a/CS108iOSClient/model/CSLTemperatureTagSettings.h b/CS108iOSClient/model/CSLTemperatureTagSettings.h new file mode 100644 index 0000000..8ab2c1a --- /dev/null +++ b/CS108iOSClient/model/CSLTemperatureTagSettings.h @@ -0,0 +1,86 @@ +// +// CSLTemperatureTagSettings.h +// CS108iOSClient +// +// Created by Lam Ka Shun on 12/3/2019. +// Copyright © 2019 Convergence Systems Limited. All rights reserved. +// + +#import +#import "../CSLReader/CSLCircularQueue.h" + +#define MIN_TEMP_VALUE -40.0 +#define MAX_TEMP_VALUE +85.0 + +NS_ASSUME_NONNULL_BEGIN + +///Temperature Sensor Type (TID) +typedef NS_ENUM(UInt32, SENSORTYPE) +{ + MAGNUSS3 = 0xE2824030, +}; + +///Temperature Unit +typedef NS_ENUM(BOOL, TEMPERATUREUNIT) +{ + CELCIUS = 0, + FAHRENHEIT=1 +}; + +@interface CSLTemperatureTagSettings : NSObject + +//Temperature alert enable/disable +@property (assign) BOOL isTemperatureAlertEnabled; +///Temperature alert upper limit +@property (assign) double temperatureAlertUpperLimit; +///Temperature alert lower limit +@property (assign) double temperatureAlertLowerLimit; +///On-chip RSSI filter upper limit +@property (assign) int rssiUpperLimit; +///On-chip RSSI filter lower limit +@property (assign) int rssiLowerLimit; +///Temperature sensor type +@property (assign) SENSORTYPE sensorType; +///Number of samples on rolling average for temperature values +@property (assign) int NumberOfRollingAvergage; +///Temperature Unit being displayed +@property (assign) TEMPERATUREUNIT unit; + +///Hold a list of circular queues for each of the tag read +@property NSMutableDictionary * temperatureAveragingBuffer; +///Hold a list of last good read timestamp +@property NSMutableDictionary * lastGoodReadBuffer; + +/** + This will add the temperature data to the cirular buffer, with buffer size deinfed on the settings page + @param temperatureValue Temperature data to be added to the buffer + @param epc EPC value of the tag + */ +- (void) setTemperatureValueForAveraging:(NSNumber*)temperatureValue EPCID:(NSString*)epc; +/** + Calculate and return the average temperature based on data within the rolling window + @param epc EPC value of the tag + @return Average temperature value calculated + */ +- (NSNumber*) getTemperatureValueAveraging:(NSString*)epc; +/** + Remove the temperature data in the circular buffer for a specific tag + @param epc EPC value of the tag + */ +- (void) removeTemperatureAverageForEpc:(NSString*)epc; +/** + Convert temperature value from Celicus to Fahrenheit + @param temperatureInCelcius Temperature in Celcius + @return Temperature in Fahrenheit + */ ++ (double) convertCelciusToFahrenheit:(double)temperatureInCelcius; +/** + Convert temperature value from Fahrenheit to Celicus + @param temperatureInFahrenheit Temperature in Fahrenheit + @return Temperature in Celicus + */ ++ (double) convertFahrenheitToCelcius:(double)temperatureInFahrenheit; + +@end + +NS_ASSUME_NONNULL_END diff --git a/CS108iOSClient/model/CSLTemperatureTagSettings.m b/CS108iOSClient/model/CSLTemperatureTagSettings.m new file mode 100644 index 0000000..518ed73 --- /dev/null +++ b/CS108iOSClient/model/CSLTemperatureTagSettings.m @@ -0,0 +1,83 @@ +// +// CSLTemperatureTagSettings.m +// CS108iOSClient +// +// Created by Lam Ka Shun on 12/3/2019. +// Copyright © 2019 Convergence Systems Limited. All rights reserved. +// + +#import "CSLTemperatureTagSettings.h" + +@implementation CSLTemperatureTagSettings + + +-(id)init { + if (self = [super init]) { + //set default values + self.isTemperatureAlertEnabled=false; + self.temperatureAlertLowerLimit=2; + self.temperatureAlertUpperLimit=8; + self.rssiLowerLimit=8; + self.rssiUpperLimit=18; + self.sensorType=MAGNUSS3; + self.NumberOfRollingAvergage=5; + self.unit=CELCIUS; + self.temperatureAveragingBuffer = [[NSMutableDictionary alloc] init]; + } + return self; +} + +- (void) setTemperatureValueForAveraging:(NSNumber*)temperatureValue EPCID:(NSString*)epc { + + CSLCircularQueue* temperatureQueue = (CSLCircularQueue*)[self.temperatureAveragingBuffer objectForKey:epc]; + if (temperatureQueue != nil) { + if ([temperatureQueue count] >= self.NumberOfRollingAvergage) { + [temperatureQueue deqObject]; + [temperatureQueue enqObject:temperatureValue]; + } + else { + [temperatureQueue enqObject:temperatureValue]; + } + } + else { + temperatureQueue=[[CSLCircularQueue alloc] initWithCapacity:100]; + [temperatureQueue enqObject:temperatureValue]; + [self.temperatureAveragingBuffer setObject:temperatureQueue forKey:epc]; + } +} + +- (NSNumber*) getTemperatureValueAveraging:(NSString*)epc { + double average=0.0; + CSLCircularQueue* temperatureQueue = (CSLCircularQueue*)[self.temperatureAveragingBuffer objectForKey:epc]; + if (temperatureQueue != nil) { + if ([temperatureQueue count] >= self.NumberOfRollingAvergage) { + for (int i=0;i<[temperatureQueue count];i++) { + average += [((NSNumber*)[temperatureQueue objectAtIndex:i]) doubleValue]; + } + return [NSNumber numberWithDouble:average/[temperatureQueue count]]; + } + else { + return nil; + } + } + else { + return nil; + } +} + +- (void) removeTemperatureAverageForEpc:(NSString*)epc { + CSLCircularQueue* temperatureQueue = (CSLCircularQueue*)[self.temperatureAveragingBuffer objectForKey:epc]; + if (temperatureQueue != nil) { + [self.temperatureAveragingBuffer removeObjectForKey:epc]; + } +} + ++ (double) convertCelciusToFahrenheit:(double)temperatureInCelcius { + return ((temperatureInCelcius * 9/5) + 32); +} + ++ (double) convertFahrenheitToCelcius:(double)temperatureInFahrenheit { + return ((temperatureInFahrenheit - 32) * 5/9); +} + +@end diff --git a/docs/.DS_Store b/docs/.DS_Store index 5a0d2f8..2aabd01 100644 Binary files a/docs/.DS_Store and b/docs/.DS_Store differ diff --git a/docs/Categories.html b/docs/Categories.html new file mode 100644 index 0000000..220e66e --- /dev/null +++ b/docs/Categories.html @@ -0,0 +1,375 @@ + + + + Categories Reference + + + + + + + + + + +
+
+

CS108iOSClient Docs (56% documented)

+
+
+
+ +
+
+ +
+
+
+

Categories

+

The following categories are available globally.

+ +
+
+
+
    +
  • +
    + + + + NSMutableData(MQTT) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface NSMutableData (MQTT)
    +- (void)appendByte:(UInt8)byte;
    +- (void)appendUInt16BigEndian:(UInt16)val;
    +- (void)appendUInt32BigEndian:(UInt32)val;
    +- (void)appendVariableLength:(unsigned long)length;
    +- (void)appendMQTTString:(NSString *)string;
    +- (void)appendBinaryData:(NSData *)data;
    +
    +@end
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Categories/NSMutableData(MQTT).html b/docs/Categories/NSMutableData(MQTT).html new file mode 100644 index 0000000..3a5142b --- /dev/null +++ b/docs/Categories/NSMutableData(MQTT).html @@ -0,0 +1,545 @@ + + + + NSMutableData(MQTT) Category Reference + + + + + + + + + + +
+
+

CS108iOSClient Docs (56% documented)

+
+
+
+ +
+
+ +
+
+
+

NSMutableData(MQTT)

+
+
+
@interface NSMutableData (MQTT)
+- (void)appendByte:(UInt8)byte;
+- (void)appendUInt16BigEndian:(UInt16)val;
+- (void)appendUInt32BigEndian:(UInt32)val;
+- (void)appendVariableLength:(unsigned long)length;
+- (void)appendMQTTString:(NSString *)string;
+- (void)appendBinaryData:(NSData *)data;
+
+@end
+ +
+
+

Undocumented

+ +
+
+
+
    +
  • +
    + + + + -appendByte: + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)appendByte:(UInt8)byte;
    + +
    +
    +

    Swift

    +
    func appendByte(_ byte: UInt8)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)appendUInt16BigEndian:(UInt16)val;
    + +
    +
    +

    Swift

    +
    func appendUInt16BigEndian(_ val: UInt16)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)appendUInt32BigEndian:(UInt32)val;
    + +
    +
    +

    Swift

    +
    func appendUInt32BigEndian(_ val: UInt32)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)appendVariableLength:(unsigned long)length;
    + +
    +
    +

    Swift

    +
    func appendVariableLength(_ length: UInt)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -appendMQTTString: + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)appendMQTTString:(NSString *)string;
    + +
    +
    +

    Swift

    +
    func appendMQTTString(_ string: String!)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -appendBinaryData: + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)appendBinaryData:(NSData *)data;
    + +
    +
    +

    Swift

    +
    func appendBinaryData(_ data: Data!)
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + diff --git a/docs/Classes.html b/docs/Classes.html index c0aa4bb..37710da 100644 --- a/docs/Classes.html +++ b/docs/Classes.html @@ -14,7 +14,7 @@
-

CS108iOSClient Docs (77% documented)

+

CS108iOSClient Docs (56% documented)

@@ -27,6 +27,14 @@
+
+
    +
  • +
    + + + + CSLMQTTSettings + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface CSLMQTTSettings : NSObject<MQTTSessionDelegate>
    +
    +///MQTT enable/disable
    +@property (assign) BOOL isMQTTEnabled;
    +///MQTT broker address
    +@property NSString* brokerAddress;
    +///MQTT broker port
    +@property (assign) int brokerPort;
    +///Client ID
    +@property NSString* clientId;
    +///User Name for server authentication
    +@property NSString* userName;
    +///Password for server authentication
    +@property NSString* password;
    +///Enable TLS Encryption (assume using CA signed server certificate)
    +@property (assign) BOOL isTLSEnabled;
    +///LWT setting - QoS value
    +@property (assign) int QoS;
    +///LWT setting - retaind messages
    +@property (assign) BOOL retained;
    +///MQTT connection status
    +@property (assign) MQTTStatus mqttStatus;
    +///MQTT submission counter
    +@property (assign) int publishTopicCounter;
    +
    +/** Connect to MQTT broker
    + @param topicToPublish Topic to be published for retain message
    + */
    +- (void)connectToMQTTBroker:(NSString*)topicToPublish;
    +/**
    + Pulbish data to a defined topic
    + @param jsonData Data to be published in JSON format
    + @param topic Topic where the data will be published
    + */
    +- (void)publishData:(NSData*)jsonData onTopic:(NSString*)topic;
    +@end
    + +
    +
    +

    Swift

    +
    class CSLMQTTSettings : NSObject, MQTTSessionDelegate
    + +
    +
    +
    +
    +
  • +
+
  • @@ -501,10 +768,924 @@

    Declaration

+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface CSLTemperatureTagSettings : NSObject
    +
    +//Temperature alert enable/disable
    +@property (assign) BOOL isTemperatureAlertEnabled;
    +///Temperature alert upper limit
    +@property (assign) double temperatureAlertUpperLimit;
    +///Temperature alert lower limit
    +@property (assign) double temperatureAlertLowerLimit;
    +///On-chip RSSI filter upper limit
    +@property (assign) int rssiUpperLimit;
    +///On-chip RSSI filter lower limit
    +@property (assign) int rssiLowerLimit;
    +///Temperature sensor type
    +@property (assign) SENSORTYPE sensorType;
    +///Number of samples on rolling average for temperature values
    +@property (assign) int NumberOfRollingAvergage;
    +///Temperature Unit being displayed
    +@property (assign) TEMPERATUREUNIT unit;
    +
    +///Hold a list of circular queues for each of the tag read
    +@property NSMutableDictionary * temperatureAveragingBuffer;
    +///Hold a list of last good read timestamp
    +@property NSMutableDictionary * lastGoodReadBuffer;
    +
    +/**
    + This will add the temperature data to the cirular buffer, with buffer size deinfed on the settings page
    + @param temperatureValue Temperature data to be added to the buffer
    + @param epc EPC value of the tag
    + */
    +- (void) setTemperatureValueForAveraging:(NSNumber*)temperatureValue EPCID:(NSString*)epc;
    +/**
    + Calculate and return the average temperature based on data within the rolling window
    + @param epc EPC value of the tag
    + @return Average temperature value calculated
    + */
    +- (NSNumber*) getTemperatureValueAveraging:(NSString*)epc;
    +/**
    + Remove the temperature data in the circular buffer for a specific tag
    + @param epc EPC value of the tag
    + */
    +- (void) removeTemperatureAverageForEpc:(NSString*)epc;
    +/**
    + Convert temperature value from Celicus to Fahrenheit
    + @param temperatureInCelcius Temperature in Celcius
    + @return Temperature in Fahrenheit
    + */
    ++ (double) convertCelciusToFahrenheit:(double)temperatureInCelcius;
    +/**
    + Convert temperature value from Fahrenheit to Celicus
    + @param temperatureInFahrenheit Temperature in Fahrenheit
    + @return Temperature in Celicus
    + */
    ++ (double) convertFahrenheitToCelcius:(double)temperatureInFahrenheit;
    +
    +@end
    + +
    +
    +

    Swift

    +
    class CSLTemperatureTagSettings : NSObject
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MQTTCFSocketDecoder + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface MQTTCFSocketDecoder : NSObject <NSStreamDelegate>
    +
    +@property (nonatomic) MQTTCFSocketDecoderState state;
    +@property (strong, nonatomic) NSError *error;
    +@property (strong, nonatomic) NSInputStream *stream;
    +@property (weak, nonatomic ) id<MQTTCFSocketDecoderDelegate> delegate;
    +
    +- (void)open;
    +- (void)close;
    +
    +@end
    + +
    +
    +

    Swift

    +
    class MQTTCFSocketDecoder : NSObject, StreamDelegate
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MQTTCFSocketEncoder + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface MQTTCFSocketEncoder : NSObject <NSStreamDelegate>
    +
    +@property (nonatomic) MQTTCFSocketEncoderState state;
    +@property (strong, nonatomic) NSError *error;
    +@property (strong, nonatomic) NSOutputStream *stream;
    +@property (weak, nonatomic ) id<MQTTCFSocketEncoderDelegate> delegate;
    +
    +- (void)open;
    +- (void)close;
    +- (BOOL)send:(NSData *)data;
    +
    +@end
    + +
    +
    +

    Swift

    +
    class MQTTCFSocketEncoder : NSObject, StreamDelegate
    + +
    +
    +
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface MQTTCoreDataPersistence : NSObject <MQTTPersistence>
    +
    +@end
    + +
    +
    +

    Swift

    +
    class MQTTCoreDataPersistence : NSObject, MQTTPersistence
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MQTTFlow + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface MQTTFlow : NSManagedObject <MQTTFlow>
    +@end
    + +
    +
    +

    Swift

    +
    class MQTTFlow : NSManagedObject, MQTTFlowProtocol
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MQTTCoreDataFlow + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface MQTTCoreDataFlow : NSObject <MQTTFlow>
    +@end
    + +
    +
    +

    Swift

    +
    class MQTTCoreDataFlow : NSObject, MQTTFlowProtocol
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MQTTDecoder + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface MQTTDecoder: NSObject <NSStreamDelegate>
    +
    +@property (nonatomic) MQTTDecoderState state;
    +@property (strong, nonatomic) dispatch_queue_t queue;
    +@property (nonatomic) UInt32 length;
    +@property (nonatomic) UInt32 lengthMultiplier;
    +@property (nonatomic) int offset;
    +@property (strong, nonatomic) NSMutableData *dataBuffer;
    +
    +@property (weak, nonatomic) id<MQTTDecoderDelegate> delegate;
    +
    +- (void)open;
    +- (void)close;
    +- (void)decodeMessage:(NSData *)data;
    +
    +@end
    + +
    +
    +

    Swift

    +
    class MQTTDecoder : NSObject, StreamDelegate
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MQTTLog + +
    +
    +
    +
    +
    +
    +

    MQTTLog lets you define the log level for MQTTClient

    + +
      +
    • independently of using CocoaLumberjack
    • +
    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface MQTTLog : NSObject
    + +
    +
    +

    Swift

    +
    class MQTTLog : NSObject
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MQTTMessage + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface MQTTMessage : NSObject
    +
    +@property (nonatomic) MQTTCommandType type;
    +@property (nonatomic) MQTTQosLevel qos;
    +@property (nonatomic) BOOL retainFlag;
    +@property (nonatomic) BOOL dupFlag;
    +@property (nonatomic) UInt16 mid;
    +@property (strong, nonatomic) NSData *data;
    +@property (strong, nonatomic) NSNumber *returnCode;
    +@property (strong, nonatomic) NSNumber *connectAcknowledgeFlags;
    +@property (strong, nonatomic) MQTTProperties *properties;
    +
    +/**
    + Enumeration of MQTT return codes
    + */
    +
    +typedef NS_ENUM(NSUInteger, MQTTReturnCode) {
    +    MQTTAccepted = 0,
    +    MQTTRefusedUnacceptableProtocolVersion = 1,
    +    MQTTRefusedIdentiferRejected = 2,
    +    MQTTRefusedServerUnavailable = 3,
    +    MQTTRefusedBadUserNameOrPassword = 4,
    +    MQTTRefusedNotAuthorized = 5,
    +
    +    MQTTSuccess = 0,
    +    MQTTDisconnectWithWillMessage = 4,
    +    MQTTNoSubscriptionExisted = 17,
    +    MQTTContinueAuthentication = 24,
    +    MQTTReAuthenticate = 25,
    +    MQTTUnspecifiedError = 128,
    +    MQTTMalformedPacket = 129,
    +    MQTTProtocolError = 130,
    +    MQTTImplementationSpecificError = 131,
    +    MQTTUnsupportedProtocolVersion = 132,
    +    MQTTClientIdentifierNotValid = 133,
    +    MQTTBadUserNameOrPassword = 134,
    +    MQTTNotAuthorized = 135,
    +    MQTTServerUnavailable = 136,
    +    MQTTServerBusy = 137,
    +    MQTTBanned = 138,
    +    MQTTServerShuttingDown = 139,
    +    MQTTBadAuthenticationMethod = 140,
    +    MQTTKeepAliveTimeout = 141,
    +    MQTTSessionTakenOver = 142,
    +    MQTTTopicFilterInvalid = 143,
    +    MQTTTopicNameInvalid = 144,
    +    MQTTPacketIdentifierInUse = 145,
    +    MQTTPacketIdentifierNotFound = 146,
    +    MQTTReceiveMaximumExceeded = 147,
    +    MQTTPacketTooLarge = 149,
    +    MQTTMessageRateTooHigh = 150,
    +    MQTTQuotaExceeded = 151,
    +    MQTTAdministrativeAction = 152,
    +    MQTTPayloadFormatInvalid = 153,
    +    MQTTRetainNotSupported = 154,
    +    MQTTQoSNotSupported = 155,
    +    MQTTUseAnotherServer = 156,
    +    MQTTServerMoved = 157,
    +    MQTTSharedSubscriptionNotSupported = 158,
    +    MQTTConnectionRateExceeded = 159,
    +    MQTTSubscriptionIdentifiersNotSupported = 161,
    +    MQTTWildcardSubscriptionNotSupported = 162
    +};
    +
    +// factory methods
    ++ (MQTTMessage *)connectMessageWithClientId:(NSString*)clientId
    +                                   userName:(NSString*)userName
    +                                   password:(NSString*)password
    +                                  keepAlive:(NSInteger)keeplive
    +                               cleanSession:(BOOL)cleanSessionFlag
    +                                       will:(BOOL)will
    +                                  willTopic:(NSString*)willTopic
    +                                    willMsg:(NSData*)willData
    +                                    willQoS:(MQTTQosLevel)willQoS
    +                                 willRetain:(BOOL)willRetainFlag
    +                              protocolLevel:(MQTTProtocolVersion)protocolLevel
    +                      sessionExpiryInterval:(NSNumber *)sessionExpiryInterval
    +                                 authMethod:(NSString *)authMethod
    +                                   authData:(NSData *)authData
    +                  requestProblemInformation:(NSNumber *)requestProblemInformation
    +                          willDelayInterval:(NSNumber *)willDelayInterval
    +                 requestResponseInformation:(NSNumber *)requestResponseInformation
    +                             receiveMaximum:(NSNumber *)receiveMaximum
    +                          topicAliasMaximum:(NSNumber *)topicAliasMaximum
    +                               userProperty:(NSDictionary <NSString *, NSString *> *)userProperty
    +                          maximumPacketSize:(NSNumber *)maximumPacketSize
    +;
    +
    ++ (MQTTMessage *)pingreqMessage;
    +
    ++ (MQTTMessage *)disconnectMessage:(MQTTProtocolVersion)protocolLevel
    +                        returnCode:(MQTTReturnCode)returnCode
    +             sessionExpiryInterval:(NSNumber *)sessionExpiryInterval
    +                      reasonString:(NSString *)reasonString
    +                      userProperty:(NSDictionary <NSString *, NSString *> *)userProperty;
    +
    ++ (MQTTMessage *)subscribeMessageWithMessageId:(UInt16)msgId
    +                                        topics:(NSDictionary *)topics
    +                                 protocolLevel:(MQTTProtocolVersion)protocolLevel
    +                        subscriptionIdentifier:(NSNumber *)subscriptionIdentifier;
    +
    ++ (MQTTMessage *)unsubscribeMessageWithMessageId:(UInt16)msgId
    +                                          topics:(NSArray *)topics
    +                                   protocolLevel:(MQTTProtocolVersion)protocolLevel;
    +
    ++ (MQTTMessage *)publishMessageWithData:(NSData*)payload
    +                                onTopic:(NSString*)topic
    +                                    qos:(MQTTQosLevel)qosLevel
    +                                  msgId:(UInt16)msgId
    +                             retainFlag:(BOOL)retain
    +                                dupFlag:(BOOL)dup
    +                          protocolLevel:(MQTTProtocolVersion)protocolLevel
    +                 payloadFormatIndicator:(NSNumber *)payloadFormatIndicator
    +              publicationExpiryInterval:(NSNumber *)publicationExpiryInterval
    +                             topicAlias:(NSNumber *)topicAlias
    +                          responseTopic:(NSString *)responseTopic
    +                        correlationData:(NSData *)correlationData
    +                           userProperty:(NSDictionary <NSString *, NSString *> *)userProperty
    +                            contentType:(NSString *)contentType;
    +
    ++ (MQTTMessage *)pubackMessageWithMessageId:(UInt16)msgId
    +                              protocolLevel:(MQTTProtocolVersion)protocolLevel
    +                                 returnCode:(MQTTReturnCode)returnCode
    +                               reasonString:(NSString *)reasonString
    +                               userProperty:(NSDictionary <NSString *, NSString *> *)userProperty;
    +
    ++ (MQTTMessage *)pubrecMessageWithMessageId:(UInt16)msgId
    +                              protocolLevel:(MQTTProtocolVersion)protocolLevel
    +                                 returnCode:(MQTTReturnCode)returnCode
    +                               reasonString:(NSString *)reasonString
    +                               userProperty:(NSDictionary <NSString *, NSString *> *)userProperty;
    +
    ++ (MQTTMessage *)pubrelMessageWithMessageId:(UInt16)msgId
    +                              protocolLevel:(MQTTProtocolVersion)protocolLevel
    +                                 returnCode:(MQTTReturnCode)returnCode
    +                               reasonString:(NSString *)reasonString
    +                               userProperty:(NSDictionary <NSString *, NSString *> *)userProperty;
    +
    ++ (MQTTMessage *)pubcompMessageWithMessageId:(UInt16)msgId
    +                               protocolLevel:(MQTTProtocolVersion)protocolLevel
    +                                  returnCode:(MQTTReturnCode)returnCode
    +                                reasonString:(NSString *)reasonString
    +                                userProperty:(NSDictionary <NSString *, NSString *> *)userProperty;
    +
    ++ (MQTTMessage *)messageFromData:(NSData *)data protocolLevel:(MQTTProtocolVersion)protocolLevel;
    +
    +// instance methods
    +- (instancetype)initWithType:(MQTTCommandType)type;
    +- (instancetype)initWithType:(MQTTCommandType)type
    +                        data:(NSData *)data;
    +- (instancetype)initWithType:(MQTTCommandType)type
    +                         qos:(MQTTQosLevel)qos
    +                        data:(NSData *)data;
    +- (instancetype)initWithType:(MQTTCommandType)type
    +                         qos:(MQTTQosLevel)qos
    +                  retainFlag:(BOOL)retainFlag
    +                     dupFlag:(BOOL)dupFlag
    +                        data:(NSData *)data;
    +
    +@property (NS_NONATOMIC_IOSONLY, readonly, copy) NSData *wireFormat;
    +
    +
    +@end
    + +
    +
    +

    Swift

    +
    class MQTTMessage : NSObject
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MQTTProperties + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface MQTTProperties : NSObject
    +
    +@property (strong, nonatomic) NSNumber *payloadFormatIndicator;
    +@property (strong, nonatomic) NSNumber *publicationExpiryInterval;
    +@property (strong, nonatomic) NSString *contentType;
    +@property (strong, nonatomic) NSString *responseTopic;
    +@property (strong, nonatomic) NSData *correlationData;
    +@property (strong, nonatomic) NSNumber *subscriptionIdentifier;
    +@property (strong, nonatomic) NSNumber *sessionExpiryInterval;
    +@property (strong, nonatomic) NSString *assignedClientIdentifier;
    +@property (strong, nonatomic) NSNumber *serverKeepAlive;
    +@property (strong, nonatomic) NSString *authMethod;
    +@property (strong, nonatomic) NSData *authData;
    +@property (strong, nonatomic) NSNumber *requestProblemInformation;
    +@property (strong, nonatomic) NSNumber *willDelayInterval;
    +@property (strong, nonatomic) NSNumber *requestResponseInformation;
    +@property (strong, nonatomic) NSString *responseInformation;
    +@property (strong, nonatomic) NSString *serverReference;
    +@property (strong, nonatomic) NSString *reasonString;
    +@property (strong, nonatomic) NSNumber *receiveMaximum;
    +@property (strong, nonatomic) NSNumber *topicAliasMaximum;
    +@property (strong, nonatomic) NSNumber *topicAlias;
    +@property (strong, nonatomic) NSNumber *maximumQoS;
    +@property (strong, nonatomic) NSNumber *retainAvailable;
    +@property (strong, nonatomic) NSMutableDictionary <NSString *, NSString *> *userProperty;
    +@property (strong, nonatomic) NSNumber *maximumPacketSize;
    +@property (strong, nonatomic) NSNumber *wildcardSubscriptionAvailable;
    +@property (strong, nonatomic) NSNumber *subscriptionIdentifiersAvailable;
    +@property (strong, nonatomic) NSNumber *sharedSubscriptionAvailable;
    +
    +- (instancetype)initFromData:(NSData *)data NS_DESIGNATED_INITIALIZER;
    ++ (int)getVariableLength:(NSData *)data;
    ++ (int)variableIntLength:(int)length;
    +
    +@end
    + +
    +
    +

    Swift

    +
    class MQTTProperties : NSObject
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MQTTSSLSecurityPolicy + +
    +
    +
    +
    +
    +
    +

    MQTTSSLSecurityPolicy evaluates server trust against pinned X.509 certificates and public keys over secure connections.

    + +

    If your app using security model which require pinning SSL certificates to helps prevent man-in-the-middle attacks +and other vulnerabilities. you need to set securityPolicy to properly value(see MQTTSSLSecurityPolicy.h for more detail).

    + +

    NOTE: about self-signed server certificates: +if your server using Self-signed certificates to establish SSL/TLS connection, you need to set property: +MQTTSSLSecurityPolicy.allowInvalidCertificates=YES.

    + +

    If SSL is enabled, by default it only evaluate server’s certificates using CA infrastructure, and for most case, this type of check is enough. +However, if your app using security model which require pinning SSL certificates to helps prevent man-in-the-middle attacks +and other vulnerabilities. you may need to set securityPolicy to properly value(see MQTTSSLSecurityPolicy.h for more detail).

    + +

    NOTE: about self-signed server certificates: +In CA infrastructure, you may establish a SSL/TLS connection with server which using self-signed certificates +by install the certificates into OS keychain(either programmatically or manually). however, this method has some disadvantages:

    + +
      +
    1. every socket you app created will trust certificates you added.
    2. +
    3. if user choice to remove certificates from keychain, you app need to handling certificates re-adding.
    4. +
    + +

    If you only want to verify the cert for the socket you are creating and for no other sockets in your app, you need to use +MQTTSSLSecurityPolicy. +And if you use self-signed server certificates, your need to set property: MQTTSSLSecurityPolicy.allowInvalidCertificates=YES

    + +

    Adding pinned SSL certificates to your app helps prevent man-in-the-middle attacks and other vulnerabilities. +Applications dealing with sensitive customer data or financial information are strongly encouraged to route all communication +over an SSL/TLS connection with SSL pinning configured and enabled.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface MQTTSSLSecurityPolicy : NSObject
    + +
    +
    +

    Swift

    +
    class MQTTSSLSecurityPolicy : NSObject
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    MQTTSSLSecurityPolicyTransport

    + +
      +
    • implements an extension of the MQTTCFSocketTransport by replacing the OS’s certificate chain evaluation
    • +
    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface MQTTSSLSecurityPolicyTransport : MQTTCFSocketTransport
    + +
    +
    +

    Swift

    +
    class MQTTSSLSecurityPolicyTransport : MQTTCFSocketTransport
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MQTTSession + +
    +
    +
    +
    +
    +
    +

    Session implements the MQTT protocol for your application + *

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface MQTTSession : NSObject
    + +
    +
    +

    Swift

    +
    class MQTTSession : NSObject
    + +
    +
    +
    +
    +
  • +
+
+
+ +
+
+ +
diff --git a/docs/Classes/CSLBleInterface.html b/docs/Classes/CSLBleInterface.html index c022950..21be85c 100644 --- a/docs/Classes/CSLBleInterface.html +++ b/docs/Classes/CSLBleInterface.html @@ -14,7 +14,7 @@
-

CS108iOSClient Docs (77% documented)

+

CS108iOSClient Docs (56% documented)

@@ -27,6 +27,14 @@
+ diff --git a/docs/Constants.html b/docs/Constants.html new file mode 100644 index 0000000..13b0ac2 --- /dev/null +++ b/docs/Constants.html @@ -0,0 +1,602 @@ + + + + Constants Reference + + + + + + + + + + +
+
+

CS108iOSClient Docs (56% documented)

+
+
+
+ +
+
+ +
+
+
+

Constants

+

The following constants are available globally.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern double MQTTClientVersionNumber
    + +
    +
    +

    Swift

    +
    var MQTTClientVersionNumber: Double
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern const unsigned char MQTTClientVersionString[]
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + ddLogLevel + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern DDLogLevel ddLogLevel
    + +
    +
    +

    Swift

    +
    var ddLogLevel: DDLogLevel
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MQTT_PERSISTENT + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    static BOOL const MQTT_PERSISTENT = NO
    + +
    +
    +

    Swift

    +
    let MQTT_PERSISTENT: ObjCBool
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MQTT_MAX_SIZE + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    static NSInteger const MQTT_MAX_SIZE = 64 * 1024 * 1024
    + +
    +
    +

    Swift

    +
    let MQTT_MAX_SIZE: Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MQTT_MAX_WINDOW_SIZE + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    static NSInteger const MQTT_MAX_WINDOW_SIZE = 16
    + +
    +
    +

    Swift

    +
    let MQTT_MAX_WINDOW_SIZE: Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MQTT_MAX_MESSAGES + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    static NSInteger const MQTT_MAX_MESSAGES = 1024
    + +
    +
    +

    Swift

    +
    let MQTT_MAX_MESSAGES: Int
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    The error domain used for all errors created by MQTTSession

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const MQTTSessionErrorDomain
    + +
    +
    +

    Swift

    +
    let MQTTSessionErrorDomain: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ +
+ diff --git a/docs/Enums.html b/docs/Enums.html index cc05694..abf087a 100644 --- a/docs/Enums.html +++ b/docs/Enums.html @@ -14,7 +14,7 @@
-

CS108iOSClient Docs (77% documented)

+

CS108iOSClient Docs (56% documented)

@@ -27,6 +27,14 @@
+
+
    +
  • +
    + + + + MQTTStatus + +
    +
    +
    +
    +
    +
    +

    Enumeration of MQTT status

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum MQTTStatus {}
    + +
    +
    +

    Swift

    +
    enum MQTTStatus : Int
    + +
    +
    +
    +
    +
  • +
+
  • @@ -584,10 +816,821 @@

    Declaration

+
+
    +
  • +
    + + + + SENSORTYPE + +
    +
    +
    +
    +
    +
    +

    Temperature Sensor Type (TID)

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum SENSORTYPE {}
    + +
    +
    +

    Swift

    +
    enum SENSORTYPE : UInt32
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + TEMPERATUREUNIT + +
    +
    +
    +
    +
    +
    +

    Temperature Unit

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum TEMPERATUREUNIT {}
    + +
    +
    +

    Swift

    +
    enum TEMPERATUREUNIT : ObjCBool
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    NS_ENUM(NSInteger, MQTTCFSocketDecoderState) {
    +    MQTTCFSocketDecoderStateInitializing,
    +    MQTTCFSocketDecoderStateReady,
    +    MQTTCFSocketDecoderStateError
    +}
    + +
    +
    +

    Swift

    +
    enum MQTTCFSocketDecoderState : Int
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    NS_ENUM(NSInteger, MQTTCFSocketEncoderState) {
    +    MQTTCFSocketEncoderStateInitializing,
    +    MQTTCFSocketEncoderStateReady,
    +    MQTTCFSocketEncoderStateError
    +}
    + +
    +
    +

    Swift

    +
    enum MQTTCFSocketEncoderState : Int
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MQTTDecoderEvent + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    NS_ENUM(unsigned int, MQTTDecoderEvent) {
    +    MQTTDecoderEventProtocolError,
    +    MQTTDecoderEventConnectionClosed,
    +    MQTTDecoderEventConnectionError
    +}
    + +
    +
    +

    Swift

    +
    enum MQTTDecoderEvent : UInt32
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MQTTDecoderState + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    NS_ENUM(unsigned int, MQTTDecoderState) {
    +    MQTTDecoderStateInitializing,
    +    MQTTDecoderStateDecodingHeader,
    +    MQTTDecoderStateDecodingLength,
    +    MQTTDecoderStateDecodingData,
    +    MQTTDecoderStateConnectionClosed,
    +    MQTTDecoderStateConnectionError,
    +    MQTTDecoderStateProtocolError
    +}
    + +
    +
    +

    Swift

    +
    enum MQTTDecoderState : UInt32
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + DDLogFlag + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    NS_OPTIONS(NSUInteger, DDLogFlag){
    +    /**
    +     *  0...00001 DDLogFlagError
    +     */
    +    DDLogFlagError      = (1 << 0),
    +
    +    /**
    +     *  0...00010 DDLogFlagWarning
    +     */
    +    DDLogFlagWarning    = (1 << 1),
    +
    +    /**
    +     *  0...00100 DDLogFlagInfo
    +     */
    +    DDLogFlagInfo       = (1 << 2),
    +
    +    /**
    +     *  0...01000 DDLogFlagDebug
    +     */
    +    DDLogFlagDebug      = (1 << 3),
    +
    +    /**
    +     *  0...10000 DDLogFlagVerbose
    +     */
    +    DDLogFlagVerbose    = (1 << 4)
    +}
    + +
    +
    +

    Swift

    +
    struct DDLogFlag : OptionSet
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + DDLogLevel + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    NS_ENUM(NSUInteger, DDLogLevel){
    +DDLogLevelOff       = 0,
    +
    +/**
    + *  Error logs only
    + */
    +DDLogLevelError     = (DDLogFlagError),
    +
    +/**
    + *  Error and warning logs
    + */
    +DDLogLevelWarning   = (DDLogLevelError   | DDLogFlagWarning),
    +
    +/**
    + *  Error, warning and info logs
    + */
    +DDLogLevelInfo      = (DDLogLevelWarning | DDLogFlagInfo),
    +
    +/**
    + *  Error, warning, info and debug logs
    + */
    +DDLogLevelDebug     = (DDLogLevelInfo    | DDLogFlagDebug),
    +
    +/**
    + *  Error, warning, info, debug and verbose logs
    + */
    +DDLogLevelVerbose   = (DDLogLevelDebug   | DDLogFlagVerbose),
    +
    +/**
    + *  All logs (1...11111)
    + */
    +DDLogLevelAll       = NSUIntegerMax
    +}
    + +
    +
    +

    Swift

    +
    enum DDLogLevel : UInt
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MQTTQosLevel + +
    +
    +
    +
    +
    +
    +

    Enumeration of MQTT Quality of Service levels

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum MQTTQosLevel {}
    + +
    +
    +

    Swift

    +
    enum MQTTQosLevel : UInt8
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MQTTProtocolVersion + +
    +
    +
    +
    +
    +
    +

    Enumeration of MQTT protocol version

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum MQTTProtocolVersion {}
    + +
    +
    +

    Swift

    +
    enum MQTTProtocolVersion : UInt8
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MQTTCommandType + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    NS_ENUM(UInt8, MQTTCommandType) {
    +    MQTT_None = 0,
    +    MQTTConnect = 1,
    +    MQTTConnack = 2,
    +    MQTTPublish = 3,
    +    MQTTPuback = 4,
    +    MQTTPubrec = 5,
    +    MQTTPubrel = 6,
    +    MQTTPubcomp = 7,
    +    MQTTSubscribe = 8,
    +    MQTTSuback = 9,
    +    MQTTUnsubscribe = 10,
    +    MQTTUnsuback = 11,
    +    MQTTPingreq = 12,
    +    MQTTPingresp = 13,
    +    MQTTDisconnect = 14,
    +    MQTTAuth = 15
    +}
    + +
    +
    +

    Swift

    +
    enum MQTTCommandType : UInt8
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MQTTReturnCode + +
    +
    +
    +
    +
    +
    +

    Enumeration of MQTT return codes

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum MQTTReturnCode {}
    + +
    +
    +

    Swift

    +
    enum MQTTReturnCode : UInt
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    NS_ENUM(UInt8, MQTTPropertyIdentifier) {
    +    MQTTPayloadFormatIndicator = 1,
    +    MQTTPublicationExpiryInterval = 2,
    +    MQTTContentType = 3,
    +    MQTTResponseTopic = 8,
    +    MQTTCorrelationData = 9,
    +    MQTTSubscriptionIdentifier = 11,
    +    MQTTSessionExpiryInterval = 17,
    +    MQTTAssignedClientIdentifier = 18,
    +    MQTTServerKeepAlive = 19,
    +    MQTTAuthMethod = 21,
    +    MQTTAuthData = 22,
    +    MQTTRequestProblemInformation = 23,
    +    MQTTWillDelayInterval = 24,
    +    MQTTRequestResponseInformation = 25,
    +    MQTTResponseInformation = 26,
    +    MQTTServerReference = 28,
    +    MQTTReasonString = 31,
    +    MQTTReceiveMaximum = 33,
    +    MQTTTopicAliasMaximum = 34,
    +    MQTTTopicAlias = 35,
    +    MQTTMaximumQoS = 36,
    +    MQTTRetainAvailable = 37,
    +    MQTTUserProperty = 38,
    +    MQTTMaximumPacketSize = 39,
    +    MQTTWildcardSubscriptionAvailable = 40,
    +    MQTTSubscriptionIdentifiersAvailable = 41,
    +    MQTTSharedSubscriptionAvailable = 42
    +}
    + +
    +
    +

    Swift

    +
    enum MQTTPropertyIdentifier : UInt8
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MQTTSSLPinningMode + +
    +
    +
    +
    +
    +
    +

    SSL Pinning Modes

    + +

    The following constants are provided by MQTTSSLPinningModeNone as possible SSL pinning modes.

    + +

    enum { +MQTTSSLPinningModeNone, +MQTTSSLPinningModePublicKey, +MQTTSSLPinningModeCertificate, +}

    + +

    MQTTSSLPinningModeNone +Do not used pinned certificates to validate servers.

    + +

    MQTTSSLPinningModePublicKey +Validate host certificates against public keys of pinned certificates.

    + +

    MQTTSSLPinningModeCertificate +Validate host certificates against pinned certificates.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum MQTTSSLPinningMode {}
    + +
    +
    +

    Swift

    +
    enum MQTTSSLPinningMode : UInt
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MQTTSessionStatus + +
    +
    +
    +
    +
    +
    +

    Enumeration of MQTTSession states

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum MQTTSessionStatus {}
    + +
    +
    +

    Swift

    +
    enum MQTTSessionStatus : Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MQTTSessionEvent + +
    +
    +
    +
    +
    +
    +

    Enumeration of MQTTSession events

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum MQTTSessionEvent {}
    + +
    +
    +

    Swift

    +
    enum MQTTSessionEvent : Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MQTTSessionError + +
    +
    +
    +
    +
    +
    +

    The error codes used for all errors created by MQTTSession

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum MQTTSessionError {}
    + +
    +
    +

    Swift

    +
    enum MQTTSessionError : Int
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Enumeration of MQTTSessionManagerState values

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum MQTTSessionManagerState {}
    + +
    +
    +

    Swift

    +
    enum MQTTSessionManagerState : Int32
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + MQTTTransportState + +
    +
    +
    +
    +
    +
    +

    MQTTTransport state defines the possible state of an abstract transport + *

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum MQTTTransportState {}
    + +
    +
    +

    Swift

    +
    enum MQTTTransportState : Int
    + +
    +
    +
    +
    +
  • +
+
diff --git a/docs/Enums/ACCESSCMD.html b/docs/Enums/ACCESSCMD.html index ea4c216..43525f4 100644 --- a/docs/Enums/ACCESSCMD.html +++ b/docs/Enums/ACCESSCMD.html @@ -14,7 +14,7 @@
-

CS108iOSClient Docs (77% documented)

+

CS108iOSClient Docs (56% documented)

@@ -27,6 +27,14 @@
+ diff --git a/docs/Enums/MQTTSessionStatus.html b/docs/Enums/MQTTSessionStatus.html new file mode 100644 index 0000000..7aafc95 --- /dev/null +++ b/docs/Enums/MQTTSessionStatus.html @@ -0,0 +1,537 @@ + + + + MQTTSessionStatus Enumeration Reference + + + + + + + + + + +
+
+

CS108iOSClient Docs (56% documented)

+
+
+
+ +
+
+ +
+
+
+

MQTTSessionStatus

+
+
+
enum MQTTSessionStatus {}
+ +
+
+

Enumeration of MQTTSession states

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    MQTTSessionStatusCreated
    + +
    +
    +

    Swift

    +
    case created = 0
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    MQTTSessionStatusConnecting
    + +
    +
    +

    Swift

    +
    case connecting = 1
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    MQTTSessionStatusConnected
    + +
    +
    +

    Swift

    +
    case connected = 2
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    MQTTSessionStatusDisconnecting
    + +
    +
    +

    Swift

    +
    case disconnecting = 3
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    MQTTSessionStatusClosed
    + +
    +
    +

    Swift

    +
    case closed = 4
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    MQTTSessionStatusError
    + +
    +
    +

    Swift

    +
    case error = 5
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ +
+ diff --git a/docs/Enums/MQTTStatus.html b/docs/Enums/MQTTStatus.html new file mode 100644 index 0000000..fe8c660 --- /dev/null +++ b/docs/Enums/MQTTStatus.html @@ -0,0 +1,441 @@ + + + + MQTTStatus Enumeration Reference + + + + + + + + + + +
+
+

CS108iOSClient Docs (56% documented)

+
+
+
+ +
+
+ +
+
+
+

MQTTStatus

+
+
+
enum MQTTStatus {}
+ +
+
+

Enumeration of MQTT status

+ +
+
+
+
    +
  • +
    + + + + MQTTStatusConnected + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    MQTTStatusConnected
    + +
    +
    +

    Swift

    +
    case connected = 0
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    MQTTStatusNotConnected
    + +
    +
    +

    Swift

    +
    case notConnected = 1
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MQTTStatusError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    MQTTStatusError
    + +
    +
    +

    Swift

    +
    case error = 2
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ +
+ diff --git a/docs/Enums/MQTTTransportState.html b/docs/Enums/MQTTTransportState.html new file mode 100644 index 0000000..83cf728 --- /dev/null +++ b/docs/Enums/MQTTTransportState.html @@ -0,0 +1,506 @@ + + + + MQTTTransportState Enumeration Reference + + + + + + + + + + +
+
+

CS108iOSClient Docs (56% documented)

+
+
+
+ +
+
+ +
+
+
+

MQTTTransportState

+
+
+
enum MQTTTransportState {}
+ +
+
+

MQTTTransport state defines the possible state of an abstract transport + *

+ +
+
+
+
    +
  • +
    + + + + MQTTTransportCreated + +
    +
    +
    +
    +
    +
    +

    MQTTTransportCreated indicates an initialized transport

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    MQTTTransportCreated = 0
    + +
    +
    +

    Swift

    +
    case created = 0
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MQTTTransportOpening + +
    +
    +
    +
    +
    +
    +

    MQTTTransportOpening indicates a transport in the process of opening a connection

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    MQTTTransportOpening
    + +
    +
    +

    Swift

    +
    case opening = 1
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MQTTTransportOpen + +
    +
    +
    +
    +
    +
    +

    MQTTTransportCreated indicates a transport opened ready for communication

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    MQTTTransportOpen
    + +
    +
    +

    Swift

    +
    case open = 2
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MQTTTransportClosing + +
    +
    +
    +
    +
    +
    +

    MQTTTransportCreated indicates a transport in the process of closing

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    MQTTTransportClosing
    + +
    +
    +

    Swift

    +
    case closing = 3
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MQTTTransportClosed + +
    +
    +
    +
    +
    +
    +

    MQTTTransportCreated indicates a closed transport

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    MQTTTransportClosed
    + +
    +
    +

    Swift

    +
    case closed = 4
    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ +
+ diff --git a/docs/Enums/QUERYALGORITHM.html b/docs/Enums/QUERYALGORITHM.html index ce6727f..b0b7710 100644 --- a/docs/Enums/QUERYALGORITHM.html +++ b/docs/Enums/QUERYALGORITHM.html @@ -14,7 +14,7 @@
-

CS108iOSClient Docs (77% documented)

+

CS108iOSClient Docs (56% documented)

@@ -27,6 +27,14 @@