1#!/usr/bin/env python3
2
3"""
4Copyright (c) 2024 Silicon Laboratories Inc.
5
6SPDX-License-Identifier: Apache-2.0
7"""
8
9import argparse
10import os
11import shutil
12import tempfile
13import subprocess
14from pathlib import Path
15
16
17paths = [
18    "components/common/inc/sl_additional_status.h",
19    "components/common/inc/sl_constants.h",
20    "components/common/inc/sl_ieee802_types.h",
21    "components/common/inc/sl_ip_types.h",
22    "components/common/inc/sl_utility.h",
23    "components/common/src/sl_utility.c",
24    "components/device/silabs/si91x/mcu/core/chip/config/sl_board_configuration.h",
25    "components/device/silabs/si91x/mcu/core/chip/inc/base_types.h",
26    "components/device/silabs/si91x/mcu/core/chip/inc/data_types.h",
27    "components/device/silabs/si91x/mcu/core/chip/inc/em_device.h",
28    "components/device/silabs/si91x/mcu/core/chip/inc/rsi_ccp_common.h",
29    "components/device/silabs/si91x/mcu/core/chip/inc/rsi_error.h",
30    "components/device/silabs/si91x/mcu/core/chip/inc/rsi_ps_ram_func.h",
31    "components/device/silabs/si91x/mcu/core/chip/inc/rsi_system_config.h",
32    "components/device/silabs/si91x/mcu/core/chip/inc/si91x_device.h",
33    "components/device/silabs/si91x/mcu/core/chip/inc/si91x_mvp.h",
34    "components/device/silabs/si91x/mcu/core/chip/inc/system_si91x.h",
35    "components/device/silabs/si91x/mcu/core/chip/src/iPMU_prog/iPMU_dotc/ipmu_apis.c",
36    "components/device/silabs/si91x/mcu/core/chip/src/iPMU_prog/iPMU_dotc/rsi_system_config_917.c",
37    "components/device/silabs/si91x/mcu/core/chip/src/rsi_deepsleep_soc.c",
38    "components/device/silabs/si91x/mcu/core/chip/src/system_si91x.c",
39    "components/device/silabs/si91x/mcu/core/config/rsi_ccp_user_config.h",
40    "components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_Common.h",
41    "components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_I2C.h",
42    "components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_SAI.h",
43    "components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_SPI.h",
44    "components/device/silabs/si91x/mcu/drivers/cmsis_driver/CMSIS/Driver/Include/Driver_USART.h",
45    "components/device/silabs/si91x/mcu/drivers/cmsis_driver/config/RTE_Device_917.h",
46    "components/device/silabs/si91x/mcu/drivers/cmsis_driver/GSPI.h",
47    "components/device/silabs/si91x/mcu/drivers/cmsis_driver/I2C.h",
48    "components/device/silabs/si91x/mcu/drivers/cmsis_driver/SAI.h",
49    "components/device/silabs/si91x/mcu/drivers/cmsis_driver/SPI.h",
50    "components/device/silabs/si91x/mcu/drivers/cmsis_driver/UDMA.h",
51    "components/device/silabs/si91x/mcu/drivers/cmsis_driver/USART.h",
52    "components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_crc.h",
53    "components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_ct.h",
54    "components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_efuse.h",
55    "components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_egpio.h",
56    "components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_gpdma.h",
57    "components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_pwm.h",
58    "components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_qspi.h",
59    "components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_qspi_proto.h",
60    "components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_rng.h",
61    "components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_timers.h",
62    "components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_udma.h",
63    "components/device/silabs/si91x/mcu/drivers/peripheral_drivers/inc/rsi_udma_wrapper.h",
64    "components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/clock_update.c",
65    "components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/clock_update.h",
66    "components/device/silabs/si91x/mcu/drivers/peripheral_drivers/src/rsi_rng.c",
67    "components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_packing.h",
68    "components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_clks.h",
69    "components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_egpio.h",
70    "components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_power_save.h",
71    "components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_rng.h",
72    "components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_table_si91x.h",
73    "components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_udma.h",
74    "components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_udma_wrapper.h",
75    "components/device/silabs/si91x/mcu/drivers/rom_driver/inc/rsi_rom_ulpss_clk.h",
76    "components/device/silabs/si91x/mcu/drivers/rom_driver/src/rsi_rom_table_si91x.c",
77    "components/device/silabs/si91x/mcu/drivers/service/clock_manager/inc/sl_si91x_clock_manager.h",
78    "components/device/silabs/si91x/mcu/drivers/service/clock_manager/src/sl_si91x_clock_manager.c",
79    "components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_ipmu.h",
80    "components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_pll.h",
81    "components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_power_save.h",
82    "components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_processor_sensor.h",
83    "components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_reg_spi.h",
84    "components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_retention.h",
85    "components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_temp_sensor.h",
86    "components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_time_period.h",
87    "components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_ulpss_clk.h",
88    "components/device/silabs/si91x/mcu/drivers/systemlevel/inc/rsi_wwdt.h",
89    "components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_ipmu.c",
90    "components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_pll.c",
91    "components/device/silabs/si91x/mcu/drivers/systemlevel/src/rsi_ulpss_clk.c",
92    "components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_driver_gpio.h",
93    "components/device/silabs/si91x/mcu/drivers/unified_api/inc/sl_si91x_driver_gpio.h",
94    "components/device/silabs/si91x/mcu/drivers/unified_api/src/sl_si91x_driver_gpio.c",
95    "components/device/silabs/si91x/mcu/drivers/unified_peripheral_drivers/inc/sl_si91x_gpio_common.h",
96    "components/device/silabs/si91x/mcu/drivers/unified_peripheral_drivers/inc/sl_si91x_gpio.h",
97    "components/device/silabs/si91x/mcu/drivers/unified_peripheral_drivers/inc/sl_si91x_peripheral_gpio.h",
98    "components/device/silabs/si91x/mcu/drivers/unified_peripheral_drivers/src/sl_si91x_peripheral_gpio.c",
99    "components/device/silabs/si91x/wireless/ahb_interface/inc/rsi_m4.h",
100    "components/device/silabs/si91x/wireless/ahb_interface/inc/rsi_os.h",
101    "components/device/silabs/si91x/wireless/ahb_interface/inc/rsi_pkt_mgmt.h",
102    "components/device/silabs/si91x/wireless/ahb_interface/inc/rsi_wisemcu_hardware_setup.h",
103    "components/device/silabs/si91x/wireless/ahb_interface/inc/sl_device.h",
104    "components/device/silabs/si91x/wireless/ahb_interface/inc/sli_siwx917_soc.h",
105    "components/device/silabs/si91x/wireless/ahb_interface/inc/sli_siwx917_timer.h",
106    "components/device/silabs/si91x/wireless/ahb_interface/src/rsi_hal_mcu_m4_ram.c",
107    "components/device/silabs/si91x/wireless/ahb_interface/src/rsi_hal_mcu_m4_rom.c",
108    "components/device/silabs/si91x/wireless/ahb_interface/src/sli_siwx917_soc.c",
109    "components/device/silabs/si91x/wireless/ahb_interface/src/sl_platform.c",
110    "components/device/silabs/si91x/wireless/ahb_interface/src/sl_platform_wireless.c",
111    "components/device/silabs/si91x/wireless/ahb_interface/src/sl_si91x_bus.c",
112    "components/device/silabs/si91x/wireless/asynchronous_socket/inc/sl_si91x_socket.h",
113    "components/device/silabs/si91x/wireless/asynchronous_socket/src/sl_si91x_socket.c",
114    "components/device/silabs/si91x/wireless/ble/inc/rsi_ble_apis.h",
115    "components/device/silabs/si91x/wireless/ble/inc/rsi_ble_common_config.h",
116    "components/device/silabs/si91x/wireless/ble/inc/rsi_ble.h",
117    "components/device/silabs/si91x/wireless/ble/inc/rsi_bt_common_apis.h",
118    "components/device/silabs/si91x/wireless/ble/inc/rsi_bt_common_config.h",
119    "components/device/silabs/si91x/wireless/ble/inc/rsi_bt_common.h",
120    "components/device/silabs/si91x/wireless/ble/inc/rsi_common_apis.h",
121    "components/device/silabs/si91x/wireless/ble/inc/rsi_common.h",
122    "components/device/silabs/si91x/wireless/ble/inc/rsi_user.h",
123    "components/device/silabs/si91x/wireless/ble/inc/rsi_utils.h",
124    "components/device/silabs/si91x/wireless/ble/inc/sl_si91x_ble.h",
125    "components/device/silabs/si91x/wireless/ble/src/rsi_bt_ble.c",
126    "components/device/silabs/si91x/wireless/ble/src/rsi_common_apis.c",
127    "components/device/silabs/si91x/wireless/ble/src/rsi_utils.c",
128    "components/device/silabs/si91x/wireless/host_mcu/si91x/siwx917_soc_ncp_host.c",
129    "components/device/silabs/si91x/wireless/inc/sl_rsi_utility.h",
130    "components/device/silabs/si91x/wireless/inc/sl_si91x_constants.h",
131    "components/device/silabs/si91x/wireless/inc/sl_si91x_core_utilities.h",
132    "components/device/silabs/si91x/wireless/inc/sl_si91x_driver.h",
133    "components/device/silabs/si91x/wireless/inc/sl_si91x_host_interface.h",
134    "components/device/silabs/si91x/wireless/inc/sl_si91x_protocol_types.h",
135    "components/device/silabs/si91x/wireless/inc/sl_si91x_status.h",
136    "components/device/silabs/si91x/wireless/inc/sl_si91x_types.h",
137    "components/device/silabs/si91x/wireless/inc/sl_wifi_device.h",
138    "components/device/silabs/si91x/wireless/memory/malloc_buffers.c",
139    "components/device/silabs/si91x/wireless/sl_net/inc/sl_net_rsi_utility.h",
140    "components/device/silabs/si91x/wireless/sl_net/inc/sl_net_si91x.h",
141    "components/device/silabs/si91x/wireless/sl_net/inc/sl_net_si91x_integration_handler.h",
142    "components/device/silabs/si91x/wireless/sl_net/src/sl_net_rsi_utility.c",
143    "components/device/silabs/si91x/wireless/sl_net/src/sl_net_si91x_callback_framework.c",
144    "components/device/silabs/si91x/wireless/sl_net/src/sl_net_si91x_integration_handler.c",
145    "components/device/silabs/si91x/wireless/sl_net/src/sl_si91x_net_credentials.c",
146    "components/device/silabs/si91x/wireless/sl_net/src/sl_si91x_net_internal_stack.c",
147    "components/device/silabs/si91x/wireless/socket/inc/sl_bsd_utility.h",
148    "components/device/silabs/si91x/wireless/socket/inc/sl_si91x_socket_callback_framework.h",
149    "components/device/silabs/si91x/wireless/socket/inc/sl_si91x_socket_constants.h",
150    "components/device/silabs/si91x/wireless/socket/inc/sl_si91x_socket_types.h",
151    "components/device/silabs/si91x/wireless/socket/inc/sl_si91x_socket_utility.h",
152    "components/device/silabs/si91x/wireless/socket/src/sl_si91x_socket_utility.c",
153    "components/device/silabs/si91x/wireless/src/sl_rsi_utility.c",
154    "components/device/silabs/si91x/wireless/src/sl_si91x_callback_framework.c",
155    "components/device/silabs/si91x/wireless/src/sl_si91x_driver.c",
156    "components/device/silabs/si91x/wireless/threading/sli_si91x_multithreaded.c",
157    "components/protocol/wifi/inc/sl_wifi_callback_framework.h",
158    "components/protocol/wifi/inc/sl_wifi_constants.h",
159    "components/protocol/wifi/inc/sl_wifi_credentials.h",
160    "components/protocol/wifi/inc/sl_wifi.h",
161    "components/protocol/wifi/inc/sl_wifi_host_interface.h",
162    "components/protocol/wifi/inc/sl_wifi_types.h",
163    "components/protocol/wifi/si91x/sl_wifi.c",
164    "components/protocol/wifi/src/sl_wifi_basic_credentials.c",
165    "components/protocol/wifi/src/sl_wifi_callback_framework.c",
166    "components/service/bsd_socket/si91x_socket/sl_si91x_socket_support.h",
167    "components/service/network_manager/inc/sl_net_constants.h",
168    "components/service/network_manager/inc/sl_net_dns.h",
169    "components/service/network_manager/inc/sl_net.h",
170    "components/service/network_manager/inc/sl_net_ip_types.h",
171    "components/service/network_manager/inc/sl_net_types.h",
172    "components/service/network_manager/inc/sl_net_wifi_types.h",
173    "components/service/network_manager/si91x/sl_net_si91x.c",
174    "components/service/network_manager/src/sl_net_basic_credentials.c",
175    "components/service/network_manager/src/sl_net_basic_profiles.c",
176    "components/service/network_manager/src/sl_net.c",
177    "components/service/network_manager/src/sl_net_credentials.c",
178    "resources/defaults/sl_net_default_values.h",
179    "resources/defaults/sl_wifi_region_db_config.h",
180]
181
182def copy_files(src: Path, dst: Path, paths: list[str]) -> None:
183    for path in paths:
184        for f in src.glob(path):
185            if not os.path.exists(f):
186                print(f"Invalid path: {f}")
187                continue
188            destfile = dst / f.relative_to(src)
189            if os.path.exists(destfile):
190                continue
191            print(f"Import {f.relative_to(src)}")
192            destfile.parent.mkdir(parents=True, exist_ok=True)
193            shutil.copy(f, destfile)
194
195if __name__ == "__main__":
196    parser = argparse.ArgumentParser()
197    parser.add_argument("sdk", type=Path,
198                        help="Source WiseConnect directory")
199    parser.add_argument("--dest", "-d", type=Path,
200                        help="store the result somewhere else than \"wiseconnect/\" directory")
201    parser.add_argument("--overwrite", "-f", action="store_true",
202                        help="Remove DEST before to continue")
203    args = parser.parse_args()
204
205    if args.dest:
206        dst = args.dest
207    else:
208        dst = (Path(__file__).parent.parent / "wiseconnect").resolve()
209
210    if args.overwrite:
211        shutil.rmtree(dst)
212    copy_files(args.sdk, dst, paths)
213
214