Commit 60bf0aab6f882c64f9d81788b59f2593d1af0c56

Authored by Imanol-Mikel Barba Sabariego
1 parent e98eb05a

--no commit message

DUREX Vendor Control/Base.lproj/DatePickerViewController_iPad.xib
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?> 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 -<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="5056" systemVersion="12F45" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES"> 2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="5056" systemVersion="13E28" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES">
3 <dependencies> 3 <dependencies>
4 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/> 4 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
5 </dependencies> 5 </dependencies>
DUREX Vendor Control/Base.lproj/EMConnectingView_iPad.xib 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="5056" systemVersion="13E28" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES">
  3 + <dependencies>
  4 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
  5 + </dependencies>
  6 + <objects>
  7 + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="EMDevicePickerViewController">
  8 + <connections>
  9 + <outlet property="activityIndicator" destination="INd-ak-4J1" id="3hG-Tj-yiW"/>
  10 + <outlet property="connectingView" destination="iN0-l3-epB" id="ivw-u1-bhK"/>
  11 + <outlet property="popoverView" destination="JwP-k7-SK7" id="QP6-X7-vJ9"/>
  12 + </connections>
  13 + </placeholder>
  14 + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
  15 + <view contentMode="scaleToFill" id="iN0-l3-epB">
  16 + <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
  17 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  18 + <subviews>
  19 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="JwP-k7-SK7">
  20 + <rect key="frame" x="234" y="450" width="300" height="123"/>
  21 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  22 + <subviews>
  23 + <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Connecting to device" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZWE-GZ-XAB">
  24 + <rect key="frame" x="34" y="15" width="232" height="43"/>
  25 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  26 + <fontDescription key="fontDescription" type="system" pointSize="22"/>
  27 + <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  28 + <nil key="highlightedColor"/>
  29 + </label>
  30 + <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="INd-ak-4J1">
  31 + <rect key="frame" x="132" y="66" width="37" height="37"/>
  32 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  33 + </activityIndicatorView>
  34 + </subviews>
  35 + <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
  36 + <constraints>
  37 + <constraint firstAttribute="height" constant="123" id="874-2o-79j"/>
  38 + <constraint firstAttribute="width" constant="300" id="k9c-2H-LjH"/>
  39 + </constraints>
  40 + </view>
  41 + </subviews>
  42 + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="calibratedRGB"/>
  43 + <constraints>
  44 + <constraint firstAttribute="centerX" secondItem="JwP-k7-SK7" secondAttribute="centerX" id="56Z-d5-N1w"/>
  45 + <constraint firstAttribute="centerY" secondItem="JwP-k7-SK7" secondAttribute="centerY" constant="0.5" id="urL-Qy-KhU"/>
  46 + </constraints>
  47 + <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/>
  48 + </view>
  49 + </objects>
  50 +</document>
DUREX Vendor Control/Base.lproj/Localizable.strings
@@ -13,29 +13,47 @@ @@ -13,29 +13,47 @@
13 "Sending a Report" = "Sending a Report"; 13 "Sending a Report" = "Sending a Report";
14 "Sensors" = "Sensors"; 14 "Sensors" = "Sensors";
15 "Commands" = "Commands"; 15 "Commands" = "Commands";
16 -"CH1 presence" = "CH1 presence";  
17 -"CH2 presence" = "CH2 presence";  
18 -"CH3 presence" = "CH3 presence";  
19 -"CH4 presence" = "CH4 presence";  
20 -"CH5 presence" = "CH5 presence";  
21 -"CH6 presence" = "CH6 presence";  
22 -"CH7 presence" = "CH7 presence";  
23 -"CH8 presence" = "CH8 presence";  
24 -"CH1 spin" = "CH1 spin";  
25 -"CH2 spin" = "CH2 spin";  
26 -"CH3 spin" = "CH3 spin";  
27 -"CH4 spin" = "CH4 spin";  
28 -"CH5 spin" = "CH5 spin";  
29 -"CH6 spin" = "CH6 spin";  
30 -"CH7 spin" = "CH7 spin";  
31 -"CH8 spin" = "CH8 spin";  
32 -"Door sensor" = "Door sensor";  
33 -"Wall sensor" = "Wall sensor";  
34 -"Oscillator" = "Oscillator";  
35 -"1€ Coin presence" = "1€ Coin presence";  
36 -"50c Coin presence" = "50c Coin presence";  
37 -"1€ Coin spin" = "1€ Coin spin";  
38 -"50c Coin spin" = "50c Coin spin"; 16 +"Channels Present" = "Channels Present";
  17 +"Channel 1" = "Channel 1";
  18 +"Channel 2" = "Channel 2";
  19 +"Channel 3" = "Channel 3";
  20 +"Channel 4" = "Channel 4";
  21 +"Channel 5" = "Channel 5";
  22 +"Channel 6" = "Channel 6";
  23 +"Channel 7" = "Channel 7";
  24 +"Channel 8" = "Channel 8";
  25 +"Channel 9" = "Channel 9";
  26 +"Channel 10" = "Channel 10";
  27 +"Channel 11" = "Channel 11";
  28 +"Channel 12" = "Channel 12";
  29 +"Channel 13" = "Channel 13";
  30 +"Channel 14" = "Channel 14";
  31 +"Channel 15" = "Channel 15";
  32 +"Channel 16" = "Channel 16";
  33 +"Product Present in Channel" = "Product Present in Channel";
  34 +"Channel Engine Status" = "Channel Engine Status";
  35 +"Door Sensor" = "Door Sensor";
  36 +"Coil Sensor" = "Coil Sensor";
  37 +"Money Collected" = "Money Collected";
  38 +"Money Given" = "Money Given";
  39 +"Products Sold" = "Products Sold";
  40 +"Product 1" = "Product 1";
  41 +"Product 2" = "Product 2";
  42 +"Product 3" = "Product 3";
  43 +"Product 4" = "Product 4";
  44 +"Product 5" = "Product 5";
  45 +"Product 6" = "Product 6";
  46 +"Product 7" = "Product 7";
  47 +"Product 8" = "Product 8";
  48 +"Product 9" = "Product 9";
  49 +"Product 10" = "Product 10";
  50 +"Product 11" = "Product 11";
  51 +"Product 12" = "Product 12";
  52 +"Product 13" = "Product 13";
  53 +"Product 14" = "Product 14";
  54 +"Product 15" = "Product 15";
  55 +"Product 16" = "Product 16";
  56 +"Change Available" = "Change Available";
