// // DataFrameMessageBody.swift // RileyLink // // Created by Pete Schwamb on 5/6/17. // Copyright © 2017 Pete Schwamb. All rights reserved. // import Foundation public class DataFrameMessageBody: CarelinkLongMessageBody { public let isLastFrame: Bool public let frameNumber: Int public let contents: Data public required init?(rxData: Data) { guard rxData.count == type(of: self).length else { return nil } self.isLastFrame = rxData[0] & 0b1000_0000 != 0 self.frameNumber = Int(rxData[0] & 0b0111_1111) self.contents = rxData.subdata(in: (1.. [DataFrameMessageBody] { var frames = [DataFrameMessageBody]() let frameContentsSize = DataFrameMessageBody.length - 1 for frameNumber in sequence(first: 0, next: { $0 + 1 }) { let startIndex = frameNumber * frameContentsSize var endIndex = startIndex + frameContentsSize var isLastFrame = false if endIndex >= contents.count { isLastFrame = true endIndex = contents.count } frames.append(DataFrameMessageBody( frameNumber: frameNumber + 1, isLastFrame: isLastFrame, contents: contents[startIndex..