Skip to content

Commit 615235d

Browse files
committed
Add developer mode options for music, improve code
1 parent 4117fcb commit 615235d

4 files changed

Lines changed: 45 additions & 9 deletions

File tree

InfiniLink.xcodeproj/project.pbxproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -554,8 +554,8 @@
554554
E0C7C8362CAEF6BF0043DA2D /* Core */ = {
555555
isa = PBXGroup;
556556
children = (
557-
E05046872D136F0600FE4BCD /* Developer */,
558557
E0A7C09F2CB245F70042A12D /* Components */,
558+
E05046872D136F0600FE4BCD /* Developer */,
559559
E059999A2CB2E55500D64E0B /* Apps */,
560560
E0A7C0742CB0ECD10042A12D /* Settings */,
561561
E0B85D172CB6241000D85122 /* Exercise */,

InfiniLink/Core/Developer/DeveloperView.swift

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,14 @@
88
import SwiftUI
99

1010
struct DeveloperView: View {
11-
let bleWriteManager = BLEWriteManager()
11+
@ObservedObject var bleManager = BLEManager.shared
1212

1313
@AppStorage("useExperimentalDFU") var useExperimentalDFU = false
14+
@AppStorage("includeTestArtist") var includeTestArtist = true
15+
@AppStorage("includeTestSongName") var includeTestSongName = true
16+
17+
private let bleWriteManager = BLEWriteManager()
18+
private let musicController = MusicController.shared
1419

1520
var body: some View {
1621
List {
@@ -19,7 +24,7 @@ struct DeveloperView: View {
1924
DebugLogsView()
2025
}
2126
}
22-
Section {
27+
Section("Test Data") {
2328
Button("Test Weather") {
2429
bleWriteManager.writeForecastWeatherData(minimumTemperature: {
2530
var mins = [Double]()
@@ -51,8 +56,27 @@ struct DeveloperView: View {
5156
Button("Test Navigation") {
5257
bleWriteManager.writeNavigationUpdate()
5358
}
54-
} header: {
55-
Text("Test Data")
59+
}
60+
Section {
61+
Button("Test Music") {
62+
if let playbackChar = bleManager.musicChars.position, let durationChar = bleManager.musicChars.length, let statusChar = bleManager.musicChars.status {
63+
bleWriteManager.writeHexToMusicApp(message: musicController.convertTime(value: 78), characteristic: playbackChar)
64+
bleWriteManager.writeHexToMusicApp(message: musicController.convertTime(value: 147), characteristic: durationChar)
65+
66+
bleWriteManager.writeHexToMusicApp(message: Bool.random() ? [0x01] : [0x00], characteristic: statusChar)
67+
}
68+
69+
if let artistChar = bleManager.musicChars.artist, includeTestArtist {
70+
bleWriteManager.writeToMusicApp(message: "Artist Name", characteristic: artistChar)
71+
}
72+
if let trackChar = bleManager.musicChars.track, includeTestSongName {
73+
bleWriteManager.writeToMusicApp(message: "Song Name", characteristic: trackChar)
74+
}
75+
}
76+
}
77+
Section {
78+
Toggle("Include Song Name", isOn: $includeTestSongName)
79+
Toggle("Include Artist", isOn: $includeTestArtist)
5680
} footer: {
5781
Text("Send randomly generated data to the various characteristics on the watch.")
5882
}

InfiniLink/Localizable.xcstrings

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,12 @@
487487
},
488488
"Imperial" : {
489489

490+
},
491+
"Include Artist" : {
492+
493+
},
494+
"Include Song Name" : {
495+
490496
},
491497
"InfiniLink " : {
492498

@@ -709,6 +715,9 @@
709715
},
710716
"Test Data" : {
711717

718+
},
719+
"Test Music" : {
720+
712721
},
713722
"Test Navigation" : {
714723

InfiniLink/Utils/MusicController.swift

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ class MusicController {
2121
let volumeSlots: Float = 15.0
2222

2323
struct SongInfo {
24-
var trackName: String!
25-
var artistName: String!
24+
var trackName: String = ""
25+
var artistName: String = ""
2626
}
2727

2828
enum MusicState {
@@ -100,12 +100,15 @@ class MusicController {
100100
let bleWriteManager = BLEWriteManager()
101101

102102
let songInfo = getCurrentSongInfo()
103+
var playbackTime = musicPlayer.currentPlaybackTime
104+
if playbackTime == musicPlayer.nowPlayingItem?.playbackDuration {
105+
// The playback time will be the duration of the song if it just started, so set it to zero
106+
playbackTime = 0.0
107+
}
103108

104109
bleWriteManager.writeToMusicApp(message: songInfo.trackName, characteristic: bleManager.musicChars.track)
105110
bleWriteManager.writeToMusicApp(message: songInfo.artistName, characteristic: bleManager.musicChars.artist)
106111

107-
var playbackTime = musicPlayer.currentPlaybackTime
108-
109112
bleWriteManager.writeHexToMusicApp(message: convertTime(value: playbackTime), characteristic: bleManager.musicChars.position)
110113
bleWriteManager.writeHexToMusicApp(message: convertTime(value: musicPlayer.nowPlayingItem?.playbackDuration ?? 0.0), characteristic: bleManager.musicChars.length)
111114

0 commit comments

Comments
 (0)