39 "Sales log" = "Sales log"; 57 "Sales log" = "Sales log";
40 "Incident report" = "Incident report"; 58 "Incident report" = "Incident report";
41 "Send report" = "Send report"; 59 "Send report" = "Send report";
DUREX Vendor Control/DUREX Vendor Control.xcodeproj/project.pbxproj
@@ -10,9 +10,6 @@ @@ -10,9 +10,6 @@
10 3471866118070D9300FA0FB2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3471866018070D9300FA0FB2 /* Foundation.framework */; }; 10 3471866118070D9300FA0FB2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3471866018070D9300FA0FB2 /* Foundation.framework */; };
11 3471866318070D9300FA0FB2 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3471866218070D9300FA0FB2 /* CoreGraphics.framework */; }; 11 3471866318070D9300FA0FB2 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3471866218070D9300FA0FB2 /* CoreGraphics.framework */; };
12 3471866518070D9300FA0FB2 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3471866418070D9300FA0FB2 /* UIKit.framework */; }; 12 3471866518070D9300FA0FB2 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3471866418070D9300FA0FB2 /* UIKit.framework */; };
13 - 3471867A18070D9300FA0FB2 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3471867918070D9300FA0FB2 /* XCTest.framework */; };  
14 - 3471867B18070D9300FA0FB2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3471866018070D9300FA0FB2 /* Foundation.framework */; };  
15 - 3471867C18070D9300FA0FB2 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3471866418070D9300FA0FB2 /* UIKit.framework */; };  
16 347186A618070E7200FA0FB2 /* libEMFramework.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 347186A518070E7200FA0FB2 /* libEMFramework.a */; }; 13 347186A618070E7200FA0FB2 /* libEMFramework.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 347186A518070E7200FA0FB2 /* libEMFramework.a */; };
17 347186AC18070FAB00FA0FB2 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 347186AB18070FAB00FA0FB2 /* CoreBluetooth.framework */; }; 14 347186AC18070FAB00FA0FB2 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 347186AB18070FAB00FA0FB2 /* CoreBluetooth.framework */; };
18 34AAB883189804FF0019860D /* DUREXAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 34AAB877189804FF0019860D /* DUREXAppDelegate.m */; }; 15 34AAB883189804FF0019860D /* DUREXAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 34AAB877189804FF0019860D /* DUREXAppDelegate.m */; };
@@ -40,24 +37,14 @@ @@ -40,24 +37,14 @@
40 F98356E1192EC84700EA6821 /* MenuTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F98356E0192EC84700EA6821 /* MenuTableViewController.m */; }; 37 F98356E1192EC84700EA6821 /* MenuTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F98356E0192EC84700EA6821 /* MenuTableViewController.m */; };
41 F9A8EF7C192FE201009E7532 /* Stack.m in Sources */ = {isa = PBXBuildFile; fileRef = F9A8EF7B192FE201009E7532 /* Stack.m */; }; 38 F9A8EF7C192FE201009E7532 /* Stack.m in Sources */ = {isa = PBXBuildFile; fileRef = F9A8EF7B192FE201009E7532 /* Stack.m */; };
42 F9C77F50192CDE30002DBE8A /* system.json in Resources */ = {isa = PBXBuildFile; fileRef = F9C77F4F192CDE30002DBE8A /* system.json */; }; 39 F9C77F50192CDE30002DBE8A /* system.json in Resources */ = {isa = PBXBuildFile; fileRef = F9C77F4F192CDE30002DBE8A /* system.json */; };
  40 + F9E4D8FD19B8FD32009A7359 /* EMConnectingView_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = F9E4D8FF19B8FD32009A7359 /* EMConnectingView_iPad.xib */; };
