Просмотр исходного кода

Added:
1) Share Client Pod & some testing
2) Add share id and password
3) Std Dev.

Jose Paredes 6 лет назад
Родитель
Сommit
6b8eb5ef68

+ 2 - 2
LoopFollow.xcodeproj/project.pbxproj

@@ -998,7 +998,7 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CODE_SIGN_ENTITLEMENTS = "LoopFollow/Loop Follow.entitlements";
 				CODE_SIGN_ENTITLEMENTS = "LoopFollow/Loop Follow.entitlements";
 				CODE_SIGN_STYLE = Automatic;
 				CODE_SIGN_STYLE = Automatic;
-				DEVELOPMENT_TEAM = "";
+				DEVELOPMENT_TEAM = 9W476TGJ4S;
 				INFOPLIST_FILE = LoopFollow/Info.plist;
 				INFOPLIST_FILE = LoopFollow/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(inherited)",
@@ -1019,7 +1019,7 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CODE_SIGN_ENTITLEMENTS = "LoopFollow/Loop Follow.entitlements";
 				CODE_SIGN_ENTITLEMENTS = "LoopFollow/Loop Follow.entitlements";
 				CODE_SIGN_STYLE = Automatic;
 				CODE_SIGN_STYLE = Automatic;
-				DEVELOPMENT_TEAM = "";
+				DEVELOPMENT_TEAM = 9W476TGJ4S;
 				INFOPLIST_FILE = LoopFollow/Info.plist;
 				INFOPLIST_FILE = LoopFollow/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(inherited)",

+ 33 - 18
LoopFollow/Application/Base.lproj/Main.storyboard

@@ -139,7 +139,7 @@
                                                                         <nil key="highlightedColor"/>
                                                                         <nil key="highlightedColor"/>
                                                                     </label>
                                                                     </label>
                                                                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TzL-hn-9qu">
                                                                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TzL-hn-9qu">
-                                                                        <rect key="frame" x="13" y="18" width="66.666666666666671" height="27"/>
+                                                                        <rect key="frame" x="14.333333333333329" y="18" width="64" height="27"/>
                                                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                                         <nil key="textColor"/>
                                                                         <nil key="textColor"/>
                                                                         <nil key="highlightedColor"/>
                                                                         <nil key="highlightedColor"/>
@@ -156,7 +156,7 @@
                                                                         <nil key="highlightedColor"/>
                                                                         <nil key="highlightedColor"/>
                                                                     </label>
                                                                     </label>
                                                                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7mH-Np-j0L">
                                                                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7mH-Np-j0L">
-                                                                        <rect key="frame" x="13.333333333333343" y="18" width="66" height="27"/>
+                                                                        <rect key="frame" x="14.333333333333343" y="18" width="64" height="27"/>
                                                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                                         <nil key="textColor"/>
                                                                         <nil key="textColor"/>
                                                                         <nil key="highlightedColor"/>
                                                                         <nil key="highlightedColor"/>
@@ -167,13 +167,13 @@
                                                                 <rect key="frame" x="205.33333333333331" y="0.0" width="92.666666666666686" height="45"/>
                                                                 <rect key="frame" x="205.33333333333331" y="0.0" width="92.666666666666686" height="45"/>
                                                                 <subviews>
                                                                 <subviews>
                                                                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="High:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0Zq-6s-y8B">
                                                                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="High:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0Zq-6s-y8B">
-                                                                        <rect key="frame" x="28.333333333333371" y="0.0" width="36.333333333333343" height="18"/>
+                                                                        <rect key="frame" x="28.333333333333375" y="0.0" width="36.333333333333343" height="18"/>
                                                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                                         <nil key="textColor"/>
                                                                         <nil key="textColor"/>
                                                                         <nil key="highlightedColor"/>
                                                                         <nil key="highlightedColor"/>
                                                                     </label>
                                                                     </label>
                                                                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HON-rt-8pC">
                                                                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HON-rt-8pC">
-                                                                        <rect key="frame" x="13" y="18" width="66.666666666666671" height="27"/>
+                                                                        <rect key="frame" x="14.333333333333371" y="18" width="64" height="27"/>
                                                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                                         <nil key="textColor"/>
                                                                         <nil key="textColor"/>
                                                                         <nil key="highlightedColor"/>
                                                                         <nil key="highlightedColor"/>
