huangcm
2025-04-26 552bdb764ece01f57e1f174432a69f0af3b2c141
fix(DeviceTest): fix Ethernet Test pro
3 files modified
1 files renamed
119 ■■■■■ changed files
android/device/softwinner/ceres-c3/ceres_c3.mk 2 ●●● patch | view | raw | blame | history
android/vendor/aw/public/package/apk/DeviceTest_V1/assets/DeviceTestConfig_kickpi-k5c.xml 10 ●●●● patch | view | raw | blame | history
android/vendor/aw/public/package/apk/DeviceTest_V1/src/com/DeviceTest/EthernetTestActivity.java 105 ●●●●● patch | view | raw | blame | history
android/vendor/aw/public/package/apk/DeviceTest_V1/src/com/DeviceTest/USBDeviceTestActivity.java 2 ●●●●● patch | view | raw | blame | history
android/device/softwinner/ceres-c3/ceres_c3.mk
....@@ -233,7 +233,7 @@
233233 $(LOCAL_PATH)/media/bootanimation.zip:system/media/bootanimation.zip
234234
235235 PRODUCT_COPY_FILES += \
236
- vendor/aw/public/package/apk/DeviceTest_V1/assets/DeviceTestConfig_K5C.xml:vendor/etc/DeviceTestConfig.xml
236
+ vendor/aw/public/package/apk/DeviceTest_V1/assets/DeviceTestConfig_$(DTS_NAME).xml:vendor/etc/DeviceTestConfig.xml
237237
238238 # preferred activity
239239 PRODUCT_COPY_FILES += \
android/vendor/aw/public/package/apk/DeviceTest_V1/assets/DeviceTestConfig_K5C.xml
similarity index 89%rename from android/vendor/aw/public/package/apk/DeviceTest_V1/assets/DeviceTestConfig_K5C.xmlrename to android/vendor/aw/public/package/apk/DeviceTest_V1/assets/DeviceTestConfig_kickpi-k5c.xml
....@@ -15,19 +15,19 @@
1515
1616 <TestCase class_name="WifiTestActivity" test_group="TEST ALL" first_test="yc">Wifi</TestCase>
1717 <TestCase class_name="BluetoothTestActivity" test_group="TEST ALL">Bluetooth</TestCase>
18
- <!-- <TestCase class_name="SdCardTestActivity" test_group="TEST ALL" first_test="yc">SD Card</TestCase> -->
18
+ <TestCase class_name="SdCardTestActivity" test_group="TEST ALL" first_test="yc">SD Card</TestCase>
1919 <!-- <TestCase class_name="PCIETestActivity" test_group="TEST ALL">PCIE</TestCase> -->
2020 <!-- <TestCase class_name="SATATestActivity" test_group="TEST ALL">SATA</TestCase> -->
2121 <!-- <TestCase class_name="Ethernet2TestActivity" test_group="TEST ALL">Ethernet0</TestCase> -->
22
- <!-- <TestCase class_name="EthernetTestActivity" test_group="TEST ALL">Ethernet1</TestCase> -->
23
- <!-- <TestCase class_name="MobileNetTestActivity" test_group="TEST ALL">MobileNet</TestCase> -->
22
+ <TestCase class_name="EthernetTestActivity" test_group="TEST ALL">Ethernet</TestCase>
23
+ <TestCase class_name="MobileNetTestActivity" test_group="TEST ALL">MobileNet</TestCase>
2424
2525 <TestCase class_name="InfomationActivity" test_group="TEST ALL" first_test="yc">DDR/eMMC</TestCase>
2626 <TestCase class_name="TouchTestActivity" test_group="TEST ALL">Touch</TestCase>
2727 <TestCase class_name="SpeakerTestActivity" test_group="TEST ALL" first_test="yc">Speaker</TestCase>
2828 <!-- <TestCase class_name="PhoneMicTestActivity" test_group="TEST ALL" first_test="yc">MIC</TestCase> -->
29
- <!-- <TestCase class_name="USBDeviceTestActivity" test_group="TEST ALL">USB Device</TestCase> -->
30
- <!-- <TestCase class_name="RTCTestActivity" test_group="TEST ALL">RTC</TestCase> -->
29
+ <TestCase class_name="USBDeviceTestActivity" test_group="TEST ALL">USB Device</TestCase>
30
+ <TestCase class_name="RTCTestActivity" test_group="TEST ALL">RTC</TestCase>
3131 <!-- <TestCase class_name="CameraBackTestActivity" test_group="TEST ALL" first_test="yc">Camera_only</TestCase> -->
3232 <!-- <TestCase class_name="RtcTestActivity" test_group="TEST ALL">RTC</TestCase> -->
3333 <!-- TestCase class_name="GpsLocationTestActivity" test_group="TEST 2">GPS Location</TestCase> -->
android/vendor/aw/public/package/apk/DeviceTest_V1/src/com/DeviceTest/EthernetTestActivity.java
....@@ -40,6 +40,8 @@
4040 import java.net.URL;
4141 import java.net.URLConnection;
4242 import java.util.ArrayList;
43
+import java.net.Inet4Address;
44
+import android.net.RouteInfo;
4345
4446 import static android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN;
4547 import static android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
....@@ -71,6 +73,7 @@
7173 private boolean mReadyToGetEthInfo;
7274 private boolean mStop;
7375
76
+ private ConnectivityManager mConnectivityManager;
7477 private EthernetManager mEthManager;
7578 private BroadcastReceiver mReceiver;
7679 private String mIfaceName;
....@@ -151,6 +154,8 @@
151154 ControlButtonUtil.initControlButtonView(this);
152155 findViewById(R.id.btn_Pass).setVisibility(View.INVISIBLE);
153156 findViewById(R.id.btn_Fail).setVisibility(View.INVISIBLE);
157
+
158
+ mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
154159
155160 mEthManager = (EthernetManager) getSystemService(Context.ETHERNET_SERVICE);
156161 if (null == mEthManager) {
....@@ -242,12 +247,110 @@
242247 }
243248 IpAssignment mode = ipConfiguration.getIpAssignment();
244249 if (mode == IpAssignment.DHCP || mode == IpAssignment.UNASSIGNED) {
245
- getEthInfoFromDhcp();
250
+ getEthInfoFromDhcp_V1();
246251 } else if (mode == IpAssignment.STATIC) {
247252 getEthInfoFromStaticIp();
248253 }
249254 }
250255
256
+ public static String intToNetmask(int prefixLength) {
257
+ if (prefixLength < 0 || prefixLength > 32) {
258
+ throw new IllegalArgumentException("Prefix length must be between 0 and 32");
259
+ }
260
+ StringBuilder netmask = new StringBuilder();
261
+ int[] parts = new int[4];
262
+ // 计算每一部分的值
263
+ for (int i = 0; i < 4; i++) {
264
+ if (prefixLength >= 8) {
265
+ parts[i] = 255;
266
+ prefixLength -= 8;
267
+ } else if (prefixLength > 0) {
268
+ parts[i] = 256 - (1 << (8 - prefixLength));
269
+ prefixLength = 0;
270
+ } else {
271
+ parts[i] = 0;
272
+ }
273
+ }
274
+ // 构建点分十进制字符串
275
+ for (int i = 0; i < 4; i++) {
276
+ netmask.append(parts[i]);
277
+ if (i < 3) {
278
+ netmask.append(".");
279
+ }
280
+ }
281
+ return netmask.toString();
282
+ }
283
+
284
+ private void getEthInfoFromDhcp_V1() {
285
+ int network = ConnectivityManager.TYPE_ETHERNET;
286
+ String mMacPreference = mConnectivityManager.getNetworkInfo(network).getExtraInfo();
287
+
288
+ final LinkProperties linkProperties = mConnectivityManager.getLinkProperties(network);
289
+ for (LinkAddress linkAddress : linkProperties.getLinkAddresses()) { //set ipaddress.
290
+ if (linkAddress.getAddress() instanceof Inet4Address) {
291
+ String mgetHostAddress = linkAddress.getAddress().getHostAddress();
292
+ String netMask = intToNetmask(linkAddress.getPrefixLength());
293
+ Log.v(TAG, "mgetHostAddress " + mgetHostAddress);
294
+ Log.v(TAG, "netMask " + netMask);
295
+ mEthIpAddress = mgetHostAddress;
296
+ mEthNetmask = netMask;
297
+ break;
298
+ }
299
+ }
300
+
301
+ String dns1 = null;
302
+ String dns2 = null;
303
+ int dnsCount = 0;
304
+ for (InetAddress inetAddress:linkProperties.getDnsServers()) {
305
+ if (0 == dnsCount) {
306
+ dns1 = inetAddress.getHostAddress().toString();
307
+ if (inetAddress instanceof Inet4Address) {
308
+ dns1 = inetAddress.getHostAddress().toString();
309
+ } else {
310
+ dns1 = "0.0.0.0";
311
+ }
312
+ }
313
+ if (1 == dnsCount) {
314
+ dns2 = inetAddress.getHostAddress().toString();
315
+ if (inetAddress instanceof Inet4Address) {
316
+ dns2 = inetAddress.getHostAddress().toString();
317
+ } else {
318
+ dns2 = "0.0.0.0";
319
+ }
320
+ }
321
+ dnsCount++;
322
+ }
323
+
324
+ mEthdns1 = dns1;
325
+ if (dnsCount > 1) {
326
+ mEthdns2 = dns2;
327
+ } else {
328
+ dns2 = "0.0.0.0";
329
+ mEthdns2 = dns2;
330
+ }
331
+
332
+ String Route = null;
333
+ for (RouteInfo route:linkProperties.getRoutes()) {
334
+ if (route.isIPv4Default()) {
335
+ Route = route.getGateway().toString();
336
+ break;
337
+ }
338
+ }
339
+ if (Route != null) {
340
+ String[] RouteStr = Route.split("/");
341
+ mEthGateway = RouteStr[1];
342
+ } else {
343
+ mEthGateway = "0.0.0.0";
344
+ }
345
+ Log.v(TAG, "mIfaceName " + mIfaceName);
346
+ Log.v(TAG, "mEthIpAddress " + mEthIpAddress);
347
+ Log.v(TAG, "mEthNetmask " + mEthNetmask);
348
+ Log.v(TAG, "mEthGateway " + mEthGateway);
349
+ Log.v(TAG, "mEthdns1 " + mEthdns1);
350
+ Log.v(TAG, "mEthdns2 " + mEthdns2);
351
+
352
+ }
353
+
251354 public void getEthInfoFromDhcp() throws Exception {
252355 boolean isSdkAfterO = Build.VERSION.SDK_INT >= ConfigUtil.ANDROID_SDK_VERSION_P;
253356 String tempIpInfo;
android/vendor/aw/public/package/apk/DeviceTest_V1/src/com/DeviceTest/USBDeviceTestActivity.java
....@@ -151,6 +151,8 @@
151151 }
152152 }
153153
154
+ // for k5c
155
+ usbNum = usbNum - 2;
154156
155157 return usbNum;
156158 }