feat: extend BindPayload with optional loop field; add setPlayMode service
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -27,14 +27,26 @@ final class DeviceInfoService {
|
||||
func bindDevice(userId: String) throws {
|
||||
try protocolService.sendJSON(
|
||||
type: .bindDevice,
|
||||
payload: BindPayload(type: CommandType.bindDevice.rawValue, userId: userId)
|
||||
payload: BindPayload(type: CommandType.bindDevice.rawValue, userId: userId, loop: nil)
|
||||
)
|
||||
}
|
||||
|
||||
func unbindDevice(userId: String) throws {
|
||||
try protocolService.sendJSON(
|
||||
type: .unbindDevice,
|
||||
payload: BindPayload(type: CommandType.unbindDevice.rawValue, userId: userId)
|
||||
payload: BindPayload(type: CommandType.unbindDevice.rawValue, userId: userId, loop: nil)
|
||||
)
|
||||
}
|
||||
|
||||
/// 切换播放模式(复用 BIND_DEVICE 命令字 0x0F,payload 携带 loop 字段)
|
||||
func setPlayMode(userId: String, loop: PlayMode) throws {
|
||||
try protocolService.sendJSON(
|
||||
type: .bindDevice,
|
||||
payload: BindPayload(
|
||||
type: CommandType.bindDevice.rawValue,
|
||||
userId: userId,
|
||||
loop: UInt8(loop.rawValue)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -63,9 +75,25 @@ private struct CommandPayload: Encodable {
|
||||
let type: UInt8
|
||||
}
|
||||
|
||||
private struct BindPayload: Encodable {
|
||||
/// 绑定 / 解绑 / 切模式 共用 payload。
|
||||
/// `loop == nil` 时严格省略该字段(不写 null),与 Expo 端 zod.optional 行为对齐。
|
||||
struct BindPayload: Encodable {
|
||||
let type: UInt8
|
||||
let userId: String
|
||||
let loop: UInt8?
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case type, userId, loop
|
||||
}
|
||||
|
||||
func encode(to encoder: Encoder) throws {
|
||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||
try container.encode(type, forKey: .type)
|
||||
try container.encode(userId, forKey: .userId)
|
||||
if let loop = loop {
|
||||
try container.encode(loop, forKey: .loop)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private struct FileKeyPayload: Encodable {
|
||||
|
||||
Reference in New Issue
Block a user