software copyright
This commit is contained in:
@@ -0,0 +1,219 @@
|
||||
/*
|
||||
* 自然写互动课堂应用开发SDK软件 V1.0
|
||||
* PenDevice - 点阵笔设备数据模型
|
||||
*
|
||||
* 描述:封装点阵笔的设备信息、连接状态、能力参数等
|
||||
*/
|
||||
|
||||
package com.writech.sdk.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 点阵笔设备模型
|
||||
* 包含设备基本信息、硬件参数和连接状态
|
||||
*/
|
||||
public class PenDevice implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/* ========== 基本信息 ========== */
|
||||
|
||||
/** 设备MAC地址(唯一标识) */
|
||||
private String macAddress;
|
||||
|
||||
/** 设备名称(用户可自定义) */
|
||||
private String deviceName;
|
||||
|
||||
/** 设备型号(如 WP-200, WP-300) */
|
||||
private String modelName;
|
||||
|
||||
/** 固件版本号(如 2.1.5) */
|
||||
private String firmwareVersion;
|
||||
|
||||
/** 硬件版本号 */
|
||||
private String hardwareVersion;
|
||||
|
||||
/** 设备序列号 */
|
||||
private String serialNumber;
|
||||
|
||||
/* ========== 硬件能力 ========== */
|
||||
|
||||
/** 采样率(Hz,常见值:100, 200) */
|
||||
private int sampleRate;
|
||||
|
||||
/** 压力感应级别(常见值:1024, 2048, 4096) */
|
||||
private int pressureLevels;
|
||||
|
||||
/** 坐标分辨率(DPI,常见值:300, 600) */
|
||||
private int coordinateDpi;
|
||||
|
||||
/** 是否支持倾斜角检测 */
|
||||
private boolean tiltSupported;
|
||||
|
||||
/** BLE协议版本(4.2 / 5.0 / 5.3) */
|
||||
private String bleVersion;
|
||||
|
||||
/** 电池容量(mAh) */
|
||||
private int batteryCapacity;
|
||||
|
||||
/* ========== 运行状态 ========== */
|
||||
|
||||
/** 连接状态枚举 */
|
||||
public enum ConnectionState {
|
||||
DISCONNECTED, /* 未连接 */
|
||||
CONNECTING, /* 正在连接 */
|
||||
CONNECTED, /* 已连接 */
|
||||
RECONNECTING /* 正在重连 */
|
||||
}
|
||||
|
||||
/** 当前连接状态 */
|
||||
private ConnectionState connectionState = ConnectionState.DISCONNECTED;
|
||||
|
||||
/** 当前电量百分比(0-100) */
|
||||
private int batteryLevel;
|
||||
|
||||
/** 是否正在充电 */
|
||||
private boolean isCharging;
|
||||
|
||||
/** 是否正在书写(笔尖接触纸面) */
|
||||
private boolean isWriting;
|
||||
|
||||
/** 信号强度RSSI(dBm) */
|
||||
private int rssi;
|
||||
|
||||
/** 最后一次通信时间(毫秒时间戳) */
|
||||
private long lastCommunicationTime;
|
||||
|
||||
/** 累计书写时长(秒) */
|
||||
private long totalWritingDuration;
|
||||
|
||||
/** 绑定的学生ID */
|
||||
private String boundStudentId;
|
||||
|
||||
/** 绑定的学生姓名 */
|
||||
private String boundStudentName;
|
||||
|
||||
/* ========== 构造函数 ========== */
|
||||
|
||||
public PenDevice() {
|
||||
}
|
||||
|
||||
public PenDevice(String macAddress, String deviceName) {
|
||||
this.macAddress = macAddress;
|
||||
this.deviceName = deviceName;
|
||||
this.sampleRate = 100;
|
||||
this.pressureLevels = 4096;
|
||||
this.coordinateDpi = 300;
|
||||
}
|
||||
|
||||
/* ========== Getter / Setter ========== */
|
||||
|
||||
public String getMacAddress() { return macAddress; }
|
||||
public void setMacAddress(String macAddress) { this.macAddress = macAddress; }
|
||||
|
||||
public String getDeviceName() { return deviceName; }
|
||||
public void setDeviceName(String deviceName) { this.deviceName = deviceName; }
|
||||
|
||||
public String getModelName() { return modelName; }
|
||||
public void setModelName(String modelName) { this.modelName = modelName; }
|
||||
|
||||
public String getFirmwareVersion() { return firmwareVersion; }
|
||||
public void setFirmwareVersion(String firmwareVersion) { this.firmwareVersion = firmwareVersion; }
|
||||
|
||||
public String getHardwareVersion() { return hardwareVersion; }
|
||||
public void setHardwareVersion(String v) { this.hardwareVersion = v; }
|
||||
|
||||
public String getSerialNumber() { return serialNumber; }
|
||||
public void setSerialNumber(String serialNumber) { this.serialNumber = serialNumber; }
|
||||
|
||||
public int getSampleRate() { return sampleRate; }
|
||||
public void setSampleRate(int sampleRate) { this.sampleRate = sampleRate; }
|
||||
|
||||
public int getPressureLevels() { return pressureLevels; }
|
||||
public void setPressureLevels(int pressureLevels) { this.pressureLevels = pressureLevels; }
|
||||
|
||||
public int getCoordinateDpi() { return coordinateDpi; }
|
||||
public void setCoordinateDpi(int coordinateDpi) { this.coordinateDpi = coordinateDpi; }
|
||||
|
||||
public boolean isTiltSupported() { return tiltSupported; }
|
||||
public void setTiltSupported(boolean tiltSupported) { this.tiltSupported = tiltSupported; }
|
||||
|
||||
public String getBleVersion() { return bleVersion; }
|
||||
public void setBleVersion(String bleVersion) { this.bleVersion = bleVersion; }
|
||||
|
||||
public int getBatteryCapacity() { return batteryCapacity; }
|
||||
public void setBatteryCapacity(int batteryCapacity) { this.batteryCapacity = batteryCapacity; }
|
||||
|
||||
public ConnectionState getConnectionState() { return connectionState; }
|
||||
public void setConnectionState(ConnectionState state) { this.connectionState = state; }
|
||||
|
||||
public int getBatteryLevel() { return batteryLevel; }
|
||||
public void setBatteryLevel(int batteryLevel) { this.batteryLevel = batteryLevel; }
|
||||
|
||||
public boolean isCharging() { return isCharging; }
|
||||
public void setCharging(boolean charging) { isCharging = charging; }
|
||||
|
||||
public boolean isWriting() { return isWriting; }
|
||||
public void setWriting(boolean writing) { isWriting = writing; }
|
||||
|
||||
public int getRssi() { return rssi; }
|
||||
public void setRssi(int rssi) { this.rssi = rssi; }
|
||||
|
||||
public long getLastCommunicationTime() { return lastCommunicationTime; }
|
||||
public void setLastCommunicationTime(long t) { this.lastCommunicationTime = t; }
|
||||
|
||||
public long getTotalWritingDuration() { return totalWritingDuration; }
|
||||
public void setTotalWritingDuration(long d) { this.totalWritingDuration = d; }
|
||||
|
||||
public String getBoundStudentId() { return boundStudentId; }
|
||||
public void setBoundStudentId(String id) { this.boundStudentId = id; }
|
||||
|
||||
public String getBoundStudentName() { return boundStudentName; }
|
||||
public void setBoundStudentName(String name) { this.boundStudentName = name; }
|
||||
|
||||
/* ========== 便捷方法 ========== */
|
||||
|
||||
/** 是否已连接 */
|
||||
public boolean isConnected() {
|
||||
return connectionState == ConnectionState.CONNECTED;
|
||||
}
|
||||
|
||||
/** 电量是否低(<= 10%) */
|
||||
public boolean isLowBattery() {
|
||||
return batteryLevel <= 10 && !isCharging;
|
||||
}
|
||||
|
||||
/** 获取设备显示名称(优先显示学生姓名) */
|
||||
public String getDisplayName() {
|
||||
if (boundStudentName != null && !boundStudentName.isEmpty()) {
|
||||
return boundStudentName + "的笔";
|
||||
}
|
||||
return deviceName != null ? deviceName : "WritechPen-" + macAddress;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "PenDevice{" +
|
||||
"mac='" + macAddress + '\'' +
|
||||
", name='" + deviceName + '\'' +
|
||||
", model='" + modelName + '\'' +
|
||||
", state=" + connectionState +
|
||||
", battery=" + batteryLevel + "%" +
|
||||
", writing=" + isWriting +
|
||||
'}';
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
PenDevice that = (PenDevice) o;
|
||||
return macAddress != null && macAddress.equals(that.macAddress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return macAddress != null ? macAddress.hashCode() : 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user