43 /* End PBXBuildFile section */ 41 /* End PBXBuildFile section */
44 42
45 -/* Begin PBXContainerItemProxy section */  
46 - 3471867D18070D9300FA0FB2 /* PBXContainerItemProxy */ = {  
47 - isa = PBXContainerItemProxy;  
48 - containerPortal = 3471865518070D9300FA0FB2 /* Project object */;  
49 - proxyType = 1;  
50 - remoteGlobalIDString = 3471865C18070D9300FA0FB2;  
51 - remoteInfo = TestAppExample;  
52 - };  
53 -/* End PBXContainerItemProxy section */  
54 -  
55 /* Begin PBXFileReference section */ 43 /* Begin PBXFileReference section */
56 3471865D18070D9300FA0FB2 /* DUREX Vendor Control.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "DUREX Vendor Control.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 44 3471865D18070D9300FA0FB2 /* DUREX Vendor Control.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "DUREX Vendor Control.app"; sourceTree = BUILT_PRODUCTS_DIR; };
57 3471866018070D9300FA0FB2 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 45 3471866018070D9300FA0FB2 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
58 3471866218070D9300FA0FB2 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 46 3471866218070D9300FA0FB2 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
59 3471866418070D9300FA0FB2 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 47 3471866418070D9300FA0FB2 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
60 - 3471867818070D9300FA0FB2 /* DUREX Vendor ControlTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "DUREX Vendor ControlTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };  
61 3471867918070D9300FA0FB2 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 48 3471867918070D9300FA0FB2 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
62 3471869118070E6500FA0FB2 /* EMBluetoothLowEnergyConnectionType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EMBluetoothLowEnergyConnectionType.h; sourceTree = "<group>"; }; 49 3471869118070E6500FA0FB2 /* EMBluetoothLowEnergyConnectionType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EMBluetoothLowEnergyConnectionType.h; sourceTree = "<group>"; };
63 3471869218070E6500FA0FB2 /* EMChecksum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EMChecksum.h; sourceTree = "<group>"; }; 50 3471869218070E6500FA0FB2 /* EMChecksum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EMChecksum.h; sourceTree = "<group>"; };
@@ -131,6 +118,9 @@ @@ -131,6 +118,9 @@
131 F9A8EF7A192FE201009E7532 /* Stack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Stack.h; sourceTree = SOURCE_ROOT; }; 118 F9A8EF7A192FE201009E7532 /* Stack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Stack.h; sourceTree = SOURCE_ROOT; };
132 F9A8EF7B192FE201009E7532 /* Stack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Stack.m; sourceTree = SOURCE_ROOT; }; 119 F9A8EF7B192FE201009E7532 /* Stack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Stack.m; sourceTree = SOURCE_ROOT; };
133 F9C77F4F192CDE30002DBE8A /* system.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = system.json; sourceTree = SOURCE_ROOT; }; 120 F9C77F4F192CDE30002DBE8A /* system.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = system.json; sourceTree = SOURCE_ROOT; };
  121 + F9E4D8FE19B8FD32009A7359 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/EMConnectingView_iPad.xib; sourceTree = "<group>"; };
  122 + F9E4D90119B8FD36009A7359 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/EMConnectingView_iPad.strings; sourceTree = "<group>"; };
  123 + F9E4D90319B8FD37009A7359 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/EMConnectingView_iPad.strings; sourceTree = "<group>"; };
134 /* End PBXFileReference section */ 124 /* End PBXFileReference section */
135 125
136 /* Begin PBXFrameworksBuildPhase section */ 126 /* Begin PBXFrameworksBuildPhase section */
@@ -146,16 +136,6 @@ @@ -146,16 +136,6 @@
146 ); 136 );
147 runOnlyForDeploymentPostprocessing = 0; 137 runOnlyForDeploymentPostprocessing = 0;
148 }; 138 };
149 - 3471867518070D9300FA0FB2 /* Frameworks */ = {  
150 - isa = PBXFrameworksBuildPhase;  
151 - buildActionMask = 2147483647;  
152 - files = (  
153 - 3471867A18070D9300FA0FB2 /* XCTest.framework in Frameworks */,  
154 - 3471867C18070D9300FA0FB2 /* UIKit.framework in Frameworks */,  
155 - 3471867B18070D9300FA0FB2 /* Foundation.framework in Frameworks */,  
156 - );  
157 - runOnlyForDeploymentPostprocessing = 0;  
158 - };  
159 /* End PBXFrameworksBuildPhase section */ 139 /* End PBXFrameworksBuildPhase section */
160 140
161 /* Begin PBXGroup section */ 141 /* Begin PBXGroup section */
@@ -172,7 +152,6 @@ @@ -172,7 +152,6 @@
172 isa = PBXGroup; 152 isa = PBXGroup;
173 children = ( 153 children = (
174 3471865D18070D9300FA0FB2 /* DUREX Vendor Control.app */, 154 3471865D18070D9300FA0FB2 /* DUREX Vendor Control.app */,
175 - 3471867818070D9300FA0FB2 /* DUREX Vendor ControlTests.xctest */,  
176 ); 155 );
177 name = Products; 156 name = Products;
178 sourceTree = "<group>"; 157 sourceTree = "<group>";
@@ -258,6 +237,7 @@ @@ -258,6 +237,7 @@
258 isa = PBXGroup; 237 isa = PBXGroup;
259 children = ( 238 children = (
260 F961D81B199A711300E9282C /* EMConnectingView.xib */, 239 F961D81B199A711300E9282C /* EMConnectingView.xib */,
  240 + F9E4D8FF19B8FD32009A7359 /* EMConnectingView_iPad.xib */,
261 34AAB879189804FF0019860D /* EMDevicePickerViewController.h */, 241 34AAB879189804FF0019860D /* EMDevicePickerViewController.h */,
262 34AAB87A189804FF0019860D /* EMDevicePickerViewController.m */, 242 34AAB87A189804FF0019860D /* EMDevicePickerViewController.m */,
263 ); 243 );
@@ -334,24 +314,6 @@ @@ -334,24 +314,6 @@
334 productReference = 3471865D18070D9300FA0FB2 /* DUREX Vendor Control.app */; 314 productReference = 3471865D18070D9300FA0FB2 /* DUREX Vendor Control.app */;
335 productType = "com.apple.product-type.application"; 315 productType = "com.apple.product-type.application";
336 }; 316 };
337 - 3471867718070D9300FA0FB2 /* DUREX Vendor ControlTests */ = {  
338 - isa = PBXNativeTarget;  
339 - buildConfigurationList = 3471868C18070D9300FA0FB2 /* Build configuration list for PBXNativeTarget "DUREX Vendor ControlTests" */;  
340 - buildPhases = (  
341 - 3471867418070D9300FA0FB2 /* Sources */,  
342 - 3471867518070D9300FA0FB2 /* Frameworks */,  
343 - 3471867618070D9300FA0FB2 /* Resources */,  
344 - );  
345 - buildRules = (  
346 - );  
347 - dependencies = (  
348 - 3471867E18070D9300FA0FB2 /* PBXTargetDependency */,  
349 - );  
350 - name = "DUREX Vendor ControlTests";  
351 - productName = TestAppExampleTests;  
352 - productReference = 3471867818070D9300FA0FB2 /* DUREX Vendor ControlTests.xctest */;  
353 - productType = "com.apple.product-type.bundle.unit-test";  
354 - };  
355 /* End PBXNativeTarget section */ 317 /* End PBXNativeTarget section */
356 318
357 /* Begin PBXProject section */ 319 /* Begin PBXProject section */
@@ -361,11 +323,6 @@ @@ -361,11 +323,6 @@
361 CLASSPREFIX = EM; 323 CLASSPREFIX = EM;
362 LastUpgradeCheck = 0510; 324 LastUpgradeCheck = 0510;
363 ORGANIZATIONNAME = Emmoco; 325 ORGANIZATIONNAME = Emmoco;
364 - TargetAttributes = {  
365 - 3471867718070D9300FA0FB2 = {  
366 - TestTargetID = 3471865C18070D9300FA0FB2;  
367 - };  
368 - };  
369 }; 326 };
370 buildConfigurationList = 3471865818070D9300FA0FB2 /* Build configuration list for PBXProject "DUREX Vendor Control" */; 327 buildConfigurationList = 3471865818070D9300FA0FB2 /* Build configuration list for PBXProject "DUREX Vendor Control" */;
371 compatibilityVersion = "Xcode 3.2"; 328 compatibilityVersion = "Xcode 3.2";
@@ -382,7 +339,6 @@ @@ -382,7 +339,6 @@
382 projectRoot = ""; 339 projectRoot = "";
383 targets = ( 340 targets = (
384 3471865C18070D9300FA0FB2 /* DUREX Vendor Control */, 341 3471865C18070D9300FA0FB2 /* DUREX Vendor Control */,
385 - 3471867718070D9300FA0FB2 /* DUREX Vendor ControlTests */,  
386 ); 342 );
387 }; 343 };
388 /* End PBXProject section */ 344 /* End PBXProject section */
@@ -394,6 +350,7 @@ @@ -394,6 +350,7 @@
394 files = ( 350 files = (
395 F97B90CC19B859F500DDA9EF /* icon_delete.png in Resources */, 351 F97B90CC19B859F500DDA9EF /* icon_delete.png in Resources */,
396 F9015D9019B73052006C7882 /* DatePickerViewController.xib in Resources */, 352 F9015D9019B73052006C7882 /* DatePickerViewController.xib in Resources */,
  353 + F9E4D8FD19B8FD32009A7359 /* EMConnectingView_iPad.xib in Resources */,
397 F98356D8192E906600EA6821 /* bluetooth.png in Resources */, 354 F98356D8192E906600EA6821 /* bluetooth.png in Resources */,
398 F9015D9719B7305E006C7882 /* DatePickerViewController_iPad.xib in Resources */, 355 F9015D9719B7305E006C7882 /* DatePickerViewController_iPad.xib in Resources */,
399 F961D819199A711300E9282C /* EMConnectingView.xib in Resources */, 356 F961D819199A711300E9282C /* EMConnectingView.xib in Resources */,
@@ -410,13 +367,6 @@ @@ -410,13 +367,6 @@
410 ); 367 );
411 runOnlyForDeploymentPostprocessing = 0; 368 runOnlyForDeploymentPostprocessing = 0;
412 }; 369 };
413 - 3471867618070D9300FA0FB2 /* Resources */ = {  
414 - isa = PBXResourcesBuildPhase;  
415 - buildActionMask = 2147483647;  
416 - files = (  
417 - );  
418 - runOnlyForDeploymentPostprocessing = 0;  
419 - };  
420 /* End PBXResourcesBuildPhase section */ 370 /* End PBXResourcesBuildPhase section */
421 371
422 /* Begin PBXSourcesBuildPhase section */ 372 /* Begin PBXSourcesBuildPhase section */
@@ -437,23 +387,8 @@ @@ -437,23 +387,8 @@
437 ); 387 );
438 runOnlyForDeploymentPostprocessing = 0; 388 runOnlyForDeploymentPostprocessing = 0;
439 }; 389 };
440 - 3471867418070D9300FA0FB2 /* Sources */ = {  
441 - isa = PBXSourcesBuildPhase;  
442 - buildActionMask = 2147483647;  
443 - files = (  
444 - );  
445 - runOnlyForDeploymentPostprocessing = 0;  
446 - };  
447 /* End PBXSourcesBuildPhase section */ 390 /* End PBXSourcesBuildPhase section */
448 391
449 -/* Begin PBXTargetDependency section */  
450 - 3471867E18070D9300FA0FB2 /* PBXTargetDependency */ = {  
451 - isa = PBXTargetDependency;  
452 - target = 3471865C18070D9300FA0FB2 /* DUREX Vendor Control */;  
453 - targetProxy = 3471867D18070D9300FA0FB2 /* PBXContainerItemProxy */;  
454 - };  
455 -/* End PBXTargetDependency section */  
456 -  
457 /* Begin PBXVariantGroup section */ 392 /* Begin PBXVariantGroup section */
458 F9015D9219B73052006C7882 /* DatePickerViewController.xib */ = { 393 F9015D9219B73052006C7882 /* DatePickerViewController.xib */ = {
459 isa = PBXVariantGroup; 394 isa = PBXVariantGroup;
@@ -557,6 +492,16 @@ @@ -557,6 +492,16 @@
557 path = FirstAppExample; 492 path = FirstAppExample;
558 sourceTree = SOURCE_ROOT; 493 sourceTree = SOURCE_ROOT;
559 }; 494 };
  495 + F9E4D8FF19B8FD32009A7359 /* EMConnectingView_iPad.xib */ = {
  496 + isa = PBXVariantGroup;
  497 + children = (
  498 + F9E4D8FE19B8FD32009A7359 /* Base */,
  499 + F9E4D90119B8FD36009A7359 /* en */,
  500 + F9E4D90319B8FD37009A7359 /* es */,
  501 + );
  502 + name = EMConnectingView_iPad.xib;
  503 + sourceTree = SOURCE_ROOT;
  504 + };
