Skip to content

Commit 852c879

Browse files
j8xixo12pakls
andauthored
[genio] several bug fixes for multiple devices and interop (project-chip#22951)
* Report exchanged MTU size to core for BLE transaction * Add mdns refresh after IP address update * Migrate MatterPostAttributeChangeCallback() to current prototype * Discriminator as gatts device name * Get wifi mac address by filogic wifi opmode mode * Update submodule genio-matter-bsp, lwip Co-authored-by: Anthony Liu <anthony.liu@mediatek.com>
1 parent 14bd7d3 commit 852c879

File tree

6 files changed

+46
-10
lines changed

6 files changed

+46
-10
lines changed

examples/lighting-app/genio/src/ZclCallbacks.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
using namespace ::chip;
3232
using namespace ::chip::app::Clusters;
3333

34-
void MatterPostAttributeChangeCallback(const chip::app::ConcreteAttributePath & attributePath, uint8_t mask, uint8_t type,
35-
uint16_t size, uint8_t * value)
34+
void MatterPostAttributeChangeCallback(const chip::app::ConcreteAttributePath & attributePath, uint8_t type, uint16_t size,
35+
uint8_t * value)
3636
{
3737
ClusterId clusterId = attributePath.mClusterId;
3838
AttributeId attributeId = attributePath.mAttributeId;

src/platform/mt793x/BLEManagerImpl.cpp

+10-3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
#undef BT_ENABLE_HCI_SNOOP_LOG
3030

31+
#include <platform/CommissionableDataProvider.h>
3132
#include <platform/internal/BLEManager.h>
3233

3334
#include "FreeRTOS.h"
@@ -328,8 +329,11 @@ bool BLEManagerImpl::CloseConnection(BLE_CONNECTION_OBJECT conId)
328329

329330
uint16_t BLEManagerImpl::GetMTU(BLE_CONNECTION_OBJECT conId) const
330331
{
331-
ChipLogProgress(DeviceLayer, "GetMTU (con %u), returning 247", conId);
332-
return 247;
332+
uint16_t mtu = (uint16_t) bt_gattc_get_mtu(conId);
333+
334+
ChipLogProgress(DeviceLayer, "GetMTU (con %u), returning %u", conId, mtu);
335+
336+
return mtu;
333337
}
334338

335339
#define INDICATION_BUFFER_LENGTH (300)
@@ -543,8 +547,11 @@ CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
543547

544548
if (!mFlags.Has(Flags::kDeviceNameSet))
545549
{
550+
uint16_t discriminator = 0;
551+
err = GetCommissionableDataProvider()->GetSetupDiscriminator(discriminator);
552+
546553
snprintf(gatts_device_name, sizeof(gatts_device_name), "%s%04" PRIX32, CHIP_DEVICE_CONFIG_BLE_DEVICE_NAME_PREFIX,
547-
(uint32_t) 0);
554+
static_cast<uint32_t>(discriminator));
548555

549556
gatts_device_name[kMaxDeviceNameLength] = 0;
550557
}

src/platform/mt793x/ConnectivityManagerImpl_WIFI.cpp

+11
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
#include <lwip/nd6.h>
3232
#include <lwip/netif.h>
3333

34+
#include "mdns.h"
35+
3436
#if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
3537
#include <platform/internal/GenericConnectivityManagerImpl_BLE.ipp>
3638
#endif
@@ -111,6 +113,15 @@ void ConnectivityManagerImpl::_OnWiFiPlatformEvent(const ChipDeviceEvent * event
111113
{
112114
ChipLogProgress(DeviceLayer, "%s", __func__);
113115

116+
if (event->Type == DeviceEventType::kInternetConnectivityChange)
117+
{
118+
if (event->InternetConnectivityChange.IPv4 == kConnectivity_Established ||
119+
event->InternetConnectivityChange.IPv6 == kConnectivity_Established)
120+
{
121+
mdns_update_interface();
122+
}
123+
}
124+
114125
if (event->Type != DeviceEventType::kMtkWiFiEvent)
115126
return;
116127

src/platform/mt793x/MT793XConfig.cpp

+21-3
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@
2222
* platforms based on the MediaTek SDK.
2323
*/
2424
/* this file behaves like a config.h, comes first */
25+
#include <functional>
26+
2527
#include <platform/internal/CHIPDeviceLayerInternal.h>
2628

29+
#include <platform/PlatformManager.h>
2730
#include <platform/mt793x/MT793XConfig.h>
2831

2932
#include <lib/core/CHIPEncoding.h>
@@ -147,9 +150,24 @@ CHIP_ERROR MT793XConfig::ReadConfigValue(Key key, uint32_t & val)
147150
err = CHIP_ERROR_TIMEOUT;
148151
SuccessOrExit(err);
149152
}
150-
// Get NVDM item
151-
err = MapNvdmStatus(nvdm_read_data_item(key.Namespace, key.Name, (uint8_t *) &val, &len));
152-
SuccessOrExit(err);
153+
154+
if (key.Namespace == MT793XConfig::kConfigKey_SetupDiscriminator.Namespace &&
155+
key.Name == MT793XConfig::kConfigKey_SetupDiscriminator.Name)
156+
{
157+
uint8_t mac_addr[WIFI_MAC_ADDRESS_LENGTH] = { 0 };
158+
auto mFilogicCtx = PlatformMgrImpl().mFilogicCtx;
159+
160+
filogic_wifi_mac_addr_get_sync(mFilogicCtx, FILOGIC_WIFI_OPMODE_STA, mac_addr);
161+
162+
val = (*(reinterpret_cast<uint32_t *>(mac_addr))) & 0xFFF;
163+
err = CHIP_NO_ERROR;
164+
}
165+
else
166+
{
167+
// Get NVDM item
168+
err = MapNvdmStatus(nvdm_read_data_item(key.Namespace, key.Name, (uint8_t *) &val, &len));
169+
SuccessOrExit(err);
170+
}
153171
exit:
154172
OnExit();
155173
return err;

third_party/mt793x_sdk/lwip

0 commit comments

Comments
 (0)