@@ -182,45 +182,59 @@
                                                             </stackView>
                                                             </stackView>
                                                         </subviews>
                                                         </subviews>
                                                     </stackView>
                                                     </stackView>
-                                                    <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="jwr-iC-EjI">
+                                                    <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="top" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="K8G-Ph-ZNA">
                                                         <rect key="frame" x="0.0" y="55" width="298" height="45"/>
                                                         <rect key="frame" x="0.0" y="55" width="298" height="45"/>
                                                         <subviews>
                                                         <subviews>
-                                                            <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="mhQ-v3-Rex">
+                                                            <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="0aR-E9-gpC">
                                                                 <rect key="frame" x="0.0" y="0.0" width="92.666666666666671" height="45"/>
                                                                 <rect key="frame" x="0.0" y="0.0" width="92.666666666666671" height="45"/>
                                                                 <subviews>
                                                                 <subviews>
-                                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Avg BG:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tpy-y3-B9A">
-                                                                        <rect key="frame" x="19.333333333333329" y="0.0" width="54.333333333333343" height="18"/>
+                                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Avg BG:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Rrh-Zo-cis" userLabel="Avg BG:">
+                                                                        <rect key="frame" x="19.333333333333332" y="0.0" width="54.333333333333343" height="18"/>
                                                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                                         <nil key="textColor"/>
                                                                         <nil key="textColor"/>
                                                                         <nil key="highlightedColor"/>
                                                                         <nil key="highlightedColor"/>
                                                                     </label>
                                                                     </label>
-                                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cDE-hR-Tao">
-                                                                        <rect key="frame" x="6.6666666666666714" y="18" width="79.333333333333329" height="27"/>
+                                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jpA-Nb-pU7" userLabel="Stats AvBG">
+                                                                        <rect key="frame" x="21.333333333333343" y="18" width="50" height="27"/>
                                                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                                         <nil key="textColor"/>
                                                                         <nil key="textColor"/>
                                                                         <nil key="highlightedColor"/>
                                                                         <nil key="highlightedColor"/>
                                                                     </label>
                                                                     </label>
                                                                 </subviews>
                                                                 </subviews>
                                                             </stackView>
                                                             </stackView>
-                                                            <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="xCG-CQ-HvH">
+                                                            <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="xGF-Pj-QE0">
                                                                 <rect key="frame" x="102.66666666666666" y="0.0" width="92.666666666666657" height="45"/>
                                                                 <rect key="frame" x="102.66666666666666" y="0.0" width="92.666666666666657" height="45"/>
                                                                 <subviews>
                                                                 <subviews>
-                                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Est A1C:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BSh-qP-ZnD">
-                                                                        <rect key="frame" x="18.333333333333343" y="0.0" width="56.333333333333343" height="18"/>
+                                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Est A1C:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WV0-Jy-FPs" userLabel="Est A1C:">
+                                                                        <rect key="frame" x="18.333333333333346" y="0.0" width="56.333333333333343" height="18"/>
                                                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                                         <nil key="textColor"/>
                                                                         <nil key="textColor"/>
                                                                         <nil key="highlightedColor"/>
                                                                         <nil key="highlightedColor"/>
                                                                     </label>
                                                                     </label>
-                                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Vxv-1M-W8k">
-                                                                        <rect key="frame" x="6.3333333333333428" y="18" width="80" height="27"/>
+                                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7Jx-XF-1vS" userLabel="Stas EstA1C">
+                                                                        <rect key="frame" x="21.333333333333343" y="18" width="50" height="27"/>
                                                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                                         <nil key="textColor"/>
                                                                         <nil key="textColor"/>
                                                                         <nil key="highlightedColor"/>
                                                                         <nil key="highlightedColor"/>
                                                                     </label>
                                                                     </label>
                                                                 </subviews>
                                                                 </subviews>
                                                             </stackView>
                                                             </stackView>
