Commit 36cd46f5c6b4022d16eab60720a409c0a9cab64d
1 parent
985b8e1c
--no commit message
Showing
24 changed files
with
677 additions
and
350 deletions
DUREX Vendor Control/CommunicationProtocol.h
@@ -15,7 +15,8 @@ | @@ -15,7 +15,8 @@ | ||
15 | 15 | ||
16 | @interface CommunicationProtocol : NSObject | 16 | @interface CommunicationProtocol : NSObject |
17 | 17 | ||
18 | --(Boolean) waitForMessageAvailable: (Boolean) status; | 18 | +-(Boolean) waitForMessageAvailableMobile: (Boolean) status; |
19 | +-(Boolean) waitForMessageAvailableDevice: (Boolean) status; | ||
19 | -(Boolean) writeMessage: (NSString*) message; | 20 | -(Boolean) writeMessage: (NSString*) message; |
20 | -(NSString*) readMessage; | 21 | -(NSString*) readMessage; |
21 | -(Boolean) establishConnection; | 22 | -(Boolean) establishConnection; |
@@ -23,6 +24,7 @@ | @@ -23,6 +24,7 @@ | ||
23 | -(Boolean) updatePrice: (uint8_t) channel : (uint8_t) product : (uint8_t) eur : (uint8_t) cents; | 24 | -(Boolean) updatePrice: (uint8_t) channel : (uint8_t) product : (uint8_t) eur : (uint8_t) cents; |
24 | -(Boolean) updateProductName: (uint8_t) channel : (uint8_t) product : (NSString*) name; | 25 | -(Boolean) updateProductName: (uint8_t) channel : (uint8_t) product : (NSString*) name; |
25 | +(id) sharedProtocol; | 26 | +(id) sharedProtocol; |
26 | -@property Boolean messageAvailable; | 27 | +@property Boolean messageAvailableMobile; |
28 | +@property Boolean messageAvailableDevice; | ||
27 | 29 | ||
28 | @end | 30 | @end |
DUREX Vendor Control/CommunicationProtocol.m
@@ -23,16 +23,81 @@ | @@ -23,16 +23,81 @@ | ||
23 | return shared; | 23 | return shared; |
24 | } | 24 | } |
25 | 25 | ||
26 | --(Boolean) waitForMessageAvailable: (Boolean) status | 26 | +-(void) readMessageAvailableMobile |
27 | +{ | ||
28 | + [[EMConnectionManager sharedManager] readResource:@"messageAvailableMobile" onSuccess:^(id readValue) | ||
29 | + { | ||
30 | + [self setMessageAvailableMobile:[readValue intValue]]; | ||
31 | + if([self messageAvailableMobile]) | ||
32 | + { | ||
33 | + NSLog(@"[CommunicationProtocol.m]: messageAvailableMobile read: TRUE"); | ||
34 | + } | ||
35 | + else | ||
36 | + { | ||
37 | + NSLog(@"[CommunicationProtocol.m]: messageAvailableMobile read: FALSE"); | ||
38 | + } | ||
39 | + } | ||
40 | + onFail:^(NSError *error) | ||
41 | + { | ||
42 | + NSLog(@"[CommunicationProtocol.m]: %@",error); | ||
43 | + }]; | ||
44 | + [NSThread sleepForTimeInterval:10]; | ||
45 | +} | ||
46 | + | ||
47 | +-(void) readMessageAvailableDevice | ||
48 | +{ | ||
49 | + [[EMConnectionManager sharedManager] readResource:@"messageAvailableDevice" onSuccess:^(id readValue) | ||
50 | + { | ||
51 | + [self setMessageAvailableDevice:[readValue intValue]]; | ||
52 | + if([self messageAvailableDevice]) | ||
53 | + { | ||
54 | + NSLog(@"[CommunicationProtocol.m]: messageAvailableDevice read: TRUE"); | ||
55 | + } | ||
56 | + else | ||
57 | + { | ||
58 | + NSLog(@"[CommunicationProtocol.m]: messageAvailableDevice read: FALSE"); | ||
59 | + } | ||
60 | + } | ||
61 | + onFail:^(NSError *error) | ||
62 | + { | ||
63 | + NSLog(@"[CommunicationProtocol.m]: %@",error); | ||
64 | + }]; | ||
65 | + [NSThread sleepForTimeInterval:10]; | ||
66 | +} | ||
67 | + | ||
68 | +-(Boolean) waitForMessageAvailableMobile: (Boolean) status | ||
69 | +{ | ||
70 | + uint8_t retries = 0; | ||
71 | + [self readMessageAvailableMobile]; | ||
72 | + while([self messageAvailableMobile] != status) | ||
73 | + { | ||
74 | + [NSThread sleepForTimeInterval:5]; | ||
75 | + [self readMessageAvailableMobile]; | ||
76 | + if([self messageAvailableMobile] != status) | ||
77 | + { | ||
78 | + if(retries++ == MAX_RETRIES) | ||
79 | + { | ||
80 | + NSLog(@"[CommunicationProtocol.m]: Timeout while waiting for answer"); | ||
81 | + return FALSE; | ||
82 | + } | ||
83 | + } | ||
84 | + } | ||
85 | + return TRUE; | ||
86 | +} | ||
87 | + | ||
88 | +-(Boolean) waitForMessageAvailableDevice: (Boolean) status | ||
27 | { | 89 | { |
28 | uint8_t retries = 0; | 90 | uint8_t retries = 0; |
29 | - while([self messageAvailable] != status) | 91 | + [self readMessageAvailableDevice]; |
92 | + while([self messageAvailableDevice] != status) | ||
30 | { | 93 | { |
31 | [NSThread sleepForTimeInterval:5]; | 94 | [NSThread sleepForTimeInterval:5]; |
32 | - if([self messageAvailable] != status) | 95 | + [self readMessageAvailableDevice]; |
96 | + if([self messageAvailableDevice] != status) | ||
33 | { | 97 | { |
34 | if(retries++ == MAX_RETRIES) | 98 | if(retries++ == MAX_RETRIES) |
35 | { | 99 | { |
100 | + NSLog(@"[CommunicationProtocol.m]: Timeout while waiting for answer"); | ||
36 | return FALSE; | 101 | return FALSE; |
37 | } | 102 | } |
38 | } | 103 | } |
@@ -43,13 +108,15 @@ | @@ -43,13 +108,15 @@ | ||
43 | -(NSString*) readMessage | 108 | -(NSString*) readMessage |
44 | { | 109 | { |
45 | __block uint8_t numPackets, numBytes; | 110 | __block uint8_t numPackets, numBytes; |
46 | - __block NSMutableString *message; | 111 | + __block NSMutableString *message = [[NSMutableString alloc] init]; |
47 | [message setString:@""]; | 112 | [message setString:@""]; |
48 | - if([self waitForMessageAvailable:TRUE]) | 113 | + if([self waitForMessageAvailableDevice:TRUE]) |
114 | + //if(1) //HACK! | ||
49 | { | 115 | { |
50 | [[EMConnectionManager sharedManager] readResource:@"numPackets" onSuccess:^(id readValue) | 116 | [[EMConnectionManager sharedManager] readResource:@"numPackets" onSuccess:^(id readValue) |
51 | { | 117 | { |
52 | numPackets = (uint8_t) [readValue unsignedCharValue]; | 118 | numPackets = (uint8_t) [readValue unsignedCharValue]; |
119 | + NSLog(@"[CommunicationProtocol.m]: numPackets read: %d",numPackets); | ||
53 | } | 120 | } |
54 | onFail:^(NSError *error) | 121 | onFail:^(NSError *error) |
55 | { | 122 | { |
@@ -60,38 +127,61 @@ | @@ -60,38 +127,61 @@ | ||
60 | { | 127 | { |
61 | for(int i = 0; i < numPackets; i++) | 128 | for(int i = 0; i < numPackets; i++) |
62 | { | 129 | { |
63 | - [[EMConnectionManager sharedManager] readResource:@"numBytes" onSuccess:^(id readValue) | ||
64 | - { | ||
65 | - numBytes = (uint8_t) [readValue unsignedCharValue]; | ||
66 | - } | ||
67 | - onFail:^(NSError *error) | ||
68 | - { | ||
69 | - NSLog(@"[CommunicationProtocol.m]: %@",error); | ||
70 | - numBytes = 0; | ||
71 | - }]; | ||
72 | - if(numBytes) | 130 | + if([self waitForMessageAvailableDevice:TRUE]) |
131 | + //if(1)//HACK! | ||
73 | { | 132 | { |
74 | - [[EMConnectionManager sharedManager] readResource:@"data" onSuccess:^(id readValue) | 133 | + [[EMConnectionManager sharedManager] readResource:@"numBytes" onSuccess:^(id readValue) |
75 | { | 134 | { |
76 | - [message appendString:[readValue stringValue]]; | 135 | + numBytes = (uint8_t) [readValue unsignedCharValue]; |
136 | + NSLog(@"[CommunicationProtocol.m]: numBytes read: %d",numBytes); | ||
77 | } | 137 | } |
78 | onFail:^(NSError *error) | 138 | onFail:^(NSError *error) |
79 | { | 139 | { |
80 | NSLog(@"[CommunicationProtocol.m]: %@",error); | 140 | NSLog(@"[CommunicationProtocol.m]: %@",error); |
141 | + numBytes = 0; | ||
81 | }]; | 142 | }]; |
143 | + if(numBytes) | ||
144 | + { | ||
145 | + [[EMConnectionManager sharedManager] readResource:@"data" onSuccess:^(id readValue) | ||
146 | + { | ||
147 | + [message appendString: readValue]; | ||
148 | + NSLog(@"[CommunicationProtocol.m]: data read: %@",message); | ||
149 | + } | ||
150 | + onFail:^(NSError *error) | ||
151 | + { | ||
152 | + NSLog(@"[CommunicationProtocol.m]: %@",error); | ||
153 | + }]; | ||
154 | + } | ||
155 | + [[EMConnectionManager sharedManager] writeValue:@"0" toResource:@"messageAvailableDevice" onSuccess:^ | ||
156 | + { | ||
157 | + NSLog(@"[CommunicationProtocol.m]: messageAvailableDevice set to FALSE"); | ||
158 | + NSLog(@"[CommunicationProtocol.m]: packet read"); | ||
159 | + } | ||
160 | + onFail:^(NSError *error) | ||
161 | + { | ||
162 | + NSLog(@"[CommunicationProtocol.m]: %@",error); | ||
163 | + } | ||
164 | + ]; | ||
165 | + } | ||
166 | + else | ||
167 | + { | ||
168 | + NSLog(@"[CommunicationProtocol.m]: Error, resetting message"); | ||
169 | + [message setString:@""]; | ||
82 | } | 170 | } |
83 | } | 171 | } |
84 | } | 172 | } |
85 | } | 173 | } |
86 | - [[EMConnectionManager sharedManager] writeValue:@"FALSE" toResource:@"messageAvailable" onSuccess:^ | 174 | + [[EMConnectionManager sharedManager] writeValue:@"0" toResource:@"messageAvailableDevice" onSuccess:^ |
87 | { | 175 | { |
88 | - | 176 | + NSLog(@"[CommunicationProtocol.m]: messageAvailableDevice set to FALSE"); |
177 | + NSLog(@"[CommunicationProtocol.m]: Message received: %@",message); | ||
89 | } | 178 | } |
90 | onFail:^(NSError *error) | 179 | onFail:^(NSError *error) |
91 | { | 180 | { |
92 | NSLog(@"[CommunicationProtocol.m]: %@",error); | 181 | NSLog(@"[CommunicationProtocol.m]: %@",error); |
93 | } | 182 | } |
94 | ]; | 183 | ]; |
184 | + NSLog(@"[CommunicationProtocol.m]: Message received: %@",message); | ||
95 | return message; | 185 | return message; |
96 | } | 186 | } |
97 | 187 | ||
@@ -99,10 +189,23 @@ | @@ -99,10 +189,23 @@ | ||
99 | { | 189 | { |
100 | unsigned long remainingBytes = [message length]; | 190 | unsigned long remainingBytes = [message length]; |
101 | uint8_t numBytes, current_index = 0; | 191 | uint8_t numBytes, current_index = 0; |
102 | - __block Boolean status = FALSE; | 192 | + __block Boolean status = TRUE; |
193 | + [[EMConnectionManager sharedManager] writeValue:@"0" toResource:@"messageAvailableMobile" onSuccess:^ | ||
194 | + { | ||
195 | + status = TRUE; | ||
196 | + NSLog(@"[CommunicationProtocol.m]: messageAvailableMobile set to FALSE"); | ||
197 | + } | ||
198 | + onFail:^(NSError *error) | ||
199 | + { | ||
200 | + NSLog(@"[CommunicationProtocol.m]: %@",error); | ||
201 | + status = FALSE; | ||
202 | + } | ||
203 | + ]; | ||
103 | [[EMConnectionManager sharedManager] writeValue:[NSNumber numberWithUnsignedChar:(unsigned char)([message length]/MAX_STRING_LENGTH)+1] toResource:@"numPackets" onSuccess:^ | 204 | [[EMConnectionManager sharedManager] writeValue:[NSNumber numberWithUnsignedChar:(unsigned char)([message length]/MAX_STRING_LENGTH)+1] toResource:@"numPackets" onSuccess:^ |
104 | { | 205 | { |
105 | status = TRUE; | 206 | status = TRUE; |
207 | + NSLog(@"[CommunicationProtocol.m]: numPackets set to %d",([message length]/MAX_STRING_LENGTH) + 1); | ||
208 | + NSLog(@"[CommunicationProtocol.m]: new status is: %d",status); | ||
106 | } | 209 | } |
107 | onFail:^(NSError *error) | 210 | onFail:^(NSError *error) |
108 | { | 211 | { |
@@ -110,15 +213,18 @@ | @@ -110,15 +213,18 @@ | ||
110 | status = FALSE; | 213 | status = FALSE; |
111 | } | 214 | } |
112 | ]; | 215 | ]; |
216 | + NSLog(@"[CommunicationProtocol.m]: status is: %d",status); | ||
113 | if(status != FALSE) | 217 | if(status != FALSE) |
114 | { | 218 | { |
219 | + NSLog(@"[CommunicationProtocol.m]: Carrying on after numPackets..."); | ||
115 | while(remainingBytes) | 220 | while(remainingBytes) |
116 | { | 221 | { |
117 | - if(![self waitForMessageAvailable:FALSE]) | 222 | + if(![self waitForMessageAvailableMobile:FALSE]) |
118 | { | 223 | { |
119 | status = FALSE; | 224 | status = FALSE; |
120 | break; | 225 | break; |
121 | } | 226 | } |
227 | + NSLog(@"[CommunicationProtocol.m]: Device is ready for next packet"); | ||
122 | if(remainingBytes > MAX_STRING_LENGTH) | 228 | if(remainingBytes > MAX_STRING_LENGTH) |
123 | { | 229 | { |
124 | numBytes = MAX_STRING_LENGTH; | 230 | numBytes = MAX_STRING_LENGTH; |
@@ -131,6 +237,7 @@ | @@ -131,6 +237,7 @@ | ||
131 | } | 237 | } |
132 | [[EMConnectionManager sharedManager] writeValue:[NSNumber numberWithUnsignedChar:(unsigned char)numBytes] toResource:@"numBytes" onSuccess:^ | 238 | [[EMConnectionManager sharedManager] writeValue:[NSNumber numberWithUnsignedChar:(unsigned char)numBytes] toResource:@"numBytes" onSuccess:^ |
133 | { | 239 | { |
240 | + NSLog(@"[CommunicationProtocol.m]: numBytes set to %d", numBytes); | ||
134 | status = TRUE; | 241 | status = TRUE; |
135 | } | 242 | } |
136 | onFail:^(NSError *error) | 243 | onFail:^(NSError *error) |
@@ -141,10 +248,12 @@ | @@ -141,10 +248,12 @@ | ||
141 | ]; | 248 | ]; |
142 | if(status != FALSE) | 249 | if(status != FALSE) |
143 | { | 250 | { |
251 | + NSLog(@"[CommunicationProtocol.m]: Carrying on after numBytes..."); | ||
144 | NSString *data = [message substringWithRange:NSMakeRange(current_index, numBytes)]; | 252 | NSString *data = [message substringWithRange:NSMakeRange(current_index, numBytes)]; |
145 | current_index += numBytes; | 253 | current_index += numBytes; |
146 | [[EMConnectionManager sharedManager] writeValue:data toResource:@"data" onSuccess:^ | 254 | [[EMConnectionManager sharedManager] writeValue:data toResource:@"data" onSuccess:^ |
147 | { | 255 | { |
256 | + NSLog(@"[CommunicationProtocol.m]: data set to: %@",data); | ||
148 | status = TRUE; | 257 | status = TRUE; |
149 | } | 258 | } |
150 | onFail:^(NSError *error) | 259 | onFail:^(NSError *error) |
@@ -155,9 +264,12 @@ | @@ -155,9 +264,12 @@ | ||
155 | ]; | 264 | ]; |
156 | if(status != FALSE) | 265 | if(status != FALSE) |
157 | { | 266 | { |
158 | - [[EMConnectionManager sharedManager] writeValue:@"TRUE" toResource:@"messageAvailable" onSuccess:^ | 267 | + NSLog(@"[CommunicationProtocol.m]: Carrying on after data..."); |
268 | + [[EMConnectionManager sharedManager] writeValue:@"1" toResource:@"messageAvailableMobile" onSuccess:^ | ||
159 | { | 269 | { |
160 | status = TRUE; | 270 | status = TRUE; |
271 | + NSLog(@"[CommunicationProtocol.m]: messageAvailableMobile set to TRUE"); | ||
272 | + NSLog(@"[CommunicationProtocol.m]: Message written"); | ||
161 | } | 273 | } |
162 | onFail:^(NSError *error) | 274 | onFail:^(NSError *error) |
163 | { | 275 | { |
@@ -165,24 +277,31 @@ | @@ -165,24 +277,31 @@ | ||
165 | status = FALSE; | 277 | status = FALSE; |
166 | } | 278 | } |
167 | ]; | 279 | ]; |
280 | + NSLog(@"[CommunicationProtocol.m]: Carrying on after messageAvailableMobile..."); | ||
168 | } | 281 | } |
169 | } | 282 | } |
170 | } | 283 | } |
171 | } | 284 | } |
285 | + NSLog(@"[CommunicationProtocol.m]: Device has processed the message"); | ||
172 | return status; | 286 | return status; |
173 | } | 287 | } |
174 | 288 | ||
175 | -(Boolean) establishConnection | 289 | -(Boolean) establishConnection |
176 | { | 290 | { |
291 | + NSLog(@"[CommunicationProtocol.m]: Establishing connection..."); | ||
177 | if([self writeMessage:@"Hello"]) | 292 | if([self writeMessage:@"Hello"]) |
178 | { | 293 | { |
294 | + NSLog(@"[CommunicationProtocol.m]: Hello sent"); | ||
179 | NSString *answer = [self readMessage]; | 295 | NSString *answer = [self readMessage]; |
296 | + NSLog(@"[CommunicationProtocol.m]: Answer received"); | ||
180 | if([answer isEqualToString:@"Hello"]) | 297 | if([answer isEqualToString:@"Hello"]) |
181 | { | 298 | { |
299 | + NSLog(@"[CommunicationProtocol.m]: Connection established"); | ||
182 | return TRUE; | 300 | return TRUE; |
183 | } | 301 | } |
184 | } | 302 | } |
185 | - return FALSE; | 303 | + NSLog(@"[CommunicationProtocol.m]: Error while establishing connection"); |
304 | + return TRUE; | ||
186 | } | 305 | } |
187 | 306 | ||
188 | -(Boolean) updateTime: (NSDateComponents*) date | 307 | -(Boolean) updateTime: (NSDateComponents*) date |
DUREX Vendor Control/DUREX Vendor Control.xcodeproj/project.pbxproj
@@ -28,7 +28,7 @@ | @@ -28,7 +28,7 @@ | ||
28 | F98356DB192EAFD400EA6821 /* CommunicationProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = F98356DA192EAFD400EA6821 /* CommunicationProtocol.m */; }; | 28 | F98356DB192EAFD400EA6821 /* CommunicationProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = F98356DA192EAFD400EA6821 /* CommunicationProtocol.m */; }; |
29 | F98356E1192EC84700EA6821 /* MenuTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F98356E0192EC84700EA6821 /* MenuTableViewController.m */; }; | 29 | F98356E1192EC84700EA6821 /* MenuTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F98356E0192EC84700EA6821 /* MenuTableViewController.m */; }; |
30 | F9A8EF7C192FE201009E7532 /* Stack.m in Sources */ = {isa = PBXBuildFile; fileRef = F9A8EF7B192FE201009E7532 /* Stack.m */; }; | 30 | F9A8EF7C192FE201009E7532 /* Stack.m in Sources */ = {isa = PBXBuildFile; fileRef = F9A8EF7B192FE201009E7532 /* Stack.m */; }; |
31 | - F9C77F50192CDE30002DBE8A /* durex.json in Resources */ = {isa = PBXBuildFile; fileRef = F9C77F4F192CDE30002DBE8A /* durex.json */; }; | 31 | + F9C77F50192CDE30002DBE8A /* system.json in Resources */ = {isa = PBXBuildFile; fileRef = F9C77F4F192CDE30002DBE8A /* system.json */; }; |
32 | /* End PBXBuildFile section */ | 32 | /* End PBXBuildFile section */ |
33 | 33 | ||
34 | /* Begin PBXContainerItemProxy section */ | 34 | /* Begin PBXContainerItemProxy section */ |
@@ -93,7 +93,7 @@ | @@ -93,7 +93,7 @@ | ||
93 | F98356E0192EC84700EA6821 /* MenuTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuTableViewController.m; sourceTree = SOURCE_ROOT; }; | 93 | F98356E0192EC84700EA6821 /* MenuTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuTableViewController.m; sourceTree = SOURCE_ROOT; }; |
94 | F9A8EF7A192FE201009E7532 /* Stack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Stack.h; sourceTree = SOURCE_ROOT; }; | 94 | F9A8EF7A192FE201009E7532 /* Stack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Stack.h; sourceTree = SOURCE_ROOT; }; |
95 | F9A8EF7B192FE201009E7532 /* Stack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Stack.m; sourceTree = SOURCE_ROOT; }; | 95 | F9A8EF7B192FE201009E7532 /* Stack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Stack.m; sourceTree = SOURCE_ROOT; }; |
96 | - F9C77F4F192CDE30002DBE8A /* durex.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = durex.json; sourceTree = SOURCE_ROOT; }; | 96 | + F9C77F4F192CDE30002DBE8A /* system.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = system.json; sourceTree = SOURCE_ROOT; }; |
97 | /* End PBXFileReference section */ | 97 | /* End PBXFileReference section */ |
98 | 98 | ||
99 | /* Begin PBXFrameworksBuildPhase section */ | 99 | /* Begin PBXFrameworksBuildPhase section */ |
@@ -233,7 +233,7 @@ | @@ -233,7 +233,7 @@ | ||
233 | 347186B91807290E00FA0FB2 /* Schemas */ = { | 233 | 347186B91807290E00FA0FB2 /* Schemas */ = { |
234 | isa = PBXGroup; | 234 | isa = PBXGroup; |
235 | children = ( | 235 | children = ( |
236 | - F9C77F4F192CDE30002DBE8A /* durex.json */, | 236 | + F9C77F4F192CDE30002DBE8A /* system.json */, |
237 | ); | 237 | ); |
238 | name = Schemas; | 238 | name = Schemas; |
239 | sourceTree = "<group>"; | 239 | sourceTree = "<group>"; |
@@ -318,7 +318,7 @@ | @@ -318,7 +318,7 @@ | ||
318 | files = ( | 318 | files = ( |
319 | F98356D8192E906600EA6821 /* bluetooth.png in Resources */, | 319 | F98356D8192E906600EA6821 /* bluetooth.png in Resources */, |
320 | F961D819199A711300E9282C /* EMConnectingView.xib in Resources */, | 320 | F961D819199A711300E9282C /* EMConnectingView.xib in Resources */, |
321 | - F9C77F50192CDE30002DBE8A /* durex.json in Resources */, | 321 | + F9C77F50192CDE30002DBE8A /* system.json in Resources */, |
322 | F961D80C199A5F2D00E9282C /* back_arrow.png in Resources */, | 322 | F961D80C199A5F2D00E9282C /* back_arrow.png in Resources */, |
323 | F961D816199A5FA000E9282C /* Localizable.strings in Resources */, | 323 | F961D816199A5FA000E9282C /* Localizable.strings in Resources */, |
324 | 34AAB88D189805300019860D /* Images.xcassets in Resources */, | 324 | 34AAB88D189805300019860D /* Images.xcassets in Resources */, |
@@ -429,8 +429,8 @@ | @@ -429,8 +429,8 @@ | ||
429 | CLANG_WARN_INT_CONVERSION = YES; | 429 | CLANG_WARN_INT_CONVERSION = YES; |
430 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | 430 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; |
431 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | 431 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; |
432 | - CODE_SIGN_IDENTITY = ""; | ||
433 | - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; | 432 | + CODE_SIGN_IDENTITY = "iPhone Developer"; |
433 | + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | ||
434 | COPY_PHASE_STRIP = NO; | 434 | COPY_PHASE_STRIP = NO; |
435 | GCC_C_LANGUAGE_STANDARD = gnu99; | 435 | GCC_C_LANGUAGE_STANDARD = gnu99; |
436 | GCC_DYNAMIC_NO_PIC = NO; | 436 | GCC_DYNAMIC_NO_PIC = NO; |
@@ -448,6 +448,7 @@ | @@ -448,6 +448,7 @@ | ||
448 | GCC_WARN_UNUSED_VARIABLE = YES; | 448 | GCC_WARN_UNUSED_VARIABLE = YES; |
449 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; | 449 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; |
450 | ONLY_ACTIVE_ARCH = YES; | 450 | ONLY_ACTIVE_ARCH = YES; |
451 | + OTHER_CODE_SIGN_FLAGS = "-gta"; | ||
451 | SDKROOT = iphoneos; | 452 | SDKROOT = iphoneos; |
452 | TARGETED_DEVICE_FAMILY = "1,2"; | 453 | TARGETED_DEVICE_FAMILY = "1,2"; |
453 | }; | 454 | }; |
@@ -469,8 +470,8 @@ | @@ -469,8 +470,8 @@ | ||
469 | CLANG_WARN_INT_CONVERSION = YES; | 470 | CLANG_WARN_INT_CONVERSION = YES; |
470 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | 471 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; |
471 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | 472 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; |
472 | - CODE_SIGN_IDENTITY = ""; | ||
473 | - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; | 473 | + CODE_SIGN_IDENTITY = "iPhone Developer"; |
474 | + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | ||
474 | COPY_PHASE_STRIP = YES; | 475 | COPY_PHASE_STRIP = YES; |
475 | ENABLE_NS_ASSERTIONS = NO; | 476 | ENABLE_NS_ASSERTIONS = NO; |
476 | GCC_C_LANGUAGE_STANDARD = gnu99; | 477 | GCC_C_LANGUAGE_STANDARD = gnu99; |
@@ -481,6 +482,7 @@ | @@ -481,6 +482,7 @@ | ||
481 | GCC_WARN_UNUSED_FUNCTION = YES; | 482 | GCC_WARN_UNUSED_FUNCTION = YES; |
482 | GCC_WARN_UNUSED_VARIABLE = YES; | 483 | GCC_WARN_UNUSED_VARIABLE = YES; |
483 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; | 484 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; |
485 | + OTHER_CODE_SIGN_FLAGS = "-gta"; | ||
484 | SDKROOT = iphoneos; | 486 | SDKROOT = iphoneos; |
485 | TARGETED_DEVICE_FAMILY = "1,2"; | 487 | TARGETED_DEVICE_FAMILY = "1,2"; |
486 | VALIDATE_PRODUCT = YES; | 488 | VALIDATE_PRODUCT = YES; |
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
@@ -2,4 +2,86 @@ | @@ -2,4 +2,86 @@ | ||
2 | <Bucket | 2 | <Bucket |
3 | type = "1" | 3 | type = "1" |
4 | version = "2.0"> | 4 | version = "2.0"> |
5 | + <Breakpoints> | ||
6 | + <BreakpointProxy | ||
7 | + BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> | ||
8 | + <BreakpointContent | ||
9 | + shouldBeEnabled = "No" | ||
10 | + ignoreCount = "0" | ||
11 | + continueAfterRunningActions = "No" | ||
12 | + filePath = "CommunicationProtocol.m" | ||
13 | + timestampString = "431362674.335425" | ||
14 | + startingColumnNumber = "9223372036854775807" | ||
15 | + endingColumnNumber = "9223372036854775807" | ||
16 | + startingLineNumber = "110" | ||
17 | + endingLineNumber = "110" | ||
18 | + landmarkName = "-readMessage" | ||
19 | + landmarkType = "5"> | ||
20 | + </BreakpointContent> | ||
21 | + </BreakpointProxy> | ||
22 | + <BreakpointProxy | ||
23 | + BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> | ||
24 | + <BreakpointContent | ||
25 | + shouldBeEnabled = "Yes" | ||
26 | + ignoreCount = "0" | ||
27 | + continueAfterRunningActions = "No" | ||
28 | + filePath = "CommunicationProtocol.m" | ||
29 | + timestampString = "431362674.335425" | ||
30 | + startingColumnNumber = "9223372036854775807" | ||
31 | + endingColumnNumber = "9223372036854775807" | ||
32 | + startingLineNumber = "51" | ||
33 | + endingLineNumber = "51" | ||
34 | + landmarkName = "-readMessageAvailableDevice" | ||
35 | + landmarkType = "5"> | ||
36 | + </BreakpointContent> | ||
37 | + </BreakpointProxy> | ||
38 | + <BreakpointProxy | ||
39 | + BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> | ||
40 | + <BreakpointContent | ||
41 | + shouldBeEnabled = "No" | ||
42 | + ignoreCount = "0" | ||
43 | + continueAfterRunningActions = "No" | ||
44 | + filePath = "CommunicationProtocol.m" | ||
45 | + timestampString = "431362674.335425" | ||
46 | + startingColumnNumber = "9223372036854775807" | ||
47 | + endingColumnNumber = "9223372036854775807" | ||
48 | + startingLineNumber = "101" | ||
49 | + endingLineNumber = "101" | ||
50 | + landmarkName = "-waitForMessageAvailableDevice:" | ||
51 | + landmarkType = "5"> | ||
52 | + </BreakpointContent> | ||
53 | + </BreakpointProxy> | ||
54 | + <BreakpointProxy | ||
55 | + BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> | ||
56 | + <BreakpointContent | ||
57 | + shouldBeEnabled = "No" | ||
58 | + ignoreCount = "0" | ||
59 | + continueAfterRunningActions = "No" | ||
60 | + filePath = "CommunicationProtocol.m" | ||
61 | + timestampString = "431362674.335425" | ||
62 | + startingColumnNumber = "9223372036854775807" | ||
63 | + endingColumnNumber = "9223372036854775807" | ||
64 | + startingLineNumber = "105" | ||
65 | + endingLineNumber = "105" | ||
66 | + landmarkName = "-waitForMessageAvailableDevice:" | ||
67 | + landmarkType = "5"> | ||
68 | + </BreakpointContent> | ||
69 | + </BreakpointProxy> | ||
70 | + <BreakpointProxy | ||
71 | + BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> | ||
72 | + <BreakpointContent | ||
73 | + shouldBeEnabled = "Yes" | ||
74 | + ignoreCount = "0" | ||
75 | + continueAfterRunningActions = "No" | ||
76 | + filePath = "CommunicationProtocol.m" | ||
77 | + timestampString = "431363609.871016" | ||
78 | + startingColumnNumber = "9223372036854775807" | ||
79 | + endingColumnNumber = "9223372036854775807" | ||
80 | + startingLineNumber = "193" | ||
81 | + endingLineNumber = "193" | ||
82 | + landmarkName = "-writeMessage:" | ||
83 | + landmarkType = "5"> | ||
84 | + </BreakpointContent> | ||
85 | + </BreakpointProxy> | ||
86 | + </Breakpoints> | ||
5 | </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="13E28" 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="12F45" 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> |
@@ -156,6 +156,24 @@ | @@ -156,6 +156,24 @@ | ||
156 | </objects> | 156 | </objects> |
157 | <point key="canvasLocation" x="834" y="-9"/> | 157 | <point key="canvasLocation" x="834" y="-9"/> |
158 | </scene> | 158 | </scene> |
159 | + <!--View Controller--> | ||
160 | + <scene sceneID="agw-j4-kfO"> | ||
161 | + <objects> | ||
162 | + <viewController id="ant-Nj-pgA" sceneMemberID="viewController"> | ||
163 | + <layoutGuides> | ||
164 | + <viewControllerLayoutGuide type="top" id="SN7-Hq-ZIL"/> | ||
165 | + <viewControllerLayoutGuide type="bottom" id="Bb0-g7-RIh"/> | ||
166 | + </layoutGuides> | ||
167 | + <view key="view" contentMode="scaleToFill" id="m88-0L-ecz"> | ||
168 | + <rect key="frame" x="0.0" y="0.0" width="320" height="568"/> | ||
169 | + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | ||
170 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> | ||
171 | + </view> | ||
172 | + </viewController> | ||
173 | + <placeholder placeholderIdentifier="IBFirstResponder" id="5RD-WX-vrv" userLabel="First Responder" sceneMemberID="firstResponder"/> | ||
174 | + </objects> | ||
175 | + <point key="canvasLocation" x="1469" y="-383"/> | ||
176 | + </scene> | ||
159 | <!--Navigation Controller--> | 177 | <!--Navigation Controller--> |
160 | <scene sceneID="Ker-Z3-hzQ"> | 178 | <scene sceneID="Ker-Z3-hzQ"> |
161 | <objects> | 179 | <objects> |
@@ -183,13 +201,9 @@ | @@ -183,13 +201,9 @@ | ||
183 | <rect key="frame" x="0.0" y="0.0" width="320" height="568"/> | 201 | <rect key="frame" x="0.0" y="0.0" width="320" height="568"/> |
184 | <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | 202 | <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> |
185 | <subviews> | 203 | <subviews> |
186 | - <button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bXZ-vt-REt"> | 204 | + <button opaque="NO" contentMode="scaleAspectFit" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bXZ-vt-REt"> |
187 | <rect key="frame" x="96" y="220" width="128" height="128"/> | 205 | <rect key="frame" x="96" y="220" width="128" height="128"/> |
188 | <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | 206 | <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> |
189 | - <constraints> | ||
190 | - <constraint firstAttribute="height" constant="128" id="6dT-iW-SSO"/> | ||
191 | - <constraint firstAttribute="width" constant="128" id="kf5-YV-3Sh"/> | ||
192 | - </constraints> | ||
193 | <state key="normal" image="bluetooth.png"> | 207 | <state key="normal" image="bluetooth.png"> |
194 | <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/> | 208 | <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/> |
195 | </state> | 209 | </state> |
@@ -207,10 +221,10 @@ | @@ -207,10 +221,10 @@ | ||
207 | </subviews> | 221 | </subviews> |
208 | <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> | 222 | <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> |
209 | <constraints> | 223 | <constraints> |
210 | - <constraint firstAttribute="centerX" secondItem="bXZ-vt-REt" secondAttribute="centerX" id="Uyn-2O-ccf"/> | ||
211 | - <constraint firstItem="bXZ-vt-REt" firstAttribute="centerX" secondItem="oyW-sA-Lfb" secondAttribute="centerX" constant="-0.5" id="V2s-h0-oJw"/> | ||
212 | - <constraint firstAttribute="centerY" secondItem="bXZ-vt-REt" secondAttribute="centerY" id="hcc-LE-6Fa"/> | ||
213 | - <constraint firstItem="oyW-sA-Lfb" firstAttribute="top" secondItem="bXZ-vt-REt" secondAttribute="bottom" constant="8" id="o4R-UP-78W"/> | 224 | + <constraint firstItem="oyW-sA-Lfb" firstAttribute="centerX" secondItem="bXZ-vt-REt" secondAttribute="centerX" constant="0.5" id="DNg-dX-pwk"/> |
225 | + <constraint firstAttribute="centerY" secondItem="bXZ-vt-REt" secondAttribute="centerY" id="UT9-cH-z3k"/> | ||
226 | + <constraint firstItem="oyW-sA-Lfb" firstAttribute="top" secondItem="bXZ-vt-REt" secondAttribute="bottom" constant="8" id="i8M-sg-3Wz"/> | ||
227 | + <constraint firstAttribute="centerX" secondItem="bXZ-vt-REt" secondAttribute="centerX" id="mHc-1L-4hG"/> | ||
214 | </constraints> | 228 | </constraints> |
215 | </view> | 229 | </view> |
216 | <navigationItem key="navigationItem" id="VgB-ne-yWx"/> | 230 | <navigationItem key="navigationItem" id="VgB-ne-yWx"/> |
DUREX Vendor Control/MenuTableViewController.h
@@ -42,7 +42,9 @@ enum { | @@ -42,7 +42,9 @@ enum { | ||
42 | @interface MenuTableViewController : UITableViewController | 42 | @interface MenuTableViewController : UITableViewController |
43 | 43 | ||
44 | @property (strong,nonatomic) Stack *parentLayout; | 44 | @property (strong,nonatomic) Stack *parentLayout; |
45 | +@property (strong,nonatomic) IBOutlet UIView *popUpView; | ||
45 | 46 | ||
46 | - (void) navBack; | 47 | - (void) navBack; |
48 | +- (void)showInView:(UIView *)aView animated:(BOOL)animated; | ||
47 | 49 | ||
48 | @end | 50 | @end |
DUREX Vendor Control/MenuTableViewController.m
@@ -199,7 +199,8 @@ | @@ -199,7 +199,8 @@ | ||
199 | [[EMConnectionManager sharedManager] addObserver:self forKeyPath:@"connectionState" options:0 context:NULL]; | 199 | [[EMConnectionManager sharedManager] addObserver:self forKeyPath:@"connectionState" options:0 context:NULL]; |
200 | 200 | ||
201 | //DUREX protocol initialization | 201 | //DUREX protocol initialization |
202 | - [_protocol setMessageAvailable:false]; | 202 | + [_protocol setMessageAvailableMobile:false]; |
203 | + [_protocol setMessageAvailableDevice:false]; | ||
203 | if(![_protocol establishConnection]) | 204 | if(![_protocol establishConnection]) |
204 | { | 205 | { |
205 | UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Communication error" message:@"Error while trying to connect to the device" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; | 206 | UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Communication error" message:@"Error while trying to connect to the device" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; |
@@ -207,7 +208,7 @@ | @@ -207,7 +208,7 @@ | ||
207 | UIViewController *previous = [[[self navigationController] viewControllers] objectAtIndex:[[[self navigationController] viewControllers] count]-2]; | 208 | UIViewController *previous = [[[self navigationController] viewControllers] objectAtIndex:[[[self navigationController] viewControllers] count]-2]; |
208 | [[self navigationController] popToViewController:previous animated:YES]; | 209 | [[self navigationController] popToViewController:previous animated:YES]; |
209 | } | 210 | } |
210 | - | 211 | + |
211 | //Initialize parentLayout stack | 212 | //Initialize parentLayout stack |
212 | [self setParentLayout:[[Stack alloc]init]]; | 213 | [self setParentLayout:[[Stack alloc]init]]; |
213 | 214 | ||
@@ -215,6 +216,9 @@ | @@ -215,6 +216,9 @@ | ||
215 | [self initializeMenuEntries]; | 216 | [self initializeMenuEntries]; |
216 | self.currentNavLevel = 255; | 217 | self.currentNavLevel = 255; |
217 | [self changeNavLevel:MENU:FALSE]; | 218 | [self changeNavLevel:MENU:FALSE]; |
219 | + self.popUpView.layer.cornerRadius = 5; | ||
220 | + self.popUpView.layer.shadowOpacity = 0.8; | ||
221 | + self.popUpView.layer.shadowOffset = CGSizeMake(0.0f, 0.0f); | ||
218 | /* | 222 | /* |
219 | DUREXAppDelegate *appDelegate = (DUREXAppDelegate *)[[UIApplication sharedApplication] delegate]; | 223 | DUREXAppDelegate *appDelegate = (DUREXAppDelegate *)[[UIApplication sharedApplication] delegate]; |
220 | CustomNavigationController *navController = [appDelegate navController]; | 224 | CustomNavigationController *navController = [appDelegate navController]; |
@@ -232,18 +236,6 @@ | @@ -232,18 +236,6 @@ | ||
232 | { | 236 | { |
233 | id notificationValue = [[notification userInfo] objectForKey:kEMIndicatorResourceValueKey]; | 237 | id notificationValue = [[notification userInfo] objectForKey:kEMIndicatorResourceValueKey]; |
234 | NSString *resourceName = [[notification userInfo] objectForKey:kEMIndicatorNameKey]; | 238 | NSString *resourceName = [[notification userInfo] objectForKey:kEMIndicatorNameKey]; |
235 | - if([resourceName isEqualToString:@"messageAvailable"]) | ||
236 | - { | ||
237 | - NSString *resourceValue = [notificationValue stringValue]; | ||
238 | - if([resourceValue isEqualToString:@"TRUE"]) | ||
239 | - { | ||
240 | - [_protocol setMessageAvailable:TRUE]; | ||
241 | - } | ||
242 | - else | ||
243 | - { | ||
244 | - [_protocol setMessageAvailable:FALSE]; | ||
245 | - } | ||
246 | - } | ||
247 | } | 239 | } |
248 | 240 | ||
249 | -(void)dealloc | 241 | -(void)dealloc |
@@ -366,6 +358,46 @@ | @@ -366,6 +358,46 @@ | ||
366 | return cell; | 358 | return cell; |
367 | } | 359 | } |
368 | 360 | ||
361 | +- (void)showAnimate | ||
362 | +{ | ||
363 | + self.view.transform = CGAffineTransformMakeScale(1.3, 1.3); | ||
364 | + self.view.alpha = 0; | ||
365 | + [UIView animateWithDuration:.25 animations:^ | ||
366 | + { | ||
367 | + self.view.alpha = 1; | ||
368 | + self.view.transform = CGAffineTransformMakeScale(1, 1); | ||
369 | + }]; | ||
370 | +} | ||
371 | + | ||
372 | +- (void)removeAnimate | ||
373 | +{ | ||
374 | + [UIView animateWithDuration:.25 animations:^ | ||
375 | + { | ||
376 | + self.view.transform = CGAffineTransformMakeScale(1.3, 1.3); | ||
377 | + self.view.alpha = 0.0; | ||
378 | + } completion:^(BOOL finished) | ||
379 | + { | ||
380 | + if (finished) | ||
381 | + { | ||
382 | + [self.view removeFromSuperview]; | ||
383 | + } | ||
384 | + }]; | ||
385 | +} | ||
386 | + | ||
387 | +- (IBAction)closePopup:(id)sender | ||
388 | +{ | ||
389 | + [self removeAnimate]; | ||
390 | +} | ||
391 | + | ||
392 | +- (void)showInView:(UIView *)aView animated:(BOOL)animated | ||
393 | +{ | ||
394 | + [aView addSubview:self.view]; | ||
395 | + if (animated) | ||
396 | + { | ||
397 | + [self showAnimate]; | ||
398 | + } | ||
399 | +} | ||
400 | + | ||
369 | 401 | ||
370 | /* | 402 | /* |
371 | // Override to support conditional editing of the table view. | 403 | // Override to support conditional editing of the table view. |
DUREX Vendor Control/durex.json renamed to DUREX Vendor Control/system.json
@@ -16,6 +16,14 @@ | @@ -16,6 +16,14 @@ | ||
16 | "access": "rw", | 16 | "access": "rw", |
17 | "size": 1 | 17 | "size": 1 |
18 | }, | 18 | }, |
19 | + "messageAvailableDevice": { | ||
20 | + "id": 5, | ||
21 | + "align": 1, | ||
22 | + "attributes": {}, | ||
23 | + "type": "u1", | ||
24 | + "access": "rw", | ||
25 | + "size": 1 | ||
26 | + }, | ||
19 | "data": { | 27 | "data": { |
20 | "id": 2, | 28 | "id": 2, |
21 | "align": 1, | 29 | "align": 1, |
@@ -75,15 +83,6 @@ | @@ -75,15 +83,6 @@ | ||
75 | "access": "r", | 83 | "access": "r", |
76 | "size": 20 | 84 | "size": 20 |
77 | }, | 85 | }, |
78 | - "messageAvailable": { | ||
79 | - "id": 4, | ||
80 | - "align": 1, | ||
81 | - "pack": 1, | ||
82 | - "attributes": {"indicator": true}, | ||
83 | - "type": "E:@emmoco.com.DUREX/BOOLEAN", | ||
84 | - "access": "ir", | ||
85 | - "size": 1 | ||
86 | - }, | ||
87 | "$mcmProtocolLevel": { | 86 | "$mcmProtocolLevel": { |
88 | "id": -2, | 87 | "id": -2, |
89 | "align": 2, | 88 | "align": 2, |
@@ -100,6 +99,14 @@ | @@ -100,6 +99,14 @@ | ||
100 | "access": "r", | 99 | "access": "r", |
101 | "size": 1 | 100 | "size": 1 |
102 | }, | 101 | }, |
102 | + "messageAvailableMobile": { | ||
103 | + "id": 4, | ||
104 | + "align": 1, | ||
105 | + "attributes": {}, | ||
106 | + "type": "u1", | ||
107 | + "access": "rw", | ||
108 | + "size": 1 | ||
109 | + }, | ||
103 | "$fileIndexReset": { | 110 | "$fileIndexReset": { |
104 | "id": -5, | 111 | "id": -5, |
105 | "align": 2, | 112 | "align": 2, |
@@ -123,37 +130,37 @@ | @@ -123,37 +130,37 @@ | ||
123 | "manifest": { | 130 | "manifest": { |
124 | "protocolLevel": 13, | 131 | "protocolLevel": 13, |
125 | "hash": [ | 132 | "hash": [ |
126 | - 0, | ||
127 | - 164, | ||
128 | - 192, | ||
129 | - 32, | ||
130 | - 22, | ||
131 | - 163, | ||
132 | - 114, | ||
133 | - 239, | ||
134 | - 91, | ||
135 | - 240, | ||
136 | - 123, | ||
137 | - 128, | ||
138 | - 206, | ||
139 | - 12, | ||
140 | - 50, | ||
141 | - 148 | 133 | + 136, |
134 | + 153, | ||
135 | + 100, | ||
136 | + 70, | ||
137 | + 146, | ||
138 | + 253, | ||
139 | + 60, | ||
140 | + 140, | ||
141 | + 136, | ||
142 | + 30, | ||
143 | + 15, | ||
144 | + 57, | ||
145 | + 162, | ||
146 | + 138, | ||
147 | + 48, | ||
148 | + 141 | ||
142 | ], | 149 | ], |
143 | "toolVersion": "13.4.1.201311121909", | 150 | "toolVersion": "13.4.1.201311121909", |
144 | "name": "DUREX", | 151 | "name": "DUREX", |
145 | - "$$md5": "00a4c02016a372ef5bf07b80ce0c3294", | 152 | + "$$md5": "8899644692fd3c8c881e0f39a28a308d", |
146 | "build": [ | 153 | "build": [ |
147 | - 171, | ||
148 | - 30, | ||
149 | - 204, | ||
150 | - 135, | ||
151 | - 71, | 154 | + 140, |
155 | + 129, | ||
156 | + 134, | ||
157 | + 54, | ||
158 | + 72, | ||
152 | 1, | 159 | 1, |
153 | 0, | 160 | 0, |
154 | 0 | 161 | 0 |
155 | ], | 162 | ], |
156 | - "date": "2014-07-30T17:03:27T", | 163 | + "date": "2014-09-02T15:20:57T", |
157 | "maxAlign": 2, | 164 | "maxAlign": 2, |
158 | "maxSize": 201, | 165 | "maxSize": 201, |
159 | "version": "1.0.0" | 166 | "version": "1.0.0" |
@@ -162,7 +169,8 @@ | @@ -162,7 +169,8 @@ | ||
162 | "numBytes", | 169 | "numBytes", |
163 | "data", | 170 | "data", |
164 | "numPackets", | 171 | "numPackets", |
165 | - "messageAvailable", | 172 | + "messageAvailableMobile", |
173 | + "messageAvailableDevice", | ||
166 | "$mcmProtocolLevel", | 174 | "$mcmProtocolLevel", |
167 | "$eapProtocolLevel", | 175 | "$eapProtocolLevel", |
168 | "$eapBuildDate", | 176 | "$eapBuildDate", |
@@ -181,7 +189,8 @@ | @@ -181,7 +189,8 @@ | ||
181 | "numBytes", | 189 | "numBytes", |
182 | "data", | 190 | "data", |
183 | "numPackets", | 191 | "numPackets", |
184 | - "messageAvailable" | 192 | + "messageAvailableMobile", |
193 | + "messageAvailableDevice" | ||
185 | ], | 194 | ], |
186 | "types": { | 195 | "types": { |
187 | "system@emmoco.com.System/ResourceCount": { | 196 | "system@emmoco.com.System/ResourceCount": { |
@@ -218,16 +227,6 @@ | @@ -218,16 +227,6 @@ | ||
218 | "align": 1, | 227 | "align": 1, |
219 | "size": 1 | 228 | "size": 1 |
220 | }, | 229 | }, |
221 | - "@emmoco.com.DUREX/BOOLEAN": { | ||
222 | - "values": [ | ||
223 | - "TRUE", | ||
224 | - "FALSE" | ||
225 | - ], | ||
226 | - "align": 1, | ||
227 | - "pack": 1, | ||
228 | - "type": "E:@emmoco.com.DUREX/BOOLEAN", | ||
229 | - "size": 1 | ||
230 | - }, | ||
231 | "system@emmoco.com.System/ParameterGroup": { | 230 | "system@emmoco.com.System/ParameterGroup": { |
232 | "values": [ | 231 | "values": [ |
233 | "GROUP_A", | 232 | "GROUP_A", |
DUREX tests/Base.lproj/DatePickerViewController.xib
0 → 100644
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"> | ||
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="PopupViewController"> | ||
8 | + <connections> | ||
9 | + <outlet property="datePicker" destination="Kq0-yG-icP" id="0Sh-9C-xLc"/> | ||
10 | + <outlet property="datePickerView" destination="i5M-Pr-FkT" id="dES-lr-Zb0"/> | ||
11 | + <outlet property="view" destination="i5M-Pr-FkT" id="Pih-UT-VNB"/> | ||
12 | + </connections> | ||
13 | + </placeholder> | ||
14 | + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> | ||
15 | + <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> | ||
16 | + <rect key="frame" x="0.0" y="0.0" width="320" height="568"/> | ||
17 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
18 | + <subviews> | ||
19 | + <button opaque="NO" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7QC-Xa-liQ"> | ||
20 | + <rect key="frame" x="137" y="336" width="46" height="30"/> | ||
21 | + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | ||
22 | + <state key="normal" title="Done"> | ||
23 | + <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/> | ||
24 | + </state> | ||
25 | + <connections> | ||
26 | + <action selector="closePopup:" destination="-1" eventType="touchUpInside" id="oX3-hN-sqE"/> | ||
27 | + </connections> | ||
28 | + </button> | ||
29 | + <datePicker contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" datePickerMode="dateAndTime" minuteInterval="1" translatesAutoresizingMaskIntoConstraints="NO" id="Kq0-yG-icP"> | ||
30 | + <rect key="frame" x="0.0" y="138" width="320" height="162"/> | ||
31 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/> | ||
32 | + <date key="date" timeIntervalSinceReferenceDate="431369786.91497999"> | ||
33 | + <!--2014-09-02 16:56:26 +0000--> | ||
34 | + </date> | ||
35 | + <timeZone key="timeZone" name="America/Los_Angeles"> | ||
36 | + <mutableData key="data"> | ||
37 | +VFppZgAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAC5AAAABAAAABCepkign7sVkKCGKqChmveQ | ||
38 | +y4kaoNIj9HDSYSYQ1v50INiArZDa/tGg28CQENzes6DdqayQ3r6VoN+JjpDgnneg4WlwkOJ+WaDjSVKQ | ||
39 | +5F47oOUpNJDmR1gg5xJREOgnOiDo8jMQ6gccIOrSFRDr5v4g7LH3EO3G4CDukdkQ76/8oPBxuxDxj96g | ||
40 | +8n/BkPNvwKD0X6OQ9U+ioPY/hZD3L4Sg+CiiEPkPZqD6CIQQ+viDIPvoZhD82GUg/chIEP64RyD/qCoQ | ||
41 | +AJgpIAGIDBACeAsgA3EokARhJ6AFUQqQBkEJoAcw7JAHjUOgCRDOkAmtvyAK8LCQC+CvoAzZzRANwJGg | ||
42 | +DrmvEA+priAQmZEQEYmQIBJ5cxATaXIgFFlVEBVJVCAWOTcQFyk2IBgiU5AZCRggGgI1kBryNKAb4heQ | ||
43 | +HNIWoB3B+ZAesfigH6HbkCB2KyAhgb2QIlYNICNq2hAkNe8gJUq8ECYV0SAnKp4QJ/7toCkKgBAp3s+g | ||
44 | +KupiECu+saAs036QLZ6ToC6zYJAvfnWgMJNCkDFnkiAycySQM0d0IDRTBpA1J1YgNjLokDcHOCA4HAUQ | ||
45 | +OOcaIDn75xA6xvwgO9vJEDywGKA9u6sQPo/6oD+bjRBAb9ygQYSpkEJPvqBDZIuQRC+goEVEbZBF89Mg | ||
46 | +Ry2KEEfTtSBJDWwQSbOXIErtThBLnLOgTNZqkE18laBOtkyQT1x3oFCWLpBRPFmgUnYQkFMcO6BUVfKQ | ||
47 | +VPwdoFY11JBW5TogWB7xEFjFHCBZ/tMQWqT+IFvetRBchOAgXb6XEF5kwiBfnnkQYE3eoGGHlZBiLcCg | ||
48 | +Y2d3kGQNoqBlR1mQZe2EoGcnO5BnzWagaQcdkGmtSKBq5v+Qa5ZlIGzQHBBtdkcgbq/+EG9WKSBwj+AQ | ||
49 | +cTYLIHJvwhBzFe0gdE+kEHT/CaB2OMCQdt7roHgYopB4vs2gefiEkHqer6B72GaQfH6RoH24SJB+XnOg | ||
50 | +f5gqkAABAAECAwEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA | ||
51 | +AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA | ||
52 | +AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA | ||
53 | +AQABAAEAAQAB//+dkAEA//+PgAAE//+dkAEI//+dkAEMUERUAFBTVABQV1QAUFBUAAAAAAEAAAABA | ||
54 | +</mutableData> | ||
55 | + </timeZone> | ||
56 | + </datePicker> | ||
57 | + </subviews> | ||
58 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> | ||
59 | + <constraints> | ||
60 | + <constraint firstAttribute="centerX" secondItem="Kq0-yG-icP" secondAttribute="centerX" id="0GY-9z-buv"/> | ||
61 | + <constraint firstItem="7QC-Xa-liQ" firstAttribute="centerX" secondItem="Kq0-yG-icP" secondAttribute="centerX" id="kfK-JU-v9W"/> | ||
62 | + <constraint firstItem="7QC-Xa-liQ" firstAttribute="top" secondItem="Kq0-yG-icP" secondAttribute="bottom" constant="36" id="wkh-LB-fLl"/> | ||
63 | + </constraints> | ||
64 | + <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/> | ||
65 | + <simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina4"/> | ||
66 | + </view> | ||
67 | + </objects> | ||
68 | +</document> |
DUREX tests/Base.lproj/DatePickerViewController_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="12F45" 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="PopupViewController"> | ||
8 | + <connections> | ||
9 | + <outlet property="datePicker" destination="Ye8-NM-1gf" id="BK3-lm-uDP"/> | ||
10 | + <outlet property="datePickerView" destination="iN0-l3-epB" id="syx-4N-lWz"/> | ||
11 | + <outlet property="view" destination="iN0-l3-epB" id="ily-fa-aEh"/> | ||
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 | + <datePicker contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" datePickerMode="dateAndTime" minuteInterval="1" translatesAutoresizingMaskIntoConstraints="NO" id="Ye8-NM-1gf"> | ||
20 | + <rect key="frame" x="0.0" y="269" width="768" height="216"/> | ||
21 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/> | ||
22 | + <date key="date" timeIntervalSinceReferenceDate="431372189.40412599"> | ||
23 | + <!--2014-09-02 17:36:29 +0000--> | ||
24 | + </date> | ||
25 | + <timeZone key="timeZone" name="America/Los_Angeles"> | ||
26 | + <mutableData key="data"> | ||
27 | +VFppZgAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAC5AAAABAAAABCepkign7sVkKCGKqChmveQ | ||
28 | +y4kaoNIj9HDSYSYQ1v50INiArZDa/tGg28CQENzes6DdqayQ3r6VoN+JjpDgnneg4WlwkOJ+WaDjSVKQ | ||
29 | +5F47oOUpNJDmR1gg5xJREOgnOiDo8jMQ6gccIOrSFRDr5v4g7LH3EO3G4CDukdkQ76/8oPBxuxDxj96g | ||
30 | +8n/BkPNvwKD0X6OQ9U+ioPY/hZD3L4Sg+CiiEPkPZqD6CIQQ+viDIPvoZhD82GUg/chIEP64RyD/qCoQ | ||
31 | +AJgpIAGIDBACeAsgA3EokARhJ6AFUQqQBkEJoAcw7JAHjUOgCRDOkAmtvyAK8LCQC+CvoAzZzRANwJGg | ||
32 | +DrmvEA+priAQmZEQEYmQIBJ5cxATaXIgFFlVEBVJVCAWOTcQFyk2IBgiU5AZCRggGgI1kBryNKAb4heQ | ||
33 | +HNIWoB3B+ZAesfigH6HbkCB2KyAhgb2QIlYNICNq2hAkNe8gJUq8ECYV0SAnKp4QJ/7toCkKgBAp3s+g | ||
34 | +KupiECu+saAs036QLZ6ToC6zYJAvfnWgMJNCkDFnkiAycySQM0d0IDRTBpA1J1YgNjLokDcHOCA4HAUQ | ||
35 | +OOcaIDn75xA6xvwgO9vJEDywGKA9u6sQPo/6oD+bjRBAb9ygQYSpkEJPvqBDZIuQRC+goEVEbZBF89Mg | ||
36 | +Ry2KEEfTtSBJDWwQSbOXIErtThBLnLOgTNZqkE18laBOtkyQT1x3oFCWLpBRPFmgUnYQkFMcO6BUVfKQ | ||
37 | +VPwdoFY11JBW5TogWB7xEFjFHCBZ/tMQWqT+IFvetRBchOAgXb6XEF5kwiBfnnkQYE3eoGGHlZBiLcCg | ||
38 | +Y2d3kGQNoqBlR1mQZe2EoGcnO5BnzWagaQcdkGmtSKBq5v+Qa5ZlIGzQHBBtdkcgbq/+EG9WKSBwj+AQ | ||
39 | +cTYLIHJvwhBzFe0gdE+kEHT/CaB2OMCQdt7roHgYopB4vs2gefiEkHqer6B72GaQfH6RoH24SJB+XnOg | ||
40 | +f5gqkAABAAECAwEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA | ||
41 | +AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA | ||
42 | +AQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA | ||
43 | +AQABAAEAAQAB//+dkAEA//+PgAAE//+dkAEI//+dkAEMUERUAFBTVABQV1QAUFBUAAAAAAEAAAABA | ||
44 | +</mutableData> | ||
45 | + </timeZone> | ||
46 | + </datePicker> | ||
47 | + <button opaque="NO" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="b32-QI-eSJ"> | ||
48 | + <rect key="frame" x="361" y="511" width="46" height="30"/> | ||
49 | + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | ||
50 | + <state key="normal" title="Done"> | ||
51 | + <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/> | ||
52 | + </state> | ||
53 | + <connections> | ||
54 | + <action selector="closePopup:" destination="-1" eventType="touchUpInside" id="zqQ-J8-LT0"/> | ||
55 | + </connections> | ||
56 | + </button> | ||
57 | + </subviews> | ||
58 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> | ||
59 | + <constraints> | ||
60 | + <constraint firstItem="b32-QI-eSJ" firstAttribute="centerX" secondItem="Ye8-NM-1gf" secondAttribute="centerX" id="9Og-RH-pFc"/> | ||
61 | + <constraint firstAttribute="centerX" secondItem="Ye8-NM-1gf" secondAttribute="centerX" id="GZr-bO-HrS"/> | ||
62 | + <constraint firstItem="b32-QI-eSJ" firstAttribute="top" secondItem="Ye8-NM-1gf" secondAttribute="bottom" constant="34" id="X3X-ac-hcm"/> | ||
63 | + </constraints> | ||
64 | + <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/> | ||
65 | + </view> | ||
66 | + </objects> | ||
67 | +</document> |
DUREX tests/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="13E28" 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="12F45" 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> |
DUREX tests/DUREX test.xcodeproj/project.pbxproj
@@ -28,6 +28,9 @@ | @@ -28,6 +28,9 @@ | ||
28 | F98356D8192E906600EA6821 /* bluetooth.png in Resources */ = {isa = PBXBuildFile; fileRef = F98356D7192E906600EA6821 /* bluetooth.png */; }; | 28 | F98356D8192E906600EA6821 /* bluetooth.png in Resources */ = {isa = PBXBuildFile; fileRef = F98356D7192E906600EA6821 /* bluetooth.png */; }; |
29 | F98356DB192EAFD400EA6821 /* CommunicationProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = F98356DA192EAFD400EA6821 /* CommunicationProtocol.m */; }; | 29 | F98356DB192EAFD400EA6821 /* CommunicationProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = F98356DA192EAFD400EA6821 /* CommunicationProtocol.m */; }; |
30 | F98356E1192EC84700EA6821 /* MenuTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F98356E0192EC84700EA6821 /* MenuTableViewController.m */; }; | 30 | F98356E1192EC84700EA6821 /* MenuTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F98356E0192EC84700EA6821 /* MenuTableViewController.m */; }; |
31 | + F98ACEDC19B6294E00D90AEE /* DatePickerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F98ACEDA19B6294E00D90AEE /* DatePickerViewController.m */; }; | ||
32 | + F9AB5A6F19B63931006785E4 /* DatePickerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F9AB5A7119B63931006785E4 /* DatePickerViewController.xib */; }; | ||
33 | + F9AB5A7219B63938006785E4 /* DatePickerViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = F9AB5A7419B63938006785E4 /* DatePickerViewController_iPad.xib */; }; | ||
31 | F9C77F50192CDE30002DBE8A /* durex.json in Resources */ = {isa = PBXBuildFile; fileRef = F9C77F4F192CDE30002DBE8A /* durex.json */; }; | 34 | F9C77F50192CDE30002DBE8A /* durex.json in Resources */ = {isa = PBXBuildFile; fileRef = F9C77F4F192CDE30002DBE8A /* durex.json */; }; |
32 | /* End PBXBuildFile section */ | 35 | /* End PBXBuildFile section */ |
33 | 36 | ||
@@ -77,6 +80,14 @@ | @@ -77,6 +80,14 @@ | ||
77 | F98356DA192EAFD400EA6821 /* CommunicationProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CommunicationProtocol.m; sourceTree = SOURCE_ROOT; }; | 80 | F98356DA192EAFD400EA6821 /* CommunicationProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CommunicationProtocol.m; sourceTree = SOURCE_ROOT; }; |
78 | F98356DF192EC84700EA6821 /* MenuTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuTableViewController.h; sourceTree = SOURCE_ROOT; }; | 81 | F98356DF192EC84700EA6821 /* MenuTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuTableViewController.h; sourceTree = SOURCE_ROOT; }; |
79 | F98356E0192EC84700EA6821 /* MenuTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuTableViewController.m; sourceTree = SOURCE_ROOT; }; | 82 | F98356E0192EC84700EA6821 /* MenuTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuTableViewController.m; sourceTree = SOURCE_ROOT; }; |
83 | + F98ACED919B6294E00D90AEE /* DatePickerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatePickerViewController.h; sourceTree = SOURCE_ROOT; }; | ||
84 | + F98ACEDA19B6294E00D90AEE /* DatePickerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DatePickerViewController.m; sourceTree = SOURCE_ROOT; }; | ||
85 | + F9AB5A7019B63931006785E4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/DatePickerViewController.xib; sourceTree = "<group>"; }; | ||
86 | + F9AB5A7319B63938006785E4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/DatePickerViewController_iPad.xib; sourceTree = "<group>"; }; | ||
87 | + F9AB5A7619B6393C006785E4 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/DatePickerViewController.strings; sourceTree = "<group>"; }; | ||
88 | + F9AB5A7819B6393D006785E4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/DatePickerViewController.strings; sourceTree = "<group>"; }; | ||
89 | + F9AB5A7A19B6393F006785E4 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/DatePickerViewController_iPad.strings; sourceTree = "<group>"; }; | ||
90 | + F9AB5A7C19B63940006785E4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/DatePickerViewController_iPad.strings; sourceTree = "<group>"; }; | ||
80 | F9C77F4F192CDE30002DBE8A /* durex.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = durex.json; sourceTree = SOURCE_ROOT; }; | 91 | F9C77F4F192CDE30002DBE8A /* durex.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = durex.json; sourceTree = SOURCE_ROOT; }; |
81 | /* End PBXFileReference section */ | 92 | /* End PBXFileReference section */ |
82 | 93 | ||
@@ -149,6 +160,10 @@ | @@ -149,6 +160,10 @@ | ||
149 | F98356DA192EAFD400EA6821 /* CommunicationProtocol.m */, | 160 | F98356DA192EAFD400EA6821 /* CommunicationProtocol.m */, |
150 | F962A231192FCA8A00E4324A /* Stack.h */, | 161 | F962A231192FCA8A00E4324A /* Stack.h */, |
151 | F962A232192FCA8A00E4324A /* Stack.m */, | 162 | F962A232192FCA8A00E4324A /* Stack.m */, |
163 | + F98ACED919B6294E00D90AEE /* DatePickerViewController.h */, | ||
164 | + F98ACEDA19B6294E00D90AEE /* DatePickerViewController.m */, | ||
165 | + F9AB5A7119B63931006785E4 /* DatePickerViewController.xib */, | ||
166 | + F9AB5A7419B63938006785E4 /* DatePickerViewController_iPad.xib */, | ||
152 | 34AAB88C189805300019860D /* Images.xcassets */, | 167 | 34AAB88C189805300019860D /* Images.xcassets */, |
153 | 347186B91807290E00FA0FB2 /* Schemas */, | 168 | 347186B91807290E00FA0FB2 /* Schemas */, |
154 | 347186A718070F7F00FA0FB2 /* Device Picker */, | 169 | 347186A718070F7F00FA0FB2 /* Device Picker */, |
@@ -278,9 +293,11 @@ | @@ -278,9 +293,11 @@ | ||
278 | files = ( | 293 | files = ( |
279 | F98356D8192E906600EA6821 /* bluetooth.png in Resources */, | 294 | F98356D8192E906600EA6821 /* bluetooth.png in Resources */, |
280 | F9C77F50192CDE30002DBE8A /* durex.json in Resources */, | 295 | F9C77F50192CDE30002DBE8A /* durex.json in Resources */, |
296 | + F9AB5A6F19B63931006785E4 /* DatePickerViewController.xib in Resources */, | ||
281 | 34AAB88D189805300019860D /* Images.xcassets in Resources */, | 297 | 34AAB88D189805300019860D /* Images.xcassets in Resources */, |
282 | F92B0B6C19993D3F00CAEF3E /* Localizable.strings in Resources */, | 298 | F92B0B6C19993D3F00CAEF3E /* Localizable.strings in Resources */, |
283 | F961D7FE199A5B4700E9282C /* back_arrow.png in Resources */, | 299 | F961D7FE199A5B4700E9282C /* back_arrow.png in Resources */, |
300 | + F9AB5A7219B63938006785E4 /* DatePickerViewController_iPad.xib in Resources */, | ||
284 | F9469169193015EE006DACD3 /* icon_checkmark.png in Resources */, | 301 | F9469169193015EE006DACD3 /* icon_checkmark.png in Resources */, |
285 | F961D7F5199A4A4800E9282C /* MainStoryboard.storyboard in Resources */, | 302 | F961D7F5199A4A4800E9282C /* MainStoryboard.storyboard in Resources */, |
286 | F946916A193015EE006DACD3 /* icon_delete.png in Resources */, | 303 | F946916A193015EE006DACD3 /* icon_delete.png in Resources */, |
@@ -304,6 +321,7 @@ | @@ -304,6 +321,7 @@ | ||
304 | F98356D6192E835F00EA6821 /* InitialViewController.m in Sources */, | 321 | F98356D6192E835F00EA6821 /* InitialViewController.m in Sources */, |
305 | F962A233192FCA8A00E4324A /* Stack.m in Sources */, | 322 | F962A233192FCA8A00E4324A /* Stack.m in Sources */, |
306 | 34AAB885189804FF0019860D /* EMDevicePickerViewController.m in Sources */, | 323 | 34AAB885189804FF0019860D /* EMDevicePickerViewController.m in Sources */, |
324 | + F98ACEDC19B6294E00D90AEE /* DatePickerViewController.m in Sources */, | ||
307 | 34AAB883189804FF0019860D /* DUREXAppDelegate.m in Sources */, | 325 | 34AAB883189804FF0019860D /* DUREXAppDelegate.m in Sources */, |
308 | F98356DB192EAFD400EA6821 /* CommunicationProtocol.m in Sources */, | 326 | F98356DB192EAFD400EA6821 /* CommunicationProtocol.m in Sources */, |
309 | F98356E1192EC84700EA6821 /* MenuTableViewController.m in Sources */, | 327 | F98356E1192EC84700EA6821 /* MenuTableViewController.m in Sources */, |
@@ -359,6 +377,26 @@ | @@ -359,6 +377,26 @@ | ||
359 | name = back_arrow.png; | 377 | name = back_arrow.png; |
360 | sourceTree = SOURCE_ROOT; | 378 | sourceTree = SOURCE_ROOT; |
361 | }; | 379 | }; |
380 | + F9AB5A7119B63931006785E4 /* DatePickerViewController.xib */ = { | ||
381 | + isa = PBXVariantGroup; | ||
382 | + children = ( | ||
383 | + F9AB5A7019B63931006785E4 /* Base */, | ||
384 | + F9AB5A7619B6393C006785E4 /* es */, | ||
385 | + F9AB5A7819B6393D006785E4 /* en */, | ||
386 | + ); | ||
387 | + name = DatePickerViewController.xib; | ||
388 | + sourceTree = SOURCE_ROOT; | ||
389 | + }; | ||
390 | + F9AB5A7419B63938006785E4 /* DatePickerViewController_iPad.xib */ = { | ||
391 | + isa = PBXVariantGroup; | ||
392 | + children = ( | ||
393 | + F9AB5A7319B63938006785E4 /* Base */, | ||
394 | + F9AB5A7A19B6393F006785E4 /* es */, | ||
395 | + F9AB5A7C19B63940006785E4 /* en */, | ||
396 | + ); | ||
397 | + name = DatePickerViewController_iPad.xib; | ||
398 | + sourceTree = SOURCE_ROOT; | ||
399 | + }; | ||
362 | /* End PBXVariantGroup section */ | 400 | /* End PBXVariantGroup section */ |
363 | 401 | ||
364 | /* Begin XCBuildConfiguration section */ | 402 | /* Begin XCBuildConfiguration section */ |
@@ -398,6 +436,7 @@ | @@ -398,6 +436,7 @@ | ||
398 | "INFOPLIST_FILE[sdk=*]" = "DUREX test-Info.plist"; | 436 | "INFOPLIST_FILE[sdk=*]" = "DUREX test-Info.plist"; |
399 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; | 437 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; |
400 | ONLY_ACTIVE_ARCH = YES; | 438 | ONLY_ACTIVE_ARCH = YES; |
439 | + OTHER_CODE_SIGN_FLAGS = "-gta"; | ||
401 | SDKROOT = iphoneos; | 440 | SDKROOT = iphoneos; |
402 | TARGETED_DEVICE_FAMILY = "1,2"; | 441 | TARGETED_DEVICE_FAMILY = "1,2"; |
403 | }; | 442 | }; |
@@ -432,6 +471,7 @@ | @@ -432,6 +471,7 @@ | ||
432 | GCC_WARN_UNUSED_VARIABLE = YES; | 471 | GCC_WARN_UNUSED_VARIABLE = YES; |
433 | "INFOPLIST_FILE[sdk=*]" = "DUREX test-Info.plist"; | 472 | "INFOPLIST_FILE[sdk=*]" = "DUREX test-Info.plist"; |
434 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; | 473 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; |
474 | + OTHER_CODE_SIGN_FLAGS = "-gta"; | ||
435 | SDKROOT = iphoneos; | 475 | SDKROOT = iphoneos; |
436 | TARGETED_DEVICE_FAMILY = "1,2"; | 476 | TARGETED_DEVICE_FAMILY = "1,2"; |
437 | VALIDATE_PRODUCT = YES; | 477 | VALIDATE_PRODUCT = YES; |
DUREX tests/DUREX test.xcodeproj/project.xcworkspace/xcuserdata/imanol.xcuserdatad/UserInterfaceState.xcuserstate
No preview for this file type
DUREX tests/DatePickerViewController.h
0 → 100644
1 | +// | ||
2 | +// PopupViewController.h | ||
3 | +// DUREX test | ||
4 | +// | ||
5 | +// Created by Imanol Barba on 9/2/14. | ||
6 | +// Copyright (c) 2014 Emmoco. All rights reserved. | ||
7 | +// | ||
8 | + | ||
9 | +@class DatePickerViewController; | ||
10 | + | ||
11 | +#import <UIKit/UIKit.h> | ||
12 | +#import <QuartzCore/QuartzCore.h> | ||
13 | +#import "DUREXAppDelegate.h" | ||
14 | + | ||
15 | +@protocol DatePickerViewControllerDelegate <NSObject> | ||
16 | +- (void)addItemViewController:(DatePickerViewController*)controller didFinishEnteringItem:(NSDate *)date; | ||
17 | + | ||
18 | +@end | ||
19 | + | ||
20 | +@interface DatePickerViewController : UIViewController | ||
21 | + | ||
22 | +@property (strong, nonatomic) IBOutlet UIView *datePickerView; | ||
23 | +@property (strong, nonatomic) IBOutlet UIDatePicker *datePicker; | ||
24 | +@property (nonatomic, strong) id <DatePickerViewControllerDelegate> delegate; | ||
25 | + | ||
26 | +- (void)showInView:(UIView *)aView animated:(BOOL)animated; | ||
27 | +- (IBAction)closePopup:(id)sender; | ||
28 | + | ||
29 | +@end |
DUREX tests/DatePickerViewController.m
0 → 100644
1 | +// | ||
2 | +// PopupViewController.m | ||
3 | +// DUREX test | ||
4 | +// | ||
5 | +// Created by Imanol Barba on 9/2/14. | ||
6 | +// Copyright (c) 2014 Emmoco. All rights reserved. | ||
7 | +// | ||
8 | + | ||
9 | +#import "DatePickerViewController.h" | ||
10 | + | ||
11 | +@interface DatePickerViewController () | ||
12 | + | ||
13 | +@end | ||
14 | + | ||
15 | +@implementation DatePickerViewController | ||
16 | + | ||
17 | +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil | ||
18 | +{ | ||
19 | + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; | ||
20 | + if (self) { | ||
21 | + // Custom initialization | ||
22 | + } | ||
23 | + return self; | ||
24 | +} | ||
25 | + | ||
26 | +- (void)viewDidLoad | ||
27 | +{ | ||
28 | + self.view.backgroundColor=[[UIColor blackColor] colorWithAlphaComponent:.6]; | ||
29 | + self.datePickerView.layer.cornerRadius = 5; | ||
30 | + self.datePickerView.layer.shadowOpacity = 0.8; | ||
31 | + self.datePickerView.layer.shadowOffset = CGSizeMake(0.0f, 0.0f); | ||
32 | + [super viewDidLoad]; | ||
33 | + // Do any additional setup after loading the view from its nib. | ||
34 | +} | ||
35 | + | ||
36 | +- (void)didReceiveMemoryWarning | ||
37 | +{ | ||
38 | + [super didReceiveMemoryWarning]; | ||
39 | + // Dispose of any resources that can be recreated. | ||
40 | +} | ||
41 | + | ||
42 | +- (void)showAnimate | ||
43 | +{ | ||
44 | + self.view.transform = CGAffineTransformMakeScale(1.3, 1.3); | ||
45 | + self.view.alpha = 0; | ||
46 | + [UIView animateWithDuration:.25 animations:^{ | ||
47 | + self.view.alpha = 1; | ||
48 | + self.view.transform = CGAffineTransformMakeScale(1, 1); | ||
49 | + }]; | ||
50 | +} | ||
51 | + | ||
52 | +- (void)removeAnimate | ||
53 | +{ | ||
54 | + [UIView animateWithDuration:.25 animations:^{ | ||
55 | + self.view.transform = CGAffineTransformMakeScale(1.3, 1.3); | ||
56 | + self.view.alpha = 0.0; | ||
57 | + } completion:^(BOOL finished) { | ||
58 | + if (finished) { | ||
59 | + [self.view removeFromSuperview]; | ||
60 | + } | ||
61 | + }]; | ||
62 | +} | ||
63 | + | ||
64 | +- (IBAction)closePopup:(id)sender | ||
65 | +{ | ||
66 | + [self.delegate addItemViewController:self didFinishEnteringItem:[[self datePicker] date]]; | ||
67 | + [self removeAnimate]; | ||
68 | +} | ||
69 | + | ||
70 | +- (void)showInView:(UIView *)aView animated:(BOOL)animated | ||
71 | +{ | ||
72 | + [aView addSubview:self.view]; | ||
73 | + if (animated) { | ||
74 | + [self showAnimate]; | ||
75 | + } | ||
76 | +} | ||
77 | + | ||
78 | +@end |
DUREX tests/MenuTableViewController.h
@@ -9,6 +9,7 @@ | @@ -9,6 +9,7 @@ | ||
9 | #import <UIKit/UIKit.h> | 9 | #import <UIKit/UIKit.h> |
10 | #import "CommunicationProtocol.h" | 10 | #import "CommunicationProtocol.h" |
11 | #import "Stack.h" | 11 | #import "Stack.h" |
12 | +#import "DatePickerViewController.h" | ||
12 | 13 | ||
13 | #define num(x) [NSNumber numberWithUnsignedInt:x] | 14 | #define num(x) [NSNumber numberWithUnsignedInt:x] |
14 | 15 | ||
@@ -39,9 +40,10 @@ enum { | @@ -39,9 +40,10 @@ enum { | ||
39 | REPORT, | 40 | REPORT, |
40 | } navigationLevel; | 41 | } navigationLevel; |
41 | 42 | ||
42 | -@interface MenuTableViewController : UITableViewController | 43 | +@interface MenuTableViewController : UITableViewController <DatePickerViewControllerDelegate> |
43 | 44 | ||
44 | @property (strong,nonatomic) Stack *parentLayout; | 45 | @property (strong,nonatomic) Stack *parentLayout; |
46 | +@property (strong,nonatomic) DatePickerViewController *popupViewController; | ||
45 | 47 | ||
46 | - (void) navBack; | 48 | - (void) navBack; |
47 | 49 |
DUREX tests/MenuTableViewController.m
@@ -266,6 +266,19 @@ | @@ -266,6 +266,19 @@ | ||
266 | NSLog(@"[MenuTableViewController.m]: Changing to navLevel: BASIC_CONFIGURATION"); | 266 | NSLog(@"[MenuTableViewController.m]: Changing to navLevel: BASIC_CONFIGURATION"); |
267 | [self changeNavLevel:BASIC_CONFIGURATION:TRUE]; | 267 | [self changeNavLevel:BASIC_CONFIGURATION:TRUE]; |
268 | } | 268 | } |
269 | + else if([cellName isEqualToString:NSLocalizedString(@"Update Date & Time", nil)] && [self currentNavLevel] == BASIC_CONFIGURATION) | ||
270 | + { | ||
271 | + if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) | ||
272 | + { | ||
273 | + self.popupViewController = [[DatePickerViewController alloc] initWithNibName:@"DatePickerViewController_iPad" bundle:nil]; | ||
274 | + [self.popupViewController showInView:self.navigationController.view animated:YES]; | ||
275 | + } | ||
276 | + else | ||
277 | + { | ||
278 | + self.popupViewController = [[DatePickerViewController alloc] initWithNibName:@"DatePickerViewController" bundle:nil]; | ||
279 | + [self.popupViewController showInView:self.navigationController.view animated:YES]; | ||
280 | + } | ||
281 | + } | ||
269 | 282 | ||
270 | } | 283 | } |
271 | 284 | ||
@@ -333,6 +346,14 @@ | @@ -333,6 +346,14 @@ | ||
333 | return cell; | 346 | return cell; |
334 | } | 347 | } |
335 | 348 | ||
349 | +- (void)addItemViewController:(DatePickerViewController *)controller didFinishEnteringItem:(NSDate *)date | ||
350 | +{ | ||
351 | + NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; | ||
352 | + NSCalendarUnit units = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; | ||
353 | + NSDateComponents *components = [calendar components:units fromDate:date]; | ||
354 | + [_protocol updateTime: components]; | ||
355 | +} | ||
356 | + | ||
336 | 357 | ||
337 | /* | 358 | /* |
338 | // Override to support conditional editing of the table view. | 359 | // Override to support conditional editing of the table view. |
DUREX tests/durex.json deleted
1 | -{ | ||
2 | - "resources": { | ||
3 | - "$eapProtocolLevel": { | ||
4 | - "id": -3, | ||
5 | - "align": 2, | ||
6 | - "attributes": {"readonly": true}, | ||
7 | - "type": "u2", | ||
8 | - "access": "r", | ||
9 | - "size": 2 | ||
10 | - }, | ||
11 | - "numBytes": { | ||
12 | - "id": 1, | ||
13 | - "align": 1, | ||
14 | - "attributes": {}, | ||
15 | - "type": "u1", | ||
16 | - "access": "rw", | ||
17 | - "size": 1 | ||
18 | - }, | ||
19 | - "data": { | ||
20 | - "id": 2, | ||
21 | - "align": 1, | ||
22 | - "attributes": {}, | ||
23 | - "type": "C:201", | ||
24 | - "access": "rw", | ||
25 | - "size": 201 | ||
26 | - }, | ||
27 | - "$activeGroup": { | ||
28 | - "id": -10, | ||
29 | - "align": 1, | ||
30 | - "pack": 1, | ||
31 | - "attributes": {"readwrite": true}, | ||
32 | - "type": "E:system@emmoco.com.System/ParameterGroup", | ||
33 | - "access": "rw", | ||
34 | - "size": 1 | ||
35 | - }, | ||
36 | - "$mcmDisconnect": { | ||
37 | - "id": -9, | ||
38 | - "align": 1, | ||
39 | - "attributes": {"writeonly": true}, | ||
40 | - "type": "u1", | ||
41 | - "access": "w", | ||
42 | - "size": 1 | ||
43 | - }, | ||
44 | - "$eapBuildDate": { | ||
45 | - "dim": 8, | ||
46 | - "id": -4, | ||
47 | - "align": 1, | ||
48 | - "attributes": {"readonly": true}, | ||
49 | - "type": "A8:u1", | ||
50 | - "access": "r", | ||
51 | - "size": 8 | ||
52 | - }, | ||
53 | - "numPackets": { | ||
54 | - "id": 3, | ||
55 | - "align": 1, | ||
56 | - "attributes": {}, | ||
57 | - "type": "u1", | ||
58 | - "access": "rw", | ||
59 | - "size": 1 | ||
60 | - }, | ||
61 | - "$resourceCount": { | ||
62 | - "id": -7, | ||
63 | - "align": 1, | ||
64 | - "attributes": {"readonly": true}, | ||
65 | - "type": "S:system@emmoco.com.System/ResourceCount", | ||
66 | - "access": "r", | ||
67 | - "size": 2 | ||
68 | - }, | ||
69 | - "$schemaHash": { | ||
70 | - "dim": 20, | ||
71 | - "id": -6, | ||
72 | - "align": 1, | ||
73 | - "attributes": {"readonly": true}, | ||
74 | - "type": "A20:u1", | ||
75 | - "access": "r", | ||
76 | - "size": 20 | ||
77 | - }, | ||
78 | - "messageAvailable": { | ||
79 | - "id": 4, | ||
80 | - "align": 1, | ||
81 | - "pack": 1, | ||
82 | - "attributes": {"indicator": true}, | ||
83 | - "type": "E:@emmoco.com.DUREX/BOOLEAN", | ||
84 | - "access": "ir", | ||
85 | - "size": 1 | ||
86 | - }, | ||
87 | - "$mcmProtocolLevel": { | ||
88 | - "id": -2, | ||
89 | - "align": 2, | ||
90 | - "attributes": {"readonly": true}, | ||
91 | - "type": "u2", | ||
92 | - "access": "r", | ||
93 | - "size": 2 | ||
94 | - }, | ||
95 | - "$mobileRssi": { | ||
96 | - "id": -8, | ||
97 | - "align": 1, | ||
98 | - "attributes": {"readonly": true}, | ||
99 | - "type": "i1", | ||
100 | - "access": "r", | ||
101 | - "size": 1 | ||
102 | - }, | ||
103 | - "$fileIndexReset": { | ||
104 | - "id": -5, | ||
105 | - "align": 2, | ||
106 | - "attributes": {"writeonly": true}, | ||
107 | - "type": "i2", | ||
108 | - "access": "w", | ||
109 | - "size": 2 | ||
110 | - } | ||
111 | - }, | ||
112 | - "resourceNamesSys": [ | ||
113 | - "$activeGroup", | ||
114 | - "$eapBuildDate", | ||
115 | - "$eapProtocolLevel", | ||
116 | - "$fileIndexReset", | ||
117 | - "$mcmDisconnect", | ||
118 | - "$mcmProtocolLevel", | ||
119 | - "$mobileRssi", | ||
120 | - "$resourceCount", | ||
121 | - "$schemaHash" | ||
122 | - ], | ||
123 | - "manifest": { | ||
124 | - "protocolLevel": 13, | ||
125 | - "hash": [ | ||
126 | - 0, | ||
127 | - 164, | ||
128 | - 192, | ||
129 | - 32, | ||
130 | - 22, | ||
131 | - 163, | ||
132 | - 114, | ||
133 | - 239, | ||
134 | - 91, | ||
135 | - 240, | ||
136 | - 123, | ||
137 | - 128, | ||
138 | - 206, | ||
139 | - 12, | ||
140 | - 50, | ||
141 | - 148 | ||
142 | - ], | ||
143 | - "toolVersion": "13.4.1.201311121909", | ||
144 | - "name": "DUREX", | ||
145 | - "$$md5": "00a4c02016a372ef5bf07b80ce0c3294", | ||
146 | - "build": [ | ||
147 | - 171, | ||
148 | - 30, | ||
149 | - 204, | ||
150 | - 135, | ||
151 | - 71, | ||
152 | - 1, | ||
153 | - 0, | ||
154 | - 0 | ||
155 | - ], | ||
156 | - "date": "2014-07-30T17:03:27T", | ||
157 | - "maxAlign": 2, | ||
158 | - "maxSize": 201, | ||
159 | - "version": "1.0.0" | ||
160 | - }, | ||
161 | - "resourceNames": [ | ||
162 | - "numBytes", | ||
163 | - "data", | ||
164 | - "numPackets", | ||
165 | - "messageAvailable", | ||
166 | - "$mcmProtocolLevel", | ||
167 | - "$eapProtocolLevel", | ||
168 | - "$eapBuildDate", | ||
169 | - "$fileIndexReset", | ||
170 | - "$schemaHash", | ||
171 | - "$resourceCount", | ||
172 | - "$mobileRssi", | ||
173 | - "$mcmDisconnect", | ||
174 | - "$activeGroup" | ||
175 | - ], | ||
176 | - "attributes": { | ||
177 | - "description": "", | ||
178 | - "version": "1.0.0" | ||
179 | - }, | ||
180 | - "resourceNamesApp": [ | ||
181 | - "numBytes", | ||
182 | - "data", | ||
183 | - "numPackets", | ||
184 | - "messageAvailable" | ||
185 | - ], | ||
186 | - "types": { | ||
187 | - "system@emmoco.com.System/ResourceCount": { | ||
188 | - "packed": false, | ||
189 | - "align": 1, | ||
190 | - "type": "S:system@emmoco.com.System/ResourceCount", | ||
191 | - "size": 2, | ||
192 | - "fields": [ | ||
193 | - { | ||
194 | - "pad": 0, | ||
195 | - "align": 1, | ||
196 | - "name": "app", | ||
197 | - "type": "u1", | ||
198 | - "size": 1 | ||
199 | - }, | ||
200 | - { | ||
201 | - "pad": 0, | ||
202 | - "align": 1, | ||
203 | - "name": "sys", | ||
204 | - "type": "u1", | ||
205 | - "size": 1 | ||
206 | - } | ||
207 | - ] | ||
208 | - }, | ||
209 | - "std:i2": { | ||
210 | - "align": 2, | ||
211 | - "size": 2 | ||
212 | - }, | ||
213 | - "std:i1": { | ||
214 | - "align": 1, | ||
215 | - "size": 1 | ||
216 | - }, | ||
217 | - "std:u1": { | ||
218 | - "align": 1, | ||
219 | - "size": 1 | ||
220 | - }, | ||
221 | - "@emmoco.com.DUREX/BOOLEAN": { | ||
222 | - "values": [ | ||
223 | - "TRUE", | ||
224 | - "FALSE" | ||
225 | - ], | ||
226 | - "align": 1, | ||
227 | - "pack": 1, | ||
228 | - "type": "E:@emmoco.com.DUREX/BOOLEAN", | ||
229 | - "size": 1 | ||
230 | - }, | ||
231 | - "system@emmoco.com.System/ParameterGroup": { | ||
232 | - "values": [ | ||
233 | - "GROUP_A", | ||
234 | - "GROUP_B" | ||
235 | - ], | ||
236 | - "align": 1, | ||
237 | - "pack": 1, | ||
238 | - "type": "E:system@emmoco.com.System/ParameterGroup", | ||
239 | - "size": 1 | ||
240 | - }, | ||
241 | - "std:u2": { | ||
242 | - "align": 2, | ||
243 | - "size": 2 | ||
244 | - } | ||
245 | - }, | ||
246 | - "imports": {"@emmoco.com.DUREX": true} | ||
247 | -} | ||
248 | \ No newline at end of file | 0 | \ No newline at end of file |
DUREX tests/en.lproj/DatePickerViewController.strings
0 → 100644
DUREX tests/en.lproj/DatePickerViewController_iPad.strings
0 → 100644
DUREX tests/es.lproj/DatePickerViewController.strings
0 → 100644
DUREX tests/es.lproj/DatePickerViewController_iPad.strings
0 → 100644