560 /* End PBXVariantGroup section */ 505 /* End PBXVariantGroup section */
561 506
562 /* Begin XCBuildConfiguration section */ 507 /* Begin XCBuildConfiguration section */
@@ -672,46 +617,6 @@ @@ -672,46 +617,6 @@
672 }; 617 };
673 name = Release; 618 name = Release;
674 }; 619 };
675 - 3471868D18070D9300FA0FB2 /* Debug */ = {  
676 - isa = XCBuildConfiguration;  
677 - buildSettings = {  
678 - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/TestAppExample.app/TestAppExample";  
679 - FRAMEWORK_SEARCH_PATHS = (  
680 - "$(SDKROOT)/Developer/Library/Frameworks",  
681 - "$(inherited)",  
682 - "$(DEVELOPER_FRAMEWORKS_DIR)",  
683 - );  
684 - GCC_PRECOMPILE_PREFIX_HEADER = YES;  
685 - GCC_PREFIX_HEADER = "TestAppExample/TestAppExample-Prefix.pch";  
686 - GCC_PREPROCESSOR_DEFINITIONS = (  
687 - "DEBUG=1",  
688 - "$(inherited)",  
689 - );  
690 - INFOPLIST_FILE = "TestAppExampleTests/FirstAppTests-Info.plist";  
691 - PRODUCT_NAME = "DUREX Vendor ControlTests";  
692 - TEST_HOST = "$(BUNDLE_LOADER)";  
693 - WRAPPER_EXTENSION = xctest;  
694 - };  
695 - name = Debug;  
696 - };  
697 - 3471868E18070D9300FA0FB2 /* Release */ = {  
698 - isa = XCBuildConfiguration;  
699 - buildSettings = {  
700 - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/TestAppExample.app/TestAppExample";  
701 - FRAMEWORK_SEARCH_PATHS = (  
702 - "$(SDKROOT)/Developer/Library/Frameworks",  
703 - "$(inherited)",  
704 - "$(DEVELOPER_FRAMEWORKS_DIR)",  
705 - );  
706 - GCC_PRECOMPILE_PREFIX_HEADER = YES;  
707 - GCC_PREFIX_HEADER = "TestAppExample/TestAppExample-Prefix.pch";  
708 - INFOPLIST_FILE = "TestAppExampleTests/FirstAppTests-Info.plist";  
709 - PRODUCT_NAME = "DUREX Vendor ControlTests";  
710 - TEST_HOST = "$(BUNDLE_LOADER)";  
711 - WRAPPER_EXTENSION = xctest;  
712 - };  
713 - name = Release;  
714 - };  
715 /* End XCBuildConfiguration section */ 620 /* End XCBuildConfiguration section */
716 621
717 /* Begin XCConfigurationList section */ 622 /* Begin XCConfigurationList section */
@@ -733,15 +638,6 @@ @@ -733,15 +638,6 @@
733 defaultConfigurationIsVisible = 0; 638 defaultConfigurationIsVisible = 0;
734 defaultConfigurationName = Release; 639 defaultConfigurationName = Release;
735 }; 640 };
736 - 3471868C18070D9300FA0FB2 /* Build configuration list for PBXNativeTarget "DUREX Vendor ControlTests" */ = {  
737 - isa = XCConfigurationList;  
738 - buildConfigurations = (  
739 - 3471868D18070D9300FA0FB2 /* Debug */,  
740 - 3471868E18070D9300FA0FB2 /* Release */,  
741 - );  
742 - defaultConfigurationIsVisible = 0;  
743 - defaultConfigurationName = Release;  
744 - };  
745 /* End XCConfigurationList section */ 641 /* End XCConfigurationList section */
746 }; 642 };
747 rootObject = 3471865518070D9300FA0FB2 /* Project object */; 643 rootObject = 3471865518070D9300FA0FB2 /* Project object */;
DUREX Vendor Control/DUREX Vendor Control.xcodeproj/project.xcworkspace/xcuserdata/imanol.xcuserdatad/UserInterfaceState.xcuserstate
No preview for this file type
DUREX Vendor Control/DUREX Vendor Control.xcodeproj/xcuserdata/imanol.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -67,5 +67,21 @@ @@ -67,5 +67,21 @@
67 landmarkType = "5"> 67 landmarkType = "5">
68 </BreakpointContent> 68 </BreakpointContent>
69 </BreakpointProxy> 69 </BreakpointProxy>
  70 + <BreakpointProxy
  71 + BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
  72 + <BreakpointContent
  73 + shouldBeEnabled = "No"
  74 + ignoreCount = "0"
  75 + continueAfterRunningActions = "No"
  76 + filePath = "FirstAppExample/EMDevicePickerViewController.m"
  77 + timestampString = "431555215.246709"
  78 + startingColumnNumber = "9223372036854775807"
  79 + endingColumnNumber = "9223372036854775807"
  80 + startingLineNumber = "107"
  81 + endingLineNumber = "107"
  82 + landmarkName = "-tableView:didSelectRowAtIndexPath:"
  83 + landmarkType = "5">
  84 + </BreakpointContent>
  85 + </BreakpointProxy>
70 </Breakpoints> 86 </Breakpoints>
71 </Bucket> 87 </Bucket>
DUREX Vendor Control/FirstAppExample/Base.lproj/MainStoryboard.storyboard
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?> 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5056" systemVersion="12F45" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="kWw-Rk-wD6"> 2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5056" systemVersion="13E28" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="kWw-Rk-wD6">
3 <dependencies> 3 <dependencies>
4 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/> 4 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
5 </dependencies> 5 </dependencies>
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 <!--Device Picker View Controller - Select device--> 7 <!--Device Picker View Controller - Select device-->
8 <scene sceneID="ZOj-VY-rze"> 8 <scene sceneID="ZOj-VY-rze">
9 <objects> 9 <objects>
  10 + <placeholder placeholderIdentifier="IBFirstResponder" id="MD6-l6-Rrg" userLabel="First Responder" sceneMemberID="firstResponder"/>
