Skip to content

Commit 9e57208

Browse files
mkardous-silabsrestyled-commitsjmartinez-silabs
authored
[SIlabs] Refactor GetMacAddress function and initial clean up of the Notify functions (project-chip#36693)
* Rename WifiEvent to WifiPlatformEvent * Refactor Notify function and associated data structures * Rename mac address function * Refactor Mac Address handling * Fix wf200 init * Restyled by clang-format * add init value workaroudn * Update src/platform/silabs/wifi/wiseconnect-abstraction/WiseconnectInterfaceAbstraction.h Co-authored-by: Junior Martinez <67972863+jmartinez-silabs@users.noreply.github.com> * start enums at 0 --------- Co-authored-by: Restyled.io <commits@restyled.io> Co-authored-by: Junior Martinez <67972863+jmartinez-silabs@users.noreply.github.com>
1 parent 5395249 commit 9e57208

17 files changed

+345
-441
lines changed

examples/platform/silabs/efr32/BUILD.gn

+2-1
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,8 @@ source_set("efr32-common") {
174174
"${silabs_common_plat_dir}/syscalls_stubs.cpp",
175175
]
176176

177-
if (chip_enable_pw_rpc || chip_build_libshell || enable_openthread_cli) {
177+
if (chip_enable_pw_rpc || chip_build_libshell || enable_openthread_cli ||
178+
sl_uart_log_output) {
178179
sources += [ "${silabs_common_plat_dir}/uart.cpp" ]
179180
}
180181

examples/platform/silabs/uart.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ extern "C" {
5353
#endif
5454
#include "sl_uartdrv_instances.h"
5555
#if SL_WIFI
56-
#include <platform/silabs/wifi/wf200/platform/spi_multiplex.h>
56+
#include <platform/silabs/wifi/ncp/spi_multiplex.h>
5757
#endif // SL_WIFI
5858
#ifdef SL_CATALOG_UARTDRV_EUSART_PRESENT
5959
#include "sl_uartdrv_eusart_vcom_config.h"

src/platform/silabs/CHIPDevicePlatformEvent.h

-20
Original file line numberDiff line numberDiff line change
@@ -63,32 +63,12 @@ struct ChipDevicePlatformEvent final
6363
#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION
6464
struct
6565
{
66-
wfx_event_base_t eventBase;
6766
union
6867
{
6968
sl_wfx_generic_message_t genericMsgEvent;
7069
sl_wfx_startup_ind_t startupEvent;
7170
sl_wfx_connect_ind_t connectEvent;
7271
sl_wfx_disconnect_ind_t disconnectEvent;
73-
74-
/*
75-
* NOT CURRENTLY USED
76-
*Some structs might be bigger in size than the one we use
77-
* so we reduce the union size by commenting them out.
78-
* Keep for possible future implementation.
79-
*/
80-
81-
// sl_wfx_generic_ind_t genericEvent;
82-
// sl_wfx_exception_ind_t exceptionEvent;
83-
// sl_wfx_error_ind_t errorEvent;
84-
// sl_wfx_received_ind_t receivedEvent;
85-
// sl_wfx_scan_result_ind_t scanResultEvent;
86-
// sl_wfx_scan_complete_ind_t scanCompleteEvent;
87-
// sl_wfx_start_ap_ind_t startApEvent;
88-
// sl_wfx_stop_ap_ind_t stopApEvent;
89-
// sl_wfx_ap_client_connected_ind_t apClientConnectedEvent;
90-
// sl_wfx_ap_client_rejected_ind_t apClientRejectedEvent;
91-
// sl_wfx_ap_client_disconnected_ind_t apClientDisconnectedEvent;
9272
} data;
9373
} WFXSystemEvent;
9474
#endif

src/platform/silabs/ConfigurationManagerImpl.cpp

+3-4
Original file line numberDiff line numberDiff line change
@@ -313,11 +313,10 @@ void ConfigurationManagerImpl::DoFactoryReset(intptr_t arg)
313313
#ifdef SL_WIFI
314314
CHIP_ERROR ConfigurationManagerImpl::GetPrimaryWiFiMACAddress(uint8_t * buf)
315315
{
316-
sl_wfx_mac_address_t macaddr;
317-
wfx_get_wifi_mac_addr(SL_WFX_STA_INTERFACE, &macaddr);
318-
memcpy(buf, &macaddr.octet[0], sizeof(macaddr.octet));
316+
VerifyOrReturnError(buf != nullptr, CHIP_ERROR_INVALID_ARGUMENT);
319317

320-
return CHIP_NO_ERROR;
318+
MutableByteSpan byteSpan(buf, kPrimaryMACAddressLength);
319+
return GetMacAddress(SL_WFX_STA_INTERFACE, byteSpan);
321320
}
322321
#endif
323322

src/platform/silabs/ConnectivityManagerImpl_WIFI.cpp

+29-44
Original file line numberDiff line numberDiff line change
@@ -81,60 +81,45 @@ void ConnectivityManagerImpl::_OnPlatformEvent(const ChipDeviceEvent * event)
8181
// Handle Wfx wifi events...
8282
if (event->Type == DeviceEventType::kWFXSystemEvent)
8383
{
84-
if (event->Platform.WFXSystemEvent.eventBase == WIFI_EVENT)
84+
85+
switch (event->Platform.WFXSystemEvent.data.genericMsgEvent.header.id)
8586
{
86-
switch (event->Platform.WFXSystemEvent.data.genericMsgEvent.header.id)
87+
case to_underlying(WifiEvent::kStartUp):
88+
ChipLogProgress(DeviceLayer, "WIFI_EVENT_STA_START");
89+
DriveStationState();
90+
break;
91+
case to_underlying(WifiEvent::kConnect):
92+
ChipLogProgress(DeviceLayer, "WIFI_EVENT_STA_CONNECTED");
93+
if (mWiFiStationState == kWiFiStationState_Connecting)
8794
{
88-
case SL_WFX_STARTUP_IND_ID:
89-
ChipLogProgress(DeviceLayer, "WIFI_EVENT_STA_START");
90-
DriveStationState();
91-
break;
92-
case SL_WFX_CONNECT_IND_ID:
93-
ChipLogProgress(DeviceLayer, "WIFI_EVENT_STA_CONNECTED");
94-
if (mWiFiStationState == kWiFiStationState_Connecting)
95+
if (event->Platform.WFXSystemEvent.data.connectEvent.body.status == 0)
9596
{
96-
if (event->Platform.WFXSystemEvent.data.connectEvent.body.status == 0)
97-
{
98-
ChangeWiFiStationState(kWiFiStationState_Connecting_Succeeded);
99-
}
100-
else
101-
{
102-
ChangeWiFiStationState(kWiFiStationState_Connecting_Failed);
103-
}
97+
ChangeWiFiStationState(kWiFiStationState_Connecting_Succeeded);
10498
}
105-
DriveStationState();
106-
break;
107-
case SL_WFX_DISCONNECT_IND_ID:
108-
ChipLogProgress(DeviceLayer, "WIFI_EVENT_STA_DISCONNECTED");
109-
if (mWiFiStationState == kWiFiStationState_Connecting)
99+
else
110100
{
111101
ChangeWiFiStationState(kWiFiStationState_Connecting_Failed);
112102
}
113-
DriveStationState();
114-
break;
115-
default:
116-
break;
117103
}
118-
}
119-
else if (event->Platform.WFXSystemEvent.eventBase == IP_EVENT)
120-
{
121-
switch (event->Platform.WFXSystemEvent.data.genericMsgEvent.header.id)
104+
DriveStationState();
105+
break;
106+
case to_underlying(WifiEvent::kDisconnect):
107+
ChipLogProgress(DeviceLayer, "WIFI_EVENT_STA_DISCONNECTED");
108+
if (mWiFiStationState == kWiFiStationState_Connecting)
122109
{
123-
case IP_EVENT_STA_GOT_IP:
124-
ChipLogProgress(DeviceLayer, "IP_EVENT_STA_GOT_IP");
125-
UpdateInternetConnectivityState();
126-
break;
127-
case IP_EVENT_STA_LOST_IP:
128-
ChipLogProgress(DeviceLayer, "IP_EVENT_STA_LOST_IP");
129-
UpdateInternetConnectivityState();
130-
break;
131-
case IP_EVENT_GOT_IP6:
132-
ChipLogProgress(DeviceLayer, "IP_EVENT_GOT_IP6");
133-
UpdateInternetConnectivityState();
134-
break;
135-
default:
136-
break;
110+
ChangeWiFiStationState(kWiFiStationState_Connecting_Failed);
137111
}
112+
DriveStationState();
113+
break;
114+
115+
case to_underlying(WifiEvent::kGotIPv4):
116+
case to_underlying(WifiEvent::kLostIP):
117+
case to_underlying(WifiEvent::kGotIPv6):
118+
ChipLogProgress(DeviceLayer, "IP Change Event");
119+
UpdateInternetConnectivityState();
120+
break;
121+
default:
122+
break;
138123
}
139124
}
140125
}

src/platform/silabs/PlatformManagerImpl.cpp

+33-57
Original file line numberDiff line numberDiff line change
@@ -141,71 +141,47 @@ void PlatformManagerImpl::_Shutdown()
141141
#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION
142142
// This function needs to be global so it can be used from the platform implementation without depending on the platfrom itself.
143143
// This is a workaround to avoid a circular dependency.
144-
void HandleWFXSystemEvent(wfx_event_base_t eventBase, sl_wfx_generic_message_t * eventData)
144+
void HandleWFXSystemEvent(sl_wfx_generic_message_t * eventData)
145145
{
146146
using namespace chip;
147147
using namespace chip::DeviceLayer;
148148

149149
ChipDeviceEvent event;
150150
memset(&event, 0, sizeof(event));
151-
event.Type = DeviceEventType::kWFXSystemEvent;
152-
event.Platform.WFXSystemEvent.eventBase = eventBase;
151+
event.Type = DeviceEventType::kWFXSystemEvent;
153152

154-
if (eventBase == WIFI_EVENT)
153+
switch (eventData->header.id)
155154
{
156-
switch (eventData->header.id)
157-
{
158-
case SL_WFX_STARTUP_IND_ID:
159-
memcpy(&event.Platform.WFXSystemEvent.data.startupEvent, eventData,
160-
sizeof(event.Platform.WFXSystemEvent.data.startupEvent));
161-
break;
162-
case SL_WFX_CONNECT_IND_ID:
163-
memcpy(&event.Platform.WFXSystemEvent.data.connectEvent, eventData,
164-
sizeof(event.Platform.WFXSystemEvent.data.connectEvent));
165-
break;
166-
case SL_WFX_DISCONNECT_IND_ID:
167-
memcpy(&event.Platform.WFXSystemEvent.data.disconnectEvent, eventData,
168-
sizeof(event.Platform.WFXSystemEvent.data.disconnectEvent));
169-
break;
170-
// case SL_WFX_RECEIVED_IND_ID:
171-
// memcpy(&event.Platform.WFXSystemEvent.data.receivedEvent, eventData,
172-
// sizeof(event.Platform.WFXSystemEvent.data.receivedEvent));
173-
// break;
174-
// case SL_WFX_GENERIC_IND_ID:
175-
// memcpy(&event.Platform.WFXSystemEvent.data.genericEvent, eventData,
176-
// sizeof(event.Platform.WFXSystemEvent.data.genericEvent));
177-
// break;
178-
// case SL_WFX_EXCEPTION_IND_ID:
179-
// memcpy(&event.Platform.WFXSystemEvent.data.exceptionEvent, eventData,
180-
// sizeof(event.Platform.WFXSystemEvent.data.exceptionEvent));
181-
// break;
182-
// case SL_WFX_ERROR_IND_ID:
183-
// memcpy(&event.Platform.WFXSystemEvent.data.errorEvent, eventData,
184-
// sizeof(event.Platform.WFXSystemEvent.data.errorEvent));
185-
// break;
186-
default:
187-
break;
188-
}
189-
}
190-
else if (eventBase == IP_EVENT)
191-
{
192-
switch (eventData->header.id)
193-
{
194-
case IP_EVENT_STA_GOT_IP:
195-
memcpy(&event.Platform.WFXSystemEvent.data.genericMsgEvent, eventData,
196-
sizeof(event.Platform.WFXSystemEvent.data.genericMsgEvent));
197-
break;
198-
case IP_EVENT_GOT_IP6:
199-
memcpy(&event.Platform.WFXSystemEvent.data.genericMsgEvent, eventData,
200-
sizeof(event.Platform.WFXSystemEvent.data.genericMsgEvent));
201-
break;
202-
case IP_EVENT_STA_LOST_IP:
203-
memcpy(&event.Platform.WFXSystemEvent.data.genericMsgEvent, eventData,
204-
sizeof(event.Platform.WFXSystemEvent.data.genericMsgEvent));
205-
break;
206-
default:
207-
break;
208-
}
155+
// TODO: Work around until we unify the data structures behind a Matter level common structure
156+
#if WF200_WIFI
157+
case SL_WFX_STARTUP_IND_ID:
158+
#endif
159+
case to_underlying(WifiEvent::kStartUp):
160+
memcpy(&event.Platform.WFXSystemEvent.data.startupEvent, eventData,
161+
sizeof(event.Platform.WFXSystemEvent.data.startupEvent));
162+
// TODO: This is a workaround until we unify the Matter Data structures
163+
event.Platform.WFXSystemEvent.data.startupEvent.header.id = to_underlying(WifiEvent::kStartUp);
164+
break;
165+
166+
case to_underlying(WifiEvent::kConnect):
167+
memcpy(&event.Platform.WFXSystemEvent.data.connectEvent, eventData,
168+
sizeof(event.Platform.WFXSystemEvent.data.connectEvent));
169+
break;
170+
171+
case to_underlying(WifiEvent::kDisconnect):
172+
memcpy(&event.Platform.WFXSystemEvent.data.disconnectEvent, eventData,
173+
sizeof(event.Platform.WFXSystemEvent.data.disconnectEvent));
174+
break;
175+
176+
case to_underlying(WifiEvent::kGotIPv4):
177+
case to_underlying(WifiEvent::kLostIP):
178+
case to_underlying(WifiEvent::kGotIPv6):
179+
memcpy(&event.Platform.WFXSystemEvent.data.genericMsgEvent, eventData,
180+
sizeof(event.Platform.WFXSystemEvent.data.genericMsgEvent));
181+
break;
182+
183+
default:
184+
break;
209185
}
210186

211187
// TODO: We should add error processing here

src/platform/silabs/PlatformManagerImpl.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#include <cmsis_os2.h>
3232

3333
#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION
34-
void HandleWFXSystemEvent(wfx_event_base_t eventBase, sl_wfx_generic_message_t * eventData);
34+
void HandleWFXSystemEvent(sl_wfx_generic_message_t * eventData);
3535
#endif
3636

3737
namespace chip {

src/platform/silabs/rs911x/BLEManagerImpl.cpp

-3
Original file line numberDiff line numberDiff line change
@@ -699,9 +699,6 @@ CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
699699

700700
mFlags.Clear(Flags::kRestartAdvertising);
701701

702-
sl_wfx_mac_address_t macaddr;
703-
wfx_get_wifi_mac_addr(SL_WFX_STA_INTERFACE, &macaddr);
704-
705702
status = sInstance.SendBLEAdvertisementCommand();
706703

707704
if (status == RSI_SUCCESS)

0 commit comments

Comments
 (0)