From 04e2b4680a0ab76179ebcb34f807d40aa670a04e Mon Sep 17 00:00:00 2001
From: langxiankui <33216671+langxiankui@users.noreply.github.com>
Date: Tue, 20 Jul 2021 14:36:44 +0800
Subject: [PATCH] Add files via upload
---
README.md | 51 ++++
package.json | 17 ++
plugin.xml | 44 +++
src/android/SerialPort.jar | Bin 0 -> 3493 bytes
src/android/cordova/plugin/uhf/UHF.java | 256 ++++++++++++++++++
src/android/cordova/plugin/uhf/Util.java | 77 ++++++
src/android/libs/arm64-v8a/libdevapi.so | Bin 0 -> 34184 bytes
.../libs/arm64-v8a/libirdaSerialPort.so | Bin 0 -> 9608 bytes
src/android/libs/arm64-v8a/libuhf.so | Bin 0 -> 5512 bytes
src/android/libs/armeabi-v7a/libdevapi.so | Bin 0 -> 29816 bytes
.../libs/armeabi-v7a/libirdaSerialPort.so | Bin 0 -> 17528 bytes
src/android/libs/armeabi-v7a/libuhf.so | Bin 0 -> 13432 bytes
src/android/libs/armeabi/libdevapi.so | Bin 0 -> 29816 bytes
src/android/libs/armeabi/libirdaSerialPort.so | Bin 0 -> 17528 bytes
src/android/libs/armeabi/libuhf.so | Bin 0 -> 13432 bytes
src/android/uhfcom13_v15.jar | Bin 0 -> 20002 bytes
www/cordova-plugin-UHF.js | 41 +++
17 files changed, 486 insertions(+)
create mode 100644 README.md
create mode 100644 package.json
create mode 100644 plugin.xml
create mode 100644 src/android/SerialPort.jar
create mode 100644 src/android/cordova/plugin/uhf/UHF.java
create mode 100644 src/android/cordova/plugin/uhf/Util.java
create mode 100644 src/android/libs/arm64-v8a/libdevapi.so
create mode 100644 src/android/libs/arm64-v8a/libirdaSerialPort.so
create mode 100644 src/android/libs/arm64-v8a/libuhf.so
create mode 100644 src/android/libs/armeabi-v7a/libdevapi.so
create mode 100644 src/android/libs/armeabi-v7a/libirdaSerialPort.so
create mode 100644 src/android/libs/armeabi-v7a/libuhf.so
create mode 100644 src/android/libs/armeabi/libdevapi.so
create mode 100644 src/android/libs/armeabi/libirdaSerialPort.so
create mode 100644 src/android/libs/armeabi/libuhf.so
create mode 100644 src/android/uhfcom13_v15.jar
create mode 100644 www/cordova-plugin-UHF.js
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..87bb8fd
--- /dev/null
+++ b/README.md
@@ -0,0 +1,51 @@
+# 超高频(UHF) RFID 卡读写的 Cordova 插件
+
+## 说明
+**使用UHF1_Com13_SDK_v1.5,针对k71v1_64_bsp型号设备**
+
+## 安装
+使用 Cordova
+
cordova plugin add https://github.com/shuto-cn/UHF#Com13_SDK_v1.5
+
+使用 Ionic
+ionic cordova plugin add https://github.com/shuto-cn/UHF#Com13_SDK_v1.5
+
+## 示例程序
+https://github.com/shuto-cn/uhf-demo/tree/Com13_SDK_v1.5
+
+## 目前提供的功能
+### 单次询卡 - 读取卡的 EPC
+* 调用:
+cordova.plugins.uhf.searchCard(successCallBack, errorCallback);
+* 参数:
+* 返回值:
+EPC数组,因为可能读到多个。["30396062C3AE88C00021E2BC"]
+* 多次巡卡方法已取消,如有需求请用js实现。
+
+### 写卡
+* 调用:
+cordova.plugins.uhf.writeCard(message, successCallBack, errorCallback);
+* 参数:
+
+{
+ data: "内容"
+}
+
+* 内容为需要写入user区的数据,支持中英文,上限为128位16进制
+* 返回值:“写入成功”或“写入失败”
+
+### 读卡
+* 仅读取user区的内容
+* 调用:
+cordova.plugins.uhf.readCard(successCallBack, errorCallback);
+* 返回值:
+"内容"
+
+### 设置功率
+* 调用:
+cordova.plugins.uhf.setPower(power, successCallBack, errorCallback);
+* 参数:
+
+目前支持的功率值为 16 至 26,超出范围会按最大或最小值处理。
+
+* 返回值:“设置成功”或“设置失败”
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..05960d8
--- /dev/null
+++ b/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "cordova-plugin-uhf",
+ "version": "0.0.1",
+ "description": "",
+ "cordova": {
+ "id": "cordova-plugin-uhf",
+ "platforms": [
+ "android"
+ ]
+ },
+ "keywords": [
+ "ecosystem:cordova",
+ "cordova-android"
+ ],
+ "author": "",
+ "license": "ISC"
+}
diff --git a/plugin.xml b/plugin.xml
new file mode 100644
index 0000000..7ea287c
--- /dev/null
+++ b/plugin.xml
@@ -0,0 +1,44 @@
+
+
+ Cordova UHF Plugin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/android/SerialPort.jar b/src/android/SerialPort.jar
new file mode 100644
index 0000000000000000000000000000000000000000..3f1d11c43615ee0864fc74077bf6ef93f57d1653
GIT binary patch
literal 3493
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 tagList;
+ tagList = manager.inventoryRealTime(); //实时盘存
+ JSONArray ja = new JSONArray();
+ JSONObject jo;
+ String epcStr;
+ if (tagList != null && !tagList.isEmpty()) {
+ for (TagModel tag : tagList) {
+ if (tag == null) {
+ break;
+ } else {
+ epcStr = Tools.Bytes2HexString(tag.getmEpcBytes(), tag.getmEpcBytes().length);
+ }
+ jo = new JSONObject();
+ jo.put("mEpcBytes", epcStr);
+ jo.put("mRssi", tag.getmRssi());
+ ja.put(jo);
+ }
+ }
+ return ja;
+ }
+
+ /**
+ * 读卡,将USER区的hex字符串转换为ascii读取,因EPC区与TID区不能写入,故暂时只读取USER区,注释掉的部分为适应EPC区与TID区读取的代码
+ * 将注释解开后应抛出JSONException
+ */
+ private void readCard(CallbackContext callbackContext) {
+// JSONObject obj = message.getJSONObject(0);
+// int site = obj.getInt("site");
+// int addr = obj.getInt("addr");
+// if (site == 1) {
+// addr = 2;
+// length = 6;
+// } else if (site == 3) {
+// addr = 0;
+// length = 32;
+// } else if (site == 2) {
+// addr = 0;
+// length = 12;
+// }
+ manager.selectEPC(Tools.HexString2Bytes(this.selectedEpc));
+ int length = 32;
+ byte[] data = manager.readFrom6C(3, 0, length, password);
+ if (data != null && data.length >= 1) {
+ String msg;
+// if (site == 3) { // 读取User区的时候,将16进制字符串转换为ascii
+ msg = Util.bytes2Str(data);
+// } else { // 因EPC区与TID区不能写入,故读取时不转码
+// msg = Tools.Bytes2HexString(data, data.length);
+// }
+ callbackContext.success(msg);
+ } else {
+ callbackContext.error("读取失败");
+ }
+ }
+
+ /**
+ * 选卡,将选到的卡储存在this.selectedEpc中
+ */
+ private void selectCard(JSONArray message, CallbackContext callbackContext) throws JSONException {
+ JSONObject obj = message.getJSONObject(0);
+ String epc = obj.getString("epc");
+ manager.selectEPC(Tools.HexString2Bytes(epc));
+ this.selectedEpc = epc;
+ callbackContext.success();
+ }
+
+ /**
+ * 写卡,将ascii转换为bytes并写入
+ */
+ private void writeCard(JSONArray message, CallbackContext callbackContext) {
+ manager.selectEPC(Tools.HexString2Bytes(this.selectedEpc));
+ String _data = null;
+ try {
+ JSONObject obj = message.getJSONObject(0);
+ _data = Util.str2HexStr(obj.getString("data"));
+ } catch (JSONException e) {
+ callbackContext.error("JSON解析失败");
+ }
+ // 处理_data,将ascii转换为16进制字符串,超过32 * 4位的16进制字符串报错,小于32 * 4时在16进制字符串末位补0x00作为完结标记,再转换为bytes
+ if (_data != null && _data.length() > 32 * 4) {
+ callbackContext.error("数据过长");
+ return;
+ }
+ if (_data.length() < 32 * 4) {
+ _data += "00";
+ }
+ byte[] dataBytes = Util.hexStringToBytes(_data);
+ boolean writeFlag = false;
+ if (dataBytes != null) {
+ writeFlag = manager.writeTo6C(password, 3, 0, dataBytes.length / 2, dataBytes);
+ }
+ if (writeFlag) {
+ callbackContext.success("写入成功");
+ } else {
+ callbackContext.error("写入失败");
+ }
+ }
+
+ private void setPower(JSONArray message, CallbackContext callbackContext) throws JSONException {
+ int power = message.getInt(0);
+ if (power > 26) {
+ power = 26;
+ } else if (power < 16) {
+ power = 16;
+ }
+ if (manager.setOutputPower(power)) {
+ callbackContext.success("设置成功");
+ } else {
+ callbackContext.error("设置失败");
+ }
+ }
+
+ @Override
+ public void onDestroy() {
+ if (this.manager != null) {
+ this.manager.close();
+ }
+ }
+}
diff --git a/src/android/cordova/plugin/uhf/Util.java b/src/android/cordova/plugin/uhf/Util.java
new file mode 100644
index 0000000..ee1de93
--- /dev/null
+++ b/src/android/cordova/plugin/uhf/Util.java
@@ -0,0 +1,77 @@
+package cordova.plugin.uhf;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import android.content.Context;
+import android.media.AudioManager;
+import android.media.SoundPool;
+import android.util.Log;
+
+/**
+ * 工具类,主要用于实现各类字符串之间的转换
+ */
+public class Util {
+
+ public static String str2HexStr(String origin) {
+ byte[] bytes = origin.getBytes();
+ String hex = bytesToHexString(bytes, bytes.length);
+ return hex;
+ }
+
+ public static String hexStr2Str(String hex) {
+ byte[] bb = hexStringToBytes(hex);
+ String rr = new String(bb);
+ return rr;
+ }
+
+ public static String bytes2Str(byte[] src) {
+ String rr = bytesToHexString(src, src.length);
+ String str = new String(hexStr2Str(rr));
+ return str;
+ }
+
+ private static String bytesToHexString(byte[] src, int size) {
+ StringBuilder stringBuilder = new StringBuilder("");
+ if (src == null || size <= 0) {
+ return null;
+ }
+ for (int i = 0; i < size; i++) {
+ int v = src[i] & 0xFF;
+ String hv = Integer.toHexString(v);
+ if (hv.length() < 2) {
+ stringBuilder.append(0);
+ }
+ stringBuilder.append(hv);
+ }
+ String str = stringBuilder.toString();
+ if (str.length() < 128) {
+ str += "00";
+ }
+ return str;
+ }
+
+ public static byte[] hexStringToBytes(String hexString) {
+ if (hexString == null || hexString.equals("")) {
+ return null;
+ }
+ hexString = hexString.toUpperCase();
+ int length = hexString.length() / 2;
+ char[] hexChars = hexString.toCharArray();
+ byte[] d = new byte[length];
+ for (int i = 0; i < length; i++) {
+ int pos = i * 2;
+ // 以0x00为分界线,不读取后面的数据
+ if ((byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])) == 00) {
+ break;
+ }
+ d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
+ }
+ return d;
+ }
+
+ private static byte charToByte(char c) {
+ return (byte) "0123456789ABCDEF".indexOf(c);
+ }
+}
diff --git a/src/android/libs/arm64-v8a/libdevapi.so b/src/android/libs/arm64-v8a/libdevapi.so
new file mode 100644
index 0000000000000000000000000000000000000000..cd88f3f67750a6a026544cc93d811089f5ddf986
GIT binary patch
literal 34184
zcmeHw4|tT-mG_;QfB_9*TQ8?o8bF>$|8l;%>v8gqzo5-2Z@kEi1O`b5dqsGR^8Hp*;!w
znv@Bvaeu;AH^o;`_-EW4Z;=q^3KDio`DGie73J^Q>P@zC3(67P)ixT7>v7*Mv@Zi+
zzcB4{!%@e-*d6>QMMcseA!=KkkE4-y!&I!3BbZUAS+t)n7yTG2EXK+NXivkuo7i
z%6|vUmNLPI`wiSb#{CHHS8&I|7iC^6EKth?cLN{B{T%L}3hnEHg}`TU@00pH!2P&?
zfjbZPH*v4S&16Eu#{gCTm`Jf{ZF`mBD6!mV%$H&y$$#4xXtw@3iEM4k2`?7
z8TWtn8hnig1FymRI4m!OMtmGWks0HVO_2In!66R*AY1*Dwz9oA-CjX?0PY8Dv^#8N
zd$GV?LHSdTy1hC>DrvxlxJOBSq~Ii=ANQ@e7vY|Qn^{szT7fWE5_b%FV!Z!vOxR
zltD)kzp2}o~%goKc
zVsTO4zrdn%etCUK=;xRyahbW;CF45d7+06rxza&za>uuGGTg|16C@bsTHUDci2W0|
zpl})cOOUWApH^(qjX(Y3&vD{U8HRdM?D2^`nN~CPSpqb$D6-@VM1FBUe)xAyzd@b#S%QZ|{;x9LRxT=BxfZBm(Z5dg
zk27@Wxk<`)_@nrzK*nqQP=y6f`_+q5N4cbX=(xsD}}d$@t$E
z$GUh`;^dqo9@51BtHd7D?`*MWmBXI9#1Dy%dH;*ZpOxeX^YnF6V61T<=
zgT((^9R5Ef_7w2YhO65G^)u-=Jk=tYev@@Pi;xXICvl!D$Ft)}a({m3-ord@@1ki4qSXM?Cz!_<7D8OVBIwVeJR0*xpX7+2
zlaOKD9+d@T{BxhgZK5M?^Tf`%4m(FmTgz?^l_)il(VX^7kq9<7r(m0_%
zB7SRj_$>hnY3DhKXXBqrnXf{bFVpYCGVg_s{P`P^KOqAZ_o<=M?>a}nXC>Z_OT2l-
z&H{P5-z|>$9VGh04_ksV
zZOSk4xl-ahBzpEqoR4wj&kC9MohU$yb*}S4%(p#R-X%BU3Fw6X%!2pJ7K{`k~BYlgy)u&s!yrt#`;T5I;EA?{?`o
z*U|62u>U5U4%Ul573}79QR3u?>uaI=U*0k&N|Km
zRnl*g^lRqJ*Ux;tC~>k?;zYtxtrPl2p__Pn6XW1|T$gJN$oPN0_&-7XIZnp=Es3Ah
z$1K7*p+76~6GT2$=%12xbYAkUS-)(~ehXxuHF@I~qQB7L&u_^5wu=4s;&_Q5-JTz%rI_2us;-dv)8Z=R)pz4Til
z^S;$F?=>>6Rgxz&MZN(ON55TmoFA47eXr2xiu}LGdQ5Q4`|rgMJH-!1|6kCK`n`_4
z{f6jY<;Vkn5&C)uo$vLiXXhl#kV3I%wa^nLTLcrIleL{9WP=KAr;Q-RXJmbKI_CXl
zS&zA**u+Ux=JB$_&X@biOFr~N`@0?Xdqq#PL(iA`v9m|)*&_Cg6Z=zTev=&g;0bNd
z4Qd(c-MUIj0xL^P7FSf2R#rR}R93Y#6kJ&mQp*DOWS1Y=
zT@|XUt}LlpURhZZtSVhp8B`V3fl%euBGt>|w5zDPT5wr)S@3FVSw)>itPh4tYAUKq
z$}5(X_oY-;ujotY)ubD(Se8=~s9aiK7qE$uShhU$q=N*xvgLK9p^9p;P&7=wT6l6i
zrJ8uPhUKMoq3n{n`rK(#;3STtw_oxmU4v(_s)JXzig7A~PXxvFwAayFXk|$p0b7^x
z1uX3)p^9a}K66-77eptP{bj*r%PT__HI>1Y!Mc(_d1+M@44GTKq_Da!G(Q*$Ra7mh
zM-0`6N&`#5Us|#R#+9l1s+zirs?g#-ti`1jl`61!NibAVUlRa8(AX+deI6omNjiBlLs5{GKZmLVt*BEe;WnkVD86A328ii&_vj3pISCQrslwpokO>Vl!F(i(|@Kxq~7f}X(=OraGreTbMqJ2g~SvBW89
z(Trel<>V(OJ5=_e^$JdT;wrgbk`dz~np9H1q9PP1&oLQHn?z1dTu$BMiZX|4JISc7
zsV`mT5VMnv81~vF!8)Bc9MW+(rcrF|+mlbsY-@G(t(Mr9t!{103UM+45=H;65oUbv
zfLT#jR_YjwgKEYBa`0+5IjH>!=UB00r1i#R9T4=;`_g$#xSHITR8d{R{h9k+A5o!W
z+cspqmzPYsdXNr=&2+a2H
z=8x_BW_pD20K!zC2Qb@kL|FskzNrM5b#(3Vc@vLs`1gl@6R0hi?
z@c`1N3cGvjIepovg1sUK$)I;sy;V!OuFtogNaPVhlb)(rvM7irJ05YVHVzTWORFYN
z>7(9GusRTmGpzfPO#sKEqMOPJ#JF+50wS(xI-$-1OtL)l`ND5c>u;E+@kt=
zKH=4c?B$XYsRgUbbXgEU{bj)?N^2^p#=5fQd#N70_uyr|PkVkfUTEPmbo06DWe457
zUp*^y7xdhsTU!6j5xN`n*t-s}3T}0*YM=Z1hnvD!#vEqu*hpm)q#_>Qi%TY;<`w
ztm!Ll^m}Z2!Zx~mM4`FsY;^PPi;VR)y1e?)@>^{5rJ7>>(`=(ZW25h~(Z6Yv^y4=A>o)rNr(fNTcUUbqy)e5c+5PE=*PVVW
z-RpVB+?w}Y@Wxs^UEhOxzODWP)EC+6KSF(tt^N|~FWBlYqyCz${&Un%+3K&M?!Hgk
zqWgOt^|7}4FHq07)qjQhB3r!!^)@%=3cwPBQ-2B6&Ps_p!QDxNR|<-_<&>oDL1
zSFKNli^BTrtl=WOzQ%G1r?4M2XI)XJtGQ0=OU5@VZ1uef{H8@iQKz!_{u}$&Ck#T}
zx24D{{LZ1O*d1P9>9GHYP7d#N9F_T7cC+#eoa>w}$h(a-&D
zDYc!n**m7z=L#2jKZq9J?;ljFP;PtQYI78A)V{`|wgk%_yvHrJ*XIsIy>e?&n_I>+
z81}4(J+3uHuX#vA|CeD;__-o4Xk)dUd+Cl#(c*um?v_UFSL${9zgpCWzS*YjJ+xV{
zrYJ1+4AlRL_AhYP;*0*U*;Cs_|6YX6Y3|xE$}W_5QK#?kij?@*&v7=+tnGv^yxq__
zZevk1%BRFvr5B>b-)5UDO-0QEtuf%cHt-+j0QSCcgEa=Ij>>p)d(4)pMC_kNxe<@%_8p=ey2g9E0On!yie-QBIgyk=uGw2X^$)GBaiAC
z>r%OSuIGwQc|2JSYFFLmkD{9uuGP4OAa{|*A;p5l5bs1mxs`O(!
z6#Gxm<2e*Ze}j$xN*sQvjlVArKhMVB8;5WA$0GQ*Btg~gzN>hA9lG)odUcI==&HDmuFpAi9nfpQvMa@*>$BIfJ2wdrt2w(uAg5=
z*AE=JGHkk*ICOpgI=a5?&~?D3tJtAy3w3#1$QLT>;^VH}!;u5u!+!9SHTOoi&O1HB
z_k1)=A(vsTr>mY}Dx9)b^rtp&7$p%tbBR#@x0xzCsIedkjLz~nf5X7&_3#=T^F%umBjRK|2*?z7xYs%
z*DTA-)2vtN`tVpTzYlfNyFA0S%wp8T1J%5A?2Tu!FLF=JD4Z1W&hbwx#eV2r=lweV
zD(0BgW`x!=+@a$psrMNVa_D^+k7-AHZh##7C5<+F`e_IM#M)8ruQ=zJ@#t})9zB@w
zR{j_@|Iau#=O?In-$VI!+!vm9?fx+y*~lwNR`D)JoW)tA^F-|*XC?N-KH1mnZTCiY=`%F;Y5$~%nzN|Syy!k#CPg~q
z(Y@0nzk{!|jBiHdH>Mn(9{IH?`=&>D&emh>yf^ZODXZy`LnvG0oUWf;blEi{a?sFs
zOpmmga>Mip&(vBbZ+hfql%K~~d5+(kEP1G^>dqTkUOjXNgn`S(_{0VWFK10>|
z@H|nDGjn=2{EoByOw`kJ@l4aw*x}`~&NP($U+rkq&ne*!d@mz4Jr(WnoKj95m_I+x
z@`LbP!FX=FG2G$DyxfoZX-f`wD3lpX>0?xFC+62fIWKfR6z=fyxoRBB&xbqOpzAE;
zcn0QkQYZS}4SB!Rn-L>xP{y-T2cH)@Rr6mP@cgoPuy6ls31d=9e9(_J58^HfW1NU#
zK8uyKsahA#(Fb5Z5A-0@e`L?Ww7%XSj}`5m`Idd<{8u!kC3-+s07mXyx>)&2~O?-X=*B2V4~eXg~ZF4o_KKIZ=-
zoC)~rTddw_n$DXu9@g7ye7q~)ZosUYJcZL>|3RD
zKBV^ZIav5b;Ac7coTs?$l`Dts-vVFvr_yscmS4u|x9IwtsJCJa(X|fWA}@9!Ctrj=
z>0j;7yHw8sYrK{}f2<;3MSXh~)*oVY``wslteNe%ATPqVU6XzLeehj_t8i-Pbl-lS
zb^NF+#3FJ`YUf?P{TYZsrP5N!Q!FPpjG`Y;-R0{kMZPOhu6K7}t!Y0p=dHDTNZp-~
z-|^8Bt@{AVS_k4TEAcPbFDsY8}mk`&g*>=@pJ)Wo`Tp~!<>uU
z!+0`dN6c@2bue-R?0I!4atGF8C(3H&%_;uDCQgRwIC)n4Y1p14*t0fL7seBo{JjId
zF>%2?(2R*b!e6N7bWT_M{~b26Ouc_b`B9s_8*KJoguPq~oFfze#@^4OP2&hP?=SUY8X)=of;
z*81t^fU^4fH~7y64I10%1Bfq~k#VS65m69WhOu}#N7LRxPO
zghr%bedst~uJ|Qwo|&M}qCEF87P?>bM3@Je4+DsUOV+!J7MwTtWOzRv2_P4qepdAy
zLtE1F@V@A`C?hXV($DnRpBP7spEp5g%y)X!6y~)9sCQxAu>2!i`Nu5lGh}L3Gs-;M
zvd%nt7Lk(C${W;HlBaefA
z8tu4$oyK^%e?0+O)Z^BB4CBG&o-M|-e?4w%|3Uiz+PcKQ(@=Jf+lm2KRs+Y5*vdc*
zbz#iqkc~g)5wS7PfDFgMILi}x=a}yT-9F~qP?xj*o-|weW?k+b^CVsW-y8F%(AJFk
zgC4FU^%i}`cYNvKDeO)5caVIxx`=&{^GiAXe24c!-6&HR{lND^Vaz3SVHaXU`9B>=
z5FXC3SahCD1JUS|4aaY5eRZI!
z{Uy$RrHj9&pU3zVUDsoRd9Po=VZSxZYylT!UO=
zw2ALGxCZmMUPr5*O9A)pOIS|}Fuw6AP`^>@+M
z;#=>sqqaKbnWKnC=J(*ggY(&ev5L7qD>p&y=lEzRZBw0}j<`@~9_aL3p2~MX@Q;44
z^Rvs*&3XEr&@kk3>%GuRpj|>PFBLl96`k^=WgUb5AA-j|-bR11Ju{HM`=ik~KYFaW
zJJ6@y$gCI8#yUraQ!XGMG{Xlf*|-19Wvjdc??F9Y6=6T_MBjct?oHrv-Eb|t;ZL?{
zfL_Y5?Kj8=-R*N_k+;Lf`wDnEXI^W*@IH!rD90afo?eLg+NbOL3*%?2B;rT67>q_OB
zK!2vv09nQe<@wo)SM)F@**+ERIacMpPk)ZH0PQ)}Hg)-K?j82eWoSFccp&hNqM^E<
zzMtF7yN>R>kDnZo!DPT;Qbd~C=?w-
zp4ozY^@MxG*Hv^j^V~g)2Kw%C9WPxu{P?1kI1l9_=S=1El0IYV&v8<-+JTSZGw*l6
zyM*Tq{5^AIwR^<7T^~k^S=ajr)|q|XnKkDd5H6xVe3py(OwIbPAl_qa-UOY?@y=!{
zYt_KA^UypNnFI2x#K3>V!jm;-DZ94;Cz
zI1$MGM&6@kHG?-);(Q16@qN#0(8s;0=KZT>J^jcAAsdFS4=^vpRP^JA9hXoiCbJIu
z1=fK{v;*<$nSl2#I4dyr7_+-@W?;N|;fr75eF|eZq%KeOXQ_D|;y-&FFb3%>(iqQe
zSD^Qx_1>F$csA?8xs3Z`8{&xPvM!vor3plq)oJFe2=*Nvud6X
zcIfB%HQ`Zs2OYDAwB3;5yz05Kov~>9WRXpcMz!rP!uE@pJAaXy_kEQ4?Bah)%`oYM$B1Bkd)~QYYKfXYN&aPb@y;xE_Sv>3A>c<#Ptctl-mh@CV`9+&%_=
zM&ZXeer5A3$1w=w?=uei5q@Q#`M6&b`RV`z2iYU((lH2IOZy}
zVO&$^C5{6z=!Tsf2hT+h!k6x1tIj_0&TCXUe5g>ipS#)q<~Ve`%j*-@Tm#Hq%)<>y
z64yY+^~;Vm(1v(?SY(}R0B38hm-=YuOvw3QLlZEJ_euZ2x+h%p17HT|VXUDVlxZ{d
zvcJ2Tt1w=d@Tq5s$WWd#b3~?D`ner^_Q_o4gP!rMqy5XQ55&7!pcnnW31nY7CxA~~
zg`$h?*w-Y;uy4vdXp^UG7G)7rv3!6&yYQLxAjq-*8-Ua^07zdx0_?)))Ld7!C^KKg
z`d+Id=xZd$&~wSc6x8**dC=~LFMX-uq8mXYo`(#5^dCgV59a4xl!*zH0sawnqC%ar
zr$v_jWS!$XiFHjMbiyAT({CWd@#oOz=N}%$5Hx*ba2AC+489%6ba(vlOl;>>+%&
ze-<&y*!&3ZZn`|)Eas++Rq68^kjwqZ6BiSeG?AQO5?W2x6?Be?iu01?IZvL&TJ)RxnjoIW7pJU92F=o6U
z(c|S92xI_%2@IJ6`c=VIv9FS
z*vE=EVT=@D4D`D_m*5$=Jp=nQpMm-Oi$Bp$<+E=ao;mpJ%jezI_{@gSzYoHOE7;@y
zD{US{8@z}4FSYp$+Hfs!j<_e%-&_xj%gL}6F|E%Mc>mld#{P+WwXF@;mud5MKW%oh
z4gAC0!0)@zPZQy%HuN`6)|8j=hBb8odECg3)qYexw~Fk|BI^^`vy_D`Zq%(YxU!fV
zX%E*EKX+jtL(q=;PcWZ<3AytbHG17ei}$DZkaxg)2Ryc={3tz+VOkgW9GPz>?ic&N1N+&A?Kuv%J1c!O*xI#=9V*$9*=>_CcD&(``I*S_(+~_I1Zk1RO9whjJH2Sm%@C}
ze~bma)*-_fBL7#|Q=L4<4S8=kcrMU+&TqzeKKU`m@lD4#a0b2ZI2!sHM{AsM(2fr<
z_rz53?)<*EPlEaoys|c1?77T`8^%*I3uB
zu92>BuJNuo?-a6FETa^2w??YiA%
zAIblp>Knj}9rq9#qms|8#+`d|EBb#+yc#RZQ(a@T@K
zXU!6_Dk`3T*UaMis$gb;cQO99)EmHGKH;Z648LGLK0?Q}ylQDx^@=K0P;Axty9{3Z
zb(a3chkM6YF28d;{vWt=e7zTcO-oJpqF7NSC8g~Qg`Rx4czhZ4>ALxAK6@R%6%gYu
z3svLD}
zxC@woFR~m476Q)#w*nIrl{yQ|1m@xcz&XG$upD>~x
z;Yr8?_u^0*1~zv_qb;Q43mcul)KeG_e$Qnm&<9*_8sh=(I|F-wd+~vIC$RYs(P-Kb
zrP_egfMGm9mjjOi*8#ow5WN|g4QvJafbGCS;8|c95NSb$fc$;9^+5hkSqpFhupPJ(
z*a=(@Ou~oAEx=r0JFpd~@H#di;Cj5MssU~Vt^>9Ln}Kb>R^V}9JFpvg7U;tZ
z=1ly~O##pcYyy@8&jPoQj)#%Mz!~^LMl$}Gs{oh@oD1{;i-8M(3xPGjGT=I3B@o~B
zQXya~a22o}xC?k5codkNtkel$Ch!c<2RsMl?}2p#Yk*gP>wpR8p%1ta*bbcb7x?QY
z1m<6(Q9rN{xDLoKd^H2Zz&7AsU?=cA5b02*;zha_=m+|MO+Y{J1TYLd1Ka{U2W$ae
z1|9~gZs-9f0xtuTfyu+5510uY1M~sM0T%!#0BeA`z;(bGz-FKi*b4Lmj|0nr=YciA
z#8mv&H_!_V1E&Gk0SkevE@J+HE
zfStg@%0Jsh~7uXCe2DSqC
z0?z`E0u%Aaig=!ldVyzv(|~v{5G@3D1IvNauE0;g8NgjYAFvHL2Y4J<2s{tm2u#B<
zWD77G*bJNl#CJZUejqPQtG--M6{&=kx41?prRzHBJcpck6JvI3lKuzZi`2hez3>QZ
zA|-EVa{e~=?7=7VhN`?Fvk1H>$Dhn=ypA0EX~ex3a#(7yD;K4$xOalyLaNozqoyAx
z+WS2U@iD(dO!T&U(8$~6u7E!ma+Q{xH-AIIMo+;u_q>yNN8h%MV;s&Y>pzAZe|zvK
z^wd1n-ZS)%-rT)g2+QO=@xlIK7-oZNAun}rdJEZxlZ`oqD}bnB|ht5`xf`C4db@m
zS~XZl1b@I97v=UsF6r%PbPVk0ddS=0-sW;I>?6l@a};t4XB_?8ig`n8@-__Jcw@n)
zr00ih9=vT(`C!YOlfO1LKpJOq=uSXC$D+}067q)n^EM=H95Qng+LW=)Ne)`f(eg7O
ze-`qxK1F_8;-)t0{Q5ZZ3*zWM0{Ml6;dUyVYu^TfAHs7-ClbgKHr!O;I*d4`oxj2I+{06z+>L={V+mO8R
z6Eimreg4MHN!y0h^w*BR{e1}S#J|!mpY00Rurf|V=7XJR7yd2w1gk&h+nFYh(Xae(
z9gyE<@w4+bA)n~vvzQwD%p3J}Lq7S0CfIbIw`k4Jbu+5!+GT++YsCNeVv@28i*g9f-wpj>1$J1!>YYMmyXKunw
zKX%o;@ZEo)Am_g1Y
z(aNNZgN2Z9g!~ChK6WnH=Fv-8^733O7hvY|hU5rL?G
zd|MiMa4^@2wY>9fD%l1X*T*^N*#bRBs{}IE`f4#alR&i
zz8CcV=5sFit=HgJf`15nj*0yvPd{WLp8A`>KMOu>75ifOl>EKmp96oc@X>zmN&F!f
zFY=FopN4lT6G*W1W9j$u&w)POwtkLT`3PQFbQjH@KPqbLU7xlYD`UJ!>q1N2GBKGRAA42Oa;Qp8?&e=LqOW&Vg8R2=XwL(Z%tpN&eE&80uYh0Hj~#4(0{j~Ar}gTeWzQE^z+ZO_{bTShujv~6
z8Q`zK27e*=8~fqw`3HXs_zAR6E+ny`o~F6#XCp(-ASJSdSM)T0qDLs^o5{j$DxNn_r{?&fu8K3bKE;YSD>4C
z)6czfj^OwXfuH1PNBRlSuON<{%d7*!n@HEap>bfKN5#N1N2wo(2GIe8;4#A
z`c?;>V`>Dw3G|P1uAo2mL4F_PGf`G}e#5$nJr9z96nxsnGUEjMWWL$oN$Uo`wI4qH
zmWqF<-|3$Tpzn0hX@3Fe8$tiL_J<%(`{LOTmfDDanCG1R?*%=cU57w-+C@Dl@DJ^>
z>tU|x2E7sV0+b~`ZSxeE*C?~zrmxt34BlBcL(aKAb3x~PIq7rxj@!{6^^}2L?x53-
zRiG~b{d#ungj^_2f3JYgAVe4U;piakL>}zqU7}f&Jw
zeSmB_rk>)ck8;$U+UeVN~%)Hx3nqsOe#
z^Z?u^;E_pRX@Y#U$}8LazM)lB_+F&GxXyTqI(!?#
zx?1nB(9jo1-HgL8a(E=ym+8--kQF`xs%F{v86R=!y0Od1{ols$omLP3uc1$Vht!PU
z{NAYfeNjW7J#*&0-ptvLJa)S`cj7(Xoa{-t+0$~SdNc9s`SMfwx8uJSUtf-2#}Ab*
zQWMKd@!xuwSoUO9{gcZq#DBA5B1B6`lu}J)NKM3lYX$$-RqJ0@ofs@HSzK4TELc)r
z26&c*B1P$NWKbIfd=Zluje_|Fg@M}fKDm}&BR=9er9r@X_R`oAg8Ey%Pt`9E9QJICwP
zSC6)wJJa6e4WG0>FC7}bX>atdLR*R$zS$45@da^S?H0uTHSG;HfMahT`|ps4ttLj!
zC~(%F1%ouxzxnU_C5EjQ>n(`=>ulcy4*SoJNmvEbe!PQDSzdNDeOnys-#fz=Zn6_m
JHth`ge*q?7-)#T@
literal 0
HcmV?d00001
diff --git a/src/android/libs/arm64-v8a/libirdaSerialPort.so b/src/android/libs/arm64-v8a/libirdaSerialPort.so
new file mode 100644
index 0000000000000000000000000000000000000000..8c43d807c22ba01ec5d595621de8d5ca4bcf58b0
GIT binary patch
literal 9608
zcmeHNeQZZ3#>dpHDX^|n|8QRHN8%}oJ^Mk!
zhc=I)jX(NFqC)A^iXp}(5>+jlsufjHn=v+_3U#!l8Ja4VX6e*T?GzO#HG_D+^WHhm
z&BIn5O_NrsH@g1a^Sk$+d+xdC-sk(AAARGYwZ5`4CCN}PE0Vfza+x4kobq!45LBzw
zRD8}+H#u#mj8|P(I(mys2`ZicZj07vSGP!XM@{P#1A%gJ|;;WfDiSm48@;Qf~;t*0b;N~JPM4pbUr`ZthVqzAM
zmU#j4-OPO%xRlF&;8&0rBa^>NO@^w-?+d+;LEiJr3c58NaDv#cw|yGIP0(|W7jT3t
z-!9VrA4T|;a8M=wrg_F)fyE&GL*ytVba&Eoh_^!a`~+*t#fWuf+0c-#+p
zTv_k?9s4WPMGya7M^A<7r{F_c!0t;RkjVaH6o^QoCye?+F^XV~-r@NP=W{ubH
zAZ;2icOL4K)Oh`#)1~orcafCQcz)zMReLp_udoi^t?}|~riy1Yp6))94r#pHtEld%
z#`D$M>2gft>Ha0@xW@a11P*BYLXAJA@ryM6jK<%g@#i%DPK_VZ_*#wsK;!BDD``~Y
zR|=`&=+4)AyAeLK53b8r4&UG7_tgy6_>FfYJ9URq=li--=g7Z?yhxM#Acr;i1;{O$
z{2R!-HTk!Y4{P!(kWXmxtB{8^`2=L&1LNcW5%MBUejRdHliz^cqRDST-mS@lkPmC}
zUm%~*Gi8LB6!)JsY|ICyR6?~V=_k-_&2)wkPi*BwS%m7Lx)i1xYPt2f^>jJgY(
zRPP0}88UozmmV+cy}Z-ci~0jKWFje=k@)~m|M5!rBIf}7($;5n}WTU9uHv-;a<$IXTXRI
zDwTQb3eDFjD>~ni8kPOIHs@f4+B{Md%&wWL8h%l(e$f1R^?_05_`p<|jf*kAKfw1^``YH77K`#K3bpgSeVxrRttKf
z{sldIJZntt#$#b_J{I(Lq|c3oD#XG(Hx_nN@XR6o%ns;<%g?+S-&r{kz&`t8epHUrh4+l9@Xf?@YswXbh|cF
z?B*KPn`4H`zA%h>1vUY@
zfo(ua{Mu2K?bxWwyKXD1p6Nc-8&F5@OZ#!Kj8enUtora%Q}<0-v%mal!}n(j@MM2~
z0ltCOtN{NIc!~khOJ6l3V`e7_9Mstg_Uh0nXo;>65m)CW=T
zclEgSjn1+;!gKR`PQ~?zSyl
zA?Ll^F}azlmHU-DoTBF#B|3K~(eIIzpQBvfKW8Yvmy3VaH8y_DU%T$x-&yQ$2(0!muV26q=
zo?yK=n)`c1MPJmZ|8lM$;Fo8DZOjXZ{nUq2BQll6KgIq(gxXT_j{gWaz5gg5c!KnO
zT~9K;aF3%vM8{|ptx$@ubr
s5!3wAVEWfnjxx61^d7$}?bk_^rJvCM0rU%-RR910
literal 0
HcmV?d00001
diff --git a/src/android/libs/arm64-v8a/libuhf.so b/src/android/libs/arm64-v8a/libuhf.so
new file mode 100644
index 0000000000000000000000000000000000000000..9907a5d718559e52f98cb691501502bd5bc703ab
GIT binary patch
literal 5512
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
i4rM|sU2~DbpHT)c@e
literal 0
HcmV?d00001
diff --git a/src/android/libs/armeabi-v7a/libirdaSerialPort.so b/src/android/libs/armeabi-v7a/libirdaSerialPort.so
new file mode 100644
index 0000000000000000000000000000000000000000..b8a8974b2cde3f338f8f6597fdd5f4ebf940f138
GIT binary patch
literal 17528
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
literal 0
HcmV?d00001
diff --git a/src/android/libs/armeabi-v7a/libuhf.so b/src/android/libs/armeabi-v7a/libuhf.so
new file mode 100644
index 0000000000000000000000000000000000000000..1c1874a720411fd0a590862218ea4c9193980a02
GIT binary patch
literal 13432
zcmeI3eQ;FAk-+Ee2U->xJ&-V1R_x`&wg4kmKpbpy@nU2k4o()ZL2;Z~7HL6Bgmx`0
z4)*1W)dz+UbchdM$OqoD+ew)_Qg0ysz}V0FHTa~eXA|Yf{StD3nU@g
z`}N!RFMt2>7JSQ_G$Ay%NA>zrkvtd)ykpf(HN|?dc5;gK$Xxp
zK~<jiC1wYdo#6CiJO@vf&hM0y0)$1>=kLuVH|IjF0`saLM!zt;GJug^4a}K@O5L~<^LMAQ-uF}z(M*Q{$D$tVCk3TI%~_Dg1$-6
zPZ#koFEUv8V@327=zoA7C>p;Py03~3irD`hXrqWe0o`9jpM^eEM3=B&_2LA3{1jP0
zyNLej&^zF-pf2+79MQiJItgQ)-M<_)0z2gR@_PPu5zcQl#2=qnf
zTW|Nj0R3E%{Xc^~R7Af8eWHlg8COv>ziQ}~B02OHjpr5km^BHJ$y;34l
z=D!8H3cAInzXZJvI$+b!K_7yaSQP$Opbr=IXP{3)_uKs!po{%m%D@!%O|$!N8bL3B
zeyXVdz7h08&?k!eH;tfoL!T|`e|iM{JhaYwOtba>bOb#B9hjn2$nHN6y$1SLn;y$X
zu>*R(P1iub1nuO*JGuTHm!@a#iEU|w#dp@TXVD}9B)fT;)z(RYPvlb
zjBJcLWF!)eMb|b*Hnx7YxwSFUkVr%lZNa}uY(q=DJys;QK>sa_u-lT4CSs8d(PTrDZJ8Y=u}!gt
zjY%gI8=@^O1W;^KBG!?yF!e=?
z7hWoVMYOp+cF(4USR&bMMOu-ii{ot#vBpA3j2IPb-?%|$U&Kui&=!feMOMU;O>Obd
z4(nYM-;ijDiMQ