10 <tableViewController id="0dd-lZ-pDC" customClass="EMDevicePickerViewController" sceneMemberID="viewController"> 11 <tableViewController id="0dd-lZ-pDC" customClass="EMDevicePickerViewController" sceneMemberID="viewController">
11 <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="jWc-kM-kFO"> 12 <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="jWc-kM-kFO">
12 <rect key="frame" x="0.0" y="0.0" width="320" height="568"/> 13 <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
@@ -48,7 +49,6 @@ @@ -48,7 +49,6 @@
48 <segue destination="iNx-eR-wSX" kind="push" identifier="ConnectionSegue" id="3oK-BK-2Qs"/> 49 <segue destination="iNx-eR-wSX" kind="push" identifier="ConnectionSegue" id="3oK-BK-2Qs"/>
49 </connections> 50 </connections>
50 </tableViewController> 51 </tableViewController>
51 - <placeholder placeholderIdentifier="IBFirstResponder" id="MD6-l6-Rrg" userLabel="First Responder" sceneMemberID="firstResponder"/>  
52 </objects> 52 </objects>
53 <point key="canvasLocation" x="342" y="-9"/> 53 <point key="canvasLocation" x="342" y="-9"/>
54 </scene> 54 </scene>
DUREX Vendor Control/FirstAppExample/EMDevicePickerViewController.m
@@ -20,6 +20,7 @@ @@ -20,6 +20,7 @@
20 20
21 @implementation EMDevicePickerViewController 21 @implementation EMDevicePickerViewController
22 22
  23 +
