Fix the issue when convert byte to uint16
When convert byte to uint16, if the byte represent a negative number,
the high 8 bit of the uint16 will be all 1, which causes a mismatch.
Same as HIDL, convert byte to unit8 then fill into the uint16
Bug: 263690436
Test: cts SingleDeviceTest
Change-Id: Id9462dce48d2a2558c6b5c104866da66ce951b0e
diff --git a/wifi/aidl/default/aidl_struct_util.cpp b/wifi/aidl/default/aidl_struct_util.cpp
index 22319ae..5e80ff9 100644
--- a/wifi/aidl/default/aidl_struct_util.cpp
+++ b/wifi/aidl/default/aidl_struct_util.cpp
@@ -1718,7 +1718,7 @@
}
*legacy_request = {};
- legacy_request->publish_id = aidl_request.baseConfigs.sessionId;
+ legacy_request->publish_id = static_cast<uint8_t>(aidl_request.baseConfigs.sessionId);
legacy_request->ttl = aidl_request.baseConfigs.ttlSec;
legacy_request->period = aidl_request.baseConfigs.discoveryWindowPeriod;
legacy_request->publish_count = aidl_request.baseConfigs.discoveryCount;
@@ -1860,7 +1860,7 @@
}
*legacy_request = {};
- legacy_request->subscribe_id = aidl_request.baseConfigs.sessionId;
+ legacy_request->subscribe_id = static_cast<uint8_t>(aidl_request.baseConfigs.sessionId);
legacy_request->ttl = aidl_request.baseConfigs.ttlSec;
legacy_request->period = aidl_request.baseConfigs.discoveryWindowPeriod;
legacy_request->subscribe_count = aidl_request.baseConfigs.discoveryCount;
@@ -2007,7 +2007,7 @@
}
*legacy_request = {};
- legacy_request->publish_subscribe_id = aidl_request.discoverySessionId;
+ legacy_request->publish_subscribe_id = static_cast<uint8_t>(aidl_request.discoverySessionId);
legacy_request->requestor_instance_id = aidl_request.peerId;
memcpy(legacy_request->addr, aidl_request.addr.data(), 6);
legacy_request->priority = aidl_request.isHighPriority ? legacy_hal::NAN_TX_PRIORITY_HIGH