Commit e1e561633f99b94d20defcdb6c3c4eb321c1e017
1 parent
9e36c270
移除一个分支
Showing
48 changed files
with
1 additions
and
4098 deletions
C5/settings.gradle
| 1 | -include ':app', ':udpmodule', ':xpadprotocal', ':util', ':sunvoteadapter', 'txpad', 'sunvotesdk','testproject',':xpadapi' | 1 | +include ':app', ':udpmodule', ':xpadprotocal', ':util', ':sunvoteadapter', 'txpad', 'sunvotesdk','testproject' |
| 2 | 2 | ||
| 3 | \ No newline at end of file | 3 | \ No newline at end of file |
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 | \ No newline at end of file | 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 | \ No newline at end of file | 0 | \ No newline at end of file |