23 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 24 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
24 { 25 {
25 self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 26 self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
@@ -33,24 +34,28 @@ @@ -33,24 +34,28 @@
33 - (void)viewDidLoad 34 - (void)viewDidLoad
34 { 35 {
35 [super viewDidLoad]; 36 [super viewDidLoad];
36 - [[NSBundle mainBundle] loadNibNamed:@"EMConnectingView" owner:self options:nil];  
37 - [[[self popoverView] layer] setCornerRadius:10.0f];  
38 - [[self connectingView] setHidden:YES];  
39 - [[self connectingView] setFrame:[[self view] bounds]];  
40 - [[self view] addSubview:[self connectingView]];  
41 [[EMConnectionListManager sharedManager] addObserver:self forKeyPath:@"devices" options:0 context:NULL]; 37 [[EMConnectionListManager sharedManager] addObserver:self forKeyPath:@"devices" options:0 context:NULL];
42 } 38 }
43 39
44 -(void)_showConnectingView 40 -(void)_showConnectingView
45 { 41 {
  42 + if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
  43 + {
  44 + [[NSBundle mainBundle] loadNibNamed:@"EMConnectingView_iPad" owner:self options:nil];
  45 + }
  46 + else
  47 + {
  48 + [[NSBundle mainBundle] loadNibNamed:@"EMConnectingView" owner:self options:nil];
  49 + }
  50 + [[[self popoverView] layer] setCornerRadius:10.0f];
  51 + [[self view] addSubview:[self connectingView]];
46 [[self activityIndicator] startAnimating]; 52 [[self activityIndicator] startAnimating];
47 - [[self connectingView] setHidden:NO];  
48 } 53 }
49 54
50 -(void)_hideConnectingView 55 -(void)_hideConnectingView
51 { 56 {
52 [[self activityIndicator] stopAnimating]; 57 [[self activityIndicator] stopAnimating];
53 - [[self connectingView] setHidden:YES]; 58 + [[self connectingView] removeFromSuperview];
54 } 59 }
55 60
56 -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 61 -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
DUREX Vendor Control/MenuTableViewController.h
@@ -20,8 +20,8 @@ @@ -20,8 +20,8 @@
20 #define MENU_CELLS_PER_SECTION num(3) 20 #define MENU_CELLS_PER_SECTION num(3)
21 #define MENU_HEADERS nil 21 #define MENU_HEADERS nil
22 22
23 -#define MAINTENANCE_ELEMENTS @"CH1 presence",@"CH2 presence",@"CH3 presence",@"CH4 presence",@"CH5 presence",@"CH6 presence",@"CH7 presence",@"CH8 presence",@"CH1 spin",@"CH2 spin",@"CH3 spin",@"CH4 spin",@"CH5 spin",@"CH6 spin",@"CH7 spin",@"CH8 spin",@"Door sensor",@"Wall sensor",@"Oscillator",@"1€ Coin presence",@"50c Coin presence",@"1€ Coin spin",@"50c Coin spin",@"Sales log",@"Incident report",@"Send report"  
24 -#define MAINTENANCE_CELLS_PER_SECTION num(23),num(3) 23 +#define MAINTENANCE_ELEMENTS @"Channels Present",@"Product Present in Channel",@"Channel Engine Status",@"Door Sensor",@"Coil sensor",@"Money Collected",@"10€ Notes",@"5€ Notes",@"2€ Coins",@"1€ Coins",@"50c Coins",@"Money given",@"10€ Notes",@"5€ Notes",@"2€ Coins",@"1€ Coins",@"50c Coins",@"Products Sold",@"Change Available",@"1€ Coins",@"50c Coins",@"Sales log",@"Incident report",@"Send report"
  24 +#define MAINTENANCE_CELLS_PER_SECTION num(21),num(3)
25 #define MAINTENANCE_HEADERS NSLocalizedString(@"Sensors", nil),NSLocalizedString(@"Commands", nil) 25 #define MAINTENANCE_HEADERS NSLocalizedString(@"Sensors", nil),NSLocalizedString(@"Commands", nil)
26 26
27 #define SALES_ELEMENTS @"20€ Notes",@"10€ Notes",@"5€ Notes",@"2€ Coins",@"1€ Coins",@"50c Coins",@"Channel",@"Product Code",@"Nominal Price",@"Discounted Price",@"1€ Change",@"50c Change",@"20€ Notes",@"10€ Notes",@"5€ Notes",@"2€ Coins",@"1€ Coins",@"50c Coins",@"Channel",@"Product Code",@"Nominal Price",@"Discounted Price",@"1€ Change",@"50c Change",@"20€ Notes",@"10€ Notes",@"5€ Notes",@"2€ Coins",@"1€ Coins",@"50c Coins",@"Channel",@"Product Code",@"Nominal Price",@"Discounted Price",@"1€ Change",@"50c Change" 27 #define SALES_ELEMENTS @"20€ Notes",@"10€ Notes",@"5€ Notes",@"2€ Coins",@"1€ Coins",@"50c Coins",@"Channel",@"Product Code",@"Nominal Price",@"Discounted Price",@"1€ Change",@"50c Change",@"20€ Notes",@"10€ Notes",@"5€ Notes",@"2€ Coins",@"1€ Coins",@"50c Coins",@"Channel",@"Product Code",@"Nominal Price",@"Discounted Price",@"1€ Change",@"50c Change",@"20€ Notes",@"10€ Notes",@"5€ Notes",@"2€ Coins",@"1€ Coins",@"50c Coins",@"Channel",@"Product Code",@"Nominal Price",@"Discounted Price",@"1€ Change",@"50c Change"
DUREX Vendor Control/en.lproj/EMConnectingView_iPad.strings 0 → 100644
  1 +
  2 +/* Class = "IBUILabel"; text = "Connecting to device"; ObjectID = "ZWE-GZ-XAB"; */
  3 +"ZWE-GZ-XAB.text" = "Connecting to device";
DUREX Vendor Control/en.lproj/Localizable.strings
@@ -13,29 +13,47 @@ @@ -13,29 +13,47 @@
13 "Sending a Report" = "Sending a Report"; 13 "Sending a Report" = "Sending a Report";
14 "Sensors" = "Sensors"; 14 "Sensors" = "Sensors";
15 "Commands" = "Commands"; 15 "Commands" = "Commands";
16 -"CH1 presence" = "CH1 presence";  
17 -"CH2 presence" = "CH2 presence";  
18 -"CH3 presence" = "CH3 presence";  
19 -"CH4 presence" = "CH4 presence";  
20 -"CH5 presence" = "CH5 presence";  
21 -"CH6 presence" = "CH6 presence";  
22 -"CH7 presence" = "CH7 presence";  
23 -"CH8 presence" = "CH8 presence";  
24 -"CH1 spin" = "CH1 spin";  
25 -"CH2 spin" = "CH2 spin";  
26 -"CH3 spin" = "CH3 spin";  
27 -"CH4 spin" = "CH4 spin";  
28 -"CH5 spin" = "CH5 spin";  
29 -"CH6 spin" = "CH6 spin";  
30 -"CH7 spin" = "CH7 spin";  
31 -"CH8 spin" = "CH8 spin";  
32 -"Door sensor" = "Door sensor";  
33 -"Wall sensor" = "Wall sensor";  
34 -"Oscillator" = "Oscillator";  
35 -"1€ Coin presence" = "1€ Coin presence";  
36 -"50c Coin presence" = "50c Coin presence";  
37 -"1€ Coin spin" = "1€ Coin spin";  
38 -"50c Coin spin" = "50c Coin spin"; 16 +"Channels Present" = "Channels Present";
  17 +"Channel 1" = "Channel 1";
  18 +"Channel 2" = "Channel 2";
  19 +"Channel 3" = "Channel 3";
  20 +"Channel 4" = "Channel 4";
  21 +"Channel 5" = "Channel 5";
  22 +"Channel 6" = "Channel 6";
  23 +"Channel 7" = "Channel 7";
  24 +"Channel 8" = "Channel 8";
  25 +"Channel 9" = "Channel 9";
  26 +"Channel 10" = "Channel 10";
  27 +"Channel 11" = "Channel 11";
  28 +"Channel 12" = "Channel 12";
  29 +"Channel 13" = "Channel 13";
  30 +"Channel 14" = "Channel 14";
  31 +"Channel 15" = "Channel 15";
  32 +"Channel 16" = "Channel 16";
  33 +"Product Present in Channel" = "Product Present in Channel";
  34 +"Channel Engine Status" = "Channel Engine Status";
  35 +"Door Sensor" = "Door Sensor";
  36 +"Coil Sensor" = "Coil Sensor";
  37 +"Money Collected" = "Money Collected";
  38 +"Money Given" = "Money Given";
  39 +"Products Sold" = "Products Sold";
  40 +"Product 1" = "Product 1";
  41 +"Product 2" = "Product 2";
  42 +"Product 3" = "Product 3";
  43 +"Product 4" = "Product 4";
  44 +"Product 5" = "Product 5";
  45 +"Product 6" = "Product 6";
  46 +"Product 7" = "Product 7";
  47 +"Product 8" = "Product 8";
  48 +"Product 9" = "Product 9";
  49 +"Product 10" = "Product 10";
  50 +"Product 11" = "Product 11";
  51 +"Product 12" = "Product 12";
  52 +"Product 13" = "Product 13";
  53 +"Product 14" = "Product 14";
  54 +"Product 15" = "Product 15";
  55 +"Product 16" = "Product 16";
  56 +"Change Available" = "Change Available";
39 "Sales log" = "Sales log"; 57 "Sales log" = "Sales log";
40 "Incident report" = "Incident report"; 58 "Incident report" = "Incident report";
41 "Send report" = "Send report"; 59 "Send report" = "Send report";
DUREX Vendor Control/es.lproj/EMConnectingView_iPad.strings 0 → 100644
  1 +
  2 +/* Class = "IBUILabel"; text = "Connecting to device"; ObjectID = "ZWE-GZ-XAB"; */
  3 +"ZWE-GZ-XAB.text" = "Realizando conexión";
DUREX Vendor Control/es.lproj/Localizable.strings
@@ -13,29 +13,47 @@ @@ -13,29 +13,47 @@
13 "Sending a Report" = "Mandar un Informe"; 13 "Sending a Report" = "Mandar un Informe";
14 "Sensors" = "Sensores"; 14 "Sensors" = "Sensores";
15 "Commands" = "Comandos"; 15 "Commands" = "Comandos";
16 -"CH1 presence" = "Presencia CH1";  
17 -"CH2 presence" = "Presencia CH2";  
18 -"CH3 presence" = "Presencia CH3";  
19 -"CH4 presence" = "Presencia CH4";  
20 -"CH5 presence" = "Presencia CH5";  
21 -"CH6 presence" = "Presencia CH6";  
22 -"CH7 presence" = "Presencia CH7";  
23 -"CH8 presence" = "Presencia CH8";  
24 -"CH1 spin" = "Giro CH1";  
25 -"CH2 spin" = "Giro CH2";  
26 -"CH3 spin" = "Giro CH3";  
27 -"CH4 spin" = "Giro CH4";  
28 -"CH5 spin" = "Giro CH5";  
29 -"CH6 spin" = "Giro CH6";  
30 -"CH7 spin" = "Giro CH7";  
31 -"CH8 spin" = "Giro CH8";  
32 -"Door sensor" = "Sensor de puerta";  
33 -"Wall sensor" = "Sensor de pared";  
34 -"Oscillator" = "Oscilador";  
35 -"1€ Coin presence" = "Presencia 1€";  
36 -"50c Coin presence" = "Presencia 50c";  
37 -"1€ Coin spin" = "Giro 1€";  
38 -"50c Coin spin" = "Giro 50c"; 16 +"Channels Present" = "Canales presentes";
  17 +"Channel 1" = "Canal 1";
  18 +"Channel 2" = "Canal 2";
  19 +"Channel 3" = "Canal 3";
  20 +"Channel 4" = "Canal 4";
  21 +"Channel 5" = "Canal 5";
  22 +"Channel 6" = "Canal 6";
  23 +"Channel 7" = "Canal 7";
  24 +"Channel 8" = "Canal 8";
  25 +"Channel 9" = "Canal 9";
  26 +"Channel 10" = "Canal 10";
  27 +"Channel 11" = "Canal 11";
  28 +"Channel 12" = "Canal 12";
  29 +"Channel 13" = "Canal 13";
  30 +"Channel 14" = "Canal 14";
  31 +"Channel 15" = "Canal 15";
  32 +"Channel 16" = "Canal 16";
  33 +"Product Present in Channel" = "Producto presente en el canal";
  34 +"Channel Engine Status" = "Estado de los motores";
  35 +"Door Sensor" = "Sensor de puerta";
  36 +"Coil Sensor" = "Sensor de bobina";
  37 +"Money Collected" = "Recaudación efectuada";
  38 +"Money Given" = "Efectivo devuelto";
  39 +"Products Sold" = "Productos vendidos";
  40 +"Product 1" = "Producto 1";
  41 +"Product 2" = "Producto 2";
  42 +"Product 3" = "Producto 3";
  43 +"Product 4" = "Producto 4";
  44 +"Product 5" = "Producto 5";
  45 +"Product 6" = "Producto 6";
  46 +"Product 7" = "Producto 7";
  47 +"Product 8" = "Producto 8";
  48 +"Product 9" = "Producto 9";
  49 +"Product 10" = "Producto 10";
  50 +"Product 11" = "Producto 11";
  51 +"Product 12" = "Producto 12";
  52 +"Product 13" = "Producto 13";
  53 +"Product 14" = "Producto 14";
  54 +"Product 15" = "Producto 15";
  55 +"Product 16" = "Producto 16";
  56 +"Change Available" = "Cambio disponible";
39 "Sales log" = "Registro de ventas"; 57 "Sales log" = "Registro de ventas";
40 "Incident report" = "Registro de incidencias"; 58 "Incident report" = "Registro de incidencias";
41 "Send report" = "Mandar informe"; 59 "Send report" = "Mandar informe";
DUREX tests/Base.lproj/PriceChangerViewController.xib
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?> 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="5056" systemVersion="12F45" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES"> 2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="5056" systemVersion="13E28" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
3 <dependencies> 3 <dependencies>
4 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/> 4 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
5 </dependencies> 5 </dependencies>
@@ -18,49 +18,58 @@ @@ -18,49 +18,58 @@
18 <rect key="frame" x="0.0" y="0.0" width="320" height="568"/> 18 <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
19 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 19 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
20 <subviews> 20 <subviews>
21 - <view contentMode="scaleToFill" ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="lVw-3e-AU5">  
22 - <rect key="frame" x="7" y="118" width="307" height="181"/> 21 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="lVw-3e-AU5">
  22 + <rect key="frame" x="7" y="193" width="307" height="181"/>
23 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 23 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
24 <subviews> 24 <subviews>
25 - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="u9j-qH-tMP"> 25 + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="u9j-qH-tMP">
26 <rect key="frame" x="190" y="20" width="97" height="30"/> 26 <rect key="frame" x="190" y="20" width="97" height="30"/>
27 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 27 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  28 + <constraints>
  29 + <constraint firstAttribute="width" constant="97" id="xc0-bD-AX2"/>
  30 + </constraints>
28 <fontDescription key="fontDescription" type="system" pointSize="14"/> 31 <fontDescription key="fontDescription" type="system" pointSize="14"/>
29 <textInputTraits key="textInputTraits"/> 32 <textInputTraits key="textInputTraits"/>
30 </textField> 33 </textField>
31 - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="ues-3Z-2xO"> 34 + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="ues-3Z-2xO">
32 <rect key="frame" x="190" y="59" width="97" height="30"/> 35 <rect key="frame" x="190" y="59" width="97" height="30"/>
33 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 36 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  37 + <constraints>
  38 + <constraint firstAttribute="width" constant="97" id="t1R-PZ-6yo"/>
  39 + </constraints>
34 <fontDescription key="fontDescription" type="system" pointSize="14"/> 40 <fontDescription key="fontDescription" type="system" pointSize="14"/>
35 <textInputTraits key="textInputTraits"/> 41 <textInputTraits key="textInputTraits"/>
36 </textField> 42 </textField>
37 - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="wCx-oE-aK9"> 43 + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="wCx-oE-aK9">
38 <rect key="frame" x="190" y="97" width="97" height="30"/> 44 <rect key="frame" x="190" y="97" width="97" height="30"/>
39 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 45 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  46 + <constraints>
  47 + <constraint firstAttribute="width" constant="97" id="JaM-Ca-N6c"/>
  48 + </constraints>
40 <fontDescription key="fontDescription" type="system" pointSize="14"/> 49 <fontDescription key="fontDescription" type="system" pointSize="14"/>
41 <textInputTraits key="textInputTraits"/> 50 <textInputTraits key="textInputTraits"/>
42 </textField> 51 </textField>
43 - <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" misplaced="YES" text="Channel" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="btL-PO-K6a">  
44 - <rect key="frame" x="20" y="24" width="66" height="21"/> 52 + <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Channel" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="btL-PO-K6a">
  53 + <rect key="frame" x="20" y="24" width="64" height="21"/>
45 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 54 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
46 <fontDescription key="fontDescription" type="system" pointSize="17"/> 55 <fontDescription key="fontDescription" type="system" pointSize="17"/>
47 <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> 56 <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
48 <nil key="highlightedColor"/> 57 <nil key="highlightedColor"/>
49 </label> 58 </label>
50 - <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" misplaced="YES" text="Product Code" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ngW-rD-Fgz"> 59 + <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Product Code" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ngW-rD-Fgz">
51 <rect key="frame" x="20" y="63" width="107" height="21"/> 60 <rect key="frame" x="20" y="63" width="107" height="21"/>
52 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 61 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
53 <fontDescription key="fontDescription" type="system" pointSize="17"/> 62 <fontDescription key="fontDescription" type="system" pointSize="17"/>
54 <nil key="highlightedColor"/> 63 <nil key="highlightedColor"/>
55 </label> 64 </label>
56 - <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" misplaced="YES" text="New Price" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="m7Z-ve-Gxr">  
57 - <rect key="frame" x="20" y="101" width="82" height="21"/> 65 + <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="New Price" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="m7Z-ve-Gxr">
  66 + <rect key="frame" x="20" y="101" width="79" height="21"/>
58 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 67 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
59 <fontDescription key="fontDescription" type="system" pointSize="17"/> 68 <fontDescription key="fontDescription" type="system" pointSize="17"/>
60 <nil key="highlightedColor"/> 69 <nil key="highlightedColor"/>
61 </label> 70 </label>
62 - <button opaque="NO" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3dU-vK-GGP">  
63 - <rect key="frame" x="130" y="131" width="46" height="30"/> 71 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3dU-vK-GGP">
  72 + <rect key="frame" x="135" y="131" width="37" height="30"/>
64 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 73 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
65 <state key="normal" title="Done"> 74 <state key="normal" title="Done">
66 <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/> 75 <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
@@ -73,21 +82,28 @@ @@ -73,21 +82,28 @@
73 <color key="backgroundColor" white="1" alpha="0.94999999999999996" colorSpace="calibratedWhite"/> 82 <color key="backgroundColor" white="1" alpha="0.94999999999999996" colorSpace="calibratedWhite"/>
74 <constraints> 83 <constraints>
75 <constraint firstAttribute="trailing" secondItem="wCx-oE-aK9" secondAttribute="trailing" constant="20" id="3zp-xP-h35"/> 84 <constraint firstAttribute="trailing" secondItem="wCx-oE-aK9" secondAttribute="trailing" constant="20" id="3zp-xP-h35"/>
76 - <constraint firstAttribute="bottom" secondItem="3dU-vK-GGP" secondAttribute="bottom" constant="20" id="E5P-sA-PAI"/> 85 + <constraint firstAttribute="height" constant="181" id="54z-8B-Ksu"/>
77 <constraint firstItem="ngW-rD-Fgz" firstAttribute="top" secondItem="btL-PO-K6a" secondAttribute="bottom" constant="18" id="Hna-F0-g8f"/> 86 <constraint firstItem="ngW-rD-Fgz" firstAttribute="top" secondItem="btL-PO-K6a" secondAttribute="bottom" constant="18" id="Hna-F0-g8f"/>
  87 + <constraint firstAttribute="width" constant="307" id="Mmh-pE-3dD"/>
  88 + <constraint firstItem="btL-PO-K6a" firstAttribute="top" secondItem="lVw-3e-AU5" secondAttribute="top" constant="24" id="NxS-Fl-f7d"/>
78 <constraint firstItem="btL-PO-K6a" firstAttribute="leading" secondItem="lVw-3e-AU5" secondAttribute="leading" constant="20" id="W9y-rd-KTp"/> 89 <constraint firstItem="btL-PO-K6a" firstAttribute="leading" secondItem="lVw-3e-AU5" secondAttribute="leading" constant="20" id="W9y-rd-KTp"/>
79 <constraint firstItem="m7Z-ve-Gxr" firstAttribute="top" secondItem="ngW-rD-Fgz" secondAttribute="bottom" constant="17" id="Xka-5C-qGa"/> 90 <constraint firstItem="m7Z-ve-Gxr" firstAttribute="top" secondItem="ngW-rD-Fgz" secondAttribute="bottom" constant="17" id="Xka-5C-qGa"/>
  91 + <constraint firstAttribute="centerX" secondItem="3dU-vK-GGP" secondAttribute="centerX" constant="0.5" id="aLD-fM-V8k"/>
80 <constraint firstItem="ngW-rD-Fgz" firstAttribute="leading" secondItem="lVw-3e-AU5" secondAttribute="leading" constant="20" id="cty-k1-JpR"/> 92 <constraint firstItem="ngW-rD-Fgz" firstAttribute="leading" secondItem="lVw-3e-AU5" secondAttribute="leading" constant="20" id="cty-k1-JpR"/>
81 <constraint firstAttribute="trailing" secondItem="ues-3Z-2xO" secondAttribute="trailing" constant="20" id="e4X-d3-oPg"/> 93 <constraint firstAttribute="trailing" secondItem="ues-3Z-2xO" secondAttribute="trailing" constant="20" id="e4X-d3-oPg"/>
  94 + <constraint firstItem="u9j-qH-tMP" firstAttribute="top" secondItem="lVw-3e-AU5" secondAttribute="top" constant="20" id="h6g-4I-UPT"/>
  95 + <constraint firstItem="wCx-oE-aK9" firstAttribute="top" secondItem="ues-3Z-2xO" secondAttribute="bottom" constant="8" id="hw6-3f-aML"/>
82 <constraint firstAttribute="trailing" secondItem="u9j-qH-tMP" secondAttribute="trailing" constant="20" id="lWw-tP-pX0"/> 96 <constraint firstAttribute="trailing" secondItem="u9j-qH-tMP" secondAttribute="trailing" constant="20" id="lWw-tP-pX0"/>
  97 + <constraint firstItem="ues-3Z-2xO" firstAttribute="top" secondItem="u9j-qH-tMP" secondAttribute="bottom" constant="9" id="r28-qa-pPT"/>
83 <constraint firstItem="m7Z-ve-Gxr" firstAttribute="leading" secondItem="lVw-3e-AU5" secondAttribute="leading" constant="20" id="r8p-Ts-QQ3"/> 98 <constraint firstItem="m7Z-ve-Gxr" firstAttribute="leading" secondItem="lVw-3e-AU5" secondAttribute="leading" constant="20" id="r8p-Ts-QQ3"/>
  99 + <constraint firstAttribute="bottom" secondItem="3dU-vK-GGP" secondAttribute="bottom" constant="20" id="uC1-MC-V0P"/>
84 </constraints> 100 </constraints>
85 </view> 101 </view>
86 </subviews> 102 </subviews>
87 <color key="backgroundColor" red="0.023529414089999999" green="0.0039215688589999999" blue="0.0039215688589999999" alpha="0.5" colorSpace="deviceRGB"/> 103 <color key="backgroundColor" red="0.023529414089999999" green="0.0039215688589999999" blue="0.0039215688589999999" alpha="0.5" colorSpace="deviceRGB"/>
88 <constraints> 104 <constraints>
89 - <constraint firstAttribute="centerY" secondItem="lVw-3e-AU5" secondAttribute="centerY" constant="75" id="U8g-QI-YN9"/>  
90 <constraint firstAttribute="centerX" secondItem="lVw-3e-AU5" secondAttribute="centerX" constant="-0.5" id="hza-Ts-3fP"/> 105 <constraint firstAttribute="centerX" secondItem="lVw-3e-AU5" secondAttribute="centerX" constant="-0.5" id="hza-Ts-3fP"/>
  106 + <constraint firstAttribute="centerY" secondItem="lVw-3e-AU5" secondAttribute="centerY" constant="0.5" id="nkS-3I-I3D"/>
91 </constraints> 107 </constraints>
92 <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/> 108 <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/>
93 <simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina4"/> 109 <simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina4"/>
DUREX tests/DUREX test.xcodeproj/project.pbxproj
@@ -269,9 +269,9 @@ @@ -269,9 +269,9 @@
269 3471865518070D9300FA0FB2 /* Project object */ = { 269 3471865518070D9300FA0FB2 /* Project object */ = {
270 isa = PBXProject; 270 isa = PBXProject;
271 attributes = { 271 attributes = {
272 - CLASSPREFIX = EM; 272 + CLASSPREFIX = DUREX;
273 LastUpgradeCheck = 0510; 273 LastUpgradeCheck = 0510;
274 - ORGANIZATIONNAME = Emmoco; 274 + ORGANIZATIONNAME = UPC;
275 TargetAttributes = { 275 TargetAttributes = {
276 3471867718070D9300FA0FB2 = { 276 3471867718070D9300FA0FB2 = {
277 TestTargetID = 3471865C18070D9300FA0FB2; 277 TestTargetID = 3471865C18070D9300FA0FB2;
DUREX tests/DUREX test.xcodeproj/project.xcworkspace/xcuserdata/imanol.xcuserdatad/UserInterfaceState.xcuserstate
No preview for this file type
@@ -3,12 +3,18 @@ BUGS: @@ -3,12 +3,18 @@ BUGS:
3 - On date change, response is overwritten by previous query, trimming needed according to numBytes 3 - On date change, response is overwritten by previous query, trimming needed according to numBytes
4 4
5 TODO: 5 TODO:
  6 +- Sensors class
6 - A4 command 7 - A4 command
  8 +- A4 parser
  9 +- Dropdown cells
  10 +
7 - Sale class 11 - Sale class
8 -- Sale parser  
9 - A2 command 12 - A2 command
  13 +- Sale parser
  14 +
10 - Implement sensor status logging and sending to remote server 15 - Implement sensor status logging and sending to remote server
11 - Lewis infrastructure for data viewing (SQL, Webpage, CSV parser) 16 - Lewis infrastructure for data viewing (SQL, Webpage, CSV parser)
  17 +
12 - Incident class 18 - Incident class
13 - Incident parser 19 - Incident parser
14 - A3 command 20 - A3 command