* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { BaseBean } from './BaseBean';
export class USBHead extends Object implements BaseBean {
private _flag: number[];
private _option: number;
private _sessionId: number;
private _dataSize: number;
constructor(flag: number[], option: number, sessionId: number, dataSize: number) {
super();
this._flag = flag;
this._option = option;
this._sessionId = sessionId;
this._dataSize = dataSize;
}
static getFlag0Length(): number {
return 1;
}
static getFlag1Length(): number {
return 1;
}
static getOptionLength(): number {
return 1;
}
static getSessionIdLength(): number {
return 4;
}
static getDataSizeLength(): number {
return 4;
}
static getUSBHeadLength(): number {
return 11;
}
getDataView(): DataView {
let dataView = new DataView(new ArrayBuffer(11));
dataView.setUint8(0, this._flag[0]);
dataView.setUint8(1, this._flag[1]);
dataView.setUint8(2, this._option);
dataView.setUint32(3, this._sessionId);
dataView.setUint32(7, this._dataSize);
return dataView;
}
static parseHeadData(data: DataView): USBHead {
let flagZero = data.getUint8(0);
let flagOne = data.getUint8(1);
let option = data.getUint8(2);
let sessionId = data.getUint32(3);
let dataSize = data.getUint32(7);
return new USBHead([flagZero, flagOne], option, sessionId, dataSize);
}
get flag(): number[] {
return this._flag;
}
set flag(value: number[]) {
this._flag = value;
}
get option(): number {
return this._option;
}
set option(value: number) {
this._option = value;
}
get sessionId(): number {
return this._sessionId;
}
set sessionId(value: number) {
this._sessionId = value;
}
get dataSize(): number {
return this._dataSize;
}
set dataSize(value: number) {
this._dataSize = value;
}
toString(): string {
return `flag: ${this._flag} option: ${this._option} sessionId: ${this._sessionId} dataSize: ${this._dataSize}`;
}
}