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.
236 lines
6.8 KiB
236 lines
6.8 KiB
// |
|
// 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 |
|
} |
|
} |
|
|
|
}
|
|
|