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 |