You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
237 lines
6.8 KiB
237 lines
6.8 KiB
![]()
2 years ago
|
//
|
||
|
// DeviceInfo.swift
|
||
|
// Lookfit
|
||
|
//
|
||
|
// Created by lemo. on 2020/3/22.
|
||
|
// Copyright © 2020 Sheldon. All rights reserved.
|
||
|
//
|
||
|
|
||
|
import Foundation
|
||
|
import ObjectMapper
|
||
|
|
||
|
fileprivate enum FuncCmd: Int {
|
||
|
case heartRate = 1
|
||
|
case weather, dailPush, wechatSport, bodyTemperature, bloodPressure, bloodOxygen, ecg, gps
|
||
|
/// 抬手亮屏
|
||
|
case raiseHand
|
||
|
/// 来电通知
|
||
|
case callRemind = 11
|
||
|
/// 短信通知
|
||
|
case messageRemind = 12
|
||
|
/// 远程拍照
|
||
|
case remoteCamera = 13
|
||
|
/// 应用通知
|
||
|
case appRemind = 14
|
||
|
/// 心率监测
|
||
|
case heartCheck
|
||
|
/// 固件版本
|
||
|
case firmwareVersion
|
||
|
/// 勿扰模式
|
||
|
case notDisturb
|
||
|
/// 闹钟
|
||
|
case alarmRemind
|
||
|
/// 久坐提醒
|
||
|
case sedentaryRemind
|
||
|
/// 喝水提醒
|
||
|
case drinkRemind
|
||
|
/// 单位设置
|
||
|
case unitSet
|
||
|
/// 目标设置
|
||
|
case targetSet
|
||
|
/// 设备查找
|
||
|
case deviceFind
|
||
|
/// 音乐管理
|
||
|
case music = 30
|
||
|
/// 通讯录
|
||
|
case telephoneBook = 28
|
||
|
/// 钱包
|
||
|
case theWallet = 26
|
||
|
/// 名片
|
||
|
case businessCard = 27
|
||
|
/// 睡眠
|
||
|
case sleep = 24
|
||
|
}
|
||
|
|
||
|
struct AdapterInfo: Mappable {
|
||
|
var heartRate: Bool = true
|
||
|
var weather: Bool = false
|
||
|
var dailPush: Bool = false
|
||
|
var wechatSport: Bool = false
|
||
|
var bodyTemperature: Bool = false
|
||
|
var bloodPressure: Bool = false
|
||
|
var bloodOxygen: Bool = false
|
||
|
var ecg: Bool = false
|
||
|
var gps: Bool = false
|
||
|
var callRemind: Bool = false
|
||
|
var messageRemind: Bool = false
|
||
|
var remoteCamera: Bool = false
|
||
|
var appRemind: Bool = false
|
||
|
var deviceFind: Bool = false
|
||
|
var raiseHand: Bool = false
|
||
|
var heartCheck: Bool = false
|
||
|
var firmwareVersion: Bool = false
|
||
|
var notDisturb: Bool = false
|
||
|
var alarmRemind: Bool = false
|
||
|
var sedentaryRemind: Bool = false
|
||
|
var drinkRemind: Bool = false
|
||
|
var unitSet: Bool = false
|
||
|
var targetSet: Bool = false
|
||
|
var telephoneBook: Bool = false
|
||
|
var businessCard: Bool = false
|
||
|
var theWallet: Bool = false
|
||
|
var music: Bool = false
|
||
|
var sleep: Bool = false
|
||
|
|
||
|
var adapterNumber: Int = 0
|
||
|
|
||
|
init?(map: Map) {}
|
||
|
|
||
|
/// 构建适配模型
|
||
|
/// - Parameter funcCmds: 功能码数组
|
||
|
init(funcCmds: [Int], adapterNumber: Int) {
|
||
|
self.adapterNumber = adapterNumber
|
||
|
funcCmds.forEach { (cmd) in
|
||
|
if let funcCmd = FuncCmd(rawValue: cmd) {
|
||
|
switch funcCmd {
|
||
|
case .heartRate:
|
||
|
heartRate = true
|
||
|
case .dailPush:
|
||
|
dailPush = true
|
||
|
case .wechatSport:
|
||
|
wechatSport = true
|
||
|
case .bodyTemperature:
|
||
|
bodyTemperature = true
|
||
|
case .bloodPressure:
|
||
|
bloodPressure = true
|
||
|
case .bloodOxygen:
|
||
|
bloodOxygen = true
|
||
|
case .ecg:
|
||
|
ecg = true
|
||
|
case .gps:
|
||
|
gps = true
|
||
|
case .weather:
|
||
|
weather = true
|
||
|
case .callRemind:
|
||
|
callRemind = true
|
||
|
case .messageRemind:
|
||
|
messageRemind = true
|
||
|
case .remoteCamera:
|
||
|
remoteCamera = true
|
||
|
case .appRemind:
|
||
|
appRemind = true
|
||
|
case .deviceFind:
|
||
|
deviceFind = true
|
||
|
case .raiseHand:
|
||
|
raiseHand = true
|
||
|
case .heartCheck:
|
||
|
heartCheck = true
|
||
|
case .firmwareVersion:
|
||
|
firmwareVersion = true
|
||
|
case .notDisturb:
|
||
|
notDisturb = true
|
||
|
case .alarmRemind:
|
||
|
alarmRemind = true
|
||
|
case .sedentaryRemind:
|
||
|
sedentaryRemind = true
|
||
|
case .drinkRemind:
|
||
|
drinkRemind = true
|
||
|
case .unitSet:
|
||
|
unitSet = true
|
||
|
case .targetSet:
|
||
|
targetSet = true
|
||
|
case .telephoneBook:
|
||
|
telephoneBook = true
|
||
|
case .theWallet:
|
||
|
theWallet = true
|
||
|
case .businessCard:
|
||
|
businessCard = true
|
||
|
case .music:
|
||
|
music = true
|
||
|
case .sleep:
|
||
|
sleep = true
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
mutating func mapping(map: Map) {
|
||
|
heartRate <- map["heartRate"]
|
||
|
weather <- map["weather"]
|
||
|
dailPush <- map["dailPush"]
|
||
|
wechatSport <- map["wechatSport"]
|
||
|
bodyTemperature <- map["bodyTemperature"]
|
||
|
bloodPressure <- map["bloodPressure"]
|
||
|
bloodOxygen <- map["bloodOxygen"]
|
||
|
ecg <- map["ecg"]
|
||
|
gps <- map["gps"]
|
||
|
callRemind <- map["callRemind"]
|
||
|
messageRemind <- map["messageRemind"]
|
||
|
remoteCamera <- map["remoteCamera"]
|
||
|
appRemind <- map["appRemind"]
|
||
|
deviceFind <- map["deviceFind"]
|
||
|
raiseHand <- map["raiseHand"]
|
||
|
heartCheck <- map["heartCheck"]
|
||
|
firmwareVersion <- map["firmwareVersion"]
|
||
|
notDisturb <- map["notDisturb"]
|
||
|
alarmRemind <- map["alarmRemind"]
|
||
|
sedentaryRemind <- map["sedentaryRemind"]
|
||
|
drinkRemind <- map["drinkRemind"]
|
||
|
unitSet <- map["unitSet"]
|
||
|
targetSet <- map["targetSet"]
|
||
|
adapterNumber <- map["adapterNumber"]
|
||
|
telephoneBook <- map["telephoneBook"]
|
||
|
theWallet <- map["theWallet"]
|
||
|
businessCard <- map["businessCard"]
|
||
|
music <- map["music"]
|
||
|
sleep <- map["sleep"]
|
||
|
}
|
||
|
|
||
|
/// 支持的目标设置,不支持返回空
|
||
|
var targetSetTypes: [UserTargetType] {
|
||
|
if targetSet {
|
||
|
switch adapterNumber {
|
||
|
case 9999: return [.step, .walk, .run, .cycling]
|
||
|
default: return [.step, .sleep, .walk, .run, .cycling, .climb]
|
||
|
}
|
||
|
}
|
||
|
return []
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
struct DeviceInfo: Mappable {
|
||
|
var deviceName: String = ""
|
||
|
var UUIDString: String = ""
|
||
|
var MACString: String = ""
|
||
|
var adapterNumber: Int = 0
|
||
|
// 适配信息
|
||
|
var adapterInfo: AdapterInfo?
|
||
|
|
||
|
init?(map: Map) {}
|
||
|
|
||
|
init(deviceName: String, UUIDString: String, MACString: String) {
|
||
|
self.deviceName = deviceName
|
||
|
self.UUIDString = UUIDString
|
||
|
self.MACString = MACString
|
||
|
}
|
||
|
|
||
|
mutating func mapping(map: Map) {
|
||
|
deviceName <- map["deviceName"]
|
||
|
UUIDString <- map["UUIDString"]
|
||
|
MACString <- map["MACString"]
|
||
|
adapterNumber <- map["adapterNumber"]
|
||
|
adapterInfo <- map["adapterInfo"]
|
||
|
}
|
||
|
|
||
|
/// ota升级方案
|
||
|
var otaPlan: FirmwareOTAPlan {
|
||
|
switch GlobalDeviceProfileModel.shareInstance.firwareModel?.platform {
|
||
|
case 6: return .frq
|
||
|
case 7: return .realtek
|
||
|
case 8: return .jerry
|
||
|
default: return .nordic
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|