-                                                            <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="par-v0-OMA">
+                                                            <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="ohT-Dn-cjf">
                                                                 <rect key="frame" x="205.33333333333331" y="0.0" width="92.666666666666686" height="45"/>
                                                                 <rect key="frame" x="205.33333333333331" y="0.0" width="92.666666666666686" height="45"/>
+                                                                <subviews>
+                                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Std Dev:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iXC-Mz-I09">
+                                                                        <rect key="frame" x="16.999999999999996" y="0.0" width="58.666666666666657" height="18"/>
+                                                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                                        <nil key="textColor"/>
+                                                                        <nil key="highlightedColor"/>
+                                                                    </label>
+                                                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wAI-Tp-784" userLabel="Stats StdDev">
+                                                                        <rect key="frame" x="21.333333333333371" y="18" width="50" height="27"/>
+                                                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                                        <nil key="textColor"/>
+                                                                        <nil key="highlightedColor"/>
+                                                                    </label>
+                                                                </subviews>
                                                             </stackView>
                                                             </stackView>
                                                         </subviews>
                                                         </subviews>
                                                     </stackView>
                                                     </stackView>
@@ -273,12 +287,13 @@
                         <outlet property="MinAgoText" destination="UkG-hw-DVo" id="Xd2-fL-qYC"/>
                         <outlet property="MinAgoText" destination="UkG-hw-DVo" id="Xd2-fL-qYC"/>
                         <outlet property="PredictionLabel" destination="oiR-SM-6sg" id="2Sw-TR-SFo"/>
                         <outlet property="PredictionLabel" destination="oiR-SM-6sg" id="2Sw-TR-SFo"/>
                         <outlet property="infoTable" destination="kTs-7g-lp9" id="Khq-sV-EZ1"/>
                         <outlet property="infoTable" destination="kTs-7g-lp9" id="Khq-sV-EZ1"/>
-                        <outlet property="statsAvgBG" destination="cDE-hR-Tao" id="SGK-z7-di4"/>
-                        <outlet property="statsEstA1C" destination="Vxv-1M-W8k" id="CpH-4t-haS"/>
+                        <outlet property="statsAvgBG" destination="jpA-Nb-pU7" id="Uo8-a4-Aus"/>
+                        <outlet property="statsEstA1C" destination="7Jx-XF-1vS" id="4RD-nm-JxO"/>
                         <outlet property="statsHighPercent" destination="HON-rt-8pC" id="283-3S-PCR"/>
                         <outlet property="statsHighPercent" destination="HON-rt-8pC" id="283-3S-PCR"/>
                         <outlet property="statsInRangePercent" destination="7mH-Np-j0L" id="vUp-Pv-Mva"/>
                         <outlet property="statsInRangePercent" destination="7mH-Np-j0L" id="vUp-Pv-Mva"/>
                         <outlet property="statsLowPercent" destination="TzL-hn-9qu" id="0QR-Mz-KJe"/>
                         <outlet property="statsLowPercent" destination="TzL-hn-9qu" id="0QR-Mz-KJe"/>
                         <outlet property="statsPieChart" destination="Hhh-F1-s1p" id="Rhh-Up-Kr0"/>
                         <outlet property="statsPieChart" destination="Hhh-F1-s1p" id="Rhh-Up-Kr0"/>
+                        <outlet property="statsStdDev" destination="wAI-Tp-784" id="BUZ-lS-JfA"/>
                     </connections>
                     </connections>
                 </viewController>
                 </viewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="W5J-7L-Pyd" sceneMemberID="firstResponder"/>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="W5J-7L-Pyd" sceneMemberID="firstResponder"/>

+ 8 - 2
LoopFollow/Controllers/Stats.swift

