NewStepModel.swift
1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//
// NewStepModel.swift
// HDFwear
//
// Created by admin on 2024/1/15.
//
import Foundation
import UIKit
import HandyJSON
import SwiftDate
class NewStepModel: NSObject {
required override init() { }
var date: Date? = nil
var timeInterval: TimeInterval = 0
var stepValue: UInt32 = 0
var calorie: UInt32 = 0
var distance: UInt32 = 0
override var description: String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = TimeZone.current
var desc = "NewStepModel\n"
desc += "Date: \(dateFormatter.string(from: date ?? Date()))\n"
desc += "TimeInterval: \(timeInterval)\n"
desc += "Step Value: \(stepValue)\n"
desc += "Calorie: \(calorie)\n"
desc += "Distance: \(distance)\n"
return desc
}
class func toStepArray(_ bytes: [UInt8]) -> [NewStepModel] {
var sArray: [NewStepModel] = []
// 将数组分成16个一组
let groupedArray = stride(from: 0, to: bytes.count, by: 16).map { Array(bytes[$0..<min($0 + 16, bytes.count)]) }
for group in groupedArray {
let s = NewStepModel.toStepModel(group)
sArray.append(s)
}
return sArray
}
class func toStepModel(_ data: [UInt8]) -> NewStepModel {
let s = NewStepModel()
guard data.count >= 16 else {
return s
}
let hexValue = data[0..<4].reduce(0) { ($0 << 8) + UInt32($1) }
s.timeInterval = TimeInterval(hexValue)
s.date = Date(timeIntervalSince1970: TimeInterval(hexValue))
s.stepValue = data[4..<8].reduce(0) { ($0 << 8) + UInt32($1) }
s.calorie = data[8..<12].reduce(0) { ($0 << 8) + UInt32($1) }
s.distance = data[12..<16].reduce(0) { ($0 << 8) + UInt32($1) }
return s;
}
}