|
@@ -42,6 +42,8 @@ import android.widget.Spinner;
|
|
|
import android.widget.TextView;
|
|
|
import android.widget.Toast;
|
|
|
|
|
|
+import com.google.android.gms.common.server.converter.StringToIntConverter;
|
|
|
+
|
|
|
import java.io.BufferedReader;
|
|
|
import java.io.File;
|
|
|
import java.io.FileInputStream;
|
|
@@ -50,6 +52,8 @@ import java.io.InputStream;
|
|
|
import java.io.InputStreamReader;
|
|
|
import java.io.RandomAccessFile;
|
|
|
import java.io.Reader;
|
|
|
+import java.nio.ByteBuffer;
|
|
|
+import java.nio.ByteOrder;
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collection;
|
|
@@ -2076,61 +2080,49 @@ public class Config extends AppCompatActivity
|
|
|
int productId = usbDevice.getProductId();
|
|
|
if (productId == 0x0818 || productId == 0x0001 || productId == 0x0616) { //0x0001是奕力的PID
|
|
|
if (mUsbManager.hasPermission(usbDevice)) {
|
|
|
+ UsbInterface usbInterface = usbDevice.getInterface(1);
|
|
|
+
|
|
|
+ for (int i = 0; i < usbInterface.getEndpointCount(); i++) {
|
|
|
+ UsbEndpoint ep = usbInterface.getEndpoint(i);
|
|
|
+
|
|
|
+ //if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) {
|
|
|
+ if (ep.getDirection() == UsbConstants.USB_DIR_OUT) {
|
|
|
+ //mUsbEndpointIn = ep;
|
|
|
+ mUsbEndpointOut = ep;
|
|
|
+ } else {
|
|
|
+ //mUsbEndpointOut = ep;
|
|
|
+ mUsbEndpointIn = ep;
|
|
|
+ }
|
|
|
+ //}
|
|
|
+ //else{
|
|
|
+ // mHandler.sendEmptyMessage(CONNECTED_SUCCESS);
|
|
|
+ //}
|
|
|
+ }
|
|
|
|
|
|
- mUsbDeviceConnection = mUsbManager.openDevice(usbDevice);
|
|
|
- if (mUsbDeviceConnection != null) {
|
|
|
-
|
|
|
- int interfaceCount = usbDevice.getInterfaceCount();
|
|
|
- // for (int interfaceIndex = 0; interfaceIndex < interfaceCount; interfaceIndex++)
|
|
|
- {
|
|
|
- // UsbInterface usbInterface = usbDevice.getInterface(interfaceIndex);
|
|
|
- UsbInterface usbInterface = usbDevice.getInterface(1);
|
|
|
-
|
|
|
- if(UsbConstants.USB_CLASS_HID != usbInterface.getInterfaceClass())
|
|
|
- {
|
|
|
- // continue;
|
|
|
- }
|
|
|
-
|
|
|
- for (int i = 0; i < usbInterface.getEndpointCount(); i++) {
|
|
|
- UsbEndpoint ep = usbInterface.getEndpoint(i);
|
|
|
-
|
|
|
- if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) {
|
|
|
- if (ep.getDirection() == UsbConstants.USB_DIR_OUT) {
|
|
|
- //mUsbEndpointIn = ep;
|
|
|
- mUsbEndpointOut = ep;
|
|
|
- } else {
|
|
|
- //mUsbEndpointOut = ep;
|
|
|
- mUsbEndpointIn = ep;
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- // mHandler.sendEmptyMessage(CONNECTED_SUCCESS);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if ((null == mUsbEndpointIn) || (null == mUsbEndpointOut)) {
|
|
|
- int i = mUsbDeviceConnection.controlTransfer(0x00, 0x09,
|
|
|
- 0x002, 0, null, 0, 100);
|
|
|
- SystemClock.sleep(1000);
|
|
|
- if(i>=0){
|
|
|
- //mHandler.sendEmptyMessage(DEBUG_MESSAGE_SUCCESS);
|
|
|
- }
|
|
|
- else{
|
|
|
- //mHandler.sendEmptyMessage(DEBUG_MESSAGE_ERROR);
|
|
|
- }
|
|
|
-
|
|
|
+ if ((null == mUsbEndpointIn) || (null == mUsbEndpointOut)) {
|
|
|
+ mUsbDeviceConnection = mUsbManager.openDevice(usbDevice);
|
|
|
+ if (mUsbDeviceConnection!=null) {
|
|
|
+ int i = mUsbDeviceConnection.controlTransfer(0x00, 0x09,
|
|
|
+ 0x002, 0, null, 0, 100);
|
|
|
+ SystemClock.sleep(1000);
|
|
|
+ if (i >= 0) {
|
|
|
+ //mHandler.sendEmptyMessage(DEBUG_MESSAGE_SUCCESS);
|
|
|
} else {
|
|
|
- isNeedFindDevice = false;
|
|
|
- mUsbInterface = usbInterface;
|
|
|
- mUsbDeviceConnection = mUsbManager.openDevice(usbDevice);
|
|
|
- if(null != mUsbEndpointIn){
|
|
|
- mHandler.sendEmptyMessage(CONNECTED_SUCCESS);
|
|
|
- }
|
|
|
+ //mHandler.sendEmptyMessage(DEBUG_MESSAGE_ERROR);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ } else {
|
|
|
+ isNeedFindDevice = false;
|
|
|
+ mUsbInterface = usbInterface;
|
|
|
+ mUsbDeviceConnection = mUsbManager.openDevice(usbDevice);
|
|
|
+ mUsbDeviceConnection.claimInterface(mUsbInterface, true);
|
|
|
+ if(null != mUsbEndpointIn){
|
|
|
+ mHandler.sendEmptyMessage(CONNECTED_SUCCESS);
|
|
|
+ }
|
|
|
}
|
|
|
- } else {
|
|
|
+
|
|
|
+ }
|
|
|
+ else {
|
|
|
mUsbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(mContext, 0, new Intent(""), 0));
|
|
|
}
|
|
|
}
|
|
@@ -2140,6 +2132,7 @@ public class Config extends AppCompatActivity
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
//=====================================读取CFG到各个View开始===================================//
|
|
|
public void ReadCfgSample(byte[] mBytes){
|
|
|
int temp;
|
|
@@ -2790,7 +2783,7 @@ public class Config extends AppCompatActivity
|
|
|
mCfg813B.setText(mConfigShow[showid++]);
|
|
|
mCfg813C.setText(mConfigShow[showid++]);
|
|
|
mCfg813D.setText(mConfigShow[showid++]);
|
|
|
- //mCfg813E.setText(mConfigShow[showid++]);
|
|
|
+ mCfg813E.setText(mConfigShow[showid++]);
|
|
|
//mCfg813F.setText(mConfigShow[showid++]);
|
|
|
|
|
|
mCfgBF7B.setText(mConfigShow[showid++]);
|
|
@@ -3237,6 +3230,10 @@ public class Config extends AppCompatActivity
|
|
|
StringBuilder configBuilder = new StringBuilder("");
|
|
|
String[] stringArr;
|
|
|
|
|
|
+ ByteBuffer buff= ByteBuffer.allocate(1024);
|
|
|
+
|
|
|
+ byte bCfgEx = 0; //扩展配置的标志
|
|
|
+
|
|
|
switch (v.getId()) {
|
|
|
case R.id.tvsample:
|
|
|
vpagerCfg.setCurrentItem(0);
|
|
@@ -3753,7 +3750,151 @@ public class Config extends AppCompatActivity
|
|
|
configBuilder.append(mCfg813B.getText().toString() + ",");
|
|
|
configBuilder.append(mCfg813C.getText().toString() + ",");
|
|
|
configBuilder.append(mCfg813D.getText().toString() + ",");
|
|
|
- configBuilder.append("01");
|
|
|
+ configBuilder.append(mCfg813E.getText().toString() + ",");
|
|
|
+ //configBuilder.append("01");
|
|
|
+
|
|
|
+ //bCfgEx = (byte)Integer.parseInt(mCfg805A.getText().toString());
|
|
|
+ //if ((bCfgEx & 0x40) == 0x40) //有扩展配置,则需要发送
|
|
|
+ {
|
|
|
+ //configBuilder.append(",");
|
|
|
+
|
|
|
+ configBuilder.append(mCfgBF7B.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF7C.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF7D.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF7E.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF7F.getText().toString() + ",");
|
|
|
+
|
|
|
+ configBuilder.append(mCfgBF80.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF81.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF82.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF83.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF84.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF85.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF86.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF87.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF88.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF89.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF8A.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF8B.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF8C.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF8D.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF8E.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF8F.getText().toString() + ",");
|
|
|
+
|
|
|
+ configBuilder.append(mCfgBF90.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF91.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF92.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF93.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF94.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF95.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF96.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF97.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF98.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF99.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF9A.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF9B.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF9C.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF9D.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF9E.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBF9F.getText().toString() + ",");
|
|
|
+
|
|
|
+ configBuilder.append(mCfgBFA0.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFA1.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFA2.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFA3.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFA4.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFA5.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFA6.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFA7.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFA8.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFA9.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFAA.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFAB.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFAC.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFAD.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFAE.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFAF.getText().toString() + ",");
|
|
|
+
|
|
|
+ configBuilder.append(mCfgBFB0.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFB1.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFB2.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFB3.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFB4.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFB5.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFB6.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFB7.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFB8.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFB9.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFBA.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFBB.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFBC.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFBD.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFBE.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFBF.getText().toString() + ",");
|
|
|
+
|
|
|
+ configBuilder.append(mCfgBFC0.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFC1.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFC2.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFC3.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFC4.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFC5.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFC6.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFC7.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFC8.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFC9.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFCA.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFCB.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFCC.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFCD.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFCE.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFCF.getText().toString() + ",");
|
|
|
+
|
|
|
+ configBuilder.append(mCfgBFD0.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFD1.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFD2.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFD3.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFD4.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFD5.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFD6.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFD7.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFD8.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFD9.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFDA.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFDB.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFDC.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFDD.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFDE.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFDF.getText().toString() + ",");
|
|
|
+
|
|
|
+ configBuilder.append(mCfgBFE0.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFE1.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFE2.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFE3.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFE4.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFE5.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFE6.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFE7.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFE8.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFE9.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFEA.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFEB.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFEC.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFED.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFEE.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFEF.getText().toString() + ",");
|
|
|
+
|
|
|
+ configBuilder.append(mCfgBFF0.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFF1.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFF2.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFF3.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFF4.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFF5.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFF6.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFF7.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFF8.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFF9.getText().toString() + ",");
|
|
|
+ configBuilder.append(mCfgBFFA.getText().toString());
|
|
|
+ }
|
|
|
//configBuilder.append(mCfg813E.getText().toString() + ",");
|
|
|
//configBuilder.append(mCfg813F.getText().toString());
|
|
|
}else{ //在其他界面则保存
|
|
@@ -3767,6 +3908,8 @@ public class Config extends AppCompatActivity
|
|
|
}
|
|
|
|
|
|
configBuilder.append("01"); //mBytes[185],最后置上1
|
|
|
+
|
|
|
+ bCfgEx = mBytes[10];
|
|
|
}
|
|
|
//mShow.setText(configBuilder.toString());
|
|
|
|
|
@@ -3783,37 +3926,98 @@ public class Config extends AppCompatActivity
|
|
|
|
|
|
for (int b = 0; b < stringArr.length; b++) {
|
|
|
byte aByte = (byte) Integer.parseInt(stringArr[b], 16);
|
|
|
- mBufferData[b] = aByte;
|
|
|
+ buff.array()[b] = aByte;
|
|
|
}
|
|
|
+
|
|
|
+ buff.order(ByteOrder.BIG_ENDIAN);
|
|
|
//mBufferData = value.getBytes();
|
|
|
mSendData = new byte[1024];
|
|
|
|
|
|
+
|
|
|
//重新计算checksum
|
|
|
int checksum = 0;
|
|
|
for (int i = 0; i < 236; i += 2) {
|
|
|
- int k = ((int) mBufferData[i] << 8) + mBufferData[i + 1];
|
|
|
+
|
|
|
+ //int k = ((int)mBytes[i] << 8) + mBytes[i + 1];
|
|
|
+ int k = buff.asShortBuffer().get(i>>1);
|
|
|
checksum = checksum + k;
|
|
|
+
|
|
|
+ String hv = Integer.toHexString(buff.array()[i] & 0xff);
|
|
|
+ if (hv.length() < 2){
|
|
|
+ hv = "0" + hv;
|
|
|
+ }
|
|
|
+ mConfigShow[i] = hv;
|
|
|
+ hv = Integer.toHexString(buff.array()[i + 1] & 0xff);
|
|
|
+ if (hv.length() < 2){
|
|
|
+ hv = "0" + hv;
|
|
|
+ }
|
|
|
+ mConfigShow[i + 1] = hv;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//将checksum填入配置中
|
|
|
//if (checksum % 256 == 0) //校验和正确
|
|
|
{
|
|
|
- mBufferData[236] = (byte) ((61696 - checksum) >> 8);
|
|
|
- mBufferData[237] = (byte) ((61696 - checksum) & 0xff);
|
|
|
+ buff.array()[236] = (byte) ((0 - (short)checksum) >> 8);
|
|
|
+ buff.array()[237] = (byte) ((0 - (short)checksum) & 0xff);
|
|
|
// mShow.setText("Cfg Checksum re-calculation!");
|
|
|
}
|
|
|
|
|
|
//更新配置标志位
|
|
|
- mBufferData[238] = 0x01;
|
|
|
+ buff.array()[238] = 0x01;
|
|
|
+
|
|
|
+ mConfigShow[236] = Integer.toString(buff.array()[236] & 0xff);
|
|
|
+ mConfigShow[237] = Integer.toString(buff.array()[237] & 0xff);
|
|
|
+ mConfigShow[238] = Integer.toString(buff.array()[238] & 0xff);
|
|
|
+
|
|
|
+
|
|
|
+ checksum = 0;
|
|
|
+ for (int i = 239; i < 239 + 126; i += 2) {
|
|
|
+
|
|
|
+ //int k = ((int)mBytes[i] << 8) + mBytes[i + 1];
|
|
|
+ int k = buff.asShortBuffer().get(i>>1);
|
|
|
+ checksum = checksum + k;
|
|
|
+
|
|
|
+ String hv = Integer.toHexString(buff.array()[i] & 0xff);
|
|
|
+ if (hv.length() < 2){
|
|
|
+ hv = "0" + hv;
|
|
|
+ }
|
|
|
+ mConfigShow[i] = hv;
|
|
|
+ hv = Integer.toHexString(buff.array()[i + 1] & 0xff);
|
|
|
+ if (hv.length() < 2){
|
|
|
+ hv = "0" + hv;
|
|
|
+ }
|
|
|
+ mConfigShow[i + 1] = hv;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //将checksum填入配置
|
|
|
+ buff.array()[239 + 126] = (byte) ((0 - (short)checksum) >> 8);
|
|
|
+ buff.array()[239 + 127] = (byte) ((0 - (short)checksum) & 0xff);
|
|
|
+
|
|
|
+ mConfigShow[239 + 126] = Integer.toString((short)checksum >> 8);//Integer.toString(buff.array()[239 + 126] & 0xff);
|
|
|
+ mConfigShow[239 + 127] = Integer.toString((short)checksum & 0xff);//Integer.toString(buff.array()[239 + 127] & 0xff);
|
|
|
|
|
|
- //mSendData = mBufferData;
|
|
|
- //mHandler.sendEmptyMessage(DEBUG_MESSAGE_SUCCESS);
|
|
|
+
|
|
|
+ byte addressH = (byte)0xBF;
|
|
|
+ byte addressL = (byte)0x7B;
|
|
|
+
|
|
|
+ /*
|
|
|
+ iicWrite(addressH,addressL,buff.array(),239,128);
|
|
|
+ if (!recallCheck(addressH, addressL,buff.array(),239,128)) {
|
|
|
+ mShow.setText("Recall check error,Send cfg failed");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ mShow.setText("Recall check success,Send cfg success");
|
|
|
+ }
|
|
|
+ */
|
|
|
|
|
|
//扩展命令 0x03,0x01,0x0f,-128,0x47,0x00,0x39,
|
|
|
- byte addressH = (byte)0x80;
|
|
|
- byte addressL = (byte)0x50;
|
|
|
- iicWrite(addressH,addressL,mBufferData,0,239);
|
|
|
- if (!recallCheck(addressH, addressL,mBufferData,0,238)) {
|
|
|
+ addressH = (byte)0x80;
|
|
|
+ addressL = (byte)0x50;
|
|
|
+ iicWrite(addressH,addressL,buff.array(),0,239);
|
|
|
+ if (!recallCheck(addressH, addressL,buff.array(),0,238)) {
|
|
|
mShow.setText("Recall check error,Send cfg failed");
|
|
|
// return false;
|
|
|
}
|
|
@@ -3822,26 +4026,24 @@ public class Config extends AppCompatActivity
|
|
|
}
|
|
|
|
|
|
if (iChooseVPager == 8) {
|
|
|
- mCfg813C.setText(Integer.toHexString(mBufferData[236] & 0xff));
|
|
|
- mCfg813D.setText(Integer.toHexString(mBufferData[237] & 0xff));
|
|
|
|
|
|
- checksum = 0 - checksum;
|
|
|
+ ReadCfgRam(mConfigShow);
|
|
|
+
|
|
|
+ mCfg813C.setText(Integer.toHexString(buff.array()[236] & 0xff));
|
|
|
+ mCfg813D.setText(Integer.toHexString(buff.array()[237] & 0xff));
|
|
|
|
|
|
- mCfg813E.setText(Integer.toHexString((checksum >> 8) & 0xff));
|
|
|
- mCfg813F.setText(Integer.toHexString(checksum & 0xff));
|
|
|
+ //if ((bCfgEx & 0x40) == 0x40)
|
|
|
+ {
|
|
|
+ mCfgBFF9.setText(Integer.toHexString(buff.array()[239 + 126] & 0xff));
|
|
|
+ mCfgBFFA.setText(Integer.toHexString(buff.array()[239 + 127] & 0xff));
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
case R.id.readcfg: //read cfg
|
|
|
bottonMode = 2;
|
|
|
mSendData = mSendGetGt9ConfigData;
|
|
|
|
|
|
- addressH = (byte)0x81;
|
|
|
- addressL = (byte)0x40;
|
|
|
- iicRead(addressH,addressL,mBytes,16);
|
|
|
- //tvVenderID.setText("VenderID:"+Integer.toString(mBytes[10] & 0xFF));
|
|
|
-
|
|
|
iicWriteCommand((byte)0x12,(byte)0,(byte)0,0,0);
|
|
|
-
|
|
|
while(true) {
|
|
|
SystemClock.sleep(100);
|
|
|
|
|
@@ -3853,23 +4055,26 @@ public class Config extends AppCompatActivity
|
|
|
|
|
|
iicWriteCommand((byte) 0x0f, (byte) 0x81, (byte) 0x4e, 0, 1);
|
|
|
}
|
|
|
-
|
|
|
addressH = (byte)0x80;
|
|
|
addressL = (byte)0x50;
|
|
|
- iicRead(addressH,addressL,mBytes,239);
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ iicRead(addressH,addressL,buff.array(),239);
|
|
|
+ buff.order(ByteOrder.BIG_ENDIAN);
|
|
|
StringBuilder stringBuilder = new StringBuilder("");
|
|
|
checksum = 0;
|
|
|
for (int i = 0; i < 238; i += 2) {
|
|
|
|
|
|
- int k = ((int)mBytes[i] << 8) + mBytes[i + 1];
|
|
|
+ //int k = ((int)mBytes[i] << 8) + mBytes[i + 1];
|
|
|
+ int k = buff.asShortBuffer().get(i>>1);
|
|
|
checksum = checksum + k;
|
|
|
- String hv = Integer.toHexString(mBytes[i] & 0xff);
|
|
|
+ String hv = Integer.toHexString(buff.array()[i] & 0xff);
|
|
|
if (hv.length() < 2){
|
|
|
hv = "0" + hv;
|
|
|
}
|
|
|
mConfigShow[i] = hv;
|
|
|
- hv = Integer.toHexString(mBytes[i + 1] & 0xff);
|
|
|
+ hv = Integer.toHexString(buff.array()[i + 1] & 0xff);
|
|
|
if (hv.length() < 2){
|
|
|
hv = "0" + hv;
|
|
|
}
|
|
@@ -3877,34 +4082,33 @@ public class Config extends AppCompatActivity
|
|
|
stringBuilder.append(hv);
|
|
|
stringBuilder.append(",");
|
|
|
}
|
|
|
- if(checksum % 256 == 0) //校验和正确
|
|
|
+ if((short)checksum == 0) //校验和正确
|
|
|
{
|
|
|
|
|
|
- mCfg813E.setText(Integer.toHexString((checksum >> 8) & 0xff));
|
|
|
- mCfg813F.setText(Integer.toHexString(checksum & 0xff));
|
|
|
- if ((mBytes[10] & 0x40) == 0x40) //有扩展配置,再做校验
|
|
|
+ //mCfg813E.setText(Integer.toHexString((checksum >> 8) & 0xff));
|
|
|
+ //mCfg813F.setText(Integer.toHexString(checksum & 0xff));
|
|
|
+ if ((buff.array()[10] & 0x40) == 0x40) //有扩展配置,再做校验
|
|
|
{
|
|
|
addressH = (byte)0xBF;
|
|
|
addressL = (byte)0x7B;
|
|
|
- iicRead(addressH,addressL,mBytes,128);
|
|
|
-
|
|
|
+ iicRead(addressH,addressL,buff.array(),128);
|
|
|
checksum = 0;
|
|
|
- for (int i = 238; i < 238 + 128; i += 2) {
|
|
|
+ for (int i = 0,j = 239; i < 128; i += 2,j += 2) {
|
|
|
|
|
|
- int k = ((int)mBytes[i] << 8) + mBytes[i + 1];
|
|
|
+ int k = buff.asShortBuffer().get(i>>1);//((int)mBytes[i] << 8) + mBytes[i + 1];
|
|
|
checksum = checksum + k;
|
|
|
- String hv = Integer.toHexString(mBytes[i] & 0xff);
|
|
|
+ String hv = Integer.toHexString(buff.array()[i] & 0xff);
|
|
|
if (hv.length() < 2){
|
|
|
hv = "0" + hv;
|
|
|
}
|
|
|
- mConfigShow[i] = hv;
|
|
|
- hv = Integer.toHexString(mBytes[i + 1] & 0xff);
|
|
|
+ mConfigShow[j] = hv;
|
|
|
+ hv = Integer.toHexString(buff.array()[i + 1] & 0xff);
|
|
|
if (hv.length() < 2){
|
|
|
hv = "0" + hv;
|
|
|
}
|
|
|
- mConfigShow[i + 1] = hv;
|
|
|
+ mConfigShow[j + 1] = hv;
|
|
|
}
|
|
|
- if(checksum % 256 == 0) //校验和正确
|
|
|
+ if((short)checksum == 0) //校验和正确
|
|
|
{
|
|
|
mShow.setText("Cfg Checksum is correct!");
|
|
|
}
|
|
@@ -3935,7 +4139,7 @@ public class Config extends AppCompatActivity
|
|
|
|
|
|
addressH = (byte)0x81;
|
|
|
addressL = (byte)0x40;
|
|
|
- iicRead(addressH,addressL,mBytes,32);
|
|
|
+ iicRead(addressH,addressL,mBytes,16);
|
|
|
tvVenderID.setText("VenderID:"+Integer.toString(mBytes[10] & 0xFF));
|
|
|
|
|
|
mSendCfg.setEnabled(true);
|
|
@@ -4170,12 +4374,12 @@ public class Config extends AppCompatActivity
|
|
|
iicByteData[2] = 0x0f; //no command
|
|
|
iicByteData[3] = addressHigh;
|
|
|
iicByteData[4] = addressLow;
|
|
|
- iicByteData[5] = 0x00;
|
|
|
- iicByteData[6] = 63; //length 一次接收63个数据
|
|
|
+ iicByteData[5] = (byte)(length>>8);
|
|
|
+ iicByteData[6] = (byte)(length);// 一次接收63个数据
|
|
|
|
|
|
- for (int j = 7; j < 64; j++) {
|
|
|
- iicWriteData[j] = 0x00;
|
|
|
- }
|
|
|
+ //for (int j = 7; j < 64; j++) {
|
|
|
+ // iicWriteData[j] = 0x00;
|
|
|
+ //}
|
|
|
|
|
|
int address1 = ((addressHigh&0xff)<<8);
|
|
|
int address2 = addressLow&0xff;
|
|
@@ -4183,34 +4387,23 @@ public class Config extends AppCompatActivity
|
|
|
|
|
|
int sendTimes = length/63 + 1; //预计是向下取整,所以+1
|
|
|
|
|
|
- for (int k = 0; k < sendTimes; k++) {
|
|
|
- int finalOffset = k*63; //每次只能发57bytes数据
|
|
|
- int offset = k*64;
|
|
|
+ i = mUsbDeviceConnection.bulkTransfer(mUsbEndpointOut, iicByteData, 0x40, 100);
|
|
|
|
|
|
- if(length - (finalOffset ) < 63) {
|
|
|
-
|
|
|
- iicByteData[6] = (byte) (length - (finalOffset)); //length
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- iicByteData[6] = 63;
|
|
|
- }
|
|
|
-
|
|
|
- //发送读取命令
|
|
|
- i = mUsbDeviceConnection.bulkTransfer(mUsbEndpointOut, iicByteData, 0, 0x40, 100);
|
|
|
- if (i != 0x40)
|
|
|
- return false; //传输失败
|
|
|
- // SystemClock.sleep(1);
|
|
|
+ if (i != 0x40) {
|
|
|
+ editname.setText("iicWrite Failed");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
|
|
|
+ int offset = 0;
|
|
|
+ for (int k = 0; k < sendTimes; k++) {
|
|
|
//接收数据
|
|
|
i = mUsbDeviceConnection.bulkTransfer(mUsbEndpointIn, wBuffer, offset, 0x40, 3000);
|
|
|
|
|
|
if (i != 0x40) {
|
|
|
- editname.setText("iicWrite Failed");
|
|
|
+ editname.setText("iicRead Failed");
|
|
|
return false;
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
+ offset+=64;
|
|
|
address = address + 63;
|
|
|
iicByteData[3] = (byte)(address>>8);
|
|
|
iicByteData[4] = (byte)address;
|