Commit e1e561633f99b94d20defcdb6c3c4eb321c1e017
1 parent
9e36c270
移除一个分支
Showing
48 changed files
with
1 additions
and
4098 deletions
C5/settings.gradle
C5/xpadapi/.gitignore deleted
| 1 | -/build |
C5/xpadapi/build.gradle deleted
| 1 | -apply plugin: 'com.android.library' | |
| 2 | - | |
| 3 | -android { | |
| 4 | - compileSdkVersion 28 | |
| 5 | - | |
| 6 | - | |
| 7 | - | |
| 8 | - defaultConfig { | |
| 9 | - minSdkVersion 21 | |
| 10 | - targetSdkVersion 28 | |
| 11 | - versionCode 1 | |
| 12 | - versionName "1.0" | |
| 13 | - | |
| 14 | - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" | |
| 15 | - | |
| 16 | - } | |
| 17 | - | |
| 18 | - buildTypes { | |
| 19 | - release { | |
| 20 | - minifyEnabled false | |
| 21 | - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' | |
| 22 | - } | |
| 23 | - } | |
| 24 | - | |
| 25 | -} | |
| 26 | - | |
| 27 | -dependencies { | |
| 28 | - implementation fileTree(include: ['*.jar'], dir: 'libs') | |
| 29 | - implementation 'com.android.support:appcompat-v7:28.0.0' | |
| 30 | - testImplementation 'junit:junit:4.12' | |
| 31 | - androidTestImplementation 'com.android.support.test:runner:1.0.2' | |
| 32 | - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' | |
| 33 | - implementation project(':udpmodule') | |
| 34 | -} |
C5/xpadapi/proguard-rules.pro deleted
| 1 | -# Add project specific ProGuard rules here. | |
| 2 | -# You can control the set of applied configuration files using the | |
| 3 | -# proguardFiles setting in build.gradle. | |
| 4 | -# | |
| 5 | -# For more details, see | |
| 6 | -# http://developer.android.com/guide/developing/tools/proguard.html | |
| 7 | - | |
| 8 | -# If your project uses WebView with JS, uncomment the following | |
| 9 | -# and specify the fully qualified class name to the JavaScript interface | |
| 10 | -# class: | |
| 11 | -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { | |
| 12 | -# public *; | |
| 13 | -#} | |
| 14 | - | |
| 15 | -# Uncomment this to preserve the line number information for | |
| 16 | -# debugging stack traces. | |
| 17 | -#-keepattributes SourceFile,LineNumberTable | |
| 18 | - | |
| 19 | -# If you keep the line number information, uncomment this to | |
| 20 | -# hide the original source file name. | |
| 21 | -#-renamesourcefileattribute SourceFile |
C5/xpadapi/src/androidTest/java/com/sunvote/xpadapi/ExampleInstrumentedTest.java deleted
| 1 | -package com.sunvote.xpadapi; | |
| 2 | - | |
| 3 | -import android.content.Context; | |
| 4 | -import android.support.test.InstrumentationRegistry; | |
| 5 | -import android.support.test.runner.AndroidJUnit4; | |
| 6 | - | |
| 7 | -import org.junit.Test; | |
| 8 | -import org.junit.runner.RunWith; | |
| 9 | - | |
| 10 | -import static org.junit.Assert.*; | |
| 11 | - | |
| 12 | -/** | |
| 13 | - * Instrumented test, which will execute on an Android device. | |
| 14 | - * | |
| 15 | - * @see <a href="http://d.android.com/tools/testing">Testing documentation</a> | |
| 16 | - */ | |
| 17 | -@RunWith(AndroidJUnit4.class) | |
| 18 | -public class ExampleInstrumentedTest { | |
| 19 | - @Test | |
| 20 | - public void useAppContext() { | |
| 21 | - // Context of the app under test. | |
| 22 | - Context appContext = InstrumentationRegistry.getTargetContext(); | |
| 23 | - | |
| 24 | - assertEquals("com.sunvote.xpadapi.test", appContext.getPackageName()); | |
| 25 | - } | |
| 26 | -} |
C5/xpadapi/src/main/AndroidManifest.xml deleted
| 1 | -<?xml version="1.0" encoding="utf-8"?> | |
| 2 | -<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |
| 3 | - package="com.sunvote.xpadapi"> | |
| 4 | - | |
| 5 | - <application> | |
| 6 | - <service | |
| 7 | - android:name=".service.XpadApiService" | |
| 8 | - android:enabled="true" | |
| 9 | - android:exported="true"></service> | |
| 10 | - </application> | |
| 11 | - | |
| 12 | -</manifest> | |
| 13 | 0 | \ No newline at end of file |
C5/xpadapi/src/main/aidl/com/sunvote/xpadapi/ISunvoteApi.aidl deleted
| 1 | -// ISunvoteApi.aidl | |
| 2 | -package com.sunvote.xpadapi; | |
| 3 | - | |
| 4 | -// Declare any non-default types here with import statements | |
| 5 | - | |
| 6 | -interface ISunvoteApi { | |
| 7 | - | |
| 8 | - | |
| 9 | - /** | |
| 10 | - * 数据包接收 | |
| 11 | - */ | |
| 12 | - | |
| 13 | - | |
| 14 | - /** | |
| 15 | - * 基础信标 | |
| 16 | - */ | |
| 17 | - | |
| 18 | - /** | |
| 19 | - * 投票信标 | |
| 20 | - */ | |
| 21 | - | |
| 22 | - | |
| 23 | - /** | |
| 24 | - * 基础信标 | |
| 25 | - */ | |
| 26 | - | |
| 27 | - /** | |
| 28 | - * 30透传包 | |
| 29 | - */ | |
| 30 | - | |
| 31 | - /** | |
| 32 | - * 40透传包 | |
| 33 | - */ | |
| 34 | -} | |
| 35 | - |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/XpadApiService.java deleted
| 1 | -package com.sunvote.xpadapi.service; | |
| 2 | - | |
| 3 | -import android.app.Service; | |
| 4 | -import android.content.BroadcastReceiver; | |
| 5 | -import android.content.Context; | |
| 6 | -import android.content.Intent; | |
| 7 | -import android.content.IntentFilter; | |
| 8 | -import android.os.Handler; | |
| 9 | -import android.os.HandlerThread; | |
| 10 | -import android.os.IBinder; | |
| 11 | - | |
| 12 | -import com.sunvote.udptransfer.stream.SunVoteInputStream; | |
| 13 | -import com.sunvote.udptransfer.work.BaseStationProcessWork; | |
| 14 | -import com.sunvote.udptransfer.work.RepeatMessageManager; | |
| 15 | -import com.sunvote.udptransfer.work.SDKProcessWork; | |
| 16 | -import com.sunvote.util.LogUtil; | |
| 17 | -import com.sunvote.xpadapi.ISunvoteApi; | |
| 18 | -import com.sunvote.xpadapi.service.bean.BaseInfo; | |
| 19 | -import com.sunvote.xpadapi.service.bean.BaseVoteInfo; | |
| 20 | -import com.sunvote.xpadapi.service.bean.HeartBeat; | |
| 21 | -import com.sunvote.xpadapi.service.bean.KeypadInfo; | |
| 22 | -import com.sunvote.xpadapi.service.bean.ModelInfo; | |
| 23 | -import com.sunvote.xpadapi.service.bean.OnLineInfo; | |
| 24 | -import com.sunvote.xpadapi.service.bean.Packet; | |
| 25 | -import com.sunvote.xpadapi.service.listener.OnDataReceiver; | |
| 26 | -import com.sunvote.xpadapi.service.logic.XpadApiServiceInfoProxyManager; | |
| 27 | -import com.sunvote.xpadapi.usb.UsbTransferManager; | |
| 28 | -import com.sunvote.xpadapi.util.ByteUtils; | |
| 29 | -import com.sunvote.xpadapi.util.Cons; | |
| 30 | -import com.sunvote.xpadapi.util.Crc16; | |
| 31 | - | |
| 32 | -import java.io.ByteArrayOutputStream; | |
| 33 | -import java.util.ArrayList; | |
| 34 | -import java.util.Arrays; | |
| 35 | -import java.util.Collections; | |
| 36 | -import java.util.List; | |
| 37 | - | |
| 38 | -/** | |
| 39 | - * @Author Elvis | |
| 40 | - */ | |
| 41 | -public class XpadApiService extends Service { | |
| 42 | - | |
| 43 | - private static final String TAG = XpadApiService.class.getSimpleName(); | |
| 44 | - private List<OnDataReceiver> onDataReceiverList = new ArrayList<>(); | |
| 45 | - private int batteryLevel = 0; | |
| 46 | - private List<Packet> innerList = Collections.synchronizedList(new ArrayList<Packet>()); | |
| 47 | - private OnDataReceiver onDataReceiver = new OnDataReceiver() { | |
| 48 | - @Override | |
| 49 | - public void onDataReceiver(byte[] datas) { | |
| 50 | - LogUtil.i(TAG, "onDataReceiver", datas); | |
| 51 | - for (OnDataReceiver temp : onDataReceiverList) { | |
| 52 | - if (temp != null) { | |
| 53 | - try { | |
| 54 | - temp.onDataReceiver(datas); | |
| 55 | - } catch (Exception ex) { | |
| 56 | - LogUtil.e(TAG, "onDataReceiver" + temp.getClass().getSimpleName(), ex); | |
| 57 | - } | |
| 58 | - } | |
| 59 | - } | |
| 60 | - } | |
| 61 | - | |
| 62 | - @Override | |
| 63 | - public void onDataSender(byte[] datas) { | |
| 64 | - LogUtil.i(TAG, "onDataSender", datas); | |
| 65 | - for (OnDataReceiver temp : onDataReceiverList) { | |
| 66 | - if (temp != null) { | |
| 67 | - try { | |
| 68 | - temp.onDataSender(datas); | |
| 69 | - } catch (Exception ex) { | |
| 70 | - LogUtil.e(TAG, "onDataSender", ex); | |
| 71 | - } | |
| 72 | - } | |
| 73 | - } | |
| 74 | - } | |
| 75 | - }; | |
| 76 | - | |
| 77 | - public XpadApiService() { | |
| 78 | - } | |
| 79 | - | |
| 80 | - public int registerOnDataReceiver(OnDataReceiver onDataReceiver) { | |
| 81 | - for (OnDataReceiver temp : onDataReceiverList) { | |
| 82 | - if (temp == onDataReceiver) { | |
| 83 | - return 0; | |
| 84 | - } | |
| 85 | - } | |
| 86 | - onDataReceiverList.add(onDataReceiver); | |
| 87 | - return 1; | |
| 88 | - } | |
| 89 | - | |
| 90 | - @Override | |
| 91 | - public void onCreate() { | |
| 92 | - super.onCreate(); | |
| 93 | - | |
| 94 | - sendThread = new HandlerThread("send"); | |
| 95 | - receiverThread = new HandlerThread("receiver"); | |
| 96 | - sendThread.start(); | |
| 97 | - receiverThread.start(); | |
| 98 | - | |
| 99 | - taskHandler = new Handler(sendThread.getLooper()); | |
| 100 | - IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); | |
| 101 | - registerReceiver(batteryLevelRcvr, batteryLevelFilter); | |
| 102 | - XpadApiServiceInfoProxyManager.getInstance().setService(this); | |
| 103 | - | |
| 104 | - receiverDatas(); | |
| 105 | - } | |
| 106 | - | |
| 107 | - private void receiverDatas() { | |
| 108 | - SunVoteInputStream sunVoteInputStream = new SunVoteInputStream(); | |
| 109 | - sunVoteInputStream.setOnBytesReceiver(new SunVoteInputStream.OnBytesReceiver() { | |
| 110 | - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); | |
| 111 | - @Override | |
| 112 | - public void onBytesReceiver(byte[] bytes, int len) { | |
| 113 | - // 1. 先检测读取数据到缓冲区 | |
| 114 | - byteArrayOutputStream.write(bytes, 0, bytes.length); | |
| 115 | - if (byteArrayOutputStream.size() >= 3) { | |
| 116 | - byte[] temp = byteArrayOutputStream.toByteArray(); | |
| 117 | - int find = ByteUtils.findBytes(temp, new byte[]{(byte) 0xF5, (byte) 0xAA, (byte) 0xAA}, 0); | |
| 118 | - if (find >= 0) { | |
| 119 | - // 3. 标志存在,则继续读取长度 | |
| 120 | - if (byteArrayOutputStream.size() >= find + 4) { | |
| 121 | - int length = ByteUtils.byte1ToInt(byteArrayOutputStream.toByteArray()[find + 3]); | |
| 122 | - if (byteArrayOutputStream.size() >= find + 4 + length) { | |
| 123 | - ByteArrayOutputStream tmp = new ByteArrayOutputStream(); | |
| 124 | - // 4. 根据长度读取包的内容 | |
| 125 | - for (int i = find; i < find + 4 + length; i++) { | |
| 126 | - // 5. 截取包的内容,向外抛出,处理,接着读取下一个包 | |
| 127 | - tmp.write(temp[i]); | |
| 128 | - } | |
| 129 | - //CRC 校验 | |
| 130 | - byte[] datas = tmp.toByteArray(); | |
| 131 | - LogUtil.i(TAG, "RECEIVER DATA:", datas); | |
| 132 | - | |
| 133 | - try { | |
| 134 | - //处理 | |
| 135 | - doWith(datas); | |
| 136 | - } catch (Exception ex) { | |
| 137 | - LogUtil.i(TAG, "处理命令出错:", ex); | |
| 138 | - } | |
| 139 | - // 7. 剩余数据重新打包处理 | |
| 140 | - byteArrayOutputStream.reset(); | |
| 141 | - for (int i = find + 4 + length; i < temp.length; i++) { | |
| 142 | - byteArrayOutputStream.write(temp[i]); | |
| 143 | - } | |
| 144 | - } | |
| 145 | - } | |
| 146 | - } | |
| 147 | - } | |
| 148 | - } | |
| 149 | - }); | |
| 150 | - SDKProcessWork.getInstance().setInputStream(sunVoteInputStream); | |
| 151 | - BaseStationProcessWork.getInstance().start(); | |
| 152 | - RepeatMessageManager.getInstance().start(); | |
| 153 | - SDKProcessWork.getInstance().start(); | |
| 154 | - } | |
| 155 | - | |
| 156 | - @Override | |
| 157 | - public void onDestroy() { | |
| 158 | - unregisterReceiver(batteryLevelRcvr); | |
| 159 | - super.onDestroy(); | |
| 160 | - } | |
| 161 | - | |
| 162 | - private HandlerThread sendThread = null; | |
| 163 | - private HandlerThread receiverThread = null; | |
| 164 | - private Handler taskHandler = null; | |
| 165 | - private boolean receivering = true; | |
| 166 | - | |
| 167 | - | |
| 168 | - @Override | |
| 169 | - public IBinder onBind(Intent intent) { | |
| 170 | - return stub; | |
| 171 | - } | |
| 172 | - | |
| 173 | - private final ISunvoteApi.Stub stub = new ISunvoteApi.Stub() { | |
| 174 | - | |
| 175 | - }; | |
| 176 | - | |
| 177 | - private Runnable sendTask = new Runnable() { | |
| 178 | - @Override | |
| 179 | - public void run() { | |
| 180 | - // 从队列中取出待发送数据 | |
| 181 | - List<Packet> sendList = XpadApiServiceInfoProxyManager.getInstance().getSendList(); | |
| 182 | - boolean isSend = false; | |
| 183 | - for (Packet p : sendList) { | |
| 184 | - if (p.needSend() && !isSend) {// 按照顺序发送 | |
| 185 | - p.addSendCount(); | |
| 186 | - sendPacket(p); | |
| 187 | - isSend = true; | |
| 188 | - } | |
| 189 | - if (p.needSend() && isSend && p.isSync()) {// 并行发送 | |
| 190 | - sleepTimes(50);// 模块不能发送太快 | |
| 191 | - p.addSendCount(); | |
| 192 | - sendPacket(p); | |
| 193 | - } | |
| 194 | - if (!p.needSend() && (p.getOnSendPacket() != null)) { | |
| 195 | - p.getOnSendPacket().onFail(p); | |
| 196 | - } | |
| 197 | - } | |
| 198 | - if (!isSend) { | |
| 199 | - LogUtil.i(TAG, "没有要提交的数据,检查是否有查询包发送"); | |
| 200 | - if (innerList.size() > 0) { | |
| 201 | - synchronized (innerList) { | |
| 202 | - for (Packet packet : innerList) { | |
| 203 | - sendPacket(packet); | |
| 204 | - sleepTimes(50); | |
| 205 | - } | |
| 206 | - } | |
| 207 | - } | |
| 208 | - } | |
| 209 | - | |
| 210 | - if (!isSend) {// 没有数据发送? 那就发送心跳吧 | |
| 211 | - LogUtil.i(TAG, "没有任何数据要发送,则发送心跳包"); | |
| 212 | - sendData(new HeartBeat((byte) batteryLevel, (byte) 0).toBytes()); | |
| 213 | - } | |
| 214 | - // 轮询下一次发送数据 | |
| 215 | - taskHandler.removeCallbacks(this); | |
| 216 | - taskHandler.postDelayed(this, 1000); | |
| 217 | - } | |
| 218 | - }; | |
| 219 | - | |
| 220 | - private void doWith(byte[] datas) { | |
| 221 | - onDataReceiver.onDataReceiver(datas); | |
| 222 | - switch (datas[4] & 0xFF) { | |
| 223 | - case Cons.CMD_CHECK_BASE_STATUS_RESPONSE: | |
| 224 | - checkBaseStatusResponse(datas); | |
| 225 | - break; | |
| 226 | - case Cons.CMD_VOTE_RESULT_SEND_RESPONSE: | |
| 227 | - voteResultSendResponse(datas); | |
| 228 | - break; | |
| 229 | - case Cons.CMD_FIRM_UPDATE_RESPONSE: | |
| 230 | - firmUpdateResponse(datas); | |
| 231 | - break; | |
| 232 | - | |
| 233 | - case Cons.CMD_BASE_STATUS_CHANGE: | |
| 234 | - baseStatusChange(datas); | |
| 235 | - break; | |
| 236 | - case Cons.CMD_VOTE_STATUS_CHANGE: | |
| 237 | - voteStatusChange(datas); | |
| 238 | - break; | |
| 239 | - case Cons.CMD_VOTE_SEND_SUCCESS_RESPONSE: | |
| 240 | - voteSendSuccessResponse(datas); | |
| 241 | - break; | |
| 242 | - | |
| 243 | - case Cons.CMD_UPLOAD_DATA_RESPONSE: | |
| 244 | - uploadDataResponse(datas); | |
| 245 | - break; | |
| 246 | - case Cons.CMD_TRANSPARENT_TRANSMISSION: | |
| 247 | - transparentTransmission(datas); | |
| 248 | - break; | |
| 249 | - case Cons.CMD_MULTI_PCKAGE_DOWNLOAD: | |
| 250 | - break; | |
| 251 | - case Cons.CMD_COM_COMMUNICATION_TEST_RESPONSE: | |
| 252 | - break; | |
| 253 | - | |
| 254 | - } | |
| 255 | - } | |
| 256 | - | |
| 257 | - private void transparentTransmission(byte[] datas) { | |
| 258 | - } | |
| 259 | - | |
| 260 | - private void uploadDataResponse(byte[] datas) { | |
| 261 | - } | |
| 262 | - | |
| 263 | - private void voteSendSuccessResponse(byte[] datas) { | |
| 264 | - responseChange(datas, 4, (byte) 0xF3); | |
| 265 | - int serialNo = datas[5] & 0xff; | |
| 266 | - Packet packet = XpadApiServiceInfoProxyManager.getInstance().findPacket(serialNo); | |
| 267 | - if (packet != null && packet.getOnSendPacket() != null) { | |
| 268 | - packet.getOnSendPacket().onSuccess(packet); | |
| 269 | - } | |
| 270 | - } | |
| 271 | - | |
| 272 | - private void sendInnerPacket(Packet packet) { | |
| 273 | - synchronized (innerList) { | |
| 274 | - for (Packet temp : innerList) { | |
| 275 | - if (temp.getSendNo() == packet.getSendNo()) { | |
| 276 | - return; | |
| 277 | - } | |
| 278 | - } | |
| 279 | - innerList.add(packet); | |
| 280 | - } | |
| 281 | - immediately(); | |
| 282 | - } | |
| 283 | - | |
| 284 | - public void immediately(){ | |
| 285 | - taskHandler.removeCallbacks(sendTask); | |
| 286 | - taskHandler.post(sendTask); | |
| 287 | - } | |
| 288 | - | |
| 289 | - private void voteStatusChange(byte[] datas) { | |
| 290 | - responseChange(datas, 4, (byte) 0xF2); | |
| 291 | - saveVoteInfo(datas); | |
| 292 | - } | |
| 293 | - | |
| 294 | - private void baseStatusChange(byte[] datas) { | |
| 295 | - responseChange(datas, 4, (byte) 0xF1); | |
| 296 | - saveBaseInfo(datas); | |
| 297 | - } | |
| 298 | - | |
| 299 | - private void firmUpdateResponse(byte[] datas) { | |
| 300 | - | |
| 301 | - } | |
| 302 | - | |
| 303 | - private void voteResultSendResponse(byte[] datas) { | |
| 304 | - // 下层模块收到了,说明不了什么,所以不干什么 | |
| 305 | - } | |
| 306 | - | |
| 307 | - private void checkBaseStatusResponse(byte[] datas) { | |
| 308 | - switch (datas[5] & 0xFF) { | |
| 309 | - case 1://当前工作模式和版本 | |
| 310 | - case 2://当前工作模式和版本 | |
| 311 | - saveModelInfo(datas); | |
| 312 | - break; | |
| 313 | - case 3: | |
| 314 | - saveBaseInfo(datas); | |
| 315 | - break; | |
| 316 | - case 4: | |
| 317 | - saveVoteInfo(datas); | |
| 318 | - break; | |
| 319 | - case 5: | |
| 320 | - case 6: | |
| 321 | - saveKeypadInfo(datas); | |
| 322 | - break; | |
| 323 | - case 7: | |
| 324 | - saveOnLineInfo(datas); | |
| 325 | - break; | |
| 326 | - case 8: | |
| 327 | - case 9: | |
| 328 | - saveKeypadInfo(datas); | |
| 329 | - break; | |
| 330 | - } | |
| 331 | - } | |
| 332 | - | |
| 333 | - private void saveOnLineInfo(byte[] datas) { | |
| 334 | - OnLineInfo info = new OnLineInfo(); | |
| 335 | - info.setOnLine(datas[6] & 0xff); | |
| 336 | - info.setIdMode(datas[7] & 0xff); | |
| 337 | - info.setChan(datas[8] & 0xff); | |
| 338 | - info.setRssi(datas[9] & 0xff); | |
| 339 | - info.setTx(datas[10] & 0xff); | |
| 340 | - info.setRx(datas[11] & 0xff); | |
| 341 | - info.setBaseId(datas[12] & 0xff); | |
| 342 | - info.setKeyId(((datas[13] & 0xff) << 8) | (datas[14] & 0xff)); | |
| 343 | - byte[] sn = Arrays.copyOfRange(datas, 15, 21); | |
| 344 | - info.setKeySn(ByteUtils.getKeySn(sn)); | |
| 345 | - XpadApiServiceInfoProxyManager.getInstance().setOnLineInfo(info); | |
| 346 | - } | |
| 347 | - | |
| 348 | - private void saveKeypadInfo(byte[] datas) { | |
| 349 | - KeypadInfo info = new KeypadInfo(); | |
| 350 | - info.setOk(datas[6] & 0xff); | |
| 351 | - info.setChan(datas[7] & 0xff); | |
| 352 | - info.setKeyId(((datas[8] & 0xff) << 8) | (datas[9] & 0xff)); | |
| 353 | - byte[] sn = Arrays.copyOfRange(datas, 10, 16); | |
| 354 | - info.setKeySn(ByteUtils.getKeySn(sn)); | |
| 355 | - byte[] mc = Arrays.copyOfRange(datas, 16, 19); | |
| 356 | - info.setMatchCode(new String(mc)); | |
| 357 | - XpadApiServiceInfoProxyManager.getInstance().setKeypadInfo(info); | |
| 358 | - } | |
| 359 | - | |
| 360 | - private void saveVoteInfo(byte[] datas) { | |
| 361 | - BaseVoteInfo info = new BaseVoteInfo(); | |
| 362 | - info.setBaseId(datas[1] & 0xff); | |
| 363 | - info.setNowT(datas[2] & 0xff << 8 | datas[3] & 0xff); | |
| 364 | - info.setDataPos(datas[4] & 0xff); | |
| 365 | - info.setMode(datas[5] & 0xff); | |
| 366 | - info.setModes(datas); | |
| 367 | - XpadApiServiceInfoProxyManager.getInstance().setBaseVoteInfo(info); | |
| 368 | - } | |
| 369 | - | |
| 370 | - /** | |
| 371 | - * 保存基础信标信息 | |
| 372 | - * | |
| 373 | - * @param data | |
| 374 | - */ | |
| 375 | - private void saveBaseInfo(byte[] data) { | |
| 376 | - BaseInfo info = new BaseInfo(); | |
| 377 | - info.setBaseId(data[5] & 0xff);// baseID | |
| 378 | - info.setIdMode(data[6] & 0xff); | |
| 379 | - info.setConfId(((data[7] & 0xff) << 8) | (data[8] & 0xff)); | |
| 380 | - info.setBillId(data[9] & 0xff); | |
| 381 | - info.setAuthCode((data[10] & 0xff) << 8 | (data[11] & 0xff)); | |
| 382 | - info.setLogin(data[12] & 0xff); | |
| 383 | - info.setReport(data[13] & 0xff); | |
| 384 | - info.setOffTime(data[14] & 0xff); | |
| 385 | - info.setAttrib(data[15] & 0xff); | |
| 386 | - info.setPageNo((data[16] & 0xff) << 8 | (data[17] & 0xff)); | |
| 387 | - byte[] bname = Arrays.copyOfRange(data, 16, 16 + 12); | |
| 388 | - info.setBaseName(new String(bname)); | |
| 389 | - XpadApiServiceInfoProxyManager.getInstance().setBaseInfo(info); | |
| 390 | - } | |
| 391 | - | |
| 392 | - private void saveModelInfo(byte[] datas) { | |
| 393 | - ModelInfo info = new ModelInfo(); | |
| 394 | - info.setMode(datas[6] & 0xff); | |
| 395 | - info.sethModel(datas[7] & 0xff); | |
| 396 | - info.setsVer((datas[8] & 0xff) + "." + (datas[9] & 0xff) + "." + (datas[10] & 0xff)); | |
| 397 | - XpadApiServiceInfoProxyManager.getInstance().setModelInfo(info); | |
| 398 | - } | |
| 399 | - | |
| 400 | - | |
| 401 | - private void responseChange(byte[] data, int pos, byte res) { | |
| 402 | - byte[] retData = Arrays.copyOf(data, data.length); | |
| 403 | - retData[pos] = res; | |
| 404 | - sendData(data); | |
| 405 | - } | |
| 406 | - | |
| 407 | - private void roundCRC(byte[] data) { | |
| 408 | - int crcValue = Crc16.getUnsignedShort(Crc16.crc16(data, data.length - 4 - 2)); | |
| 409 | - data[data.length - 2] = (byte) (crcValue >> 8); | |
| 410 | - data[data.length - 1] = (byte) (crcValue); | |
| 411 | - } | |
| 412 | - | |
| 413 | - public void sendPacket(Packet packet) { | |
| 414 | - sendData(packet.getDatas()); | |
| 415 | - } | |
| 416 | - | |
| 417 | - public void sendData(byte[] datas) { | |
| 418 | - roundCRC(datas); | |
| 419 | - onDataReceiver.onDataSender(datas); | |
| 420 | - try { | |
| 421 | - SDKProcessWork.getInstance().execute(datas,datas.length); | |
| 422 | - } catch (Exception e) { | |
| 423 | - LogUtil.e(TAG, e); | |
| 424 | - } | |
| 425 | - } | |
| 426 | - | |
| 427 | - private void sleepTimes(long times) { | |
| 428 | - try { | |
| 429 | - Thread.sleep(times); | |
| 430 | - } catch (Exception e) { | |
| 431 | - e.printStackTrace(); | |
| 432 | - } | |
| 433 | - } | |
| 434 | - | |
| 435 | - BroadcastReceiver batteryLevelRcvr = new BroadcastReceiver() { | |
| 436 | - | |
| 437 | - public void onReceive(Context context, Intent intent) { | |
| 438 | - if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) { | |
| 439 | - int rawlevel = intent.getIntExtra("level", -1); | |
| 440 | - int scale = intent.getIntExtra("scale", -1); | |
| 441 | - int status = intent.getIntExtra("status", -1); | |
| 442 | - int health = intent.getIntExtra("health", -1); | |
| 443 | - int voltage = intent.getIntExtra("voltage", 0); | |
| 444 | - int level = -1; // percentage, or -1 for unknown | |
| 445 | - if (rawlevel >= 0 && scale > 0) { | |
| 446 | - level = (rawlevel * 100) / scale; | |
| 447 | - } | |
| 448 | - | |
| 449 | - float val = (float) voltage / 1000; | |
| 450 | - batteryLevel = (int) (val / 0.04); | |
| 451 | - | |
| 452 | - } | |
| 453 | - } | |
| 454 | - }; | |
| 455 | - | |
| 456 | - public void getKeypadParam() { | |
| 457 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 458 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 459 | - mBuffer[0] = (byte) 0xF5; | |
| 460 | - mBuffer[1] = (byte) 0xAA; | |
| 461 | - mBuffer[2] = (byte) 0xAA; | |
| 462 | - mBuffer[3] = (byte) 0x1F; | |
| 463 | - | |
| 464 | - mBuffer[4] = 0x70; | |
| 465 | - mBuffer[5] = 0x05; | |
| 466 | - Packet packet = new Packet(); | |
| 467 | - packet.setDatas(mBuffer); | |
| 468 | - packet.setSendNo(Packet.GetKeypadParam); | |
| 469 | - sendInnerPacket(packet); | |
| 470 | - } | |
| 471 | - | |
| 472 | - public void getWorkMode() { | |
| 473 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 474 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 475 | - mBuffer[0] = (byte) 0xF5; | |
| 476 | - mBuffer[1] = (byte) 0xAA; | |
| 477 | - mBuffer[2] = (byte) 0xAA; | |
| 478 | - mBuffer[3] = (byte) 0x1F; | |
| 479 | - mBuffer[4] = 0x70; | |
| 480 | - mBuffer[5] = 0x01; | |
| 481 | - Packet packet = new Packet(); | |
| 482 | - packet.setDatas(mBuffer); | |
| 483 | - packet.setSendNo(Packet.GetWorkModeNum); | |
| 484 | - sendInnerPacket(packet); | |
| 485 | - } | |
| 486 | - | |
| 487 | - public void setWorkMode(int iMode) { | |
| 488 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 489 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 490 | - mBuffer[0] = (byte) 0xF5; | |
| 491 | - mBuffer[1] = (byte) 0xAA; | |
| 492 | - mBuffer[2] = (byte) 0xAA; | |
| 493 | - mBuffer[3] = (byte) 0x1F; | |
| 494 | - mBuffer[4] = 0x70; | |
| 495 | - mBuffer[5] = 0x02; | |
| 496 | - mBuffer[6] = (byte) iMode; | |
| 497 | - Packet packet = new Packet(); | |
| 498 | - packet.setDatas(mBuffer); | |
| 499 | - packet.setSendNo(Packet.SetWorkModeNum); | |
| 500 | - sendInnerPacket(packet); | |
| 501 | - } | |
| 502 | - | |
| 503 | - public void getBaseStatus() { | |
| 504 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 505 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 506 | - mBuffer[0] = (byte) 0xF5; | |
| 507 | - mBuffer[1] = (byte) 0xAA; | |
| 508 | - mBuffer[2] = (byte) 0xAA; | |
| 509 | - mBuffer[3] = (byte) 0x1F; | |
| 510 | - mBuffer[4] = 0x70; | |
| 511 | - mBuffer[5] = 0x03; | |
| 512 | - Packet packet = new Packet(); | |
| 513 | - packet.setDatas(mBuffer); | |
| 514 | - packet.setSendNo(Packet.BaseStatusNum); | |
| 515 | - sendInnerPacket(packet); | |
| 516 | - } | |
| 517 | - | |
| 518 | - public void getVoteStatus() { | |
| 519 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 520 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 521 | - mBuffer[0] = (byte) 0xF5; | |
| 522 | - mBuffer[1] = (byte) 0xAA; | |
| 523 | - mBuffer[2] = (byte) 0xAA; | |
| 524 | - mBuffer[3] = (byte) 0x1F; | |
| 525 | - mBuffer[4] = 0x70; | |
| 526 | - mBuffer[5] = 0x04; | |
| 527 | - Packet packet = new Packet(); | |
| 528 | - packet.setDatas(mBuffer); | |
| 529 | - packet.setSendNo(Packet.VoteStatusNum); | |
| 530 | - sendInnerPacket(packet); | |
| 531 | - } | |
| 532 | - | |
| 533 | - public void execKeypadMatch(int iMode, int channal) { | |
| 534 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 535 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 536 | - mBuffer[0] = (byte) 0xF5; | |
| 537 | - mBuffer[1] = (byte) 0xAA; | |
| 538 | - mBuffer[2] = (byte) 0xAA; | |
| 539 | - mBuffer[3] = (byte) 0x1F; | |
| 540 | - mBuffer[4] = 0x70; | |
| 541 | - mBuffer[5] = 0x08; | |
| 542 | - mBuffer[6] = (byte) iMode; | |
| 543 | - mBuffer[7] = (byte) channal; | |
| 544 | - Packet packet = new Packet(); | |
| 545 | - packet.setDatas(mBuffer); | |
| 546 | - packet.setSendNo(Packet.ExecKeypadMatchNum); | |
| 547 | - sendInnerPacket(packet); | |
| 548 | - } | |
| 549 | - | |
| 550 | - public void comCommunicationTest(int sendn, int okn) { | |
| 551 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 552 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 553 | - mBuffer[0] = (byte) 0xF5; | |
| 554 | - mBuffer[1] = (byte) 0xAA; | |
| 555 | - mBuffer[2] = (byte) 0xAA; | |
| 556 | - mBuffer[3] = (byte) 0x1F; | |
| 557 | - mBuffer[4] = 0x30; | |
| 558 | - mBuffer[5] = 0x0; | |
| 559 | - mBuffer[6] = 0x0; | |
| 560 | - mBuffer[7] = 7; | |
| 561 | - mBuffer[8] = (byte) sendn; | |
| 562 | - mBuffer[9] = (byte) okn; | |
| 563 | - mBuffer[10] = (byte) 0xAA; | |
| 564 | - | |
| 565 | - for (int i = 1; i < 17; i++) { | |
| 566 | - mBuffer[10 + i] = (byte) i; | |
| 567 | - } | |
| 568 | - | |
| 569 | - Packet packet = new Packet(); | |
| 570 | - packet.setDatas(mBuffer); | |
| 571 | - packet.setSendNo(Packet.CommunicationTestMatchNum); | |
| 572 | - sendInnerPacket(packet); | |
| 573 | - } | |
| 574 | - | |
| 575 | - public void applyFileUpload(int length, String filename, byte anstype,byte index) { | |
| 576 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 577 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 578 | - mBuffer[0] = (byte) 0xF5; | |
| 579 | - mBuffer[1] = (byte) 0xAA; | |
| 580 | - mBuffer[2] = (byte) 0xAA; | |
| 581 | - mBuffer[3] = (byte) 0x1F; | |
| 582 | - mBuffer[4] = 0x73; | |
| 583 | - mBuffer[5] = (byte) 0XFF;// 流水号 | |
| 584 | - mBuffer[6] = (byte) 0X01;// 流水号 | |
| 585 | - mBuffer[7] = (byte) 15;// MSGTYPE | |
| 586 | - mBuffer[8] = (byte) anstype;// ANSTYPE 添加5 文件上传指令 | |
| 587 | - mBuffer[9] = index;// 高位 | |
| 588 | - Packet packet = new Packet(); | |
| 589 | - packet.setDatas(mBuffer); | |
| 590 | - packet.setSendNo(Packet.CommunicationTestMatchNum); | |
| 591 | - sendInnerPacket(packet); | |
| 592 | - } | |
| 593 | - | |
| 594 | - public void packetReceptionConfirmed(byte[] keyid, byte packid, byte packH, byte packtype) { | |
| 595 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 596 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 597 | - mBuffer[0] = (byte) 0xF5; | |
| 598 | - mBuffer[1] = (byte) 0xAA; | |
| 599 | - mBuffer[2] = (byte) 0xAA; | |
| 600 | - mBuffer[3] = (byte) 0x1F; | |
| 601 | - | |
| 602 | - mBuffer[4] = (byte) 0xA0; | |
| 603 | - int keyId = XpadApiServiceInfoProxyManager.getInstance().getKeypadInfo().getKeyId(); | |
| 604 | - mBuffer[5] = (byte)((keyId >> 8) & 0xFF); | |
| 605 | - mBuffer[6] = (byte)((keyId) & 0xFF); | |
| 606 | - | |
| 607 | - mBuffer[7] = 3;//CMD 3 多包接收完毕应答 | |
| 608 | - mBuffer[8] = packtype;//PACKTYPE 多包类型 | |
| 609 | - mBuffer[9] = packid;//数据包标识码 | |
| 610 | - Packet packet = new Packet(); | |
| 611 | - packet.setDatas(mBuffer); | |
| 612 | - packet.setSendNo(Packet.CommunicationTestMatchNum); | |
| 613 | - sendInnerPacket(packet); | |
| 614 | - } | |
| 615 | - | |
| 616 | - public void uploadFileData(byte[] keyid, byte packid, byte packH, byte packL, byte[] datas, byte packtype) { | |
| 617 | - uploadFileData(keyid, packid, packH, packL, datas, 0, datas.length, packtype); | |
| 618 | - } | |
| 619 | - | |
| 620 | - /** | |
| 621 | - * @param keyid 键盘编号 | |
| 622 | - * @param packid 包id | |
| 623 | - * @param packH 数据段id | |
| 624 | - * @param packL 数据片id | |
| 625 | - * @param datas 数据 | |
| 626 | - * @param offset 偏移位置 | |
| 627 | - * @param length 长度 | |
| 628 | - * @Auther Elvis | |
| 629 | - * 上传数据包(多包应答) | |
| 630 | - */ | |
| 631 | - public void uploadFileData(byte[] keyid, byte packid, byte packH, byte packL, byte[] datas, int offset, int length, byte packtype) { | |
| 632 | - LogUtil.i(TAG, "onMutilPacketData packid=" + packid + ",packH=" + packH + ",packL=" + packL + ",offset=" + offset); | |
| 633 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 634 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 635 | - mBuffer[0] = (byte) 0xF5; | |
| 636 | - mBuffer[1] = (byte) 0xAA; | |
| 637 | - mBuffer[2] = (byte) 0xAA; | |
| 638 | - mBuffer[3] = (byte) 0x1F; | |
| 639 | - | |
| 640 | - mBuffer[4] = (byte) 0xA0; | |
| 641 | - int keyId = XpadApiServiceInfoProxyManager.getInstance().getKeypadInfo().getKeyId(); | |
| 642 | - mBuffer[5] = (byte)((keyId >> 8) & 0xFF); | |
| 643 | - mBuffer[6] = (byte)((keyId) & 0xFF); | |
| 644 | - | |
| 645 | - mBuffer[7] = 2;//CMD 1 回应多包数据 | |
| 646 | - mBuffer[8] = packtype;//PACKTYPE 多包类型 | |
| 647 | - mBuffer[9] = packid;//数据包标识码 | |
| 648 | - mBuffer[10] = packH;//数据段编号 | |
| 649 | - mBuffer[11] = packL;//数据片编号 | |
| 650 | - for (int i = 0; i < length && i < 16 && i < datas.length - offset; i++) { | |
| 651 | - mBuffer[12 + i] = datas[offset + i]; | |
| 652 | - } | |
| 653 | - Packet packet = new Packet(); | |
| 654 | - packet.setDatas(mBuffer); | |
| 655 | - packet.setSendNo(Packet.CommunicationTestMatchNum); | |
| 656 | - sendInnerPacket(packet); | |
| 657 | - } | |
| 658 | - | |
| 659 | - /** | |
| 660 | - * @param packid 包id | |
| 661 | - * 多包接收确认(多包接收应答) | |
| 662 | - */ | |
| 663 | - public void packetConfirmation(byte[] keyid, byte packid, byte packH, byte packL, byte[] names, byte packtype) { | |
| 664 | - LogUtil.i(TAG, "onMutilPacketRespone packid=" + packid + ",packH=" + packH + ",packL=" + packL + ",names=" + names); | |
| 665 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 666 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 667 | - mBuffer[0] = (byte) 0xF5; | |
| 668 | - mBuffer[1] = (byte) 0xAA; | |
| 669 | - mBuffer[2] = (byte) 0xAA; | |
| 670 | - mBuffer[3] = (byte) 0x1F; | |
| 671 | - | |
| 672 | - mBuffer[4] = (byte) 0xA0; | |
| 673 | - int keyId = XpadApiServiceInfoProxyManager.getInstance().getKeypadInfo().getKeyId(); | |
| 674 | - mBuffer[5] = (byte)((keyId >> 8) & 0xFF); | |
| 675 | - mBuffer[6] = (byte)((keyId) & 0xFF); | |
| 676 | - mBuffer[5] = keyid[0]; | |
| 677 | - mBuffer[6] = keyid[1]; | |
| 678 | - | |
| 679 | - mBuffer[7] = 1;//CMD 1 | |
| 680 | - mBuffer[8] = packtype;//PACKTYPE 多包类型 | |
| 681 | - mBuffer[9] = packid;//数据包标识码 | |
| 682 | - mBuffer[10] = packH; | |
| 683 | - mBuffer[11] = packL; | |
| 684 | - if (names != null) { | |
| 685 | - for (int i = 0; i < 14 && i < names.length; i++) { | |
| 686 | - mBuffer[12 + i] = names[i]; | |
| 687 | - } | |
| 688 | - } | |
| 689 | - | |
| 690 | - Packet packet = new Packet(); | |
| 691 | - packet.setDatas(mBuffer); | |
| 692 | - packet.setSendNo(Packet.CommunicationTestMatchNum); | |
| 693 | - sendInnerPacket(packet); | |
| 694 | - } | |
| 695 | - | |
| 696 | - private void keepFirmMode() { | |
| 697 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 698 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 699 | - mBuffer[0] = (byte) 0xF5; | |
| 700 | - mBuffer[1] = (byte) 0xAA; | |
| 701 | - mBuffer[2] = (byte) 0xAA; | |
| 702 | - mBuffer[3] = (byte) 10; | |
| 703 | - | |
| 704 | - mBuffer[4] = 0x78; | |
| 705 | - mBuffer[5] = 0x02; | |
| 706 | - | |
| 707 | - Packet packet = new Packet(); | |
| 708 | - packet.setDatas(mBuffer); | |
| 709 | - packet.setSendNo(Packet.CommunicationTestMatchNum); | |
| 710 | - sendInnerPacket(packet); | |
| 711 | - } | |
| 712 | - | |
| 713 | - private void eraseFlash(int fileLen) { | |
| 714 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 715 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 716 | - mBuffer[0] = (byte) 0xF5; | |
| 717 | - mBuffer[1] = (byte) 0xAA; | |
| 718 | - mBuffer[2] = (byte) 0xAA; | |
| 719 | - mBuffer[3] = (byte) 10; | |
| 720 | - mBuffer[4] = 0x78; | |
| 721 | - mBuffer[5] = 0x03; | |
| 722 | - mBuffer[6] = 0; | |
| 723 | - mBuffer[7] = (byte) (fileLen / 1024); | |
| 724 | - | |
| 725 | - Packet packet = new Packet(); | |
| 726 | - packet.setDatas(mBuffer); | |
| 727 | - packet.setSendNo(Packet.CommunicationTestMatchNum); | |
| 728 | - sendInnerPacket(packet); | |
| 729 | - } | |
| 730 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/bean/BaseInfo.java deleted
| 1 | -package com.sunvote.xpadapi.service.bean; | |
| 2 | - | |
| 3 | -public class BaseInfo { | |
| 4 | - private int baseId;//基站编号 | |
| 5 | - private int idMode;//基站识别模式,1编号、2序列号 | |
| 6 | - private int confId;//会议资料UID编号,1-65535,高位字节在前 | |
| 7 | - private int billId;//议题编号 | |
| 8 | - private int pageNo; //议案页码 | |
| 9 | - private int authCode;//授权号,2字节,高位在前,0-0xFFFF | |
| 10 | - private int login;//登录申请模式(后台签到模式),是否需要IC卡、登录码( | |
| 11 | - private int report;//表决器报告状态模式和指定语言 | |
| 12 | - private int offTime;//自动关机时间 | |
| 13 | - private int attrib;//表决器特性:背光模式+蜂鸣器模式等等 | |
| 14 | - private String baseName; //基站名称,最多12字节 | |
| 15 | - | |
| 16 | - public int getBaseId() { | |
| 17 | - return baseId; | |
| 18 | - } | |
| 19 | - | |
| 20 | - public void setBaseId(int baseId) { | |
| 21 | - this.baseId = baseId; | |
| 22 | - } | |
| 23 | - | |
| 24 | - public int getIdMode() { | |
| 25 | - return idMode; | |
| 26 | - } | |
| 27 | - | |
| 28 | - public void setIdMode(int idMode) { | |
| 29 | - this.idMode = idMode; | |
| 30 | - } | |
| 31 | - | |
| 32 | - public int getConfId() { | |
| 33 | - return confId; | |
| 34 | - } | |
| 35 | - | |
| 36 | - public void setConfId(int confId) { | |
| 37 | - this.confId = confId; | |
| 38 | - } | |
| 39 | - | |
| 40 | - public int getBillId() { | |
| 41 | - return billId; | |
| 42 | - } | |
| 43 | - | |
| 44 | - public void setBillId(int billId) { | |
| 45 | - this.billId = billId; | |
| 46 | - } | |
| 47 | - | |
| 48 | - public int getPageNo() { | |
| 49 | - return pageNo; | |
| 50 | - } | |
| 51 | - | |
| 52 | - public void setPageNo(int pageNo) { | |
| 53 | - this.pageNo = pageNo; | |
| 54 | - } | |
| 55 | - | |
| 56 | - public int getAuthCode() { | |
| 57 | - return authCode; | |
| 58 | - } | |
| 59 | - | |
| 60 | - public void setAuthCode(int authCode) { | |
| 61 | - this.authCode = authCode; | |
| 62 | - } | |
| 63 | - | |
| 64 | - public int getLogin() { | |
| 65 | - return login; | |
| 66 | - } | |
| 67 | - | |
| 68 | - public void setLogin(int login) { | |
| 69 | - this.login = login; | |
| 70 | - } | |
| 71 | - | |
| 72 | - public int getReport() { | |
| 73 | - return report; | |
| 74 | - } | |
| 75 | - | |
| 76 | - public void setReport(int report) { | |
| 77 | - this.report = report; | |
| 78 | - } | |
| 79 | - | |
| 80 | - public int getOffTime() { | |
| 81 | - return offTime; | |
| 82 | - } | |
| 83 | - | |
| 84 | - public void setOffTime(int offTime) { | |
| 85 | - this.offTime = offTime; | |
| 86 | - } | |
| 87 | - | |
| 88 | - public int getAttrib() { | |
| 89 | - return attrib; | |
| 90 | - } | |
| 91 | - | |
| 92 | - public void setAttrib(int attrib) { | |
| 93 | - this.attrib = attrib; | |
| 94 | - } | |
| 95 | - | |
| 96 | - public String getBaseName() { | |
| 97 | - return baseName; | |
| 98 | - } | |
| 99 | - | |
| 100 | - public void setBaseName(String baseName) { | |
| 101 | - this.baseName = baseName; | |
| 102 | - } | |
| 103 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/bean/BaseVoteInfo.java deleted
| 1 | -package com.sunvote.xpadapi.service.bean; | |
| 2 | - | |
| 3 | -import com.sunvote.xpadapi.service.listener.IModesVoteInfo; | |
| 4 | - | |
| 5 | -/** | |
| 6 | - * 字节 标识符 描述 | |
| 7 | - 1 CMD 0x72 投票信标变化 | |
| 8 | - 2 BADDH 基站编号,保证有效数据从第3字节开始,和查询指令相同 | |
| 9 | - 3,4 NOWT 时标值,2字节,高位在前 | |
| 10 | - 从投票启动开始的时间,用于表决器同步计时,20ms为单位,最大约21分钟,最大0xFFFF不自动变为0 | |
| 11 | - 5 DATAPOS 表决序号(结果记录序号) | |
| 12 | - 1-0xFF,值发生变化的时候,代表是新的一轮表决开始 | |
| 13 | - | |
| 14 | - 6 MODE 投票模式 | |
| 15 | - Bit7=1表示继续表决,表决器重新提交数据,用于系统恢复,表决器可继续输入或使用原先结果;=0 正常表决 | |
| 16 | - 低7位是表决模式: | |
| 17 | - 1-9是政务应用 10-19商务应用和教育 20-29多项和批次 30-39二维表评测 40-50管理类 | |
| 18 | - | |
| 19 | - 7-25 MODES 投票参数,具体和MODE有关,不同模式下参数意义不同 | |
| 20 | - | |
| 21 | - */ | |
| 22 | -public class BaseVoteInfo { | |
| 23 | - | |
| 24 | - private int baseId;//[1]基站编号 | |
| 25 | - private int nowT;//[2,3] | |
| 26 | - private int dataPos;//[4] | |
| 27 | - private int mode;// [5] 表决模式 | |
| 28 | - | |
| 29 | - private IModesVoteInfo modes; | |
| 30 | - | |
| 31 | - public int getBaseId() { | |
| 32 | - return baseId; | |
| 33 | - } | |
| 34 | - | |
| 35 | - public void setBaseId(int baseId) { | |
| 36 | - this.baseId = baseId; | |
| 37 | - } | |
| 38 | - | |
| 39 | - public int getNowT() { | |
| 40 | - return nowT; | |
| 41 | - } | |
| 42 | - | |
| 43 | - public void setNowT(int nowT) { | |
| 44 | - this.nowT = nowT; | |
| 45 | - } | |
| 46 | - | |
| 47 | - public int getDataPos() { | |
| 48 | - return dataPos; | |
| 49 | - } | |
| 50 | - | |
| 51 | - public void setDataPos(int dataPos) { | |
| 52 | - this.dataPos = dataPos; | |
| 53 | - } | |
| 54 | - | |
| 55 | - public int getMode() { | |
| 56 | - return mode; | |
| 57 | - } | |
| 58 | - | |
| 59 | - public void setMode(int mode) { | |
| 60 | - this.mode = mode; | |
| 61 | - } | |
| 62 | - | |
| 63 | - public IModesVoteInfo getModes() { | |
| 64 | - return modes; | |
| 65 | - } | |
| 66 | - | |
| 67 | - public void setModes(byte[] datas) { | |
| 68 | - this.modes = modes; | |
| 69 | - } | |
| 70 | - | |
| 71 | - | |
| 72 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/bean/BatchNumberVote.java deleted
| 1 | -package com.sunvote.xpadapi.service.bean; | |
| 2 | - | |
| 3 | -import com.sunvote.xpadapi.service.logic.SerialManager; | |
| 4 | - | |
| 5 | -import java.util.Arrays; | |
| 6 | - | |
| 7 | -/** | |
| 8 | - * 批次评分值结果 | |
| 9 | - */ | |
| 10 | -public class BatchNumberVote extends Vote { | |
| 11 | - | |
| 12 | - public static final int AnsType_BatchNumber = 23; | |
| 13 | - | |
| 14 | - private int personId; | |
| 15 | - private int projectId; | |
| 16 | - private String strNum; | |
| 17 | - | |
| 18 | - public BatchNumberVote(int personId, int projectId, String strNum) { | |
| 19 | - super(AnsType_BatchNumber); | |
| 20 | - this.personId = personId; | |
| 21 | - this.projectId = projectId; | |
| 22 | - this.strNum = strNum; | |
| 23 | - } | |
| 24 | - | |
| 25 | - public BatchNumberVote() { | |
| 26 | - super(AnsType_BatchNumber); | |
| 27 | - } | |
| 28 | - | |
| 29 | - public void setPersonId(int personId) { | |
| 30 | - this.personId = personId; | |
| 31 | - } | |
| 32 | - | |
| 33 | - public void setProjectId(int projectId) { | |
| 34 | - this.projectId = projectId; | |
| 35 | - } | |
| 36 | - | |
| 37 | - public void setStrNum(String strNum) { | |
| 38 | - this.strNum = strNum; | |
| 39 | - } | |
| 40 | - | |
| 41 | - @Override | |
| 42 | - public byte[] toBytes() { | |
| 43 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 44 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 45 | - mBuffer[0] = (byte) 0xF5; | |
| 46 | - mBuffer[1] = (byte) 0xAA; | |
| 47 | - mBuffer[2] = (byte) 0xAA; | |
| 48 | - mBuffer[3] = (byte) 0x1F; | |
| 49 | - mBuffer[4] = 0x73; | |
| 50 | - mBuffer[5] = SerialManager.getInstance().getSeq(); | |
| 51 | - mBuffer[6] = msgType; | |
| 52 | - mBuffer[7] = (byte) ansType; | |
| 53 | - mBuffer[8] = (byte)ok;// ALLOK | |
| 54 | - if (projectId != 0) { | |
| 55 | - mBuffer[9] = (byte) personId; | |
| 56 | - mBuffer[10] = (byte) projectId; | |
| 57 | - } else { | |
| 58 | - mBuffer[9] = (byte) (personId >> 8); | |
| 59 | - mBuffer[10] = (byte) (personId & 0xff); | |
| 60 | - } | |
| 61 | - byte[] val = util_encodeBCD(strNum.getBytes()); | |
| 62 | - System.arraycopy(val, 0, mBuffer, 11, 4); | |
| 63 | - return mBuffer; | |
| 64 | - } | |
| 65 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/bean/BatchSingleVote.java deleted
| 1 | -package com.sunvote.xpadapi.service.bean; | |
| 2 | - | |
| 3 | -import com.sunvote.xpadapi.service.logic.SerialManager; | |
| 4 | - | |
| 5 | -import java.util.Arrays; | |
| 6 | - | |
| 7 | -public class BatchSingleVote extends Vote{ | |
| 8 | - | |
| 9 | - public static final int AnsType_BatchSingle = 21 ; | |
| 10 | - | |
| 11 | - private int num; | |
| 12 | - private int val ; | |
| 13 | - | |
| 14 | - public BatchSingleVote(int num, int val) { | |
| 15 | - super(AnsType_BatchSingle); | |
| 16 | - this.num = num; | |
| 17 | - this.val = val; | |
| 18 | - } | |
| 19 | - | |
| 20 | - /** | |
| 21 | - * 不设计任何值,则为取消全部投票 | |
| 22 | - */ | |
| 23 | - public BatchSingleVote() { | |
| 24 | - super(AnsType_BatchSingle); | |
| 25 | - } | |
| 26 | - | |
| 27 | - public void setNum(int num) { | |
| 28 | - this.num = num; | |
| 29 | - } | |
| 30 | - | |
| 31 | - public void setVal(int val) { | |
| 32 | - this.val = val; | |
| 33 | - } | |
| 34 | - | |
| 35 | - @Override | |
| 36 | - public byte[] toBytes() { | |
| 37 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 38 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 39 | - mBuffer[0] = (byte) 0xF5; | |
| 40 | - mBuffer[1] = (byte) 0xAA; | |
| 41 | - mBuffer[2] = (byte) 0xAA; | |
| 42 | - mBuffer[3] = (byte) 0x1F; | |
| 43 | - mBuffer[4] = 0x73; | |
| 44 | - mBuffer[5] = (byte) SerialManager.getInstance().getSeq(); | |
| 45 | - mBuffer[6] = msgType; | |
| 46 | - mBuffer[7] = (byte) ansType; | |
| 47 | - mBuffer[8] = (byte)ok;// ALLOK | |
| 48 | - int pos = 9; | |
| 49 | - mBuffer[pos++] = (byte) (num >> 8); | |
| 50 | - mBuffer[pos++] = (byte) (num & 0xff); | |
| 51 | - mBuffer[pos++] = (byte) val; | |
| 52 | - return mBuffer; | |
| 53 | - } | |
| 54 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/bean/HeartBeat.java deleted
| 1 | -package com.sunvote.xpadapi.service.bean; | |
| 2 | - | |
| 3 | -import java.util.Arrays; | |
| 4 | - | |
| 5 | -public class HeartBeat { | |
| 6 | - | |
| 7 | - private byte volt; | |
| 8 | - private byte keyinStatus; | |
| 9 | - | |
| 10 | - public HeartBeat(byte volt, byte keyinStatus) { | |
| 11 | - this.volt = volt; | |
| 12 | - this.keyinStatus = keyinStatus; | |
| 13 | - } | |
| 14 | - | |
| 15 | - public HeartBeat() { | |
| 16 | - } | |
| 17 | - | |
| 18 | - public void setKeyinStatus(byte keyinStatus) { | |
| 19 | - this.keyinStatus = keyinStatus; | |
| 20 | - } | |
| 21 | - | |
| 22 | - public void setVolt(byte volt) { | |
| 23 | - this.volt = volt; | |
| 24 | - } | |
| 25 | - | |
| 26 | - public byte[] toBytes(){ | |
| 27 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 28 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 29 | - mBuffer[0] = (byte) 0xF5; | |
| 30 | - mBuffer[1] = (byte) 0xAA; | |
| 31 | - mBuffer[2] = (byte) 0xAA; | |
| 32 | - mBuffer[3] = (byte) 0x1F; | |
| 33 | - mBuffer[4] = 0x70; | |
| 34 | - mBuffer[5] = 0x07; | |
| 35 | - mBuffer[6] = (byte) volt; | |
| 36 | - mBuffer[7] = (byte) keyinStatus; | |
| 37 | - return mBuffer; | |
| 38 | - } | |
| 39 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/bean/KeypadInfo.java deleted
| 1 | -package com.sunvote.xpadapi.service.bean; | |
| 2 | - | |
| 3 | -public class KeypadInfo { | |
| 4 | - | |
| 5 | - private int cmd1;//8:match 9:config | |
| 6 | - private int ok; | |
| 7 | - private int chan; | |
| 8 | - private int keyId;//键盘编号,高位在前 | |
| 9 | - private String keySn;//6字节键盘序列号 | |
| 10 | - private String matchCode;//4字节配对码 | |
| 11 | - | |
| 12 | - public int getCmd1() { | |
| 13 | - return cmd1; | |
| 14 | - } | |
| 15 | - | |
| 16 | - public void setCmd1(int cmd1) { | |
| 17 | - this.cmd1 = cmd1; | |
| 18 | - } | |
| 19 | - | |
| 20 | - public int getOk() { | |
| 21 | - return ok; | |
| 22 | - } | |
| 23 | - | |
| 24 | - public void setOk(int ok) { | |
| 25 | - this.ok = ok; | |
| 26 | - } | |
| 27 | - | |
| 28 | - public int getChan() { | |
| 29 | - return chan; | |
| 30 | - } | |
| 31 | - | |
| 32 | - public void setChan(int chan) { | |
| 33 | - this.chan = chan; | |
| 34 | - } | |
| 35 | - | |
| 36 | - public int getKeyId() { | |
| 37 | - return keyId; | |
| 38 | - } | |
| 39 | - | |
| 40 | - public void setKeyId(int keyId) { | |
| 41 | - this.keyId = keyId; | |
| 42 | - } | |
| 43 | - | |
| 44 | - public String getKeySn() { | |
| 45 | - return keySn; | |
| 46 | - } | |
| 47 | - | |
| 48 | - public void setKeySn(String keySn) { | |
| 49 | - this.keySn = keySn; | |
| 50 | - } | |
| 51 | - | |
| 52 | - public String getMatchCode() { | |
| 53 | - return matchCode; | |
| 54 | - } | |
| 55 | - | |
| 56 | - public void setMatchCode(String matchCode) { | |
| 57 | - this.matchCode = matchCode; | |
| 58 | - } | |
| 59 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/bean/LoginInVote.java deleted
| 1 | -package com.sunvote.xpadapi.service.bean; | |
| 2 | - | |
| 3 | -import com.sunvote.xpadapi.service.logic.SerialManager; | |
| 4 | - | |
| 5 | -import java.util.Arrays; | |
| 6 | - | |
| 7 | -public class LoginInVote extends Vote{ | |
| 8 | - | |
| 9 | - public static final int AnsType_LoginIn = 16 ; | |
| 10 | - | |
| 11 | - private String info ; | |
| 12 | - | |
| 13 | - public LoginInVote(String info) { | |
| 14 | - super(AnsType_LoginIn); | |
| 15 | - this.info = info; | |
| 16 | - } | |
| 17 | - | |
| 18 | - public void setInfo(String info) { | |
| 19 | - this.info = info; | |
| 20 | - } | |
| 21 | - | |
| 22 | - public byte[] toBytes(){ | |
| 23 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 24 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 25 | - mBuffer[0] = (byte) 0xF5; | |
| 26 | - mBuffer[1] = (byte) 0xAA; | |
| 27 | - mBuffer[2] = (byte) 0xAA; | |
| 28 | - mBuffer[3] = (byte) 0x1F; | |
| 29 | - | |
| 30 | - mBuffer[4] = 0x73; | |
| 31 | - mBuffer[5] = SerialManager.getInstance().getSeq(); | |
| 32 | - | |
| 33 | - mBuffer[6] = (byte)msgType; | |
| 34 | - mBuffer[7] = (byte) ansType; | |
| 35 | - mBuffer[8] = 3;//3 签到信息按BCD码格式 | |
| 36 | - byte[] val = util_encodeBCD(info.getBytes()); | |
| 37 | - System.arraycopy(val, 0, mBuffer, 9, 9); | |
| 38 | - return mBuffer; | |
| 39 | - } | |
| 40 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/bean/ModelInfo.java deleted
| 1 | -package com.sunvote.xpadapi.service.bean; | |
| 2 | - | |
| 3 | -public class ModelInfo { | |
| 4 | - private int mode;//模块当前主从模式 1 基站模式(主) 2 键盘模式(从) | |
| 5 | - private int hModel;//硬件型号,数字 | |
| 6 | - private String sVer;//固件版本,3位数字,例如 0.1.0 | |
| 7 | - | |
| 8 | - public int getMode() { | |
| 9 | - return mode; | |
| 10 | - } | |
| 11 | - | |
| 12 | - public void setMode(int mode) { | |
| 13 | - this.mode = mode; | |
| 14 | - } | |
| 15 | - | |
| 16 | - public int gethModel() { | |
| 17 | - return hModel; | |
| 18 | - } | |
| 19 | - | |
| 20 | - public void sethModel(int hModel) { | |
| 21 | - this.hModel = hModel; | |
| 22 | - } | |
| 23 | - | |
| 24 | - public String getsVer() { | |
| 25 | - return sVer; | |
| 26 | - } | |
| 27 | - | |
| 28 | - public void setsVer(String sVer) { | |
| 29 | - this.sVer = sVer; | |
| 30 | - } | |
| 31 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/bean/NumberVote.java deleted
| 1 | -package com.sunvote.xpadapi.service.bean; | |
| 2 | - | |
| 3 | -import com.sunvote.xpadapi.service.logic.SerialManager; | |
| 4 | - | |
| 5 | -import java.util.Arrays; | |
| 6 | - | |
| 7 | -public class NumberVote extends Vote{ | |
| 8 | - | |
| 9 | - public static final int AnsType_Number = 3; | |
| 10 | - private String info; | |
| 11 | - | |
| 12 | - public void setInfo(String info) { | |
| 13 | - this.info = info; | |
| 14 | - } | |
| 15 | - | |
| 16 | - public NumberVote(String info) { | |
| 17 | - super(AnsType_Number); | |
| 18 | - this.info = info; | |
| 19 | - } | |
| 20 | - | |
| 21 | - public NumberVote() { | |
| 22 | - super(AnsType_Number); | |
| 23 | - } | |
| 24 | - | |
| 25 | - public byte[] toBytes(){ | |
| 26 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 27 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 28 | - mBuffer[0] = (byte) 0xF5; | |
| 29 | - mBuffer[1] = (byte) 0xAA; | |
| 30 | - mBuffer[2] = (byte) 0xAA; | |
| 31 | - mBuffer[3] = (byte) 0x1F; | |
| 32 | - mBuffer[4] = 0x73; | |
| 33 | - mBuffer[5] = SerialManager.getInstance().getSeq(); | |
| 34 | - mBuffer[6] = (byte)msgType; | |
| 35 | - mBuffer[7] = (byte) ansType; | |
| 36 | - byte[] val = util_encodeBCD(info.getBytes()); | |
| 37 | - System.arraycopy(val, 0, mBuffer, 8, 8); | |
| 38 | - | |
| 39 | - return mBuffer; | |
| 40 | - } | |
| 41 | - | |
| 42 | - | |
| 43 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/bean/OnLineInfo.java deleted
| 1 | -package com.sunvote.xpadapi.service.bean; | |
| 2 | - | |
| 3 | -public class OnLineInfo { | |
| 4 | - private int onLine; //键盘是否在线 1 在线 2 离线 | |
| 5 | - private int idMode;//基站的识别模式 | |
| 6 | - private int chan; //当前频点号 | |
| 7 | - private int rssi; //接收到基站的信号强度RSSI值,负数,越小表示信号越大 | |
| 8 | - private int tx; //1表示刚才1秒内有提交数据过 0 表示没有 | |
| 9 | - private int rx; //1 表示刚才1秒内收到过基站的投票指令(特指投票中) 0 表示没有 | |
| 10 | - private int baseId; | |
| 11 | - private int keyId; | |
| 12 | - private String keySn; | |
| 13 | - private int comError=0; | |
| 14 | - | |
| 15 | - public int getOnLine() { | |
| 16 | - return onLine; | |
| 17 | - } | |
| 18 | - | |
| 19 | - public void setOnLine(int onLine) { | |
| 20 | - this.onLine = onLine; | |
| 21 | - } | |
| 22 | - | |
| 23 | - public int getIdMode() { | |
| 24 | - return idMode; | |
| 25 | - } | |
| 26 | - | |
| 27 | - public void setIdMode(int idMode) { | |
| 28 | - this.idMode = idMode; | |
| 29 | - } | |
| 30 | - | |
| 31 | - public int getChan() { | |
| 32 | - return chan; | |
| 33 | - } | |
| 34 | - | |
| 35 | - public void setChan(int chan) { | |
| 36 | - this.chan = chan; | |
| 37 | - } | |
| 38 | - | |
| 39 | - public int getRssi() { | |
| 40 | - return rssi; | |
| 41 | - } | |
| 42 | - | |
| 43 | - public void setRssi(int rssi) { | |
| 44 | - this.rssi = rssi; | |
| 45 | - } | |
| 46 | - | |
| 47 | - public int getTx() { | |
| 48 | - return tx; | |
| 49 | - } | |
| 50 | - | |
| 51 | - public void setTx(int tx) { | |
| 52 | - this.tx = tx; | |
| 53 | - } | |
| 54 | - | |
| 55 | - public int getRx() { | |
| 56 | - return rx; | |
| 57 | - } | |
| 58 | - | |
| 59 | - public void setRx(int rx) { | |
| 60 | - this.rx = rx; | |
| 61 | - } | |
| 62 | - | |
| 63 | - public int getBaseId() { | |
| 64 | - return baseId; | |
| 65 | - } | |
| 66 | - | |
| 67 | - public void setBaseId(int baseId) { | |
| 68 | - this.baseId = baseId; | |
| 69 | - } | |
| 70 | - | |
| 71 | - public int getKeyId() { | |
| 72 | - return keyId; | |
| 73 | - } | |
| 74 | - | |
| 75 | - public void setKeyId(int keyId) { | |
| 76 | - this.keyId = keyId; | |
| 77 | - } | |
| 78 | - | |
| 79 | - public String getKeySn() { | |
| 80 | - return keySn; | |
| 81 | - } | |
| 82 | - | |
| 83 | - public void setKeySn(String keySn) { | |
| 84 | - this.keySn = keySn; | |
| 85 | - } | |
| 86 | - | |
| 87 | - public int getComError() { | |
| 88 | - return comError; | |
| 89 | - } | |
| 90 | - | |
| 91 | - public void setComError(int comError) { | |
| 92 | - this.comError = comError; | |
| 93 | - } | |
| 94 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/bean/Packet.java deleted
| 1 | -package com.sunvote.xpadapi.service.bean; | |
| 2 | - | |
| 3 | -import com.sunvote.xpadapi.service.listener.OnSendPacket; | |
| 4 | - | |
| 5 | -public class Packet { | |
| 6 | - | |
| 7 | - public static final int OVER_TIME_COUNTS = 6; | |
| 8 | - | |
| 9 | - public static final int BaseStatusNum = 1 ; | |
| 10 | - public static final int VoteStatusNum = 2 ; | |
| 11 | - public static final int ExecKeypadMatchNum = 6 ; | |
| 12 | - public static final int GetWorkModeNum = 11 ; | |
| 13 | - public static final int SetWorkModeNum = 12 ; | |
| 14 | - public static final int GetKeypadParam = 13 ; | |
| 15 | - | |
| 16 | - public static final int CommunicationTestMatchNum = 30 ; | |
| 17 | - | |
| 18 | - private int sendNo ; | |
| 19 | - private byte[] datas; | |
| 20 | - private int sendCount = 0 ; | |
| 21 | - private boolean isSync = false; | |
| 22 | - | |
| 23 | - private OnSendPacket onSendPacket; | |
| 24 | - | |
| 25 | - public int getSendNo() { | |
| 26 | - return sendNo; | |
| 27 | - } | |
| 28 | - | |
| 29 | - public void setSendNo(int sendNo) { | |
| 30 | - this.sendNo = sendNo; | |
| 31 | - } | |
| 32 | - | |
| 33 | - public byte[] getDatas() { | |
| 34 | - return datas; | |
| 35 | - } | |
| 36 | - | |
| 37 | - public void setDatas(byte[] datas) { | |
| 38 | - this.datas = datas; | |
| 39 | - } | |
| 40 | - | |
| 41 | - public OnSendPacket getOnSendPacket() { | |
| 42 | - return onSendPacket; | |
| 43 | - } | |
| 44 | - | |
| 45 | - public void setOnSendPacket(OnSendPacket onSendPacket) { | |
| 46 | - this.onSendPacket = onSendPacket; | |
| 47 | - } | |
| 48 | - | |
| 49 | - public void addSendCount(){ | |
| 50 | - sendCount ++ ; | |
| 51 | - } | |
| 52 | - | |
| 53 | - public boolean needSend(){ | |
| 54 | - if(sendCount < OVER_TIME_COUNTS){ | |
| 55 | - return true; | |
| 56 | - } | |
| 57 | - return false; | |
| 58 | - } | |
| 59 | - | |
| 60 | - public boolean isSync() { | |
| 61 | - return isSync; | |
| 62 | - } | |
| 63 | - | |
| 64 | - public void setSync(boolean sync) { | |
| 65 | - isSync = sync; | |
| 66 | - } | |
| 67 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/bean/SelectOtherVote.java deleted
| 1 | -package com.sunvote.xpadapi.service.bean; | |
| 2 | - | |
| 3 | -import com.sunvote.xpadapi.service.logic.SerialManager; | |
| 4 | -import com.sunvote.xpadapi.service.logic.XpadApiServiceInfoProxyManager; | |
| 5 | -import com.sunvote.xpadapi.util.LogUtil; | |
| 6 | - | |
| 7 | -import java.util.Arrays; | |
| 8 | - | |
| 9 | -public class SelectOtherVote extends Vote { | |
| 10 | - | |
| 11 | - public static final int AnsType_SelectOther = 26; | |
| 12 | - | |
| 13 | - private int num; | |
| 14 | - private String info; | |
| 15 | - | |
| 16 | - public SelectOtherVote(int num, String info) { | |
| 17 | - super(AnsType_SelectOther); | |
| 18 | - this.num = num; | |
| 19 | - this.info = info; | |
| 20 | - } | |
| 21 | - | |
| 22 | - public SelectOtherVote() { | |
| 23 | - super(AnsType_SelectOther); | |
| 24 | - } | |
| 25 | - | |
| 26 | - public void setNum(int num) { | |
| 27 | - this.num = num; | |
| 28 | - } | |
| 29 | - | |
| 30 | - public void setInfo(String info) { | |
| 31 | - this.info = info; | |
| 32 | - } | |
| 33 | - | |
| 34 | - @Override | |
| 35 | - public byte[] toBytes() { | |
| 36 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 37 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 38 | - mBuffer[0] = (byte) 0xF5; | |
| 39 | - mBuffer[1] = (byte) 0xAA; | |
| 40 | - mBuffer[2] = (byte) 0xAA; | |
| 41 | - mBuffer[3] = (byte) 0x1F; | |
| 42 | - mBuffer[4] = 0x73; | |
| 43 | - mBuffer[5] = SerialManager.getInstance().getSeq();// 流水号 | |
| 44 | - mBuffer[6] = (byte)msgType; | |
| 45 | - mBuffer[7] = (byte) ansType; | |
| 46 | - mBuffer[8] = (byte) ok;// ALLOK | |
| 47 | - int pos = 9; | |
| 48 | - mBuffer[pos++] = (byte) (num >> 8); | |
| 49 | - mBuffer[pos++] = (byte) num; | |
| 50 | - mBuffer[pos++] = 0;// slot | |
| 51 | - try { | |
| 52 | - byte[] name = info.getBytes(XpadApiServiceInfoProxyManager.getInstance().getCharset()); | |
| 53 | - System.arraycopy(name, 0, mBuffer, pos, name.length > 16 ? 16 : name.length); | |
| 54 | - } catch (Exception e) { | |
| 55 | - LogUtil.e(XpadApiServiceInfoProxyManager.TAG, "SelectOtherVote", e); | |
| 56 | - } | |
| 57 | - return mBuffer; | |
| 58 | - } | |
| 59 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/bean/SelectVote.java deleted
| 1 | -package com.sunvote.xpadapi.service.bean; | |
| 2 | - | |
| 3 | -import com.sunvote.xpadapi.service.logic.SerialManager; | |
| 4 | - | |
| 5 | -import java.util.Arrays; | |
| 6 | - | |
| 7 | -public class SelectVote extends Vote{ | |
| 8 | - | |
| 9 | - public final static int SELECT_VOTE_TYPE = 2; | |
| 10 | - | |
| 11 | - private int content; | |
| 12 | - private int time; | |
| 13 | - | |
| 14 | - public SelectVote(int content, int time) { | |
| 15 | - super(SELECT_VOTE_TYPE); | |
| 16 | - this.content = content; | |
| 17 | - this.time = time; | |
| 18 | - } | |
| 19 | - | |
| 20 | - public SelectVote() { | |
| 21 | - super(SELECT_VOTE_TYPE); | |
| 22 | - } | |
| 23 | - public void setContent(int content) { | |
| 24 | - this.content = content; | |
| 25 | - } | |
| 26 | - | |
| 27 | - public void setTime(int time) { | |
| 28 | - this.time = time; | |
| 29 | - } | |
| 30 | - | |
| 31 | - public byte[] toBytes(){ | |
| 32 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 33 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 34 | - mBuffer[0] = (byte) 0xF5; | |
| 35 | - mBuffer[1] = (byte) 0xAA; | |
| 36 | - mBuffer[2] = (byte) 0xAA; | |
| 37 | - mBuffer[3] = (byte) 0x1F; | |
| 38 | - mBuffer[4] = 0x73; | |
| 39 | - mBuffer[5] = SerialManager.getInstance().getSeq(); | |
| 40 | - mBuffer[6] = msgType; | |
| 41 | - mBuffer[7] = (byte) ansType; | |
| 42 | - mBuffer[8] = (byte) ((time >> 8) & 0xff);// 原来的计算居然是这样 没懂 | |
| 43 | - mBuffer[9] = (byte) (time & 0xff); | |
| 44 | - mBuffer[10] = (byte) ((time >> 8) & 0xff); | |
| 45 | - mBuffer[11] = (byte) (time & 0xff); | |
| 46 | - return mBuffer; | |
| 47 | - } | |
| 48 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/bean/ServiceTypeVote.java deleted
| 1 | -package com.sunvote.xpadapi.service.bean; | |
| 2 | - | |
| 3 | -import com.sunvote.xpadapi.service.logic.SerialManager; | |
| 4 | - | |
| 5 | -import java.util.Arrays; | |
| 6 | - | |
| 7 | -/** | |
| 8 | - * 服务申请 | |
| 9 | - */ | |
| 10 | -public class ServiceTypeVote extends Vote { | |
| 11 | - | |
| 12 | - public static final int AnsType_Service = 33; | |
| 13 | - | |
| 14 | - private int serviceType = 0; | |
| 15 | - | |
| 16 | - public ServiceTypeVote(int serviceType) { | |
| 17 | - super(AnsType_Service); | |
| 18 | - this.serviceType = serviceType; | |
| 19 | - } | |
| 20 | - | |
| 21 | - public ServiceTypeVote() { | |
| 22 | - super(AnsType_Service); | |
| 23 | - } | |
| 24 | - | |
| 25 | - public void setServiceType(int serviceType) { | |
| 26 | - this.serviceType = serviceType; | |
| 27 | - } | |
| 28 | - | |
| 29 | - @Override | |
| 30 | - public byte[] toBytes() { | |
| 31 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 32 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 33 | - mBuffer[0] = (byte) 0xF5; | |
| 34 | - mBuffer[1] = (byte) 0xAA; | |
| 35 | - mBuffer[2] = (byte) 0xAA; | |
| 36 | - mBuffer[3] = (byte) 0x1F; | |
| 37 | - mBuffer[4] = 0x73; | |
| 38 | - mBuffer[5] = SerialManager.getInstance().getSeq();// 流水号 | |
| 39 | - mBuffer[6] = msgType; | |
| 40 | - mBuffer[7] = (byte) ansType; | |
| 41 | - mBuffer[8] = 4; | |
| 42 | - mBuffer[9] = (byte) serviceType; | |
| 43 | - mBuffer[10] = mBuffer[5]; | |
| 44 | - return mBuffer; | |
| 45 | - } | |
| 46 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/bean/SingleVote.java deleted
| 1 | -package com.sunvote.xpadapi.service.bean; | |
| 2 | - | |
| 3 | -import com.sunvote.xpadapi.service.logic.SerialManager; | |
| 4 | - | |
| 5 | -import java.util.Arrays; | |
| 6 | - | |
| 7 | -public class SingleVote extends Vote { | |
| 8 | - | |
| 9 | - private int info; | |
| 10 | - | |
| 11 | - public SingleVote(int info) { | |
| 12 | - super(1); | |
| 13 | - this.info = info; | |
| 14 | - } | |
| 15 | - | |
| 16 | - public SingleVote() { | |
| 17 | - super(1); | |
| 18 | - } | |
| 19 | - | |
| 20 | - public void setInfo(int info) { | |
| 21 | - this.info = info; | |
| 22 | - } | |
| 23 | - | |
| 24 | - public byte[] toBytes() { | |
| 25 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 26 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 27 | - mBuffer[0] = (byte) 0xF5; | |
| 28 | - mBuffer[1] = (byte) 0xAA; | |
| 29 | - mBuffer[2] = (byte) 0xAA; | |
| 30 | - mBuffer[3] = (byte) 0x1F; | |
| 31 | - mBuffer[4] = 0x73; | |
| 32 | - mBuffer[5] = SerialManager.getInstance().getSeq(); | |
| 33 | - mBuffer[6] = msgType; | |
| 34 | - mBuffer[7] = (byte) ansType; | |
| 35 | - mBuffer[8] = (byte) info; | |
| 36 | - return mBuffer; | |
| 37 | - } | |
| 38 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/bean/Vote.java deleted
| 1 | -package com.sunvote.xpadapi.service.bean; | |
| 2 | - | |
| 3 | -import com.sunvote.xpadapi.service.logic.SerialManager; | |
| 4 | - | |
| 5 | -import java.util.Arrays; | |
| 6 | - | |
| 7 | -public class Vote { | |
| 8 | - | |
| 9 | - protected int ansType = 16; | |
| 10 | - protected static byte msgType = 1;// MSGTYPE 1:ID mode, 2:SN | |
| 11 | - private String info; | |
| 12 | - protected int ok; | |
| 13 | - | |
| 14 | - public Vote(int ansType) { | |
| 15 | - this.ansType = ansType; | |
| 16 | - } | |
| 17 | - | |
| 18 | - public static void setMsgTypeIdModel() { | |
| 19 | - msgType = 1; | |
| 20 | - } | |
| 21 | - | |
| 22 | - public static void setMsgTypeSnModel() { | |
| 23 | - msgType = 2; | |
| 24 | - } | |
| 25 | - | |
| 26 | - public void setInfo(String info) { | |
| 27 | - this.info = info; | |
| 28 | - } | |
| 29 | - | |
| 30 | - public void setOk(int ok) { | |
| 31 | - this.ok = ok; | |
| 32 | - } | |
| 33 | - | |
| 34 | - /** | |
| 35 | - * 把字符串形式转换为字节形式 | |
| 36 | - */ | |
| 37 | - protected byte[] util_encodeBCD(byte[] cs) { | |
| 38 | - byte[] rs = new byte[17]; | |
| 39 | - Arrays.fill(rs, (byte) 0xff);// | |
| 40 | - | |
| 41 | - int len = cs.length < 16 ? cs.length : 16; | |
| 42 | - int io = 0; | |
| 43 | - | |
| 44 | - for (int i = 0; i < len; i += 2) { | |
| 45 | - int n = encodeBCD(cs[i]); | |
| 46 | - n <<= 4; | |
| 47 | - if (i + 1 == cs.length) { | |
| 48 | - rs[io++] = (byte) (n | 0xf); | |
| 49 | - break; | |
| 50 | - } | |
| 51 | - | |
| 52 | - n |= encodeBCD(cs[i + 1]); | |
| 53 | - if (n < 0) { | |
| 54 | - break; | |
| 55 | - } | |
| 56 | - rs[io++] = (byte) n; | |
| 57 | - } | |
| 58 | - rs[++io] = 0; | |
| 59 | - return rs; | |
| 60 | - } | |
| 61 | - | |
| 62 | - protected int encodeBCD(byte c) { | |
| 63 | - if (c >= 'a' && c <= 'f') { | |
| 64 | - return 10 + (c - 'a'); | |
| 65 | - } else if (c >= '0' && c <= '9') { | |
| 66 | - return c - '0'; | |
| 67 | - } else if (c >= 'A' && c <= 'F') { | |
| 68 | - return 10 + (c - 'A'); | |
| 69 | - } else if (c == '.') { | |
| 70 | - return 0xE; | |
| 71 | - } | |
| 72 | - return -1; | |
| 73 | - } | |
| 74 | - | |
| 75 | - public byte[] toBytes() { | |
| 76 | - byte[] mBuffer = new byte[0x1F + 4]; | |
| 77 | - Arrays.fill(mBuffer, (byte) 0x0); | |
| 78 | - mBuffer[0] = (byte) 0xF5; | |
| 79 | - mBuffer[1] = (byte) 0xAA; | |
| 80 | - mBuffer[2] = (byte) 0xAA; | |
| 81 | - mBuffer[3] = (byte) 0x1F; | |
| 82 | - mBuffer[4] = 0x73; | |
| 83 | - mBuffer[5] = SerialManager.getInstance().getSeq(); | |
| 84 | - mBuffer[6] = msgType; | |
| 85 | - mBuffer[7] = (byte) ansType; | |
| 86 | - mBuffer[8] = (byte)ok; | |
| 87 | - int pos = 9; | |
| 88 | - if(info != null) { | |
| 89 | - String[] item = info.split(":"); | |
| 90 | - if (item.length > 1) { | |
| 91 | - int num = Integer.parseInt(item[0]); | |
| 92 | - String val = item[1]; | |
| 93 | - mBuffer[pos++] = (byte) (num >> 8); | |
| 94 | - mBuffer[pos++] = (byte) num; | |
| 95 | - mBuffer[pos++] = 0;// slot | |
| 96 | - try { | |
| 97 | - byte[] name = val.getBytes("GB2312"); | |
| 98 | - System.arraycopy(name, 0, mBuffer, pos, name.length > 16 ? 16 : name.length); | |
| 99 | - } catch (Exception e) { | |
| 100 | - } | |
| 101 | - } | |
| 102 | - } | |
| 103 | - return mBuffer; | |
| 104 | - } | |
| 105 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/listener/AbsDownloadProcess.java deleted
| 1 | -package com.sunvote.xpadapi.service.listener; | |
| 2 | - | |
| 3 | -import java.io.File; | |
| 4 | -import java.io.IOException; | |
| 5 | - | |
| 6 | -/** | |
| 7 | - * Created by Elvis on 2018/3/20 11:18 | |
| 8 | - * Email:Eluis@psunsky.com | |
| 9 | - * 版权所有:长沙中天电子设计开发有限公司 | |
| 10 | - * Description: 人大通用版XPadAppRendaMac | |
| 11 | - */ | |
| 12 | - | |
| 13 | -public abstract class AbsDownloadProcess { | |
| 14 | - | |
| 15 | - private static String foldPath = "/sdcard/Sunvote/download/"; | |
| 16 | - | |
| 17 | - protected static String fileName = "default.obj"; | |
| 18 | - | |
| 19 | - private long length ; | |
| 20 | - private long curComplete = 0 ; | |
| 21 | - | |
| 22 | - private static File file ; | |
| 23 | - | |
| 24 | - public File getFile() { | |
| 25 | - if(file == null){ | |
| 26 | - curComplete = 0 ; | |
| 27 | - File folder = new File(foldPath); | |
| 28 | - if(!folder.exists()){ | |
| 29 | - folder.mkdirs(); | |
| 30 | - } | |
| 31 | - if(fileName == null || "".equals(fileName.trim())){ | |
| 32 | - fileName = "default.obj" ; | |
| 33 | - } | |
| 34 | - file = new File(foldPath , fileName); | |
| 35 | - file.deleteOnExit(); | |
| 36 | - if(!file.exists()){ | |
| 37 | - try { | |
| 38 | - file.createNewFile(); | |
| 39 | - } catch (IOException e) { | |
| 40 | - onDownloadError(e); | |
| 41 | - } | |
| 42 | - } | |
| 43 | - } | |
| 44 | - return file; | |
| 45 | - } | |
| 46 | - | |
| 47 | - protected long getLength() { | |
| 48 | - return length; | |
| 49 | - } | |
| 50 | - | |
| 51 | - public String getFoldPath() { | |
| 52 | - return foldPath; | |
| 53 | - } | |
| 54 | - | |
| 55 | - protected void setLength(long length) { | |
| 56 | - this.length = length; | |
| 57 | - curComplete = 0 ; | |
| 58 | - } | |
| 59 | - | |
| 60 | - public void setFileName(String fileName) { | |
| 61 | - if(!(fileName == null || "".equals(fileName.trim()))) { | |
| 62 | - this.fileName = fileName; | |
| 63 | - file = null; | |
| 64 | - } | |
| 65 | - } | |
| 66 | - | |
| 67 | - protected String getFileName() { | |
| 68 | - return fileName; | |
| 69 | - } | |
| 70 | - | |
| 71 | - public void setFoldPath(String foldPath) { | |
| 72 | - this.foldPath = foldPath; | |
| 73 | - } | |
| 74 | - | |
| 75 | - protected void onStartDownload(){ | |
| 76 | - onStartDownload(getFile(),getLength()); | |
| 77 | - } | |
| 78 | - | |
| 79 | - public abstract void onStartDownload(File file,long length); | |
| 80 | - | |
| 81 | - protected void onDownloadAddProcess(int curPack) { | |
| 82 | - curComplete += curPack; | |
| 83 | - double result = 0; | |
| 84 | - if(curComplete <= length){ | |
| 85 | - result = (double)curComplete / length ; | |
| 86 | - }else{ | |
| 87 | - result = 1; | |
| 88 | - } | |
| 89 | - | |
| 90 | - try{ | |
| 91 | - onDownloadProcess(result); | |
| 92 | - }catch (Exception ex){ | |
| 93 | - ex.printStackTrace(); | |
| 94 | - } | |
| 95 | - try{ | |
| 96 | - int ri = (int)(result * 100); | |
| 97 | - onDownloadProcess(ri + "%"); | |
| 98 | - }catch (Exception ex){ | |
| 99 | - ex.printStackTrace(); | |
| 100 | - } | |
| 101 | - } | |
| 102 | - | |
| 103 | - public abstract void onDownloadProcess(double process); | |
| 104 | - | |
| 105 | - public abstract void onDownloadProcess(String process); | |
| 106 | - | |
| 107 | - protected void onStopDownload(){ | |
| 108 | - onStopDownload(getFile()); | |
| 109 | - } | |
| 110 | - | |
| 111 | - public abstract void onStopDownload(File file); | |
| 112 | - | |
| 113 | - public abstract void onDownloadError(Exception e); | |
| 114 | - | |
| 115 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/listener/BaseInfoChanageListener.java deleted
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/listener/BaseVoteInfoChanageListener.java deleted
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/listener/IModesVoteInfo.java deleted
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/listener/IUploadListener.java deleted
| 1 | -package com.sunvote.xpadapi.service.listener; | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * Created by Elvis on 2018/3/22 13:43 | |
| 5 | - * Email:Eluis@psunsky.com | |
| 6 | - * 版权所有:长沙中天电子设计开发有限公司 | |
| 7 | - * Description: 人大通用版XPadAppRendaMac | |
| 8 | - */ | |
| 9 | -public interface IUploadListener { | |
| 10 | - | |
| 11 | - public void onUploadStart(); | |
| 12 | - | |
| 13 | - public void onUploadProcess(double process); | |
| 14 | - | |
| 15 | - public void onUploadStop(); | |
| 16 | - | |
| 17 | - public void onFail(); | |
| 18 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/listener/KeyPadinfoChanageListener.java deleted
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/listener/ModelInfoChanageListener.java deleted
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/listener/OnDataReceiver.java deleted
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/listener/OnSendPacket.java deleted
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/listener/OnSender.java deleted
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/listener/OnlineInfoChanageListener.java deleted
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/logic/RFFileDownloadModule.java deleted
| 1 | -package com.sunvote.xpadapi.service.logic; | |
| 2 | - | |
| 3 | -import android.os.Handler; | |
| 4 | -import android.os.Looper; | |
| 5 | - | |
| 6 | -import com.sunvote.util.LogUtil; | |
| 7 | -import com.sunvote.xpadapi.service.listener.AbsDownloadProcess; | |
| 8 | - | |
| 9 | -import java.io.File; | |
| 10 | - | |
| 11 | -/** | |
| 12 | - * Created by Elvis on 2018/3/20 11:16 | |
| 13 | - * Email:Eluis@psunsky.com | |
| 14 | - * 版权所有:长沙中天电子设计开发有限公司 | |
| 15 | - * Description: 文件下载模块 | |
| 16 | - */ | |
| 17 | -public class RFFileDownloadModule { | |
| 18 | - | |
| 19 | - private RFFileDownloadModule(){ | |
| 20 | - handler = new Handler(Looper.getMainLooper()); | |
| 21 | - } | |
| 22 | - private Handler handler ; | |
| 23 | - private long overtime = 15 * 1000 ; | |
| 24 | - private static RFFileDownloadModule instance = new RFFileDownloadModule(); | |
| 25 | - | |
| 26 | - public static RFFileDownloadModule getInstance() { | |
| 27 | - return instance; | |
| 28 | - } | |
| 29 | - | |
| 30 | - private AbsDownloadProcess downloadProcess; | |
| 31 | - private AbsDownloadProcess tdownloadProcess = new AbsDownloadProcess() { | |
| 32 | - | |
| 33 | - private boolean start = false; | |
| 34 | - private double process = 0 ; | |
| 35 | - private Runnable runnable = new Runnable() { | |
| 36 | - @Override | |
| 37 | - public void run() { | |
| 38 | - onDownloadError(new Exception("overtime")); | |
| 39 | - } | |
| 40 | - }; | |
| 41 | - | |
| 42 | - @Override | |
| 43 | - public void onStartDownload(File file, long length) { | |
| 44 | - start = true; | |
| 45 | - process = 0; | |
| 46 | - LogUtil.i("onStartDownload", file.getName() + "," + length); | |
| 47 | - if(downloadProcess != null){ | |
| 48 | - downloadProcess.onStartDownload(file,length); | |
| 49 | - } | |
| 50 | - handler.removeCallbacks(runnable); | |
| 51 | - handler.postDelayed(runnable,overtime); | |
| 52 | - } | |
| 53 | - | |
| 54 | - @Override | |
| 55 | - public void onDownloadProcess(double process) { | |
| 56 | - this.process = process; | |
| 57 | - LogUtil.i("onDownloadProcess", "process," + process); | |
| 58 | - if(downloadProcess != null && start){ | |
| 59 | - downloadProcess.onDownloadProcess(process); | |
| 60 | - } | |
| 61 | - handler.removeCallbacks(runnable); | |
| 62 | - handler.postDelayed(runnable,overtime); | |
| 63 | - } | |
| 64 | - | |
| 65 | - @Override | |
| 66 | - public void onDownloadProcess(String process) { | |
| 67 | - LogUtil.i("onDownloadProcess", "process," + process); | |
| 68 | - if(downloadProcess != null && start){ | |
| 69 | - downloadProcess.onDownloadProcess(process); | |
| 70 | - } | |
| 71 | - handler.removeCallbacks(runnable); | |
| 72 | - handler.postDelayed(runnable,overtime); | |
| 73 | - } | |
| 74 | - | |
| 75 | - @Override | |
| 76 | - public void onStopDownload(File file) { | |
| 77 | - LogUtil.i("onStopDownload", "process," + file.getName()); | |
| 78 | - if(downloadProcess != null && start){ | |
| 79 | - if(process >= 1.0){ | |
| 80 | - downloadProcess.onStopDownload(file); | |
| 81 | - }else{ | |
| 82 | - downloadProcess.onDownloadError(new Exception("file download error")); | |
| 83 | - } | |
| 84 | - } | |
| 85 | - start = false; | |
| 86 | - handler.removeCallbacks(runnable); | |
| 87 | - file.deleteOnExit(); | |
| 88 | - } | |
| 89 | - | |
| 90 | - @Override | |
| 91 | - public void onDownloadError(Exception e) { | |
| 92 | - LogUtil.i("onStopDownload", "error", e); | |
| 93 | - if(downloadProcess != null && start){ | |
| 94 | - downloadProcess.onDownloadError(e); | |
| 95 | - } | |
| 96 | - start = false; | |
| 97 | - handler.removeCallbacks(runnable); | |
| 98 | - } | |
| 99 | - }; | |
| 100 | - | |
| 101 | - public void setOvertime(long overtime) { | |
| 102 | - if(overtime > 0){ | |
| 103 | - this.overtime = overtime; | |
| 104 | - } | |
| 105 | - } | |
| 106 | - | |
| 107 | - public synchronized void registerDownloadProcess(AbsDownloadProcess downloadProcess){ | |
| 108 | - this.downloadProcess = downloadProcess ; | |
| 109 | - } | |
| 110 | - | |
| 111 | - public synchronized void unRegisterDownloadProcess(AbsDownloadProcess downloadProcess){ | |
| 112 | - this.downloadProcess = null; | |
| 113 | - } | |
| 114 | - | |
| 115 | - protected synchronized AbsDownloadProcess getDownloadProcess() { | |
| 116 | - | |
| 117 | - return tdownloadProcess; | |
| 118 | - } | |
| 119 | - | |
| 120 | - | |
| 121 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/logic/RFFileUploadModule.java deleted
| 1 | -package com.sunvote.xpadapi.service.logic; | |
| 2 | - | |
| 3 | -import android.os.Handler; | |
| 4 | -import android.os.HandlerThread; | |
| 5 | - | |
| 6 | -import com.sunvote.util.LogUtil; | |
| 7 | -import com.sunvote.xpadapi.service.listener.IUploadListener; | |
| 8 | - | |
| 9 | -import java.io.File; | |
| 10 | -import java.io.FileInputStream; | |
| 11 | -import java.io.IOException; | |
| 12 | -import java.io.UnsupportedEncodingException; | |
| 13 | - | |
| 14 | -/** | |
| 15 | - * Created by Elvis on 2018/3/21 16:13 | |
| 16 | - * Email:Eluis@psunsky.com | |
| 17 | - * 版权所有:长沙中天电子设计开发有限公司 | |
| 18 | - * Description: 文件上传模块 | |
| 19 | - */ | |
| 20 | -public class RFFileUploadModule { | |
| 21 | - | |
| 22 | - public static final byte PACKTYPE = 5 ; | |
| 23 | - public static final int SLEEP_TIME = 25 ; | |
| 24 | - public static byte index = 0 ; | |
| 25 | - private RFFileUploadModule(){ | |
| 26 | - handlerThread = new HandlerThread(RFFileUploadModule.class.getSimpleName()); | |
| 27 | - handlerThread.start(); | |
| 28 | - handler = new Handler(handlerThread.getLooper()); | |
| 29 | - } | |
| 30 | - | |
| 31 | - private static RFFileUploadModule instance ; | |
| 32 | - | |
| 33 | - public static RFFileUploadModule getInstance() { | |
| 34 | - if(instance == null){ | |
| 35 | - synchronized (RFFileUploadModule.class){ | |
| 36 | - if(instance == null){ | |
| 37 | - instance = new RFFileUploadModule(); | |
| 38 | - } | |
| 39 | - } | |
| 40 | - } | |
| 41 | - return instance; | |
| 42 | - } | |
| 43 | - | |
| 44 | - private IUploadListener uploadListener = new IUploadListener() { | |
| 45 | - @Override | |
| 46 | - public void onUploadStart() { | |
| 47 | - System.out.println("onUploadStart"); | |
| 48 | - } | |
| 49 | - | |
| 50 | - @Override | |
| 51 | - public void onUploadProcess(double process) { | |
| 52 | - System.out.println("onUploadProcess:" + process); | |
| 53 | - } | |
| 54 | - | |
| 55 | - @Override | |
| 56 | - public void onUploadStop() { | |
| 57 | - System.out.println("onUploadStop"); | |
| 58 | - } | |
| 59 | - | |
| 60 | - @Override | |
| 61 | - public void onFail() { | |
| 62 | - System.out.println("onFail"); | |
| 63 | - } | |
| 64 | - }; | |
| 65 | - | |
| 66 | - | |
| 67 | - private String filename; | |
| 68 | - private byte[] datas = new byte[1024]; | |
| 69 | - private int length = 1024; | |
| 70 | - private HandlerThread handlerThread ; | |
| 71 | - private Handler handler ; | |
| 72 | - private byte[] keyid = new byte[2]; | |
| 73 | - private Runnable task; | |
| 74 | - private int packTotal ; | |
| 75 | - private boolean isStop = false ; | |
| 76 | - | |
| 77 | - /** | |
| 78 | - * 文件名不能超过16个字符(中文不能超过8个),超过16个字符将会出现截断。 | |
| 79 | - * 文件长度不能超过65535个字节 | |
| 80 | - * @param file 文件 | |
| 81 | - * @return 是否成功发起上传 | |
| 82 | - */ | |
| 83 | - public boolean uploadFile(File file){ | |
| 84 | - LogUtil.i("RFFileUploadModule","uploadFile" + file); | |
| 85 | - if(file != null){ | |
| 86 | - length = (int)file.length(); | |
| 87 | - filename = file.getName(); | |
| 88 | - datas = new byte[length+4]; | |
| 89 | - FileInputStream fis = null ; | |
| 90 | - try { | |
| 91 | - fis = new FileInputStream(file); | |
| 92 | - int start = 0 ; | |
| 93 | - // 把文件数据读入字节数组。 | |
| 94 | - while(start < length){ | |
| 95 | - int ret = fis.read(datas,start,length-start); | |
| 96 | - if(ret < 0){ | |
| 97 | - break; | |
| 98 | - } | |
| 99 | - start += ret ; | |
| 100 | - } | |
| 101 | - datas[length] = 0x13 ; | |
| 102 | - datas[length + 1] = 0x0 ; | |
| 103 | - datas[length + 2] = 0x10 ; | |
| 104 | - datas[length + 3] = 0x0 ; | |
| 105 | - | |
| 106 | - if(start >= length){ | |
| 107 | - task = new A0(filename,length); | |
| 108 | - handler.removeCallbacks(task); | |
| 109 | - handler.post(task); | |
| 110 | - return true; | |
| 111 | - } | |
| 112 | - | |
| 113 | - } catch (Exception e) { | |
| 114 | - e.printStackTrace(); | |
| 115 | - }finally { | |
| 116 | - if(fis != null){ | |
| 117 | - try { | |
| 118 | - fis.close(); | |
| 119 | - } catch (IOException e) { | |
| 120 | - e.printStackTrace(); | |
| 121 | - } | |
| 122 | - fis = null; | |
| 123 | - } | |
| 124 | - } | |
| 125 | - } | |
| 126 | - return false; | |
| 127 | - } | |
| 128 | - | |
| 129 | - public void setKeyid(byte[] keyid) { | |
| 130 | - setKeyid(keyid,0); | |
| 131 | - } | |
| 132 | - public void setKeyid(byte[] keyid,int start) { | |
| 133 | - this.keyid[0] = keyid[start]; | |
| 134 | - this.keyid[1] = keyid[start+1]; | |
| 135 | - } | |
| 136 | - | |
| 137 | - public void onUploadFile(byte data, byte[] keyid, byte packid, byte packH, byte[] packLs) { | |
| 138 | - if (data == 1) { | |
| 139 | - setKeyid(keyid); | |
| 140 | - packetConfirmation(packid); | |
| 141 | - } | |
| 142 | - if (data == 2) { | |
| 143 | - uploadData(packid, packH, packLs); | |
| 144 | - } | |
| 145 | - if (data == 3) { | |
| 146 | - packetReceptionConfirmed(packid, packH); | |
| 147 | - } | |
| 148 | - } | |
| 149 | - | |
| 150 | - public void uploadData(byte packid, byte packH, byte[] packLs){ | |
| 151 | - System.out.println("uploadData"); | |
| 152 | - handler.removeCallbacks(task); | |
| 153 | - if(task instanceof A2){ | |
| 154 | - ((A2)task).setStop(true); | |
| 155 | - } | |
| 156 | - task = new A2(keyid,packid,packH,datas,packLs); | |
| 157 | - handler.post(task); | |
| 158 | - if(uploadListener != null){ | |
| 159 | - double process = 0 ; | |
| 160 | - if(packTotal > 0){ | |
| 161 | - int count = 0 ; | |
| 162 | - int sen = (packLs[1] & 0xFF) * 256 + (packLs[0] & 0XFF); | |
| 163 | - for(int i = 0 ; i < 16 ; i++){ | |
| 164 | - if((sen & (1 << i)) == 0){ | |
| 165 | - count ++ ; | |
| 166 | - } | |
| 167 | - } | |
| 168 | - int been = packH * 16 + count ; | |
| 169 | - if(been > packTotal){ | |
| 170 | - been = packTotal ; | |
| 171 | - } | |
| 172 | - process = (double)(been) / packTotal ; | |
| 173 | - } | |
| 174 | - uploadListener.onUploadProcess(process); | |
| 175 | - } | |
| 176 | - } | |
| 177 | - | |
| 178 | - public void packetConfirmation(byte packid){ | |
| 179 | - System.out.println("packetConfirmation"); | |
| 180 | - handler.removeCallbacks(task); | |
| 181 | - byte[] names = null; | |
| 182 | - if(filename != null){ | |
| 183 | - try { | |
| 184 | - names = filename.getBytes("GB2312"); | |
| 185 | - } catch (UnsupportedEncodingException e) { | |
| 186 | - e.printStackTrace(); | |
| 187 | - } | |
| 188 | - } | |
| 189 | - task = new A1(keyid,(byte)((length + 4 ) / 65535), (byte)(((length + 4) % 65535) / 256),(byte)((length + 4) % 256),names); | |
| 190 | - handler.post(task); | |
| 191 | - } | |
| 192 | - | |
| 193 | - public void packetReceptionConfirmed(byte packid,byte packH){ | |
| 194 | - System.out.println("packetReceptionConfirmed"); | |
| 195 | - handler.removeCallbacks(task); | |
| 196 | - task = new A3(keyid,packid,packH); | |
| 197 | - handler.post(task); | |
| 198 | - } | |
| 199 | - | |
| 200 | - public boolean uploadFile(byte[] datas){ | |
| 201 | - System.out.println("uploadFile" + datas); | |
| 202 | - if(datas != null){ | |
| 203 | - length = datas.length ; | |
| 204 | - filename = null ; | |
| 205 | - this.datas = new byte[length + 4]; | |
| 206 | - System.arraycopy(datas,0,this.datas,0,length); | |
| 207 | - datas[length] = 0x13 ; | |
| 208 | - datas[length + 1] = 0x0 ; | |
| 209 | - datas[length + 2] = 0x10 ; | |
| 210 | - datas[length + 3] = 0x0 ; | |
| 211 | - task = new A0(filename,length); | |
| 212 | - handler.removeCallbacks(task); | |
| 213 | - handler.post(task); | |
| 214 | - return true; | |
| 215 | - } | |
| 216 | - return false; | |
| 217 | - } | |
| 218 | - | |
| 219 | - | |
| 220 | - public void setUploadListener(IUploadListener uploadListener) { | |
| 221 | - this.uploadListener = uploadListener; | |
| 222 | - } | |
| 223 | - | |
| 224 | - class A0 implements Runnable{ | |
| 225 | - private int length ; | |
| 226 | - private String filename; | |
| 227 | - private int times ; | |
| 228 | - public A0(String filename,int length){ | |
| 229 | - this.length = length ; | |
| 230 | - this.filename = filename; | |
| 231 | - packTotal = length / 16 + 1; | |
| 232 | - times = 0 ; | |
| 233 | - index++; | |
| 234 | - } | |
| 235 | - | |
| 236 | - @Override | |
| 237 | - public void run() { | |
| 238 | - LogUtil.i("RFFileUploadModule","A0 run"); | |
| 239 | - XpadApiServiceInfoProxyManager.getInstance().getService().applyFileUpload(this.length,this.filename,PACKTYPE,index); | |
| 240 | - times ++ ; | |
| 241 | - if(task != null && times < 5){ | |
| 242 | - handler.removeCallbacks(task); | |
| 243 | - handler.postDelayed(task,5000); | |
| 244 | - } | |
| 245 | - } | |
| 246 | - } | |
| 247 | - | |
| 248 | - class A1 implements Runnable{ | |
| 249 | - | |
| 250 | - private byte[] keyid; | |
| 251 | - private byte packid ; | |
| 252 | - private byte packH ; | |
| 253 | - private byte packL ; | |
| 254 | - private byte[] names ; | |
| 255 | - private int times ; | |
| 256 | - | |
| 257 | - public A1(byte[] keyid, byte packid,byte packH,byte packL,byte[] names) { | |
| 258 | - LogUtil.i("RFFileUploadModule","A1"); | |
| 259 | - this.keyid = keyid; | |
| 260 | - this.packid = packid; | |
| 261 | - this.packH = packH ; | |
| 262 | - this.packL = packL ; | |
| 263 | - this.names = names ; | |
| 264 | - times = 0 ; | |
| 265 | - } | |
| 266 | - | |
| 267 | - @Override | |
| 268 | - public void run() { | |
| 269 | - LogUtil.i("RFFileUploadModule","A1 run"); | |
| 270 | - XpadApiServiceInfoProxyManager.getInstance().getService().packetConfirmation(this.keyid,this.packid,this.packH,this.packL,this.names,PACKTYPE); | |
| 271 | - times ++ ; | |
| 272 | - if(task != null && times < 5){ | |
| 273 | - handler.removeCallbacks(task); | |
| 274 | - handler.postDelayed(task,5000); | |
| 275 | - } | |
| 276 | - if(uploadListener != null){ | |
| 277 | - uploadListener.onUploadStart(); | |
| 278 | - isStop = false; | |
| 279 | - } | |
| 280 | - } | |
| 281 | - } | |
| 282 | - | |
| 283 | - class A2 implements Runnable{ | |
| 284 | - private byte[] keyid; | |
| 285 | - private byte packid; | |
| 286 | - private byte packH; | |
| 287 | - private byte[] datas ; | |
| 288 | - private byte[] packLs; | |
| 289 | - private int times ; | |
| 290 | - private boolean stop = false; | |
| 291 | - | |
| 292 | - public void setStop(boolean stop) { | |
| 293 | - this.stop = stop; | |
| 294 | - } | |
| 295 | - | |
| 296 | - public A2(byte[] keyid, byte packid, byte packH, byte[] datas, byte[] packLs) { | |
| 297 | - LogUtil.i("RFFileUploadModule","A2"); | |
| 298 | - this.keyid = keyid; | |
| 299 | - this.packid = packid; | |
| 300 | - this.packH = packH; | |
| 301 | - this.datas = datas; | |
| 302 | - this.packLs = packLs; | |
| 303 | - times = 0 ; | |
| 304 | - } | |
| 305 | - | |
| 306 | - @Override | |
| 307 | - public void run() { | |
| 308 | - LogUtil.i("RFFileUploadModule","A2 run"); | |
| 309 | - int packLsi = (packLs[1] & 0xFF) * 256 + (packLs[0] & 0xFF); | |
| 310 | - int offset = 0 ; | |
| 311 | - int length = 16; | |
| 312 | - System.out.println("packLsi:" + packLsi); | |
| 313 | - for(byte packL = 0 ;packL < 16 && !stop ;packL ++) { | |
| 314 | - if((packLsi & (1 << packL)) != 0){ | |
| 315 | - offset = ((packid * 65535) + (packH) * 256 + 16 * (packL)) & 0xFFFF; | |
| 316 | - XpadApiServiceInfoProxyManager.getInstance().getService().uploadFileData(this.keyid, this.packid, this.packH, (byte)(packL ), this.datas, offset, length,PACKTYPE); | |
| 317 | - // need sleep ???? | |
| 318 | - try{ | |
| 319 | - Thread.sleep(SLEEP_TIME); | |
| 320 | - } catch (Exception e) { | |
| 321 | - e.printStackTrace(); | |
| 322 | - } | |
| 323 | - } | |
| 324 | - } | |
| 325 | - | |
| 326 | - times ++ ; | |
| 327 | - if(task != null && times < 5){ | |
| 328 | - handler.removeCallbacks(task); | |
| 329 | - handler.postDelayed(task,5000); | |
| 330 | - } | |
| 331 | - } | |
| 332 | - } | |
| 333 | - | |
| 334 | - class A3 implements Runnable{ | |
| 335 | - private byte[] keyid; | |
| 336 | - private byte packid ; | |
| 337 | - private byte packH; | |
| 338 | - private int times ; | |
| 339 | - | |
| 340 | - public A3(byte[] keyid, byte packid, byte packH) { | |
| 341 | - LogUtil.i("RFFileUploadModule","A3"); | |
| 342 | - this.keyid = keyid; | |
| 343 | - this.packid = packid; | |
| 344 | - this.packH = packH; | |
| 345 | - times = 0 ; | |
| 346 | - } | |
| 347 | - | |
| 348 | - @Override | |
| 349 | - public void run() { | |
| 350 | - LogUtil.i("RFFileUploadModule","A3 run"); | |
| 351 | - XpadApiServiceInfoProxyManager.getInstance().getService().packetReceptionConfirmed(this.keyid,this.packid,this.packH,PACKTYPE); | |
| 352 | - if(uploadListener != null && !isStop){ | |
| 353 | - isStop = true; | |
| 354 | - uploadListener.onUploadStop(); | |
| 355 | - } | |
| 356 | - } | |
| 357 | - } | |
| 358 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/logic/RFMessageUploadModule.java deleted
| 1 | -package com.sunvote.xpadapi.service.logic; | |
| 2 | - | |
| 3 | -import android.os.Handler; | |
| 4 | -import android.os.HandlerThread; | |
| 5 | - | |
| 6 | -import java.io.UnsupportedEncodingException; | |
| 7 | - | |
| 8 | -/** | |
| 9 | - * Created by Elvis on 2018/3/27 9:48 | |
| 10 | - * Email:Eluis@psunsky.com | |
| 11 | - * 版权所有:长沙中天电子设计开发有限公司 | |
| 12 | - * Description: 人大通用版 | |
| 13 | - * 短消息上传模块 | |
| 14 | - */ | |
| 15 | -public class RFMessageUploadModule { | |
| 16 | - | |
| 17 | - public static final byte PACKTYPE = 3 ; | |
| 18 | - private static RFMessageUploadModule instance ; | |
| 19 | - | |
| 20 | - private IUploadListener uploadListener ; | |
| 21 | - | |
| 22 | - private String filename; | |
| 23 | - private byte[] datas = "test message".getBytes(); | |
| 24 | - private int length = 1024; | |
| 25 | - private HandlerThread handlerThread ; | |
| 26 | - private Handler handler ; | |
| 27 | - private byte[] keyid; | |
| 28 | - private Runnable task; | |
| 29 | - private int packTotal ; | |
| 30 | - private boolean stop = false; | |
| 31 | - | |
| 32 | - private RFMessageUploadModule(){ | |
| 33 | - handlerThread = new HandlerThread(RFMessageUploadModule.class.getSimpleName()); | |
| 34 | - handlerThread.start(); | |
| 35 | - handler = new Handler(handlerThread.getLooper()); | |
| 36 | - } | |
| 37 | - | |
| 38 | - public static RFMessageUploadModule getInstance() { | |
| 39 | - if(instance == null){ | |
| 40 | - instance = new RFMessageUploadModule(); | |
| 41 | - } | |
| 42 | - return instance; | |
| 43 | - } | |
| 44 | - | |
| 45 | - public void setMessageContent(byte[] messageContent) { | |
| 46 | - this.datas = messageContent; | |
| 47 | - uploadMsgData(datas); | |
| 48 | - removeTask(); | |
| 49 | - } | |
| 50 | - | |
| 51 | - public void setMessageContent(String message) { | |
| 52 | - try { | |
| 53 | - this.datas = message.getBytes("GB2312"); | |
| 54 | - uploadMsgData(datas); | |
| 55 | - removeTask(); | |
| 56 | - handler.removeCallbacks(failCall); | |
| 57 | - handler.postDelayed(failCall,10000); | |
| 58 | - } catch (Exception e) { | |
| 59 | - e.printStackTrace(); | |
| 60 | - } | |
| 61 | - } | |
| 62 | - | |
| 63 | - private boolean uploadMsgData(byte[] ds){ | |
| 64 | - System.out.println("uploadMsgData" + ds); | |
| 65 | - if(ds != null){ | |
| 66 | - length = ds.length ; | |
| 67 | - filename = null ; | |
| 68 | - this.datas = new byte[length ]; | |
| 69 | - System.arraycopy(ds,0,this.datas,0,length); | |
| 70 | -// this.datas[length] = 0x13 ; | |
| 71 | -// this.datas[length + 1] = 0x0 ; | |
| 72 | -// this.datas[length + 2] = 0x10 ; | |
| 73 | -// this.datas[length + 3] = 0x0 ; | |
| 74 | - task = new A0(filename,length); | |
| 75 | - handler.removeCallbacks(task); | |
| 76 | - handler.post(task); | |
| 77 | - return true; | |
| 78 | - } | |
| 79 | - return false; | |
| 80 | - } | |
| 81 | - | |
| 82 | - | |
| 83 | - public void setKeyid(byte[] keyid) { | |
| 84 | - this.keyid = keyid; | |
| 85 | - } | |
| 86 | - | |
| 87 | - public void uploadData(byte packid, byte packH, byte[] packLs){ | |
| 88 | - System.out.println("uploadData"); | |
| 89 | - handler.removeCallbacks(task); | |
| 90 | - task = new A2(keyid,packid,packH,datas,packLs); | |
| 91 | - handler.post(task); | |
| 92 | - if(uploadListener != null){ | |
| 93 | - double process = 0 ; | |
| 94 | - if(packTotal > 0){ | |
| 95 | - int count = 0 ; | |
| 96 | - int sen = (packLs[1] & 0xFF) * 256 + (packLs[0] & 0XFF); | |
| 97 | - for(int i = 0 ; i < 16 ; i++){ | |
| 98 | - if((sen & (1 << i)) != 0){ | |
| 99 | - count ++ ; | |
| 100 | - } | |
| 101 | - } | |
| 102 | - process = (double)(packH * 16 + count) / packTotal ; | |
| 103 | - } | |
| 104 | - uploadListener.onUploadProcess(process); | |
| 105 | - } | |
| 106 | - } | |
| 107 | - | |
| 108 | - public void packetConfirmation(byte packid){ | |
| 109 | - System.out.println("packetConfirmation"); | |
| 110 | - handler.removeCallbacks(task); | |
| 111 | - byte[] names = null; | |
| 112 | - if(filename != null){ | |
| 113 | - try { | |
| 114 | - names = filename.getBytes("GB2312"); | |
| 115 | - } catch (UnsupportedEncodingException e) { | |
| 116 | - e.printStackTrace(); | |
| 117 | - } | |
| 118 | - } | |
| 119 | - task = new A1(keyid,(byte)((length ) / 65535), (byte)(((length ) % 65535) / 256),(byte)(((length ) % 256 / 16 + (length % 16 == 0 ? 0 : 1))),names); | |
| 120 | - handler.post(task); | |
| 121 | - } | |
| 122 | - | |
| 123 | - public void packetReceptionConfirmed(byte packid,byte packH){ | |
| 124 | - System.out.println("packetReceptionConfirmed"); | |
| 125 | - handler.removeCallbacks(task); | |
| 126 | - task = new A3(keyid,packid,packH); | |
| 127 | - handler.post(task); | |
| 128 | - } | |
| 129 | - | |
| 130 | - public boolean uploadMessage(byte[] datas){ | |
| 131 | - System.out.println("uploadMsgData" + datas); | |
| 132 | - if(datas != null){ | |
| 133 | - length = datas.length ; | |
| 134 | - filename = null ; | |
| 135 | - this.datas = new byte[length ]; | |
| 136 | - System.arraycopy(datas,0,this.datas,0,length); | |
| 137 | -// datas[length] = 0x13 ; | |
| 138 | -// datas[length + 1] = 0x0 ; | |
| 139 | -// datas[length + 2] = 0x10 ; | |
| 140 | -// datas[length + 3] = 0x0 ; | |
| 141 | - task = new A0(filename,length); | |
| 142 | - handler.removeCallbacks(task); | |
| 143 | - handler.post(task); | |
| 144 | - return true; | |
| 145 | - } | |
| 146 | - return false; | |
| 147 | - } | |
| 148 | - | |
| 149 | - | |
| 150 | - public void setUploadListener(IUploadListener uploadListener) { | |
| 151 | - this.uploadListener = uploadListener; | |
| 152 | - } | |
| 153 | - | |
| 154 | - class A0 implements Runnable{ | |
| 155 | - private int length ; | |
| 156 | - private String filename; | |
| 157 | - private int times ; | |
| 158 | - public A0(String filename,int length){ | |
| 159 | - this.length = length ; | |
| 160 | - this.filename = filename; | |
| 161 | - packTotal = length / 16 + 1; | |
| 162 | - times = 0 ; | |
| 163 | - } | |
| 164 | - | |
| 165 | - @Override | |
| 166 | - public void run() { | |
| 167 | - XPadApi.getInstance().applyFileUpload(this.length,this.filename,PACKTYPE,RFFileUploadModule.index); | |
| 168 | - } | |
| 169 | - } | |
| 170 | - | |
| 171 | - class A1 implements Runnable{ | |
| 172 | - | |
| 173 | - private byte[] keyid; | |
| 174 | - private byte packid ; | |
| 175 | - private byte packH ; | |
| 176 | - private byte packL ; | |
| 177 | - private byte[] names ; | |
| 178 | - private int times ; | |
| 179 | - | |
| 180 | - public A1(byte[] keyid, byte packid,byte packH,byte packL,byte[] names) { | |
| 181 | - this.keyid = keyid; | |
| 182 | - this.packid = packid; | |
| 183 | - this.packH = packH ; | |
| 184 | - this.packL = packL ; | |
| 185 | - this.names = names ; | |
| 186 | - times = 0 ; | |
| 187 | - } | |
| 188 | - | |
| 189 | - @Override | |
| 190 | - public void run() { | |
| 191 | - XPadApi.getInstance().packetConfirmation(this.keyid,this.packid,this.packH,this.packL,this.names,PACKTYPE); | |
| 192 | - times ++ ; | |
| 193 | - if(task != null && times < 5){ | |
| 194 | - handler.postDelayed(task,1000); | |
| 195 | - } | |
| 196 | - if(uploadListener != null){ | |
| 197 | - uploadListener.onUploadStart(); | |
| 198 | - } | |
| 199 | - | |
| 200 | - handler.removeCallbacks(failCall); | |
| 201 | - handler.postDelayed(failCall,10000); | |
| 202 | - } | |
| 203 | - } | |
| 204 | - | |
| 205 | - class A2 implements Runnable{ | |
| 206 | - private byte[] keyid; | |
| 207 | - private byte packid; | |
| 208 | - private byte packH; | |
| 209 | - private byte[] datas ; | |
| 210 | - private byte[] packLs; | |
| 211 | - private int times ; | |
| 212 | - | |
| 213 | - public A2(byte[] keyid, byte packid, byte packH, byte[] datas, byte[] packLs) { | |
| 214 | - this.keyid = keyid; | |
| 215 | - this.packid = packid; | |
| 216 | - this.packH = packH; | |
| 217 | - this.datas = datas; | |
| 218 | - this.packLs = packLs; | |
| 219 | - times = 0 ; | |
| 220 | - } | |
| 221 | - | |
| 222 | - @Override | |
| 223 | - public void run() { | |
| 224 | - | |
| 225 | - int packLsi = packLs[1] * 256 + packLs[0]; | |
| 226 | - int offset = 0 ; | |
| 227 | - int length = 16; | |
| 228 | - System.out.println("packLsi:" + packLsi); | |
| 229 | - for(byte packL = 0 ;packL < 16 ;packL ++) { | |
| 230 | - if((packLsi & (1 << packL)) != 0){ | |
| 231 | - offset = ((packid * 65535) + (packH) * 256 + 16 * (packL)) & 0xFFFF; | |
| 232 | - XPadApi.getInstance().uploadFileData(this.keyid, this.packid, this.packH, (byte)(packL), this.datas, offset, length,PACKTYPE); | |
| 233 | - try{ | |
| 234 | - Thread.sleep(50); | |
| 235 | - } catch (Exception e) { | |
| 236 | - e.printStackTrace(); | |
| 237 | - } | |
| 238 | - } | |
| 239 | - } | |
| 240 | - times ++ ; | |
| 241 | - if(task != null && times < 5){ | |
| 242 | - handler.postDelayed(task,1000); | |
| 243 | - } | |
| 244 | - handler.removeCallbacks(failCall); | |
| 245 | - handler.postDelayed(failCall,10000); | |
| 246 | - } | |
| 247 | - } | |
| 248 | - | |
| 249 | - class A3 implements Runnable{ | |
| 250 | - private byte[] keyid; | |
| 251 | - private byte packid ; | |
| 252 | - private byte packH; | |
| 253 | - | |
| 254 | - public A3(byte[] keyid, byte packid, byte packH) { | |
| 255 | - this.keyid = keyid; | |
| 256 | - this.packid = packid; | |
| 257 | - this.packH = packH; | |
| 258 | - } | |
| 259 | - | |
| 260 | - @Override | |
| 261 | - public void run() { | |
| 262 | - XPadApi.getInstance().packetReceptionConfirmed(this.keyid,this.packid,this.packH,PACKTYPE); | |
| 263 | - if(uploadListener != null){ | |
| 264 | - uploadListener.onUploadStop(); | |
| 265 | - } | |
| 266 | - handler.removeCallbacks(failCall); | |
| 267 | - } | |
| 268 | - } | |
| 269 | - | |
| 270 | - public void onUploadMessage(byte data, byte[] keyid, byte packid, byte packH, byte[] packLs) { | |
| 271 | - LogUtil.i("RFMessageUploadModule","onUploadMessage:" + data); | |
| 272 | - if (data == 1) { | |
| 273 | - setKeyid(keyid); | |
| 274 | - packetConfirmation(packid); | |
| 275 | - } | |
| 276 | - if (data == 2) { | |
| 277 | - uploadData(packid, packH, packLs); | |
| 278 | - } | |
| 279 | - if (data == 3) { | |
| 280 | - packetReceptionConfirmed(packid, packH); | |
| 281 | - } | |
| 282 | - } | |
| 283 | - | |
| 284 | - private void removeTask(){ | |
| 285 | - handler.postDelayed(new Runnable() { | |
| 286 | - @Override | |
| 287 | - public void run() { | |
| 288 | - handler.removeCallbacks(task); | |
| 289 | - } | |
| 290 | - },5000); | |
| 291 | - } | |
| 292 | - | |
| 293 | - private Runnable failCall = new Runnable() { | |
| 294 | - @Override | |
| 295 | - public void run() { | |
| 296 | - if(uploadListener != null){ | |
| 297 | - uploadListener.onFail(); | |
| 298 | - } | |
| 299 | - } | |
| 300 | - }; | |
| 301 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/logic/SendPacket.java deleted
| 1 | -package com.sunvote.xpadapi.service.logic; | |
| 2 | - | |
| 3 | -public class SendPacket { | |
| 4 | - | |
| 5 | - private byte[] datas; | |
| 6 | - | |
| 7 | - /** | |
| 8 | - * 0 未发送 | |
| 9 | - * 1 已发送 | |
| 10 | - * 2 发送成功 | |
| 11 | - */ | |
| 12 | - private int sendOK ; | |
| 13 | - | |
| 14 | - /** | |
| 15 | - * 发送次数 | |
| 16 | - */ | |
| 17 | - private int sendTimes; | |
| 18 | - | |
| 19 | - /** | |
| 20 | - * 是否有序 有序需要第一个才发送 | |
| 21 | - * 无序,则可全部发送 | |
| 22 | - */ | |
| 23 | - private boolean canAll; | |
| 24 | - | |
| 25 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/logic/SenderManager.java deleted
| 1 | -package com.sunvote.xpadapi.service.logic; | |
| 2 | - | |
| 3 | -import com.sunvote.xpadapi.service.bean.BatchNumberVote; | |
| 4 | -import com.sunvote.xpadapi.service.bean.BatchSingleVote; | |
| 5 | -import com.sunvote.xpadapi.service.bean.LoginInVote; | |
| 6 | -import com.sunvote.xpadapi.service.bean.NumberVote; | |
| 7 | -import com.sunvote.xpadapi.service.bean.Packet; | |
| 8 | -import com.sunvote.xpadapi.service.bean.SelectOtherVote; | |
| 9 | -import com.sunvote.xpadapi.service.bean.SelectVote; | |
| 10 | -import com.sunvote.xpadapi.service.bean.ServiceTypeVote; | |
| 11 | -import com.sunvote.xpadapi.service.bean.SingleVote; | |
| 12 | -import com.sunvote.xpadapi.service.listener.OnSendPacket; | |
| 13 | -import com.sunvote.xpadapi.service.listener.OnSender; | |
| 14 | - | |
| 15 | -public final class SenderManager { | |
| 16 | - | |
| 17 | - private static SenderManager instance = null; | |
| 18 | - | |
| 19 | - private SenderManager() { | |
| 20 | - } | |
| 21 | - | |
| 22 | - public static SenderManager getInstance() { | |
| 23 | - if (instance == null) { | |
| 24 | - synchronized (SenderManager.class) { | |
| 25 | - if (instance == null) { | |
| 26 | - instance = new SenderManager(); | |
| 27 | - } | |
| 28 | - } | |
| 29 | - } | |
| 30 | - return instance; | |
| 31 | - } | |
| 32 | - | |
| 33 | - /** | |
| 34 | - * 发送 | |
| 35 | - * | |
| 36 | - * @param singleVote | |
| 37 | - */ | |
| 38 | - public void sendSingleVote(final SingleVote singleVote) { | |
| 39 | - sendSingleVote(singleVote, null); | |
| 40 | - } | |
| 41 | - | |
| 42 | - public void sendVoteAllOK(final OnSender<SingleVote> sender) { | |
| 43 | - SingleVote singleVote = new SingleVote(1); | |
| 44 | - sendSingleVote(singleVote, sender); | |
| 45 | - } | |
| 46 | - | |
| 47 | - public void sendSingleVote(final SingleVote singleVote, final OnSender<SingleVote> onSender) { | |
| 48 | - if (singleVote != null) { | |
| 49 | - byte[] datas = singleVote.toBytes(); | |
| 50 | - XpadApiServiceInfoProxyManager.getInstance().sendPacket(datas, new OnSendPacket() { | |
| 51 | - @Override | |
| 52 | - public void onSuccess(Packet packet) { | |
| 53 | - if (onSender != null) { | |
| 54 | - onSender.onSuccess(singleVote); | |
| 55 | - } | |
| 56 | - } | |
| 57 | - | |
| 58 | - @Override | |
| 59 | - public void onFail(Packet packet) { | |
| 60 | - if (onSender != null) { | |
| 61 | - onSender.onFail(singleVote); | |
| 62 | - } | |
| 63 | - } | |
| 64 | - }); | |
| 65 | - } else { | |
| 66 | - if (onSender != null) { | |
| 67 | - onSender.onFail(singleVote); | |
| 68 | - } | |
| 69 | - } | |
| 70 | - } | |
| 71 | - | |
| 72 | - public void sendSelectVote(final SelectVote selectVote) { | |
| 73 | - sendSelectVote(selectVote, null); | |
| 74 | - } | |
| 75 | - | |
| 76 | - public void sendSelectVote(final SelectVote selectVote, final OnSender<SelectVote> onSender) { | |
| 77 | - if (selectVote != null) { | |
| 78 | - XpadApiServiceInfoProxyManager.getInstance().sendPacket(selectVote.toBytes(), new OnSendPacket() { | |
| 79 | - @Override | |
| 80 | - public void onSuccess(Packet packet) { | |
| 81 | - if (onSender != null) { | |
| 82 | - onSender.onSuccess(selectVote); | |
| 83 | - } | |
| 84 | - } | |
| 85 | - | |
| 86 | - @Override | |
| 87 | - public void onFail(Packet packet) { | |
| 88 | - if (onSender != null) { | |
| 89 | - onSender.onFail(selectVote); | |
| 90 | - } | |
| 91 | - } | |
| 92 | - }); | |
| 93 | - } else { | |
| 94 | - if (onSender != null) { | |
| 95 | - onSender.onFail(selectVote); | |
| 96 | - } | |
| 97 | - } | |
| 98 | - } | |
| 99 | - | |
| 100 | - public void sendNumberVote(final NumberVote numberVote) { | |
| 101 | - sendNumberVote(numberVote, null); | |
| 102 | - } | |
| 103 | - | |
| 104 | - public void sendNumberVote(final NumberVote numberVote, final OnSender<NumberVote> sender) { | |
| 105 | - if (numberVote != null) { | |
| 106 | - XpadApiServiceInfoProxyManager.getInstance().sendPacket(numberVote.toBytes(), new OnSendPacket() { | |
| 107 | - @Override | |
| 108 | - public void onSuccess(Packet packet) { | |
| 109 | - if (sender != null) { | |
| 110 | - sender.onSuccess(numberVote); | |
| 111 | - } | |
| 112 | - } | |
| 113 | - | |
| 114 | - @Override | |
| 115 | - public void onFail(Packet packet) { | |
| 116 | - if (sender != null) { | |
| 117 | - sender.onFail(numberVote); | |
| 118 | - } | |
| 119 | - } | |
| 120 | - }); | |
| 121 | - } else { | |
| 122 | - if (sender != null) { | |
| 123 | - sender.onFail(numberVote); | |
| 124 | - } | |
| 125 | - } | |
| 126 | - } | |
| 127 | - | |
| 128 | - public void sendLoginInVote(final LoginInVote loginInVote) { | |
| 129 | - sendLoginInVote(loginInVote, null); | |
| 130 | - } | |
| 131 | - | |
| 132 | - public void sendLoginInVote(final LoginInVote loginInVote, final OnSender<LoginInVote> sender) { | |
| 133 | - if (loginInVote != null) { | |
| 134 | - XpadApiServiceInfoProxyManager.getInstance().sendPacket(loginInVote.toBytes(), new OnSendPacket() { | |
| 135 | - @Override | |
| 136 | - public void onSuccess(Packet packet) { | |
| 137 | - if (sender != null) { | |
| 138 | - sender.onSuccess(loginInVote); | |
| 139 | - } | |
| 140 | - } | |
| 141 | - | |
| 142 | - @Override | |
| 143 | - public void onFail(Packet packet) { | |
| 144 | - if (sender != null) { | |
| 145 | - sender.onFail(loginInVote); | |
| 146 | - } | |
| 147 | - } | |
| 148 | - }); | |
| 149 | - } else { | |
| 150 | - if (sender != null) { | |
| 151 | - sender.onFail(loginInVote); | |
| 152 | - } | |
| 153 | - } | |
| 154 | - } | |
| 155 | - | |
| 156 | - public void sendCancelAllBatchSingleVote(final OnSender<BatchSingleVote> sender) { | |
| 157 | - BatchSingleVote batchSingleVote = new BatchSingleVote(); | |
| 158 | - sendBatchSingleVote(batchSingleVote, sender); | |
| 159 | - } | |
| 160 | - | |
| 161 | - public void sendSubmitlAllBatchSingleVote(final OnSender<BatchSingleVote> sender) { | |
| 162 | - BatchSingleVote batchSingleVote = new BatchSingleVote(); | |
| 163 | - batchSingleVote.setOk(1); | |
| 164 | - sendBatchSingleVote(batchSingleVote, sender); | |
| 165 | - } | |
| 166 | - | |
| 167 | - public void sendBatchSingleVote(final BatchSingleVote batchSingleVote) { | |
| 168 | - sendBatchSingleVote(batchSingleVote, null); | |
| 169 | - } | |
| 170 | - | |
| 171 | - public void sendBatchSingleVote(final BatchSingleVote batchSingleVote, final OnSender<BatchSingleVote> sender) { | |
| 172 | - if (batchSingleVote != null) { | |
| 173 | - XpadApiServiceInfoProxyManager.getInstance().sendPacket(batchSingleVote.toBytes(), new OnSendPacket() { | |
| 174 | - @Override | |
| 175 | - public void onSuccess(Packet packet) { | |
| 176 | - if (sender != null) { | |
| 177 | - sender.onSuccess(batchSingleVote); | |
| 178 | - } | |
| 179 | - } | |
| 180 | - | |
| 181 | - @Override | |
| 182 | - public void onFail(Packet packet) { | |
| 183 | - if (sender != null) { | |
| 184 | - sender.onFail(batchSingleVote); | |
| 185 | - } | |
| 186 | - } | |
| 187 | - }); | |
| 188 | - } else { | |
| 189 | - if (sender != null) { | |
| 190 | - sender.onFail(batchSingleVote); | |
| 191 | - } | |
| 192 | - } | |
| 193 | - } | |
| 194 | - | |
| 195 | - public void sendBatchNumberVoteOK(final BatchNumberVote batchNumberVote, final OnSender<BatchNumberVote> sender) { | |
| 196 | - batchNumberVote.setOk(1); | |
| 197 | - sendBatchNumberVote(batchNumberVote, sender); | |
| 198 | - } | |
| 199 | - | |
| 200 | - public void sendBatchNumberVote(final BatchNumberVote batchNumberVote) { | |
| 201 | - sendBatchNumberVote(batchNumberVote, null); | |
| 202 | - } | |
| 203 | - | |
| 204 | - public void sendBatchNumberVote(final BatchNumberVote batchNumberVote, final OnSender<BatchNumberVote> sender) { | |
| 205 | - if (batchNumberVote != null) { | |
| 206 | - XpadApiServiceInfoProxyManager.getInstance().sendPacket(batchNumberVote.toBytes(), new OnSendPacket() { | |
| 207 | - @Override | |
| 208 | - public void onSuccess(Packet packet) { | |
| 209 | - if (sender != null) { | |
| 210 | - sender.onSuccess(batchNumberVote); | |
| 211 | - } | |
| 212 | - } | |
| 213 | - | |
| 214 | - @Override | |
| 215 | - public void onFail(Packet packet) { | |
| 216 | - if (sender != null) { | |
| 217 | - sender.onFail(batchNumberVote); | |
| 218 | - } | |
| 219 | - } | |
| 220 | - }); | |
| 221 | - } else { | |
| 222 | - if (sender != null) { | |
| 223 | - sender.onFail(batchNumberVote); | |
| 224 | - } | |
| 225 | - } | |
| 226 | - } | |
| 227 | - | |
| 228 | - public void sendSelectOtherVote(SelectOtherVote selectOtherVote) { | |
| 229 | - sendSelectOtherVote(selectOtherVote, null); | |
| 230 | - } | |
| 231 | - | |
| 232 | - public void sendSelectOtherVote(final SelectOtherVote selectOtherVote, final OnSender<SelectOtherVote> sender) { | |
| 233 | - if (selectOtherVote != null) { | |
| 234 | - XpadApiServiceInfoProxyManager.getInstance().sendPacket(selectOtherVote.toBytes(), new OnSendPacket() { | |
| 235 | - @Override | |
| 236 | - public void onSuccess(Packet packet) { | |
| 237 | - if (sender != null) { | |
| 238 | - sender.onSuccess(selectOtherVote); | |
| 239 | - } | |
| 240 | - } | |
| 241 | - | |
| 242 | - @Override | |
| 243 | - public void onFail(Packet packet) { | |
| 244 | - if (sender != null) { | |
| 245 | - sender.onFail(selectOtherVote); | |
| 246 | - } | |
| 247 | - } | |
| 248 | - }); | |
| 249 | - } else { | |
| 250 | - if (sender != null) { | |
| 251 | - sender.onFail(selectOtherVote); | |
| 252 | - } | |
| 253 | - } | |
| 254 | - } | |
| 255 | - | |
| 256 | - public void sendServiceTypeVote(final ServiceTypeVote serviceTypeVote) { | |
| 257 | - sendServiceTypeVote(serviceTypeVote, null); | |
| 258 | - } | |
| 259 | - | |
| 260 | - public void sendServiceTypeVote(final ServiceTypeVote serviceTypeVote, final OnSender<ServiceTypeVote> sender) { | |
| 261 | - if (serviceTypeVote != null) { | |
| 262 | - XpadApiServiceInfoProxyManager.getInstance().sendPacket(serviceTypeVote.toBytes(), new OnSendPacket() { | |
| 263 | - @Override | |
| 264 | - public void onSuccess(Packet packet) { | |
| 265 | - if (sender != null) { | |
| 266 | - sender.onSuccess(serviceTypeVote); | |
| 267 | - } | |
| 268 | - } | |
| 269 | - | |
| 270 | - @Override | |
| 271 | - public void onFail(Packet packet) { | |
| 272 | - if (sender != null) { | |
| 273 | - sender.onFail(serviceTypeVote); | |
| 274 | - } | |
| 275 | - } | |
| 276 | - }); | |
| 277 | - } else { | |
| 278 | - if (sender != null) { | |
| 279 | - sender.onFail(serviceTypeVote); | |
| 280 | - } | |
| 281 | - } | |
| 282 | - } | |
| 283 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/logic/SerialManager.java deleted
| 1 | -package com.sunvote.xpadapi.service.logic; | |
| 2 | - | |
| 3 | -public final class SerialManager { | |
| 4 | - | |
| 5 | - private static SerialManager instance = null ; | |
| 6 | - | |
| 7 | - private SerialManager(){ | |
| 8 | - } | |
| 9 | - | |
| 10 | - public static SerialManager getInstance(){ | |
| 11 | - if(instance == null){ | |
| 12 | - synchronized(SerialManager.class){ | |
| 13 | - if(instance == null){ | |
| 14 | - instance = new SerialManager(); | |
| 15 | - } | |
| 16 | - } | |
| 17 | - } | |
| 18 | - return instance; | |
| 19 | - } | |
| 20 | - | |
| 21 | - private byte seq = 0 ; | |
| 22 | - | |
| 23 | - public byte getSeq() { | |
| 24 | - if (seq == 0xfe) { | |
| 25 | - seq = 0 ; | |
| 26 | - } | |
| 27 | - return ++seq; | |
| 28 | - } | |
| 29 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/service/logic/XpadApiServiceInfoProxyManager.java deleted
| 1 | -package com.sunvote.xpadapi.service.logic; | |
| 2 | - | |
| 3 | -import com.sunvote.xpadapi.service.XpadApiService; | |
| 4 | -import com.sunvote.xpadapi.service.bean.BaseInfo; | |
| 5 | -import com.sunvote.xpadapi.service.bean.BaseVoteInfo; | |
| 6 | -import com.sunvote.xpadapi.service.bean.KeypadInfo; | |
| 7 | -import com.sunvote.xpadapi.service.bean.ModelInfo; | |
| 8 | -import com.sunvote.xpadapi.service.bean.OnLineInfo; | |
| 9 | -import com.sunvote.xpadapi.service.bean.Packet; | |
| 10 | -import com.sunvote.xpadapi.service.listener.BaseInfoChanageListener; | |
| 11 | -import com.sunvote.xpadapi.service.listener.BaseVoteInfoChanageListener; | |
| 12 | -import com.sunvote.xpadapi.service.listener.KeyPadinfoChanageListener; | |
| 13 | -import com.sunvote.xpadapi.service.listener.ModelInfoChanageListener; | |
| 14 | -import com.sunvote.xpadapi.service.listener.OnSendPacket; | |
| 15 | -import com.sunvote.xpadapi.service.listener.OnlineInfoChanageListener; | |
| 16 | -import com.sunvote.xpadapi.util.LogUtil; | |
| 17 | - | |
| 18 | -import java.util.ArrayList; | |
| 19 | -import java.util.Collections; | |
| 20 | -import java.util.List; | |
| 21 | - | |
| 22 | -/** | |
| 23 | - * 服务信息 | |
| 24 | - */ | |
| 25 | -public final class XpadApiServiceInfoProxyManager { | |
| 26 | - | |
| 27 | - public static final String TAG = XpadApiServiceInfoProxyManager.class.getSimpleName(); | |
| 28 | - private static XpadApiServiceInfoProxyManager instance = null ; | |
| 29 | - private List<Packet> sendList = Collections.synchronizedList(new ArrayList<Packet>()); | |
| 30 | - private Object lock = new Object(); | |
| 31 | - private String charset = "GB2312" ; | |
| 32 | - private XpadApiService service; | |
| 33 | - | |
| 34 | - public void setCharset(String charset) { | |
| 35 | - this.charset = charset; | |
| 36 | - } | |
| 37 | - | |
| 38 | - public void setService(XpadApiService service) { | |
| 39 | - this.service = service; | |
| 40 | - } | |
| 41 | - | |
| 42 | - public XpadApiService getService() { | |
| 43 | - return service; | |
| 44 | - } | |
| 45 | - | |
| 46 | - public String getCharset() { | |
| 47 | - return charset; | |
| 48 | - } | |
| 49 | - | |
| 50 | - private XpadApiServiceInfoProxyManager(){ | |
| 51 | - } | |
| 52 | - | |
| 53 | - public static XpadApiServiceInfoProxyManager getInstance(){ | |
| 54 | - if(instance == null){ | |
| 55 | - synchronized(XpadApiServiceInfoProxyManager.class){ | |
| 56 | - if(instance == null){ | |
| 57 | - instance = new XpadApiServiceInfoProxyManager(); | |
| 58 | - } | |
| 59 | - } | |
| 60 | - } | |
| 61 | - return instance; | |
| 62 | - } | |
| 63 | - | |
| 64 | - private ModelInfo modelInfo; | |
| 65 | - private ModelInfoChanageListener modelInfoListener; | |
| 66 | - | |
| 67 | - public void setModelInfo(ModelInfo modelInfo) { | |
| 68 | - this.modelInfo = modelInfo; | |
| 69 | - if(modelInfoListener != null){ | |
| 70 | - try{ | |
| 71 | - modelInfoListener.onModelInfoChanage(modelInfo); | |
| 72 | - }catch (Exception ex){ | |
| 73 | - LogUtil.e(TAG,"onModelInfoChanage",ex); | |
| 74 | - } | |
| 75 | - } | |
| 76 | - } | |
| 77 | - | |
| 78 | - public ModelInfo getModelInfo() { | |
| 79 | - return modelInfo; | |
| 80 | - } | |
| 81 | - | |
| 82 | - public void setModelInfoListener(ModelInfoChanageListener modelInfoListener) { | |
| 83 | - this.modelInfoListener = modelInfoListener; | |
| 84 | - } | |
| 85 | - | |
| 86 | - private BaseInfo baseInfo; | |
| 87 | - private BaseInfoChanageListener baseInfoListener; | |
| 88 | - | |
| 89 | - public void setBaseInfo(BaseInfo baseInfo) { | |
| 90 | - this.baseInfo = baseInfo; | |
| 91 | - if(baseInfoListener != null){ | |
| 92 | - try { | |
| 93 | - baseInfoListener.onBaseInfoChange(baseInfo); | |
| 94 | - }catch (Exception ex){ | |
| 95 | - LogUtil.e(TAG,"onBaseInfoChange",ex); | |
| 96 | - } | |
| 97 | - } | |
| 98 | - | |
| 99 | - } | |
| 100 | - | |
| 101 | - public BaseInfo getBaseInfo() { | |
| 102 | - return baseInfo; | |
| 103 | - } | |
| 104 | - | |
| 105 | - public void setBaseInfoListener(BaseInfoChanageListener baseInfoListener) { | |
| 106 | - this.baseInfoListener = baseInfoListener; | |
| 107 | - } | |
| 108 | - | |
| 109 | - private BaseVoteInfo baseVoteInfo; | |
| 110 | - private BaseVoteInfoChanageListener baseVoteInfoListener; | |
| 111 | - | |
| 112 | - public void setBaseVoteInfo(BaseVoteInfo baseVoteInfo) { | |
| 113 | - this.baseVoteInfo = baseVoteInfo; | |
| 114 | - if(baseVoteInfoListener != null){ | |
| 115 | - try { | |
| 116 | - baseVoteInfoListener.onBaseVoteInfoListener(baseVoteInfo); | |
| 117 | - }catch (Exception ex){ | |
| 118 | - LogUtil.e(TAG,"onBaseVoteInfoListener",ex); | |
| 119 | - } | |
| 120 | - } | |
| 121 | - | |
| 122 | - } | |
| 123 | - | |
| 124 | - public BaseVoteInfo getBaseVoteInfo() { | |
| 125 | - return baseVoteInfo; | |
| 126 | - } | |
| 127 | - | |
| 128 | - public void setBaseVoteInfoListener(BaseVoteInfoChanageListener baseVoteInfoListener) { | |
| 129 | - this.baseVoteInfoListener = baseVoteInfoListener; | |
| 130 | - } | |
| 131 | - | |
| 132 | - private KeypadInfo keypadInfo; | |
| 133 | - private KeyPadinfoChanageListener keyPadinfoChanageListener; | |
| 134 | - | |
| 135 | - public void setKeypadInfo(KeypadInfo keypadInfo) { | |
| 136 | - this.keypadInfo = keypadInfo; | |
| 137 | - if(keyPadinfoChanageListener != null){ | |
| 138 | - try{ | |
| 139 | - keyPadinfoChanageListener.onKeyPadinfoChanage(keypadInfo); | |
| 140 | - }catch (Exception ex){ | |
| 141 | - LogUtil.e(TAG,"onKeyPadinfoChanage",ex); | |
| 142 | - } | |
| 143 | - } | |
| 144 | - | |
| 145 | - } | |
| 146 | - | |
| 147 | - public KeypadInfo getKeypadInfo() { | |
| 148 | - if(keypadInfo == null){ | |
| 149 | - keypadInfo = new KeypadInfo(); | |
| 150 | - } | |
| 151 | - return keypadInfo; | |
| 152 | - } | |
| 153 | - | |
| 154 | - public void setKeyPadinfoChanageListener(KeyPadinfoChanageListener keyPadinfoChanageListener) { | |
| 155 | - this.keyPadinfoChanageListener = keyPadinfoChanageListener; | |
| 156 | - } | |
| 157 | - | |
| 158 | - private OnLineInfo onLineInfo; | |
| 159 | - private OnlineInfoChanageListener onlineInfoChanageListener; | |
| 160 | - | |
| 161 | - public void setOnLineInfo(OnLineInfo onLineInfo) { | |
| 162 | - this.onLineInfo = onLineInfo; | |
| 163 | - if(onlineInfoChanageListener != null){ | |
| 164 | - try{ | |
| 165 | - onlineInfoChanageListener.onOnlineInfoChanage(onLineInfo); | |
| 166 | - }catch (Exception ex){ | |
| 167 | - LogUtil.e(TAG,"onOnlineInfoChanage",ex); | |
| 168 | - } | |
| 169 | - } | |
| 170 | - } | |
| 171 | - | |
| 172 | - public OnLineInfo getOnLineInfo() { | |
| 173 | - return onLineInfo; | |
| 174 | - } | |
| 175 | - | |
| 176 | - public void setOnlineInfoChanageListener(OnlineInfoChanageListener onlineInfoChanageListener) { | |
| 177 | - this.onlineInfoChanageListener = onlineInfoChanageListener; | |
| 178 | - } | |
| 179 | - | |
| 180 | - public void sendPacket(byte[] datas,final OnSendPacket sendPacket){ | |
| 181 | - Packet packet = new Packet(); | |
| 182 | - packet.setDatas(datas); | |
| 183 | - packet.setSendNo(datas[5] & 0xFF); | |
| 184 | - packet.setOnSendPacket(new OnSendPacket() { | |
| 185 | - @Override | |
| 186 | - public void onSuccess(Packet packet) { | |
| 187 | - synchronized (lock){ | |
| 188 | - sendList.remove(packet); | |
| 189 | - } | |
| 190 | - try{ | |
| 191 | - sendPacket.onSuccess(packet); | |
| 192 | - }catch (Exception ex){ | |
| 193 | - LogUtil.e(TAG,"sendPacket.onSuccess",ex); | |
| 194 | - } | |
| 195 | - } | |
| 196 | - | |
| 197 | - @Override | |
| 198 | - public void onFail(Packet packet) { | |
| 199 | - synchronized (lock){ | |
| 200 | - sendList.remove(packet); | |
| 201 | - } | |
| 202 | - try{ | |
| 203 | - sendPacket.onFail(packet); | |
| 204 | - }catch (Exception ex){ | |
| 205 | - LogUtil.e(TAG,"sendPacket.onFail",ex); | |
| 206 | - } | |
| 207 | - } | |
| 208 | - }); | |
| 209 | - synchronized (lock){ | |
| 210 | - if(!exsit(packet)){ | |
| 211 | - sendList.add(packet); | |
| 212 | - } | |
| 213 | - } | |
| 214 | - if(service != null){ | |
| 215 | - service.immediately(); | |
| 216 | - } | |
| 217 | - } | |
| 218 | - | |
| 219 | - public List<Packet> getSendList() { | |
| 220 | - return sendList; | |
| 221 | - } | |
| 222 | - | |
| 223 | - private boolean exsit(Packet packet){ | |
| 224 | - for(Packet packet1: sendList){ | |
| 225 | - if(packet.getSendNo() == packet1.getSendNo()){ | |
| 226 | - return true; | |
| 227 | - } | |
| 228 | - } | |
| 229 | - return false; | |
| 230 | - } | |
| 231 | - | |
| 232 | - public Packet findPacket(int sendNo){ | |
| 233 | - for(Packet packet: sendList){ | |
| 234 | - if(packet.getSendNo() == sendNo){ | |
| 235 | - return packet; | |
| 236 | - } | |
| 237 | - } | |
| 238 | - return null; | |
| 239 | - } | |
| 240 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/usb/UsbTransferManager.java deleted
| 1 | -package com.sunvote.xpadapi.usb; | |
| 2 | - | |
| 3 | -import android.app.PendingIntent; | |
| 4 | -import android.content.BroadcastReceiver; | |
| 5 | -import android.content.Context; | |
| 6 | -import android.content.Intent; | |
| 7 | -import android.content.IntentFilter; | |
| 8 | -import android.hardware.usb.UsbDevice; | |
| 9 | -import android.hardware.usb.UsbDeviceConnection; | |
| 10 | -import android.hardware.usb.UsbEndpoint; | |
| 11 | -import android.hardware.usb.UsbInterface; | |
| 12 | -import android.hardware.usb.UsbManager; | |
| 13 | -import android.os.Handler; | |
| 14 | -import android.os.HandlerThread; | |
| 15 | - | |
| 16 | - | |
| 17 | -import com.sunvote.xpadapi.util.LogUtil; | |
| 18 | - | |
| 19 | -import java.io.IOException; | |
| 20 | -import java.io.InputStream; | |
| 21 | -import java.io.OutputStream; | |
| 22 | -import java.util.HashMap; | |
| 23 | -import java.util.LinkedList; | |
| 24 | -import java.util.concurrent.locks.Condition; | |
| 25 | -import java.util.concurrent.locks.Lock; | |
| 26 | -import java.util.concurrent.locks.ReentrantLock; | |
| 27 | - | |
| 28 | -/*** | |
| 29 | - * @Auther Elvis | |
| 30 | - */ | |
| 31 | -public class UsbTransferManager { | |
| 32 | - | |
| 33 | - public interface OnUsbConnectListener{ | |
| 34 | - boolean onConnect(boolean isConnected); | |
| 35 | - } | |
| 36 | - | |
| 37 | - public static final String TAG = UsbTransferManager.class.getSimpleName(); | |
| 38 | - private static UsbTransferManager instance = null ; | |
| 39 | - private HandlerThread workThread = new HandlerThread("usb workThread"); | |
| 40 | - private Handler workHandler = null; | |
| 41 | - private boolean stop = false; | |
| 42 | - private OnUsbConnectListener onUsbConnectListener; | |
| 43 | - | |
| 44 | - public void setOnUsbConnectListener(OnUsbConnectListener onUsbConnectListener) { | |
| 45 | - this.onUsbConnectListener = onUsbConnectListener; | |
| 46 | - } | |
| 47 | - | |
| 48 | - private UsbTransferManager(){ | |
| 49 | - workThread.start(); | |
| 50 | - workHandler = new Handler(workThread.getLooper()); | |
| 51 | - } | |
| 52 | - | |
| 53 | - public static UsbTransferManager getInstance(){ | |
| 54 | - if(instance == null){ | |
| 55 | - synchronized(UsbTransferManager.class){ | |
| 56 | - if(instance == null){ | |
| 57 | - instance = new UsbTransferManager(); | |
| 58 | - } | |
| 59 | - } | |
| 60 | - } | |
| 61 | - return instance; | |
| 62 | - } | |
| 63 | - | |
| 64 | - public void startWork(){ | |
| 65 | - stop = false; | |
| 66 | - workHandler.post(usbConnectInit); | |
| 67 | - } | |
| 68 | - | |
| 69 | - public void stopWork(){ | |
| 70 | - mUsbDevice = null; | |
| 71 | - mUsbConnection = null; | |
| 72 | - epIn = null; | |
| 73 | - epOut = null; | |
| 74 | - workHandler.removeCallbacks(usbConnectInit); | |
| 75 | - workHandler.removeCallbacks(usbConnect); | |
| 76 | - workHandler.removeCallbacks(usbConnectionReceiverTask); | |
| 77 | - stop = true; | |
| 78 | - } | |
| 79 | - | |
| 80 | - private UsbOutputStream outputStream = new UsbOutputStream(); | |
| 81 | - private UsbInputStream inputStream = new UsbInputStream(); | |
| 82 | - | |
| 83 | - public UsbInputStream getInputStream() { | |
| 84 | - return inputStream; | |
| 85 | - } | |
| 86 | - | |
| 87 | - public UsbOutputStream getOutputStream() { | |
| 88 | - return outputStream; | |
| 89 | - } | |
| 90 | - | |
| 91 | - private long lastOpenTime; | |
| 92 | - private class UsbPermissionReceiver extends BroadcastReceiver { | |
| 93 | - public void onReceive(Context context, Intent intent) { | |
| 94 | - String action = intent.getAction(); | |
| 95 | - if (ACTION_USB_PERMISSION.equals(action)) { | |
| 96 | - synchronized (this) { | |
| 97 | - UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE); | |
| 98 | - if (device.getDeviceName().equals(mUsbDevice.getDeviceName())) { | |
| 99 | - if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) { | |
| 100 | - // 授权成功,在这里进行打开设备操作 | |
| 101 | - if (System.currentTimeMillis() - lastOpenTime > 1000) { | |
| 102 | - lastOpenTime = System.currentTimeMillis(); | |
| 103 | - workHandler.removeCallbacks(usbConnectInit); | |
| 104 | - workHandler.removeCallbacks(usbConnect); | |
| 105 | - if(!stop){ | |
| 106 | - workHandler.postDelayed(usbConnect,0); | |
| 107 | - } | |
| 108 | - } | |
| 109 | - }else{ | |
| 110 | - if(!stop){ | |
| 111 | - workHandler.postDelayed(usbConnectInit,20000); | |
| 112 | - } | |
| 113 | - } | |
| 114 | - } | |
| 115 | - } | |
| 116 | - } | |
| 117 | - } | |
| 118 | - } | |
| 119 | - | |
| 120 | - private Runnable usbConnectionReceiverTask = new Runnable() { | |
| 121 | - @Override | |
| 122 | - public void run() { | |
| 123 | - if (usbManager != null) { | |
| 124 | - HashMap<String, UsbDevice> map = usbManager.getDeviceList(); | |
| 125 | - boolean find = false; | |
| 126 | - for (UsbDevice device : map.values()) { | |
| 127 | - LogUtil.d(TAG, "找到基站: Vid:" + device.getVendorId() + " Pid:" + device.getProductId()); | |
| 128 | - if (device.getVendorId() == VendorID && device.getProductId() == ProductID | |
| 129 | - || device.getVendorId() == VendorID_2 && device.getProductId() == ProductID_2 | |
| 130 | - || device.getVendorId() == VendorID_3 && device.getProductId() == ProductID_3) { | |
| 131 | - find = true; | |
| 132 | - workHandler.postDelayed(usbConnectionReceiverTask, 1000); | |
| 133 | - break; | |
| 134 | - } | |
| 135 | - } | |
| 136 | - if (!find) { | |
| 137 | - stopWork(); | |
| 138 | - startWork(); | |
| 139 | - } | |
| 140 | - } | |
| 141 | - } | |
| 142 | - }; | |
| 143 | - | |
| 144 | - private Runnable usbConnectInit = new Runnable() { | |
| 145 | - @Override | |
| 146 | - public void run() { | |
| 147 | - LogUtil.i(TAG, "发起USB初始化!"); | |
| 148 | - boolean find = false; | |
| 149 | - workHandler.removeCallbacks(usbConnectionReceiverTask); | |
| 150 | - if(usbManager != null) { | |
| 151 | - HashMap<String, UsbDevice> map = usbManager.getDeviceList(); | |
| 152 | - for (UsbDevice device : map.values()) { | |
| 153 | - LogUtil.d(TAG, "找到基站: Vid:" + device.getVendorId() + " Pid:" + device.getProductId()); | |
| 154 | - if (device.getVendorId() == VendorID && device.getProductId() == ProductID | |
| 155 | - || device.getVendorId() == VendorID_2 && device.getProductId() == ProductID_2 | |
| 156 | - || device.getVendorId() == VendorID_3 && device.getProductId() == ProductID_3) { | |
| 157 | - mUsbDevice = device; | |
| 158 | - find = true; | |
| 159 | - if (!usbManager.hasPermission(device)) { | |
| 160 | - if (usbPermissionReceiver == null) { | |
| 161 | - usbPermissionReceiver = new UsbPermissionReceiver(); | |
| 162 | - } | |
| 163 | - // 申请权限 | |
| 164 | - Intent intent = new Intent(ACTION_USB_PERMISSION); | |
| 165 | - PendingIntent mPermissionIntent = PendingIntent.getBroadcast(mContext, 0, intent, 0); | |
| 166 | - IntentFilter permissionFilter = new IntentFilter(ACTION_USB_PERMISSION); | |
| 167 | - mContext.registerReceiver(usbPermissionReceiver, permissionFilter); | |
| 168 | - usbManager.requestPermission(device, mPermissionIntent); | |
| 169 | - if(!stop){ | |
| 170 | - workHandler.postDelayed(usbConnectInit,20 * 1000); | |
| 171 | - } | |
| 172 | - } else { | |
| 173 | - if(!stop){ | |
| 174 | - workHandler.postDelayed(usbConnect,10); | |
| 175 | - } | |
| 176 | - } | |
| 177 | - } | |
| 178 | - } | |
| 179 | - | |
| 180 | - } | |
| 181 | - if(!find){ | |
| 182 | - workHandler.removeCallbacks(usbConnectInit); | |
| 183 | - if(!stop){ | |
| 184 | - workHandler.postDelayed(usbConnectInit,2000); | |
| 185 | - } | |
| 186 | - } | |
| 187 | - } | |
| 188 | - }; | |
| 189 | - | |
| 190 | - | |
| 191 | - private Runnable usbConnect = new Runnable() { | |
| 192 | - @Override | |
| 193 | - public void run() { | |
| 194 | - LogUtil.i(TAG, "发起USB键盘连接!"); | |
| 195 | - if(openUsbDevice()){ | |
| 196 | - if(onUsbConnectListener != null){ | |
| 197 | - onUsbConnectListener.onConnect(true); | |
| 198 | - } | |
| 199 | - workHandler.postDelayed(usbConnectionReceiverTask,2000); | |
| 200 | - }; | |
| 201 | - } | |
| 202 | - }; | |
| 203 | - | |
| 204 | - private Runnable readData = new Runnable() { | |
| 205 | - @Override | |
| 206 | - public void run() { | |
| 207 | - byte[] datas = receiveUsbRequestData(); | |
| 208 | - LogUtil.i(TAG, "RECEIVEA DATA:", datas); | |
| 209 | - if(datas != null) { | |
| 210 | - int length = datas.length; | |
| 211 | - try { | |
| 212 | - try { | |
| 213 | - lock.lock(); | |
| 214 | - if (linkedList.size() < MAX_CACHE_SIZE) { | |
| 215 | - for (int i = length - 1; i >= 0; i--) { | |
| 216 | - linkedList.push(datas[i]); | |
| 217 | - } | |
| 218 | - } | |
| 219 | - } finally { | |
| 220 | - empty.signal(); | |
| 221 | - lock.unlock(); | |
| 222 | - } | |
| 223 | - } catch (Exception e) { | |
| 224 | - LogUtil.e(TAG, "UDP receiver message", e); | |
| 225 | - close = true; | |
| 226 | - } | |
| 227 | - if(!stop){ | |
| 228 | - workHandler.post(readData); | |
| 229 | - } | |
| 230 | - }else{ | |
| 231 | - stopWork(); | |
| 232 | - startWork(); | |
| 233 | - } | |
| 234 | - | |
| 235 | - } | |
| 236 | - }; | |
| 237 | - | |
| 238 | - /** | |
| 239 | - * 打开连接 | |
| 240 | - * | |
| 241 | - * @paramdevice | |
| 242 | - */ | |
| 243 | - private boolean openUsbDevice() { | |
| 244 | - | |
| 245 | - if (mUsbDevice == null) | |
| 246 | - return false; | |
| 247 | - | |
| 248 | - if(mUsbDevice.getInterfaceCount() == 0){ | |
| 249 | - return false; | |
| 250 | - } | |
| 251 | - mUsbInterface = mUsbDevice.getInterface(0); | |
| 252 | - setEndpoint(mUsbInterface); | |
| 253 | - mUsbConnection = usbManager.openDevice(mUsbDevice); | |
| 254 | - LogUtil.i(TAG,"打开USB连接"); | |
| 255 | - if (mUsbConnection != null) { | |
| 256 | - return mUsbConnection.claimInterface(mUsbInterface, true); | |
| 257 | - } | |
| 258 | - return false; | |
| 259 | - } | |
| 260 | - | |
| 261 | - private int sendDataBulkTransfer(byte[] buffer) { | |
| 262 | - final int length = buffer.length; | |
| 263 | - int ref = -100; | |
| 264 | - if (epOut != null && mUsbConnection != null) { | |
| 265 | - ref = mUsbConnection.bulkTransfer(epOut, buffer, length, 100); | |
| 266 | - mUsbConnection.claimInterface(mUsbInterface, true); | |
| 267 | - LogUtil.d(TAG, "发送数据成功有:" + ref); | |
| 268 | - if(ref <0 ){ | |
| 269 | - if(onUsbConnectListener != null){ | |
| 270 | - onUsbConnectListener.onConnect(false); | |
| 271 | - } | |
| 272 | - workHandler.removeCallbacks(usbConnectionReceiverTask); | |
| 273 | - workHandler.post(usbConnectionReceiverTask); | |
| 274 | - } | |
| 275 | - }else{ | |
| 276 | - LogUtil.d(TAG, "未连接:" + ref); | |
| 277 | - } | |
| 278 | - return ref; | |
| 279 | - } | |
| 280 | - | |
| 281 | - public byte[] receiveUsbRequestData() { | |
| 282 | - if(epIn != null && mUsbConnection != null) { | |
| 283 | - byte[] bytes = new byte[epIn.getMaxPacketSize()]; | |
| 284 | - int ret = mUsbConnection.bulkTransfer(epIn, bytes, bytes.length, 100); | |
| 285 | - if (ret > 0) { | |
| 286 | - return bytes; | |
| 287 | - } | |
| 288 | - } | |
| 289 | - return null; | |
| 290 | - } | |
| 291 | - | |
| 292 | - /** | |
| 293 | - * UsbInterface 进行端点设置和通讯 | |
| 294 | - * | |
| 295 | - * @param intf | |
| 296 | - */ | |
| 297 | - private void setEndpoint(UsbInterface intf) { | |
| 298 | - if (intf == null) | |
| 299 | - return; | |
| 300 | - // 设置接收数据的端点 | |
| 301 | - if (intf.getEndpoint(0) != null) { | |
| 302 | - epIn = intf.getEndpoint(0); | |
| 303 | - } | |
| 304 | - // 当端点为2的时候 | |
| 305 | - if (intf.getEndpointCount() == 2) { | |
| 306 | - // 设置发送数据的断点 | |
| 307 | - if (intf.getEndpoint(1) != null) | |
| 308 | - epOut = intf.getEndpoint(1); | |
| 309 | - } | |
| 310 | - } | |
| 311 | - | |
| 312 | - public void setUsbManager(UsbManager usbManager) { | |
| 313 | - this.usbManager = usbManager; | |
| 314 | - } | |
| 315 | - | |
| 316 | - public void setContext(Context mContext) { | |
| 317 | - this.mContext = mContext; | |
| 318 | - } | |
| 319 | - | |
| 320 | - public class UsbOutputStream extends OutputStream{ | |
| 321 | - | |
| 322 | - @Override | |
| 323 | - public void write(int b) throws IOException { | |
| 324 | - sendDataBulkTransfer(new byte[]{(byte)b}); | |
| 325 | - } | |
| 326 | - | |
| 327 | - @Override | |
| 328 | - public void write(byte[] b) throws IOException { | |
| 329 | - sendDataBulkTransfer(b); | |
| 330 | - } | |
| 331 | - | |
| 332 | - @Override | |
| 333 | - public void write(byte[] b, int off, int len) throws IOException { | |
| 334 | - byte[] temp = new byte[len]; | |
| 335 | - System.arraycopy(b, off, temp, 0, len); | |
| 336 | - sendDataBulkTransfer(temp); | |
| 337 | - } | |
| 338 | - } | |
| 339 | - | |
| 340 | - private LinkedList<Byte> linkedList = new LinkedList<Byte>(); | |
| 341 | - public long MAX_CACHE_SIZE = 4 * 1024; | |
| 342 | - private Lock lock = new ReentrantLock(); | |
| 343 | - private Condition empty = lock.newCondition(); | |
| 344 | - private boolean close = false; | |
| 345 | - public class UsbInputStream extends InputStream{ | |
| 346 | - @Override | |
| 347 | - public int read() throws IOException { | |
| 348 | - if (close) { | |
| 349 | - throw new IOException("the stream has closed"); | |
| 350 | - } | |
| 351 | - | |
| 352 | - try { | |
| 353 | - lock.lock(); | |
| 354 | - while (linkedList.isEmpty()) { | |
| 355 | - try { | |
| 356 | - empty.await(); | |
| 357 | - } catch (InterruptedException e) { | |
| 358 | - LogUtil.e(TAG,e); | |
| 359 | - } | |
| 360 | - } | |
| 361 | - return linkedList.pop(); | |
| 362 | - } finally { | |
| 363 | - lock.unlock(); | |
| 364 | - } | |
| 365 | - } | |
| 366 | - | |
| 367 | - | |
| 368 | - public boolean isClose() { | |
| 369 | - return close; | |
| 370 | - } | |
| 371 | - | |
| 372 | - @Override | |
| 373 | - public void close() throws IOException { | |
| 374 | - close = true; | |
| 375 | - super.close(); | |
| 376 | - } | |
| 377 | - | |
| 378 | - @Override | |
| 379 | - public int read(byte[] buffer) throws IOException { | |
| 380 | - try { | |
| 381 | - lock.lock(); | |
| 382 | - if (buffer == null) { | |
| 383 | - throw new IOException("buffer is empty"); | |
| 384 | - } | |
| 385 | - if (close) { | |
| 386 | - throw new IOException("the stream has closed"); | |
| 387 | - } | |
| 388 | - | |
| 389 | - while (linkedList.isEmpty()) { | |
| 390 | - try { | |
| 391 | - empty.await(); | |
| 392 | - } catch (InterruptedException e) { | |
| 393 | - e.printStackTrace(); | |
| 394 | - } | |
| 395 | - } | |
| 396 | - int index = 0; | |
| 397 | - while (index < buffer.length && !linkedList.isEmpty()) { | |
| 398 | - buffer[index++] = linkedList.pop(); | |
| 399 | - } | |
| 400 | - return index; | |
| 401 | - } finally { | |
| 402 | - lock.unlock(); | |
| 403 | - } | |
| 404 | - } | |
| 405 | - | |
| 406 | - | |
| 407 | - @Override | |
| 408 | - public int read(byte[] buffer, int byteOffset, int byteCount) throws IOException { | |
| 409 | - try { | |
| 410 | - lock.lock(); | |
| 411 | - if (buffer == null) { | |
| 412 | - throw new IOException("buffer is empty"); | |
| 413 | - } | |
| 414 | - if (close) { | |
| 415 | - throw new IOException("the stream has closed"); | |
| 416 | - } | |
| 417 | - | |
| 418 | - while (linkedList.isEmpty()) { | |
| 419 | - try { | |
| 420 | - empty.await(); | |
| 421 | - } catch (InterruptedException e) { | |
| 422 | - e.printStackTrace(); | |
| 423 | - } | |
| 424 | - } | |
| 425 | - int index = 0; | |
| 426 | - while (index < byteCount && !linkedList.isEmpty()) { | |
| 427 | - index++; | |
| 428 | - buffer[byteOffset++] = linkedList.pop(); | |
| 429 | - } | |
| 430 | - return index; | |
| 431 | - } finally { | |
| 432 | - lock.unlock(); | |
| 433 | - } | |
| 434 | - } | |
| 435 | - } | |
| 436 | - | |
| 437 | - private UsbManager usbManager ; | |
| 438 | - private UsbDevice mUsbDevice; | |
| 439 | - private UsbDeviceConnection mUsbConnection; | |
| 440 | - private UsbInterface mUsbInterface; | |
| 441 | - private UsbEndpoint epOut, epIn; | |
| 442 | - private UsbPermissionReceiver usbPermissionReceiver; | |
| 443 | - private Context mContext ; | |
| 444 | - | |
| 445 | - private static final int VendorID = 0x03eb; | |
| 446 | - private static final int ProductID = 0x6201; | |
| 447 | - private static final int VendorID_2 = 0x0d8c; | |
| 448 | - private static final int ProductID_2 = 0xEA10; | |
| 449 | - private static final int VendorID_3 = 0x2F70; | |
| 450 | - private static final int ProductID_3 = 0xEA10; | |
| 451 | - private final String ACTION_USB_PERMISSION = "com.hhd.USB_PERMISSION"; | |
| 452 | - private boolean isUsbReceiver = false; | |
| 453 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/util/ByteUtils.java deleted
| 1 | -package com.sunvote.xpadapi.util; | |
| 2 | - | |
| 3 | -public class ByteUtils { | |
| 4 | - | |
| 5 | - private ByteUtils() { | |
| 6 | - } | |
| 7 | - | |
| 8 | - public static String bytesToHexString(byte[] src, int length) { | |
| 9 | - StringBuilder stringBuilder = new StringBuilder(""); | |
| 10 | - if (src == null || src.length <= 0) { | |
| 11 | - return null; | |
| 12 | - } | |
| 13 | - for (int i = 0; i < src.length && i < length; i++) { | |
| 14 | - int v = src[i] & 0xFF; | |
| 15 | - String hv = Integer.toHexString(v); | |
| 16 | - if (hv.length() < 2) { | |
| 17 | - stringBuilder.append(0); | |
| 18 | - } | |
| 19 | - stringBuilder.append(hv); | |
| 20 | - stringBuilder.append(" "); | |
| 21 | - } | |
| 22 | - return stringBuilder.toString(); | |
| 23 | - } | |
| 24 | - | |
| 25 | - public static String bytesToHexString(byte[] src) { | |
| 26 | - StringBuilder stringBuilder = new StringBuilder(""); | |
| 27 | - if (src == null || src.length <= 0) { | |
| 28 | - return null; | |
| 29 | - } | |
| 30 | - for (int i = 0; i < src.length; i++) { | |
| 31 | - int v = src[i] & 0xFF; | |
| 32 | - String hv = Integer.toHexString(v); | |
| 33 | - if (hv.length() < 2) { | |
| 34 | - stringBuilder.append(0); | |
| 35 | - } | |
| 36 | - stringBuilder.append(hv); | |
| 37 | - stringBuilder.append(" "); | |
| 38 | - } | |
| 39 | - return stringBuilder.toString(); | |
| 40 | - } | |
| 41 | - | |
| 42 | - public static int findBytes(byte[] source,byte[] find,int index){ | |
| 43 | - int flag = -1; | |
| 44 | - for (int j = index; j < source.length; j++) { | |
| 45 | - if (source.length >= j + find.length) { | |
| 46 | - if (compareByte(source, j, find)) { | |
| 47 | - flag = j; | |
| 48 | - break; | |
| 49 | - } | |
| 50 | - } | |
| 51 | - } | |
| 52 | - return flag; | |
| 53 | - } | |
| 54 | - | |
| 55 | - public static int byte1ToInt(byte b) { | |
| 56 | - int ret = 0; | |
| 57 | - ret += (b & 0x000000FF); | |
| 58 | - return ret; | |
| 59 | - } | |
| 60 | - | |
| 61 | - private static boolean compareByte(byte[] source, int start, byte[] find) { | |
| 62 | - if (source.length >= start + find.length) { | |
| 63 | - for (int i = 0; i < find.length; i++) { | |
| 64 | - if (source[start + i] != find[i]) { | |
| 65 | - return false; | |
| 66 | - } | |
| 67 | - } | |
| 68 | - return true; | |
| 69 | - } | |
| 70 | - return false; | |
| 71 | - } | |
| 72 | - | |
| 73 | - /** | |
| 74 | - * Convert hex string to byte[] | |
| 75 | - * | |
| 76 | - * @param hexString the hex string | |
| 77 | - * @return byte[] | |
| 78 | - */ | |
| 79 | - public static byte[] hexStringToBytes(String hexString) { | |
| 80 | - if (hexString == null || hexString.equals("")) { | |
| 81 | - return null; | |
| 82 | - } | |
| 83 | - hexString = hexString.toUpperCase(); | |
| 84 | - int length = hexString.length() / 2; | |
| 85 | - char[] hexChars = hexString.toCharArray(); | |
| 86 | - byte[] d = new byte[length]; | |
| 87 | - for (int i = 0; i < length; i++) { | |
| 88 | - int pos = i * 2; | |
| 89 | - d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); | |
| 90 | - } | |
| 91 | - return d; | |
| 92 | - } | |
| 93 | - | |
| 94 | - /** | |
| 95 | - * Convert char to byte | |
| 96 | - * | |
| 97 | - * @param c char | |
| 98 | - * @return byte | |
| 99 | - */ | |
| 100 | - private static byte charToByte(char c) { | |
| 101 | - return (byte) "0123456789ABCDEF".indexOf(c); | |
| 102 | - } | |
| 103 | - | |
| 104 | - | |
| 105 | - public static byte[] intToBytes(int value) { | |
| 106 | - byte[] src = new byte[4]; | |
| 107 | - src[3] = (byte) ((value >> 24) & 0xFF); | |
| 108 | - src[2] = (byte) ((value >> 16) & 0xFF); | |
| 109 | - src[1] = (byte) ((value >> 8) & 0xFF); | |
| 110 | - src[0] = (byte) (value & 0xFF); | |
| 111 | - return src; | |
| 112 | - } | |
| 113 | - | |
| 114 | - public static byte[] int2Bytes(int value) { | |
| 115 | - byte[] src = new byte[2]; | |
| 116 | - src[0] = (byte) ((value >> 8) & 0xFF); | |
| 117 | - src[1] = (byte) (value & 0xFF); | |
| 118 | - return src; | |
| 119 | - } | |
| 120 | - | |
| 121 | - public static int bytes2Int(byte[] src) { | |
| 122 | - int ret = ((src[1] & 0xFF) | ((src[0] & 0xFF) << 8)); | |
| 123 | - return ret; | |
| 124 | - } | |
| 125 | - | |
| 126 | - public static String getKeySn(byte[] data) { | |
| 127 | - String sn = ""; | |
| 128 | - String CS = "0123456789ABCDEF"; | |
| 129 | - for (int i = 0; i < 6; i++) { | |
| 130 | - sn += CS.charAt((data[i] >> 4) & 0xF); | |
| 131 | - sn += CS.charAt((data[i] >> 0) & 0xF); | |
| 132 | - } | |
| 133 | - return sn; | |
| 134 | - | |
| 135 | - } | |
| 136 | -} | |
| 137 | - |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/util/Cons.java deleted
| 1 | -package com.sunvote.xpadapi.util; | |
| 2 | - | |
| 3 | -public final class Cons { | |
| 4 | - | |
| 5 | - public static final int CMD_BASE_STATUS_CHANGE = 0x71;//基础信标变化 | |
| 6 | - public static final int CMD_VOTE_STATUS_CHANGE = 0x72;//投票信标变化 | |
| 7 | - public static final int CMD_VOTE_SEND_SUCCESS_RESPONSE = 0x73;//传输入成功通知 | |
| 8 | - | |
| 9 | - public static final int CMD_CHECK_BASE_STATUS_RESPONSE = 0xF0;//查询和设置各类应答 | |
| 10 | - public static final int CMD_VOTE_RESULT_SEND_RESPONSE = 0xF3;//投票结果上传应答 | |
| 11 | - public static final int CMD_FIRM_UPDATE_RESPONSE = 0xF8;//固件升级应答 | |
| 12 | - | |
| 13 | - public static final int CMD_UPLOAD_DATA_RESPONSE = 0x20; //上传指令 | |
| 14 | - public static final int CMD_TRANSPARENT_TRANSMISSION = 0x30; //表决器管理类指令,自定义透传指令 | |
| 15 | - public static final int CMD_MULTI_PCKAGE_DOWNLOAD = 0x40;// | |
| 16 | - public static final int CMD_COM_COMMUNICATION_TEST_RESPONSE = 0xB0; //串口测试应答 | |
| 17 | - | |
| 18 | -} |
C5/xpadapi/src/main/java/com/sunvote/xpadapi/util/Crc16.java deleted
| 1 | -package com.sunvote.xpadapi.util; | |
| 2 | - | |
| 3 | -public final class Crc16 { | |
| 4 | - private static int[] crc_ta = { //CRC余式表 | |
| 5 | - 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, | |
| 6 | - 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, | |
| 7 | - }; | |
| 8 | - | |
| 9 | - | |
| 10 | - //标准Crc16效验 | |
| 11 | - public static short crc16(byte[] data, int len) { | |
| 12 | - short Crc = 0; | |
| 13 | - byte da; | |
| 14 | - int i = 4; | |
| 15 | - while (len-- != 0) { | |
| 16 | - //da=Crc>>12; /* 暂存CRC的高四位 */ | |
| 17 | - da = (byte) (Crc >>> 12); /* 暂存CRC的高四位 */ | |
| 18 | - // Crc<<=4; /* CRC左移4位,相当于取CRC的低12位)*/ | |
| 19 | - Crc <<= 4; /* CRC左移4位,相当于取CRC的低12位)*/ | |
| 20 | - // Crc^=crc_ta[da^(*ptr/16)]; /* CRC的高4位和本字节的前半字节相加后查表计算CRC, 然后加上上一次CRC的余数 */ | |
| 21 | - Crc ^= crc_ta[(da ^ (data[i] >>> 4)) & 0xf]; /* CRC的高4位和本字节的前半字节相加后查表计算CRC, 然后加上上一次CRC的余数 */ | |
| 22 | - //da=Crc>>12; /* 暂存CRC的高4位 */ | |
| 23 | - da = (byte) (Crc >>> 12); /* 暂存CRC的高4位 */ | |
| 24 | - // Crc<<=4; /* CRC左移4位, 相当于CRC的低12位) */ | |
| 25 | - Crc <<= 4; /* CRC左移4位, 相当于CRC的低12位) */ | |
| 26 | - // Crc^=crc_ta[da^ (*ptr&0x0f)]; | |
| 27 | - Crc ^= crc_ta[(da ^ data[i]) & 0x0f]; /* CRC的高4位和本字节的后半字节相加后查表计算CRC, | |
| 28 | - 然后再加上上一次CRC的余数 */ | |
| 29 | - i++; | |
| 30 | - } | |
| 31 | - return (Crc); | |
| 32 | - } | |
| 33 | - | |
| 34 | - public static boolean crc16Check(byte[] data) { | |
| 35 | - | |
| 36 | - int xda, xdapoly; | |
| 37 | - int i, j, xdabit; | |
| 38 | - xda = 0xFFFF; | |
| 39 | - xdapoly = 0xA001; // (X**16 + X**15 + X**2 + 1) | |
| 40 | - for (i = 0; i < data.length - 2; i++) { | |
| 41 | - xda ^= data[i]; | |
| 42 | - for (j = 0; j < 8; j++) { | |
| 43 | - xdabit = (int) (xda & 0x01); | |
| 44 | - xda >>= 1; | |
| 45 | - if (xdabit == 1) | |
| 46 | - xda ^= xdapoly; | |
| 47 | - } | |
| 48 | - } | |
| 49 | - | |
| 50 | - return data[data.length - 2] == (int) (xda & 0xFF) && data[data.length - 1] == (int) (xda >> 8); | |
| 51 | - | |
| 52 | - } | |
| 53 | - | |
| 54 | - public static int getUnsignedByte(byte data) { //将data字节型数据转换为0~255 (0xFF 即BYTE)。 | |
| 55 | - return data & 0x0FF; | |
| 56 | - } | |
| 57 | - | |
| 58 | - public static int getUnsignedShort(short data) { //将data字节型数据转换为0~255 (0xFF 即BYTE)。 | |
| 59 | - return data & 0x0FFFF; | |
| 60 | - } | |
| 61 | - | |
| 62 | - private static void printDataBuf(byte[] buf, int length, String flag) { | |
| 63 | - String tmpStr = new String(); | |
| 64 | - for (int i = 0; i < length; i++) { | |
| 65 | - tmpStr += String.format("%x ", buf[i]); | |
| 66 | - } | |
| 67 | - System.out.println(flag + ":" + tmpStr); | |
| 68 | - } | |
| 69 | - | |
| 70 | - public static boolean checkPack(byte[] buf) { | |
| 71 | - if (buf.length > 4 && getUnsignedByte(buf[0]) == 0xF5 && getUnsignedByte(buf[1]) == 0xAA && getUnsignedByte(buf[2]) == 0xAA) { | |
| 72 | - return true; | |
| 73 | - } | |
| 74 | - return false; | |
| 75 | - } | |
| 76 | -} |
C5/xpadapi/src/main/res/values/strings.xml deleted
C5/xpadapi/src/test/java/com/sunvote/xpadapi/ExampleUnitTest.java deleted
| 1 | -package com.sunvote.xpadapi; | |
| 2 | - | |
| 3 | -import org.junit.Test; | |
| 4 | - | |
| 5 | -import static org.junit.Assert.*; | |
| 6 | - | |
| 7 | -/** | |
| 8 | - * Example local unit test, which will execute on the development machine (host). | |
| 9 | - * | |
| 10 | - * @see <a href="http://d.android.com/tools/testing">Testing documentation</a> | |
| 11 | - */ | |
| 12 | -public class ExampleUnitTest { | |
| 13 | - @Test | |
| 14 | - public void addition_isCorrect() { | |
| 15 | - assertEquals(4, 2 + 2); | |
| 16 | - } | |
| 17 | -} | |
| 18 | 0 | \ No newline at end of file |