Skip to content

Commit 08068ee

Browse files
committed
Add message classes
Add tests for messages
1 parent b4c793d commit 08068ee

File tree

7 files changed

+99
-3
lines changed

7 files changed

+99
-3
lines changed

RobotController.xcodeproj/project.pbxproj

+4
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
A2D937061C0554AA0004FECF /* ytcpsocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2D937011C0554AA0004FECF /* ytcpsocket.swift */; };
2222
A2D937071C0554AA0004FECF /* yudpsocket.c in Sources */ = {isa = PBXBuildFile; fileRef = A2D937021C0554AA0004FECF /* yudpsocket.c */; };
2323
A2D937081C0554AA0004FECF /* yudpsocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2D937031C0554AA0004FECF /* yudpsocket.swift */; };
24+
A2D9370A1C072F460004FECF /* Message.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2D937091C072F460004FECF /* Message.swift */; };
2425
/* End PBXBuildFile section */
2526

2627
/* Begin PBXContainerItemProxy section */
@@ -62,6 +63,7 @@
6263
A2D937011C0554AA0004FECF /* ytcpsocket.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ytcpsocket.swift; sourceTree = "<group>"; };
6364
A2D937021C0554AA0004FECF /* yudpsocket.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = yudpsocket.c; sourceTree = "<group>"; };
6465
A2D937031C0554AA0004FECF /* yudpsocket.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = yudpsocket.swift; sourceTree = "<group>"; };
66+
A2D937091C072F460004FECF /* Message.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Message.swift; sourceTree = "<group>"; };
6567
/* End PBXFileReference section */
6668

6769
/* Begin PBXFrameworksBuildPhase section */
@@ -126,6 +128,7 @@
126128
A2D936CE1C054BD40004FECF /* Info.plist */,
127129
A2D936F01C054EAB0004FECF /* Robot.swift */,
128130
A2D936FE1C0554A90004FECF /* RobotController-Bridging-Header.h */,
131+
A2D937091C072F460004FECF /* Message.swift */,
129132
);
130133
path = RobotController;
131134
sourceTree = "<group>";
@@ -289,6 +292,7 @@
289292
A2D937041C0554AA0004FECF /* ysocket.swift in Sources */,
290293
A2D937051C0554AA0004FECF /* ytcpsocket.c in Sources */,
291294
A2D937081C0554AA0004FECF /* yudpsocket.swift in Sources */,
295+
A2D9370A1C072F460004FECF /* Message.swift in Sources */,
292296
A2D937061C0554AA0004FECF /* ytcpsocket.swift in Sources */,
293297
A2D936C31C054BD40004FECF /* FirstViewController.swift in Sources */,
294298
);

RobotController/Message.swift

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
//
2+
// Message.swift
3+
// RobotController
4+
//
5+
// Created by ryan day on 11/26/15.
6+
// Copyright © 2015 Curious. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
enum MessageTyoe {
12+
case AddServo, RotateType, RotateServo, ClearServo
13+
}
14+
15+
class Message {
16+
let SOM:UInt8 = 0xf0
17+
let EOM:UInt8 = 0xf1
18+
19+
func serialize() -> [UInt8] {
20+
return []
21+
}
22+
}
23+
24+
class AddServoMessage : Message {
25+
let mesageType:UInt8 = 1
26+
let size:UInt8 = 2
27+
var _servoType: UInt8
28+
var _gpio: UInt8
29+
30+
init(gpio: UInt8, servoType: UInt8) {
31+
_servoType = servoType
32+
_gpio = gpio
33+
}
34+
35+
func setInverse() {
36+
_servoType |= 0x80
37+
}
38+
39+
override func serialize() -> [UInt8]{
40+
return [SOM, size, _servoType, _gpio, EOM]
41+
}
42+
}
43+
44+
class RotateServoTypeMessage : Message {
45+
let mesageType:UInt8 = 2
46+
let size:UInt8 = 4
47+
var _mask: UInt8
48+
var _pulseWidth: UInt16
49+
50+
init(mask: UInt8, pulseWidth: UInt16) {
51+
_mask = mask
52+
_pulseWidth = pulseWidth
53+
}
54+
55+
override func serialize() -> [UInt8]{
56+
return [SOM, size, _mask, UInt8(_pulseWidth >> 8), UInt8(_pulseWidth & 0xff), EOM]
57+
}
58+
}
59+
60+
class RotateServoMessage : Message {
61+
let mesageType:UInt8 = 3
62+
let size:UInt8 = 4
63+
var gpio: UInt8
64+
var pulseWidth: UInt16
65+
66+
init(_gpio: UInt8, _pulseWidth: UInt16) {
67+
gpio = _gpio
68+
pulseWidth = _pulseWidth
69+
}
70+
71+
override func serialize() -> [UInt8]{
72+
return [SOM, size, gpio, UInt8(pulseWidth >> 8), UInt8(pulseWidth), EOM]
73+
}
74+
}

RobotControllerTests/RobotControllerTests.swift

+16-2
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,25 @@ class RobotControllerTests: XCTestCase {
2121
super.tearDown()
2222
}
2323

24-
func testExample() {
24+
func testAddServoMessage() {
2525
// This is an example of a functional test case.
2626
// Use XCTAssert and related functions to verify your tests produce the correct results.
27+
let msg = AddServoMessage(gpio: 12, servoType: 1)
28+
29+
XCTAssert(msg.serialize() == [0xf0, 0x02, 0x01, 0x0c, 0xf1])
30+
31+
msg.setInverse()
32+
XCTAssert(msg.serialize() == [0xf0, 0x02, 0x81, 0x0c, 0xf1])
2733
}
28-
34+
35+
func testRotateServoMessage() {
36+
// This is an example of a functional test case.
37+
// Use XCTAssert and related functions to verify your tests produce the correct results.
38+
let msg = RotateServoTypeMessage(mask: 0x01, pulseWidth: 2000)
39+
40+
XCTAssert(msg.serialize() == [0xf0, 0x04, 0x01, 0x07, 0xd0, 0xf1])
41+
}
42+
2943
func testPerformanceExample() {
3044
// This is an example of a performance test case.
3145
self.measureBlock {

RobotControllerUITests/RobotControllerUITests.swift

+5-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ class RobotControllerUITests: XCTestCase {
1818
// In UI tests it is usually best to stop immediately when a failure occurs.
1919
continueAfterFailure = false
2020
// UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
21-
XCUIApplication().launch()
21+
if #available(iOS 9.0, *) {
22+
XCUIApplication().launch()
23+
} else {
24+
// Fallback on earlier versions
25+
}
2226

2327
// In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
2428
}

0 commit comments

Comments
 (0)