@@ -20,6 +20,7 @@ class StatsData {
     var totalGlucose: Int
     var totalGlucose: Int
     var avgBG: Float
     var avgBG: Float
     var a1C: Float
     var a1C: Float
+    var stdDev: Float
     var pie: [DataStructs.pieData]
     var pie: [DataStructs.pieData]
     
     
     init(bgData: [DataStructs.sgvData]) {
     init(bgData: [DataStructs.sgvData]) {
@@ -54,8 +55,6 @@ class StatsData {
             DataStructs.pieData(name: "range", value: Double(percentRange)),
             DataStructs.pieData(name: "range", value: Double(percentRange)),
             DataStructs.pieData(name: "high", value: Double(percentHigh))]
             DataStructs.pieData(name: "high", value: Double(percentHigh))]
         
         
-        
-        
         // Set Average
         // Set Average
         avgBG = Float(totalGlucose / bgData.count)
         avgBG = Float(totalGlucose / bgData.count)
         
         
@@ -67,6 +66,13 @@ class StatsData {
             // https://github.com/nightscout/nightguard/pull/72
             // https://github.com/nightscout/nightguard/pull/72
             // a1C = (((46.7 + Float(avgBG)) / 28.7) - 2.152) / 0.09148
             // a1C = (((46.7 + Float(avgBG)) / 28.7) - 2.152) / 0.09148
         }
         }
+         
+        // compute std dev (sigma)
+        var partialSum: Float = 0;
+        for i in 0..<bgData.count {
+            partialSum += (Float(bgData[i].sgv) - avgBG) * ( Float(bgData[i].sgv) - avgBG)
+        }
+        stdDev = sqrt(partialSum / Float(bgData.count))
     }
     }
 
 
 }
 }

+ 2 - 1
LoopFollow/Controllers/StatsView.swift

