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

//
// DeviceInfo.swift
// FireBoltt
//
// 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
}
}
}