temp commit, a few views added

This commit is contained in:
Johan Degraeve 2019-09-22 15:29:03 +02:00
parent 62bc57e9e0
commit 7cede28758
8 changed files with 153 additions and 17 deletions

View File

@ -16,6 +16,8 @@
F8025E5021EE746400ECF0C0 /* Calibrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8025E4F21EE746400ECF0C0 /* Calibrator.swift */; };
F8025E5421EE8D2100ECF0C0 /* Libre1Calibrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8025E5321EE8D2100ECF0C0 /* Libre1Calibrator.swift */; };
F8025E6B21F7CD7600ECF0C0 /* UIStoryboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8025E6A21F7CD7600ECF0C0 /* UIStoryboard.swift */; };
F804870C2336D90200EBDDB7 /* M5Stack+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = F804870A2336D90200EBDDB7 /* M5Stack+CoreDataClass.swift */; };
F804870D2336D90200EBDDB7 /* M5Stack+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = F804870B2336D90200EBDDB7 /* M5Stack+CoreDataProperties.swift */; };
F80610C4222D4E4D00D8F236 /* ActionClosureable-extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F80610C3222D4E4D00D8F236 /* ActionClosureable-extension.swift */; };
F81D6D4822BD5F62005EFAE2 /* DexcomShareUploadManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F81D6D4722BD5F62005EFAE2 /* DexcomShareUploadManager.swift */; };
F81D6D4E22BFC762005EFAE2 /* TextsDexcomShareTestResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = F81D6D4D22BFC762005EFAE2 /* TextsDexcomShareTestResult.swift */; };
@ -47,8 +49,6 @@
F821CF9722AE589E005C1E43 /* HealthKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F821CF9622AE589E005C1E43 /* HealthKit.framework */; };
F821CF9D22AEF483005C1E43 /* BGReadingSpeaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = F821CF9C22AEF483005C1E43 /* BGReadingSpeaker.swift */; };
F856CE5B22EDC8E50083E436 /* ConstantsBluetoothPairing.swift in Sources */ = {isa = PBXBuildFile; fileRef = F856CE5A22EDC8E50083E436 /* ConstantsBluetoothPairing.swift */; };
F85C4A962336C5E100D6A86F /* M5Stack+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85C4A952336C5E100D6A86F /* M5Stack+CoreDataClass.swift */; };
F85C4A972336C5E100D6A86F /* M5Stack+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85C4A942336C5E100D6A86F /* M5Stack+CoreDataProperties.swift */; };
F85C4A9A2336CE8E00D6A86F /* M5StacksViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85C4A992336CE8E00D6A86F /* M5StacksViewController.swift */; };
F85C4A9D2336D05100D6A86F /* M5StackViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85C4A9C2336D05100D6A86F /* M5StackViewController.swift */; };
F85DC2ED21CFE2F500B9F74A /* BgReading+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85DC2E721CFE2F500B9F74A /* BgReading+CoreDataProperties.swift */; };
@ -232,6 +232,8 @@
F8025E4F21EE746400ECF0C0 /* Calibrator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Calibrator.swift; sourceTree = "<group>"; };
F8025E5321EE8D2100ECF0C0 /* Libre1Calibrator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Libre1Calibrator.swift; sourceTree = "<group>"; };
F8025E6A21F7CD7600ECF0C0 /* UIStoryboard.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIStoryboard.swift; sourceTree = "<group>"; };
F804870A2336D90200EBDDB7 /* M5Stack+CoreDataClass.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "M5Stack+CoreDataClass.swift"; sourceTree = "<group>"; };
F804870B2336D90200EBDDB7 /* M5Stack+CoreDataProperties.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "M5Stack+CoreDataProperties.swift"; sourceTree = "<group>"; };
F80610C3222D4E4D00D8F236 /* ActionClosureable-extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ActionClosureable-extension.swift"; sourceTree = "<group>"; };
F81D6D4522B67F55005EFAE2 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/SpeakReading.strings; sourceTree = "<group>"; };
F81D6D4722BD5F62005EFAE2 /* DexcomShareUploadManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DexcomShareUploadManager.swift; sourceTree = "<group>"; };
@ -268,8 +270,6 @@
F846CDD623046BAE00DCF016 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/SettingsViews.strings; sourceTree = "<group>"; };
F856CE5A22EDC8E50083E436 /* ConstantsBluetoothPairing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstantsBluetoothPairing.swift; sourceTree = "<group>"; };
F85C4A93233632EC00D6A86F /* xdrip v2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "xdrip v2.xcdatamodel"; sourceTree = "<group>"; };
F85C4A942336C5E100D6A86F /* M5Stack+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = "M5Stack+CoreDataProperties.swift"; path = "/Users/johandegraeve/OneDrive/Xcode Projects/xdrip/xdrip/Core Data/classes/M5Stack+CoreDataProperties.swift"; sourceTree = "<absolute>"; };
F85C4A952336C5E100D6A86F /* M5Stack+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = "M5Stack+CoreDataClass.swift"; path = "/Users/johandegraeve/OneDrive/Xcode Projects/xdrip/xdrip/Core Data/classes/M5Stack+CoreDataClass.swift"; sourceTree = "<absolute>"; };
F85C4A992336CE8E00D6A86F /* M5StacksViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = M5StacksViewController.swift; sourceTree = "<group>"; };
F85C4A9C2336D05100D6A86F /* M5StackViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = M5StackViewController.swift; sourceTree = "<group>"; };
F85DC2E721CFE2F500B9F74A /* BgReading+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = "BgReading+CoreDataProperties.swift"; path = "../Extensions/BgReading+CoreDataProperties.swift"; sourceTree = "<group>"; };
@ -1299,6 +1299,8 @@
F8EA6CA421B9A25B0082976B /* classes */ = {
isa = PBXGroup;
children = (
F804870A2336D90200EBDDB7 /* M5Stack+CoreDataClass.swift */,
F804870B2336D90200EBDDB7 /* M5Stack+CoreDataProperties.swift */,
F8B3A79122635A25004BA588 /* AlertEntry+CoreDataClass.swift */,
F8B3A79222635A25004BA588 /* AlertEntry+CoreDataProperties.swift */,
F8B3A78C22622953004BA588 /* AlertType+CoreDataClass.swift */,
@ -1307,8 +1309,6 @@
F85DC2E721CFE2F500B9F74A /* BgReading+CoreDataProperties.swift */,
F85DC2F021CFE3D400B9F74A /* Calibration+CoreDataClass.swift */,
F867E25D2252ADAB000FD265 /* Calibration+CoreDataProperties.swift */,
F85C4A952336C5E100D6A86F /* M5Stack+CoreDataClass.swift */,
F85C4A942336C5E100D6A86F /* M5Stack+CoreDataProperties.swift */,
F85DC2F121CFE3D400B9F74A /* Sensor+CoreDataClass.swift */,
F85DC2E921CFE2F500B9F74A /* Sensor+CoreDataProperties.swift */,
);
@ -1607,7 +1607,9 @@
F8A389CA232118E80010F405 /* M5StackDelegate.swift in Sources */,
F8B3A847227F090E004BA588 /* SettingsViewNightScoutSettingsViewModel.swift in Sources */,
F8B3A79622635A25004BA588 /* AlertEntry+CoreDataClass.swift in Sources */,
F804870C2336D90200EBDDB7 /* M5Stack+CoreDataClass.swift in Sources */,
F8AC425E21ADEBD60078C348 /* AppDelegate.swift in Sources */,
F804870D2336D90200EBDDB7 /* M5Stack+CoreDataProperties.swift in Sources */,
F821CF8E22AB090C005C1E43 /* DatePickerViewController.swift in Sources */,
F8A1585322EDB602007F5B5D /* ConstantsBloodGlucose.swift in Sources */,
F8A389C823203E3E0010F405 /* ConstantsM5Stack.swift in Sources */,
@ -1622,7 +1624,6 @@
F8025C0A21D94FD700ECF0C0 /* CBManagerState.swift in Sources */,
F8B3A80A227A3D11004BA588 /* TextsAlertTypeSettings.swift in Sources */,
F8A1586D22EDB9BE007F5B5D /* ConstantsDexcomFollower.swift in Sources */,
F85C4A962336C5E100D6A86F /* M5Stack+CoreDataClass.swift in Sources */,
F8B3A850227F26F8004BA588 /* AlertTypesSettingsViewController.swift in Sources */,
F8A7407022DBB24800967CFC /* BluconTransmitterOpCode.swift in Sources */,
F8EA6CAD21BC2CA40082976B /* BluetoothTransmitter.swift in Sources */,
@ -1668,7 +1669,6 @@
F821CF5E229BF43A005C1E43 /* BgReading+NightScout.swift in Sources */,
F8A389EB233175A10010F405 /* SettingsViewM5StackSettingsViewModel.swift in Sources */,
F85C4A9D2336D05100D6A86F /* M5StackViewController.swift in Sources */,
F85C4A972336C5E100D6A86F /* M5Stack+CoreDataProperties.swift in Sources */,
F8A54ADE22D911BA00934E7A /* AESCrypt.m in Sources */,
F8A54ADC22D911BA00934E7A /* AuthChallengeTxMessage.swift in Sources */,
F8025C1321DA683400ECF0C0 /* Data.swift in Sources */,

View File

@ -7,6 +7,8 @@ public class M5Stack: NSManagedObject {
/// create M5Stack
init(address: String, name: String, nsManagedObjectContext:NSManagedObjectContext) {
let entity = NSEntityDescription.entity(forEntityName: "M5Stack", in: nsManagedObjectContext)!
super.init(entity: entity, insertInto: nsManagedObjectContext)
self.address = address

View File

@ -55,7 +55,7 @@
<relationship name="bgreadings" toMany="YES" deletionRule="Deny" destinationEntity="BgReading" inverseName="calibration" inverseEntity="BgReading" syncable="YES"/>
<relationship name="sensor" maxCount="1" deletionRule="Nullify" destinationEntity="Sensor" inverseName="calibrations" inverseEntity="Sensor" syncable="YES"/>
</entity>
<entity name="M5Stack" representedClassName=".M5Stack" syncable="YES" codeGenerationType="class">
<entity name="M5Stack" representedClassName=".M5Stack" syncable="YES">
<attribute name="address" optional="YES" attributeType="String" syncable="YES"/>
<attribute name="blepassword" optional="YES" attributeType="String" syncable="YES"/>
<attribute name="name" optional="YES" attributeType="String" syncable="YES"/>
@ -72,7 +72,7 @@
<element name="AlertType" positionX="-657" positionY="180" width="128" height="165"/>
<element name="BgReading" positionX="-285.87109375" positionY="31.9921875" width="128" height="330"/>
<element name="Calibration" positionX="-859.21484375" positionY="46.21484375" width="128" height="285"/>
<element name="Sensor" positionX="-603.0859375" positionY="482.2890625" width="128" height="120"/>
<element name="M5Stack" positionX="-657" positionY="180" width="128" height="90"/>
<element name="Sensor" positionX="-603.0859375" positionY="482.2890625" width="128" height="120"/>
</elements>
</model>

View File

@ -336,6 +336,9 @@
<rect key="frame" x="0.0" y="20" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<connections>
<segue destination="E45-Z1-hcE" kind="relationship" relationship="rootViewController" id="T8s-QM-PHX"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="jbk-qM-hX3" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
@ -398,19 +401,145 @@
</objects>
<point key="canvasLocation" x="2582" y="565"/>
</scene>
<!--M5 Stacks Settings View Controller-->
<!--M5 Stacks View Controller-->
<scene sceneID="0Ef-2k-ynF">
<objects>
<viewController id="E45-Z1-hcE" userLabel="M5 Stacks Settings View Controller" customClass="M5StacksViewController" customModule="xdrip" customModuleProvider="target" sceneMemberID="viewController">
<viewController id="E45-Z1-hcE" userLabel="M5 Stacks View Controller" customClass="M5StacksViewController" customModule="xdrip" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="i06-al-mW1">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="dMM-nl-Zfn">
<rect key="frame" x="0.0" y="64" width="375" height="554"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="SettingsCell" textLabel="0QS-QO-ffs" detailTextLabel="Mfz-72-6g0" style="IBUITableViewCellStyleValue1" id="FCD-AT-hwi">
<rect key="frame" x="0.0" y="28" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="FCD-AT-hwi" id="FU1-LI-A2c">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="0QS-QO-ffs">
<rect key="frame" x="15" y="12" width="33.5" height="20.5"/>
<autoresizingMask key="autoresizingMask"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Detail" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Mfz-72-6g0">
<rect key="frame" x="316" y="12" width="44" height="20.5"/>
<autoresizingMask key="autoresizingMask"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
</prototypes>
</tableView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="dMM-nl-Zfn" firstAttribute="top" secondItem="EvW-JA-i05" secondAttribute="top" id="29Q-kv-s6U"/>
<constraint firstItem="EvW-JA-i05" firstAttribute="trailing" secondItem="dMM-nl-Zfn" secondAttribute="trailing" id="RW4-82-iS1"/>
<constraint firstItem="EvW-JA-i05" firstAttribute="bottom" secondItem="dMM-nl-Zfn" secondAttribute="bottom" id="eJN-bF-vxa"/>
<constraint firstItem="dMM-nl-Zfn" firstAttribute="leading" secondItem="EvW-JA-i05" secondAttribute="leading" id="tBD-7H-z2z"/>
</constraints>
<viewLayoutGuide key="safeArea" id="EvW-JA-i05"/>
</view>
<navigationItem key="navigationItem" id="RIF-ql-JYW">
<barButtonItem key="rightBarButtonItem" systemItem="add" id="r5a-yh-yig"/>
</navigationItem>
<connections>
<segue destination="FJ0-eY-Fv0" kind="show" id="BEa-Az-mem"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="ajO-AG-xfd" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="2582" y="-134"/>
</scene>
<!--Title-->
<scene sceneID="fw3-II-GI1">
<objects>
<viewController id="FJ0-eY-Fv0" customClass="M5StackViewController" customModule="xdrip" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="0Ho-lg-UtI">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="L9f-Ab-Egz">
<rect key="frame" x="20" y="93" width="49" height="39"/>
<fontDescription key="fontDescription" type="system" pointSize="22"/>
<state key="normal" title="Scan"/>
</button>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="82M-Ti-NV0">
<rect key="frame" x="0.0" y="132" width="375" height="486"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="SettingsCell" textLabel="vbi-WE-Mvc" detailTextLabel="N1U-VA-CRw" style="IBUITableViewCellStyleValue1" id="dpi-qU-2Va">
<rect key="frame" x="0.0" y="28" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="dpi-qU-2Va" id="QVR-WA-lkN">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="vbi-WE-Mvc">
<rect key="frame" x="15" y="12" width="33.5" height="20.5"/>
<autoresizingMask key="autoresizingMask"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Detail" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="N1U-VA-CRw">
<rect key="frame" x="316" y="12" width="44" height="20.5"/>
<autoresizingMask key="autoresizingMask"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
</prototypes>
</tableView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1RS-D2-mWR">
<rect key="frame" x="0.0" y="64" width="375" height="29"/>
<fontDescription key="fontDescription" type="system" pointSize="24"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WtR-0P-RyL">
<rect key="frame" x="273" y="93" width="82" height="39"/>
<fontDescription key="fontDescription" type="system" pointSize="22"/>
<state key="normal" title="Connect"/>
</button>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="1RS-D2-mWR" firstAttribute="top" secondItem="jHe-GP-4Jf" secondAttribute="top" id="3lK-sw-knt"/>
<constraint firstItem="WtR-0P-RyL" firstAttribute="top" secondItem="1RS-D2-mWR" secondAttribute="bottom" id="4wk-hA-Vwa"/>
<constraint firstItem="L9f-Ab-Egz" firstAttribute="leading" secondItem="jHe-GP-4Jf" secondAttribute="leading" constant="20" id="8zf-zJ-HsA"/>
<constraint firstItem="L9f-Ab-Egz" firstAttribute="top" secondItem="1RS-D2-mWR" secondAttribute="bottom" id="Ecq-df-Wdc"/>
<constraint firstItem="jHe-GP-4Jf" firstAttribute="trailing" secondItem="1RS-D2-mWR" secondAttribute="trailing" id="OWt-LZ-NU6"/>
<constraint firstItem="1RS-D2-mWR" firstAttribute="leading" secondItem="jHe-GP-4Jf" secondAttribute="leading" id="Vam-rI-i6T"/>
<constraint firstItem="jHe-GP-4Jf" firstAttribute="trailing" secondItem="WtR-0P-RyL" secondAttribute="trailing" constant="20" id="ed1-re-h1k"/>
<constraint firstItem="82M-Ti-NV0" firstAttribute="top" secondItem="L9f-Ab-Egz" secondAttribute="bottom" id="n9y-ia-TyG"/>
<constraint firstItem="jHe-GP-4Jf" firstAttribute="bottom" secondItem="82M-Ti-NV0" secondAttribute="bottom" id="qBc-5d-R7l"/>
<constraint firstItem="jHe-GP-4Jf" firstAttribute="trailing" secondItem="82M-Ti-NV0" secondAttribute="trailing" id="w0B-Wn-iY0"/>
<constraint firstItem="82M-Ti-NV0" firstAttribute="leading" secondItem="jHe-GP-4Jf" secondAttribute="leading" id="yg8-ad-aLX"/>
</constraints>
<viewLayoutGuide key="safeArea" id="jHe-GP-4Jf"/>
</view>
<navigationItem key="navigationItem" title="Title" id="1DE-2P-Qfh">
<rightBarButtonItems>
<barButtonItem style="done" systemItem="done" id="CUr-JD-RwV"/>
<barButtonItem systemItem="trash" id="N7o-Nz-l8g"/>
</rightBarButtonItems>
</navigationItem>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="kwG-Zz-t1q" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="3582" y="-134"/>
</scene>
<!--Alert Settings View Controller-->

View File

@ -264,6 +264,8 @@ class BluetoothTransmitter: NSObject, CBCentralManagerDelegate, CBPeripheralDele
} else {
trace(" peripheral is nil", log: log, type: .info)
}
} else {
trace(" uuid is not nil, but central.retrievePeripherals returns 0 peripherals", log: log, type: .error)
}
} else {
trace(" uuid is nil", log: log, type: .info)
@ -290,6 +292,8 @@ class BluetoothTransmitter: NSObject, CBCentralManagerDelegate, CBPeripheralDele
if peripheral.identifier.uuidString == deviceAddress {
trace(" stored address matches peripheral address, will try to connect", log: log, type: .info)
stopScanAndconnect(to: peripheral)
} else {
trace(" stored address does not match peripheral address, ignoring this device", log: log, type: .info)
}
} else {
//the app never connected before to our device
@ -302,7 +306,7 @@ class BluetoothTransmitter: NSObject, CBCentralManagerDelegate, CBPeripheralDele
stopScanAndconnect(to: peripheral)
} else {
// peripheral.name is nil or does not contain expectedName
trace(" new peripheral doesn't have device name as expected, ignoring", log: log, type: .info)
trace(" new peripheral doesn't have device name as expected, ignoring this device", log: log, type: .info)
}
} else {
// we don't expect any specific device name, so let's connect

View File

@ -1,5 +1,6 @@
import Foundation
import UIKit
/// UIViewController to show
final class M5StackViewController: UIViewController {
}

View File

@ -1,4 +1,4 @@
import Foundation
import UIKit
/// uiviewcontroller to show list of M5Stacks, first uiviewcontroller when clicking the M5Stack tab
final class M5StacksViewController: UIViewController {

View File

@ -12,11 +12,11 @@ fileprivate enum Setting:Int, CaseIterable {
case value = 2
}
/// AlertSettingsViewController and NewAlertSettingsViewController have similar functionality, ie the first is about updating an existing alertEntry, the other is about creating a new one.
/// AlertSettingsViewController and NewAlertSettingsViewController have similar functionality, ie the first is about updating an existing alertEntry, the other is about creating a new one. The class AlertSettingsViewControllerData has the common code
///
/// AlertSettingsViewController is doing a performsegue towards NewAlertSettingsViewController. That only works with different UIViewControllers (that's why it's two), but the functionality in it is 90% the same.
///
/// to avoid code duplication, all relevant code is writtein in the class AlertSettingsViewControllerData, which conforms to the protocols UITableViewDataSource, UITableViewDelegate
/// to avoid code duplication, all relevant code is written in the class AlertSettingsViewControllerData, which conforms to the protocols UITableViewDataSource, UITableViewDelegate
///
/// the classes AlertSettingsViewController and NewAlertSettingsViewController have a property of type AlertSettingsViewControllerData, and the tableView in each of them uses that property as delegate and datasource
class AlertSettingsViewControllerData: NSObject, UITableViewDataSource, UITableViewDelegate {