@@ -16,13 +16,14 @@ extension MainViewController {
     func updateStats()
     func updateStats()
     {
     {
         if bgData.count > 0 {
         if bgData.count > 0 {
-           var stats = StatsData(bgData: bgData)
+           let stats = StatsData(bgData: bgData)
             
             
             statsLowPercent.text = String(format:"%.1f%", stats.percentLow) + "%"
             statsLowPercent.text = String(format:"%.1f%", stats.percentLow) + "%"
             statsInRangePercent.text = String(format:"%.1f%", stats.percentRange) + "%"
             statsInRangePercent.text = String(format:"%.1f%", stats.percentRange) + "%"
             statsHighPercent.text = String(format:"%.1f%", stats.percentHigh) + "%"
             statsHighPercent.text = String(format:"%.1f%", stats.percentHigh) + "%"
             statsAvgBG.text = bgUnits.toDisplayUnits(String(format:"%.0f%", stats.avgBG))
             statsAvgBG.text = bgUnits.toDisplayUnits(String(format:"%.0f%", stats.avgBG))
             statsEstA1C.text = String(format:"%.1f%", stats.a1C)
             statsEstA1C.text = String(format:"%.1f%", stats.a1C)
+            statsStdDev.text = String(format:"%.2f%", stats.stdDev)
             
             
             createStatsPie(pieData: stats.pie)
             createStatsPie(pieData: stats.pie)
         }
         }

+ 18 - 5
LoopFollow/ViewControllers/MainViewController.swift

@@ -9,6 +9,7 @@
 import UIKit
 import UIKit
 import Charts
 import Charts
 import EventKit
 import EventKit
+import ShareClient
 
 
 
 
 class MainViewController: UIViewController, UITableViewDataSource, ChartViewDelegate, UNUserNotificationCenterDelegate {
 class MainViewController: UIViewController, UITableViewDataSource, ChartViewDelegate, UNUserNotificationCenterDelegate {
@@ -30,6 +31,7 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
     @IBOutlet weak var statsHighPercent: UILabel!
     @IBOutlet weak var statsHighPercent: UILabel!
     @IBOutlet weak var statsAvgBG: UILabel!
     @IBOutlet weak var statsAvgBG: UILabel!
     @IBOutlet weak var statsEstA1C: UILabel!
     @IBOutlet weak var statsEstA1C: UILabel!
+    @IBOutlet weak var statsStdDev: UILabel!
     
     
     
     
     // Data Table Struct
     // Data Table Struct
@@ -75,6 +77,7 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
     var calTimer = Timer()
     var calTimer = Timer()
     
     
     // Info Table Setup
     // Info Table Setup
+    // TODO: make this selectable
     var tableData = [
     var tableData = [
         infoData(name: "IOB", value: ""), //0
         infoData(name: "IOB", value: ""), //0
         infoData(name: "COB", value: ""), //1
         infoData(name: "COB", value: ""), //1
@@ -113,19 +116,26 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
     
     
     var snoozeTabItem: UITabBarItem = UITabBarItem()
     var snoozeTabItem: UITabBarItem = UITabBarItem()
     
     
+    var dexShare: ShareClient?;
+    
     override func viewDidLoad() {
     override func viewDidLoad() {
         super.viewDidLoad()
         super.viewDidLoad()
         
         
+        // TODO: look for username and password in the UserDefaultsRepo ?
+        // TODO: need non-us server ?
+        let shareUserName = UserDefaultsRepository.shareUserName.value
+        let sharePassword = UserDefaultsRepository.sharePassword.value
+        let shareServer = UserDefaultsRepository.shareServer.value == "US" ?KnownShareServers.US.rawValue : KnownShareServers.NON_US.rawValue
+        dexShare = ShareClient(username: shareUserName, password: sharePassword, shareServer: shareServer )
+        
+        //print("Share: \(dexShare)")
+        
         // Start Log Timer if needed
         // Start Log Timer if needed
         if UserDefaultsRepository.debugLog.value {
         if UserDefaultsRepository.debugLog.value {
             guard let debug = self.tabBarController!.viewControllers?[5] as? debugViewController else { return }
             guard let debug = self.tabBarController!.viewControllers?[5] as? debugViewController else { return }
             debug.loadViewIfNeeded()
             debug.loadViewIfNeeded()
         } else {
         } else {
-            do {
-                try self.tabBarController?.viewControllers?.remove(at: 5)
-            } catch {
-                
-            }
+            self.tabBarController?.viewControllers?.remove(at: 5)
         }
         }
         
         
         BGChart.delegate = self
         BGChart.delegate = self
@@ -164,6 +174,9 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
         // Load Data
         // Load Data
         if UserDefaultsRepository.url.value != "" && firstGraphLoad {
         if UserDefaultsRepository.url.value != "" && firstGraphLoad {
             nightscoutLoader()
             nightscoutLoader()
+            dexShare?.fetchLast(150) { (err, result) -> () in
+               print("Share: \(result)")
+            }
         }
         }
         
         
     }
     }

+ 34 - 0
LoopFollow/ViewControllers/SettingsViewController.swift

@@ -67,6 +67,40 @@ class SettingsViewController: FormViewController {
             guard let value = row.value else { return }
             guard let value = row.value else { return }
             UserDefaultsRepository.units.value = value
             UserDefaultsRepository.units.value = value
         }
         }
+        +++ Section("Dexcom Settings")
+        <<< TextRow(){ row in
+            row.title = "User Name"
+            row.value = UserDefaultsRepository.shareUserName.value
+        }.cellSetup { (cell, row) in
+            cell.textField.autocorrectionType = .no
+        }.onChange { row in
+            if row.value == nil {
+                UserDefaultsRepository.shareUserName.value = ""
+            }
+            guard let value = row.value else { return }
+            UserDefaultsRepository.shareUserName.value = value
+        }
+        <<< TextRow(){ row in
+            row.title = "Password"
+            row.value = UserDefaultsRepository.sharePassword.value
+        }.cellSetup { (cell, row) in
+            cell.textField.autocorrectionType = .no
+            cell.textField.isSecureTextEntry = true
+        }.onChange { row in
+            if row.value == nil {
+                UserDefaultsRepository.sharePassword.value = ""
+            }
+            guard let value = row.value else { return }
+            UserDefaultsRepository.sharePassword.value = value
+        }
+        <<< SegmentedRow<String>("shareServer") { row in
+            row.title = "Server"
+            row.options = ["US", "NON-US"]
+            row.value = UserDefaultsRepository.shareServer.value
+        }.onChange { row in
+            guard let value = row.value else { return }
+            UserDefaultsRepository.shareServer.value = value
+        }
         
         
         
         
         buildGeneralSettings()
         buildGeneralSettings()

+ 6 - 0
LoopFollow/repository/UserDefaults.swift

@@ -11,11 +11,17 @@ import UIKit
 
 
 class UserDefaultsRepository {
 class UserDefaultsRepository {
     
     
+    
     //Nightscout Settings
     //Nightscout Settings
     static let url = UserDefaultsValue<String>(key: "url", default: "")
     static let url = UserDefaultsValue<String>(key: "url", default: "")
     static let token = UserDefaultsValue<String>(key: "token", default: "")
     static let token = UserDefaultsValue<String>(key: "token", default: "")
     static let units = UserDefaultsValue<String>(key: "units", default: "mg/dL")
     static let units = UserDefaultsValue<String>(key: "units", default: "mg/dL")
     
     
+    //Dexcom Share Settings
+    static let shareUserName = UserDefaultsValue<String>(key: "shareUserName", default: "")
+    static let sharePassword = UserDefaultsValue<String>(key: "sharePassword", default: "")
+    static let shareServer = UserDefaultsValue<String>(key: "shareServer", default: "US")
+    
     // Graph Settings
     // Graph Settings
     static let showDots = UserDefaultsValue<Bool>(key: "showDots", default: true)
     static let showDots = UserDefaultsValue<Bool>(key: "showDots", default: true)
     static let showLines = UserDefaultsValue<Bool>(key: "showLines", default: true)
     static let showLines = UserDefaultsValue<Bool>(key: "showLines", default: true)

+ 3 - 2
Podfile

@@ -3,5 +3,6 @@ target 'LoopFollow' do
 
 
   pod 'Charts'
   pod 'Charts'
   pod 'Eureka'
   pod 'Eureka'
-
-  end
+  pod 'ShareClient', :git => 'https://github.com/josep1972/dexcom-share-client-swift.git', :branch => 'dev' 
+  
+end

+ 14 - 1
Podfile.lock

@@ -3,20 +3,33 @@ PODS:
     - Charts/Core (= 3.5.0)
     - Charts/Core (= 3.5.0)
   - Charts/Core (3.5.0)
   - Charts/Core (3.5.0)
   - Eureka (5.2.1)
   - Eureka (5.2.1)
+  - ShareClient (1.2)
 
 
 DEPENDENCIES:
 DEPENDENCIES:
   - Charts
   - Charts
   - Eureka
   - Eureka
+  - ShareClient (from `https://github.com/josep1972/dexcom-share-client-swift.git`, branch `dev`)
 
 
 SPEC REPOS:
 SPEC REPOS:
   trunk:
   trunk:
     - Charts
     - Charts
     - Eureka
     - Eureka
 
 
+EXTERNAL SOURCES:
+  ShareClient:
+    :branch: dev
+    :git: https://github.com/josep1972/dexcom-share-client-swift.git
+
+CHECKOUT OPTIONS:
+  ShareClient:
+    :commit: 815a1dbddd970a563e3b7fd22d88b23c164b026e
+    :git: https://github.com/josep1972/dexcom-share-client-swift.git
+
 SPEC CHECKSUMS:
 SPEC CHECKSUMS:
   Charts: 40a08591df1f8ad5c223ddedfb1a06da92f24f7c
   Charts: 40a08591df1f8ad5c223ddedfb1a06da92f24f7c
   Eureka: c883105488e05bc65539f583246ecf9657cabbfe
   Eureka: c883105488e05bc65539f583246ecf9657cabbfe
+  ShareClient: 5937ff69b57c85c2004c915812f73cf7ae86549e
 
 
-PODFILE CHECKSUM: 7665842405edac4f27ad84d4b66d6d57d5a4e5aa
+PODFILE CHECKSUM: b5ee540f0ef2120e92d3b71909453c335d659552
 
 
 COCOAPODS: 1.9.3
 COCOAPODS: 1.9.3

+ 14 - 1
Pods/Manifest.lock

@@ -3,20 +3,33 @@ PODS:
     - Charts/Core (= 3.5.0)
     - Charts/Core (= 3.5.0)
   - Charts/Core (3.5.0)
   - Charts/Core (3.5.0)
   - Eureka (5.2.1)
   - Eureka (5.2.1)
+  - ShareClient (1.2)
 
 
 DEPENDENCIES:
 DEPENDENCIES:
   - Charts
   - Charts
   - Eureka
   - Eureka
+  - ShareClient (from `https://github.com/josep1972/dexcom-share-client-swift.git`, branch `dev`)
 
 
 SPEC REPOS:
 SPEC REPOS:
   trunk:
   trunk:
     - Charts
     - Charts
     - Eureka
     - Eureka
 
 
+EXTERNAL SOURCES:
+  ShareClient:
+    :branch: dev
+    :git: https://github.com/josep1972/dexcom-share-client-swift.git
+
+CHECKOUT OPTIONS:
+  ShareClient:
+    :commit: 815a1dbddd970a563e3b7fd22d88b23c164b026e
+    :git: https://github.com/josep1972/dexcom-share-client-swift.git
+
 SPEC CHECKSUMS:
 SPEC CHECKSUMS:
   Charts: 40a08591df1f8ad5c223ddedfb1a06da92f24f7c
   Charts: 40a08591df1f8ad5c223ddedfb1a06da92f24f7c
   Eureka: c883105488e05bc65539f583246ecf9657cabbfe
   Eureka: c883105488e05bc65539f583246ecf9657cabbfe
+  ShareClient: 5937ff69b57c85c2004c915812f73cf7ae86549e
 
 
-PODFILE CHECKSUM: 7665842405edac4f27ad84d4b66d6d57d5a4e5aa
+PODFILE CHECKSUM: b5ee540f0ef2120e92d3b71909453c335d659552
 
 
 COCOAPODS: 1.9.3
 COCOAPODS: 1.9.3

Разница между файлами не показана из-за своего большого размера
+ 965 - 774
Pods/Pods.xcodeproj/project.pbxproj


+ 25 - 0
Pods/Target Support Files/Pods-LoopFollow/Pods-LoopFollow-acknowledgements.markdown

@@ -231,4 +231,29 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 SOFTWARE.
 
 
+
+## ShareClient
+
+The MIT License (MIT)
+
+Copyright (c) 2016 Mark Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
 Generated by CocoaPods - https://cocoapods.org
 Generated by CocoaPods - https://cocoapods.org

+ 31 - 0
Pods/Target Support Files/Pods-LoopFollow/Pods-LoopFollow-acknowledgements.plist

@@ -257,6 +257,37 @@ SOFTWARE.
 		</dict>
 		</dict>
 		<dict>
 		<dict>
 			<key>FooterText</key>
 			<key>FooterText</key>
+			<string>The MIT License (MIT)
+
+Copyright (c) 2016 Mark Wilson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+</string>
+			<key>License</key>
+			<string>MIT</string>
+			<key>Title</key>
+			<string>ShareClient</string>
+			<key>Type</key>
+			<string>PSGroupSpecifier</string>
+		</dict>
+		<dict>
+			<key>FooterText</key>
 			<string>Generated by CocoaPods - https://cocoapods.org</string>
 			<string>Generated by CocoaPods - https://cocoapods.org</string>
 			<key>Title</key>
 			<key>Title</key>
 			<string></string>
 			<string></string>

+ 2 - 1
Pods/Target Support Files/Pods-LoopFollow/Pods-LoopFollow-frameworks-Debug-input-files.xcfilelist

@@ -1,3 +1,4 @@
 ${PODS_ROOT}/Target Support Files/Pods-LoopFollow/Pods-LoopFollow-frameworks.sh
 ${PODS_ROOT}/Target Support Files/Pods-LoopFollow/Pods-LoopFollow-frameworks.sh
 ${BUILT_PRODUCTS_DIR}/Charts/Charts.framework
 ${BUILT_PRODUCTS_DIR}/Charts/Charts.framework
-${BUILT_PRODUCTS_DIR}/Eureka/Eureka.framework
+${BUILT_PRODUCTS_DIR}/Eureka/Eureka.framework
+${BUILT_PRODUCTS_DIR}/ShareClient/ShareClient.framework

+ 2 - 1
Pods/Target Support Files/Pods-LoopFollow/Pods-LoopFollow-frameworks-Debug-output-files.xcfilelist

@@ -1,2 +1,3 @@
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Charts.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Charts.framework
-${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Eureka.framework
+${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Eureka.framework
+${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ShareClient.framework

+ 2 - 1
Pods/Target Support Files/Pods-LoopFollow/Pods-LoopFollow-frameworks-Release-input-files.xcfilelist

@@ -1,3 +1,4 @@
 ${PODS_ROOT}/Target Support Files/Pods-LoopFollow/Pods-LoopFollow-frameworks.sh
 ${PODS_ROOT}/Target Support Files/Pods-LoopFollow/Pods-LoopFollow-frameworks.sh
 ${BUILT_PRODUCTS_DIR}/Charts/Charts.framework
 ${BUILT_PRODUCTS_DIR}/Charts/Charts.framework
-${BUILT_PRODUCTS_DIR}/Eureka/Eureka.framework
+${BUILT_PRODUCTS_DIR}/Eureka/Eureka.framework
+${BUILT_PRODUCTS_DIR}/ShareClient/ShareClient.framework

+ 2 - 1
Pods/Target Support Files/Pods-LoopFollow/Pods-LoopFollow-frameworks-Release-output-files.xcfilelist

@@ -1,2 +1,3 @@
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Charts.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Charts.framework
-${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Eureka.framework
+${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Eureka.framework
+${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ShareClient.framework

+ 2 - 0
Pods/Target Support Files/Pods-LoopFollow/Pods-LoopFollow-frameworks.sh

@@ -199,10 +199,12 @@ fi
 if [[ "$CONFIGURATION" == "Debug" ]]; then
 if [[ "$CONFIGURATION" == "Debug" ]]; then
   install_framework "${BUILT_PRODUCTS_DIR}/Charts/Charts.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/Charts/Charts.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/Eureka/Eureka.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/Eureka/Eureka.framework"
+  install_framework "${BUILT_PRODUCTS_DIR}/ShareClient/ShareClient.framework"
 fi
 fi
 if [[ "$CONFIGURATION" == "Release" ]]; then
 if [[ "$CONFIGURATION" == "Release" ]]; then
   install_framework "${BUILT_PRODUCTS_DIR}/Charts/Charts.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/Charts/Charts.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/Eureka/Eureka.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/Eureka/Eureka.framework"
+  install_framework "${BUILT_PRODUCTS_DIR}/ShareClient/ShareClient.framework"
 fi
 fi
 if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
 if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
   wait
   wait

+ 3 - 3
Pods/Target Support Files/Pods-LoopFollow/Pods-LoopFollow.debug.xcconfig

@@ -1,9 +1,9 @@
 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Charts" "${PODS_CONFIGURATION_BUILD_DIR}/Eureka"
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Charts" "${PODS_CONFIGURATION_BUILD_DIR}/Eureka" "${PODS_CONFIGURATION_BUILD_DIR}/ShareClient"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Charts/Charts.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Eureka/Eureka.framework/Headers"
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Charts/Charts.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Eureka/Eureka.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ShareClient/ShareClient.framework/Headers"
 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
-OTHER_LDFLAGS = $(inherited) -framework "Charts" -framework "Eureka" -framework "Foundation" -framework "UIKit"
+OTHER_LDFLAGS = $(inherited) -framework "Charts" -framework "Eureka" -framework "Foundation" -framework "ShareClient" -framework "UIKit"
 OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
 OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

+ 3 - 3
Pods/Target Support Files/Pods-LoopFollow/Pods-LoopFollow.release.xcconfig

@@ -1,9 +1,9 @@
 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Charts" "${PODS_CONFIGURATION_BUILD_DIR}/Eureka"
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Charts" "${PODS_CONFIGURATION_BUILD_DIR}/Eureka" "${PODS_CONFIGURATION_BUILD_DIR}/ShareClient"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Charts/Charts.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Eureka/Eureka.framework/Headers"
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Charts/Charts.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Eureka/Eureka.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ShareClient/ShareClient.framework/Headers"
 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
-OTHER_LDFLAGS = $(inherited) -framework "Charts" -framework "Eureka" -framework "Foundation" -framework "UIKit"
+OTHER_LDFLAGS = $(inherited) -framework "Charts" -framework "Eureka" -framework "Foundation" -framework "ShareClient" -framework "UIKit"
 OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
 OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)