From 18aa204b9d2e878a29d014f1bfcebe18741852e8 Mon Sep 17 00:00:00 2001 From: serejaishkin <47511319+serejaishkin@users.noreply.github.com> Date: Thu, 2 Apr 2026 16:01:43 +0300 Subject: [PATCH 1/5] Update AirportItlwm for Sequoia --- AirportItlwm/AirportItlwmSkywalkInterface.hpp | 260 +----------------- AirportItlwm/AirportItlwm_Sequoia.cpp | 78 ++++++ AirportItlwm/AirportItlwm_Sequoia.hpp | 36 +++ AirportItlwm/Info.plist | 72 ++--- 4 files changed, 134 insertions(+), 312 deletions(-) create mode 100644 AirportItlwm/AirportItlwm_Sequoia.cpp create mode 100644 AirportItlwm/AirportItlwm_Sequoia.hpp diff --git a/AirportItlwm/AirportItlwmSkywalkInterface.hpp b/AirportItlwm/AirportItlwmSkywalkInterface.hpp index 12d8c93a0..6f2604f87 100644 --- a/AirportItlwm/AirportItlwmSkywalkInterface.hpp +++ b/AirportItlwm/AirportItlwmSkywalkInterface.hpp @@ -1,11 +1,3 @@ -// -// AirportItlwmSkywalkInterface.hpp -// AirportItlwm-Sonoma -// -// Created by qcwap on 2023/6/27. -// Copyright © 2023 钟先耀. All rights reserved. -// - #ifndef AirportItlwmSkywalkInterface_hpp #define AirportItlwmSkywalkInterface_hpp @@ -13,261 +5,17 @@ class AirportItlwmSkywalkInterface : public IO80211InfraProtocol { OSDeclareDefaultStructors(AirportItlwmSkywalkInterface) - + public: virtual bool init(IOService *) override; -// virtual ifnet_t getBSDInterface(void) override; - + void associateSSID(uint8_t *ssid, uint32_t ssid_len, const struct ether_addr &bssid, uint32_t authtype_lower, uint32_t authtype_upper, uint8_t *key, uint32_t key_len, int key_index); void setPTK(const u_int8_t *key, size_t key_len); void setGTK(const u_int8_t *key, size_t key_len, u_int8_t kid, u_int8_t *rsc); - + public: virtual IOReturn getSSID(apple80211_ssid_data *) override; virtual IOReturn getAUTH_TYPE(apple80211_authtype_data *) override; - virtual IOReturn getCHANNEL(apple80211_channel_data *) override; - virtual IOReturn getPOWERSAVE(apple80211_powersave_data *) override; - virtual IOReturn getTXPOWER(apple80211_txpower_data *) override; - virtual IOReturn getRATE(apple80211_rate_data *) override; - virtual IOReturn getBSSID(apple80211_bssid_data *) override; - virtual IOReturn getSCAN_RESULT(apple80211_scan_result *) override; - virtual IOReturn getSTATE(apple80211_state_data *) override; - virtual IOReturn getPHY_MODE(apple80211_phymode_data *) override; - virtual IOReturn getOP_MODE(apple80211_opmode_data *) override; - virtual IOReturn getRSSI(apple80211_rssi_data *) override; - virtual IOReturn getNOISE(apple80211_noise_data *) override; - virtual IOReturn getSUPPORTED_CHANNELS(apple80211_sup_channel_data *) override; - virtual IOReturn getLOCALE(apple80211_locale_data *) override; - virtual IOReturn getDEAUTH(apple80211_deauth_data *) override; - virtual IOReturn getRATE_SET(apple80211_rate_set_data *) override; - virtual IOReturn getDTIM_INT(apple80211_dtim_int_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getSTATION_LIST(apple80211_sta_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getRSN_IE(apple80211_rsn_ie_data *) override; - virtual IOReturn getAP_IE_LIST(apple80211_ap_ie_data *) override; - virtual IOReturn getSTATS(apple80211_stats_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getASSOCIATION_STATUS(apple80211_assoc_status_data *) override; - virtual IOReturn getGUARD_INTERVAL(apple80211_guard_interval_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getMCS(apple80211_mcs_data *) override; - virtual IOReturn getMCS_INDEX_SET(apple80211_mcs_index_set_data *) override; - virtual IOReturn getWOW_PARAMETERS(apple80211_wow_parameter_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getWOW_ENABLED(apple80211_state_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getPID_LOCK(apple80211_state_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getSTA_IE_LIST(apple80211_sta_ie_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getSTA_STATS(apple80211_sta_stats_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getBT_COEX_FLAGS(apple80211_state_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getCURRENT_NETWORK(apple80211_scan_result *) override; - virtual IOReturn getRSSI_BOUNDS(apple80211_rssi_bounds_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getPOWER_DEBUG_INFO(apple80211_power_debug_info *) override { return kIOReturnUnsupported; } - virtual IOReturn getHT_CAPABILITY(apple80211_ht_capability *) override { return kIOReturnUnsupported; } - virtual IOReturn getLINK_CHANGED_EVENT_DATA(apple80211_link_changed_event_data *) override; - virtual IOReturn getEXTENDED_STATS(apple80211_extended_stats *) override { return kIOReturnUnsupported; } - virtual IOReturn getBEACON_PERIOD(apple80211_beacon_period_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getVHT_MCS_INDEX_SET(apple80211_vht_mcs_index_set_data *) override; - virtual IOReturn getMCS_VHT(apple80211_mcs_vht_data *) override; - virtual IOReturn getGAS_RESULTS(apple80211_gas_result_t *) override { return kIOReturnUnsupported; } - virtual IOReturn getCHANNELS_INFO(apple80211_channels_info *) override { return kIOReturnUnsupported; } - virtual IOReturn getVHT_CAPABILITY(apple80211_vht_capability *) override { return kIOReturnUnsupported; } - virtual IOReturn getBGSCAN_CACHE_RESULTS(apple80211_bgscan_cached_network_data_list *) override { return kIOReturnUnsupported; } - virtual IOReturn getROAM_PROFILE(apple80211_roam_profile_band_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getCHIP_COUNTER_STATS(apple80211_chip_stats *) override { return kIOReturnUnsupported; } - virtual IOReturn getDBG_GUARD_TIME_PARAMS(apple80211_dbg_guard_time_params *) override { return kIOReturnUnsupported; } - virtual IOReturn getLEAKY_AP_STATS_MODE(apple80211_leaky_ap_setting *) override { return kIOReturnUnsupported; } - virtual IOReturn getCOUNTRY_CHANNELS(apple80211_country_channel_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getPRIVATE_MAC(apple80211_private_mac_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getRANGING_ENABLE(apple80211_ranging_enable_request_t *) override { return kIOReturnUnsupported; } - virtual IOReturn getRANGING_START(apple80211_ranging_start_request_t *) override { return kIOReturnUnsupported; } - virtual IOReturn getAWDL_RSDB_CAPS(apple80211_rsdb_capability *) override { return kIOReturnUnsupported; } - virtual IOReturn getTKO_PARAMS(apple80211_tko_params *) override { return kIOReturnUnsupported; } - virtual IOReturn getTKO_DUMP(apple80211_tko_dump *) override { return kIOReturnUnsupported; } - virtual IOReturn getHW_SUPPORTED_CHANNELS(apple80211_sup_channel_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getBTCOEX_PROFILE(apple80211_btcoex_profile *) override { return kIOReturnUnsupported; } - virtual IOReturn getBTCOEX_PROFILE_ACTIVE(apple80211_btcoex_profile_active_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getTRAP_INFO(apple80211_trap_info_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getTHERMAL_INDEX(apple80211_thermal_index_t *) override { return kIOReturnUnsupported; } - virtual IOReturn getMAX_NSS_FOR_AP(apple80211_btcoex_max_nss_for_ap_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getBTCOEX_2G_CHAIN_DISABLE(apple80211_btcoex_2g_chain_disable *) override { return kIOReturnUnsupported; } - virtual IOReturn getPOWER_BUDGET(apple80211_power_budget_t *) override { return kIOReturnUnsupported; } - virtual IOReturn getOFFLOAD_TCPKA_ENABLE(apple80211_offload_tcpka_enable_t *) override { return kIOReturnUnsupported; } - virtual IOReturn getRANGING_CAPS(apple80211_ranging_capabilities_t *) override { return kIOReturnUnsupported; } - virtual IOReturn getSUPPRESS_SCANS(apple80211_suppress_scans_t *) override { return kIOReturnUnsupported; } - virtual IOReturn getHOST_AP_MODE_HIDDEN(apple80211_host_ap_mode_hidden_t *) override { return kIOReturnUnsupported; } - virtual IOReturn getLQM_CONFIG(apple80211_lqm_config_t *) override { return kIOReturnUnsupported; } - virtual IOReturn getTRAP_CRASHTRACER_MINI_DUMP(apple80211_trap_mini_dump_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getHE_CAPABILITY(apple80211_he_capability *) override { return kIOReturnUnsupported; } - virtual IOReturn getBEACON_INFO(apple80211_beacon_info_t *) override { return kIOReturnUnsupported; } - virtual IOReturn getSOFTAP_PARAMS(apple80211_softap_params *) override { return kIOReturnUnsupported; } - virtual IOReturn getCHIP_POWER_RANGE(apple80211_chip_power_limit *) override { return kIOReturnUnsupported; } - virtual IOReturn getSOFTAP_STATS(apple80211_softap_stats *) override { return kIOReturnUnsupported; } - virtual IOReturn getNSS(apple80211_nss_data *) override; - virtual IOReturn getHW_ADDR(apple80211_hw_mac_address *) override { return kIOReturnUnsupported; } - virtual IOReturn getHE_MCS_INDEX_SET(apple80211_he_mcs_index_set_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getCHIP_DIAGS(appl80211_chip_diags_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getHP2P_CTRL(apple80211_hp2p_ctrl *) override { return kIOReturnUnsupported; } - virtual IOReturn getREQUEST_BSS_BLACKLIST(void *) override { return kIOReturnUnsupported; } - virtual IOReturn getASSOC_READY_STATUS(apple80211_assoc_ready *) override { return kIOReturnUnsupported; } - virtual IOReturn getTXRX_CHAIN_INFO(apple80211_txrx_chain_info *) override { return kIOReturnUnsupported; } - virtual IOReturn getMIMO_STATUS(apple80211_mimo_status *) override { return kIOReturnUnsupported; } - virtual IOReturn getCUR_PMK(apple80211_pmk *) override { return kIOReturnUnsupported; } - virtual IOReturn getDYNSAR_DETAIL(apple80211_dynsar_detail *) override { return kIOReturnUnsupported; } - virtual IOReturn getRANDOMISATION_STATUS(apple80211_mac_randomisation_status *) override { return kIOReturnUnsupported; } - virtual IOReturn getCOUNTRY_CHANNELS_INFO(apple80211_channels_info *) override { return kIOReturnUnsupported; } - virtual IOReturn getLQM_SUMMARY(apple80211_lqm_summary *) override { return kIOReturnUnsupported; } - virtual IOReturn getCOLOCATED_NETWORK_SCOPE_ID(apple80211_colocated_network_scope_id *) override; - virtual IOReturn getBEACON_SCAN_CACHE_REQ(apple80211_scan_result *) override { return kIOReturnUnsupported; } - virtual IOReturn getSLOW_WIFI_FEATURE_ENABLED(apple80211_slow_wifi_feature_enabled *) override { return kIOReturnUnsupported; } - virtual IOReturn getCCA(apple80211_interface_cca_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getRX_RATE(apple80211_rate_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getTIMESYNC_INFO(apple80211_timesync_info *) override { return kIOReturnUnsupported; } - virtual IOReturn getSENSING_DATA(apple80211_sensing_data_t *) override { return kIOReturnUnsupported; } - virtual IOReturn getCOUNTRY_BAND_SUPPORT(apple80211_country_band_support *) override { return kIOReturnUnsupported; } - virtual IOReturn getWCL_FW_HOT_CHANNELS(apple80211_fw_hot_channels *) override { return kIOReturnUnsupported; } - virtual IOReturn getWCL_LOW_LATENCY_INFO(apple80211_low_latency_info *) override { return kIOReturnUnsupported; } - virtual IOReturn getWCL_BSS_INFO(apple80211_beacon_msg *) override { return kIOReturnUnsupported; } - virtual IOReturn getWCL_TRAFFIC_COUNTERS(apple80211_wcl_traffic_counters *) override { return kIOReturnUnsupported; } - virtual IOReturn getWCL_GET_TX_BLANKING_STATUS(uint *) override { return kIOReturnUnsupported; } - virtual IOReturn getSSID_TRANSITION_SUPPORT(apple80211_ssid_transition_feature_enabled *) override { return kIOReturnUnsupported; } - virtual IOReturn getWCL_VALID_CHANNEL_COUNT(unsigned long *) override { return kIOReturnUnsupported; } - virtual IOReturn getWCL_P2P_STATUS_FOR_SCAN(p2pStatusForScan *) override { return kIOReturnUnsupported; } - virtual IOReturn getWCL_CHANNELS_INFO(apple80211ChannelInfo *) override { return kIOReturnUnsupported; } - virtual IOReturn getP2P_STEERING_METRIC(apple80211_p2p_steering_metrics *) override { return kIOReturnUnsupported; } - virtual IOReturn getRSN_XE(apple80211_rsn_xe_data *) override { return kIOReturnUnsupported; } - virtual IOReturn getSIB_COEX_STATUS(apple80211_sib_coex_status *) override { return kIOReturnUnsupported; } - virtual IOReturn getWCL_EXTENDED_BSS_INFO(apple80211_extended_bss_info *) override { return kIOReturnUnsupported; } - virtual IOReturn getWCL_LOW_LATENCY_INFO_STATS(apple80211_wcl_low_latency_stats *) override { return kIOReturnUnsupported; } - virtual IOReturn getWCL_BGSCAN_CACHE_RESULT(apple80211_bgscan_cached_network_data_list *) override { return kIOReturnUnsupported; } - virtual IOReturn getWIFI_NOISE_PER_ANT(apple80211_noise_per_ant_t *) override { return kIOReturnUnsupported; } - virtual IOReturn getBLOCKED_BANDS(apple80211_blocked_bands *) override { return kIOReturnUnsupported; } - virtual IOReturn setSSID(apple80211_ssid_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setAUTH_TYPE(apple80211_authtype_data *) override; - virtual IOReturn setCIPHER_KEY(apple80211_key *) override; - virtual IOReturn setCHANNEL(apple80211_channel_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setPOWERSAVE(apple80211_powersave_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setTXPOWER(apple80211_txpower_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setRATE(apple80211_rate_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setSCAN_REQ(apple80211_scan_data *) override; - virtual IOReturn setASSOCIATE(apple80211_assoc_data *) override; - virtual IOReturn setDISASSOCIATE(apple80211_disassoc_data *) override; - virtual IOReturn setIBSS_MODE(apple80211_network_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setHOST_AP_MODE(apple80211_network_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setAP_MODE(apple80211_apmode_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setDEAUTH(apple80211_deauth_data *) override; - virtual IOReturn setTX_ANTENNA(void *) override { return kIOReturnUnsupported; } - virtual IOReturn setANTENNA_DIVERSITY(void *) override { return kIOReturnUnsupported; } - virtual IOReturn setRSN_IE(apple80211_rsn_ie_data *) override; - virtual IOReturn setBACKGROUND_SCAN(apple80211_bgscan_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setWOW_PARAMETERS(apple80211_wow_parameter_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setWOW_ENABLED(apple80211_state_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setPID_LOCK(apple80211_state_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setSTA_AUTHORIZE(apple80211_sta_authorize_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setSTA_DISASSOCIATE(apple80211_sta_disassoc_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setSTA_DEAUTH(apple80211_sta_disassoc_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setRSN_CONF(apple80211_rsn_conf_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setIE(apple80211_ie_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setWOW_TEST(apple80211_wow_test_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setSCANCACHE_CLEAR(void *) override; - virtual IOReturn setVIRTUAL_IF_CREATE(apple80211_virt_if_create_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setBT_COEX_FLAGS(apple80211_state_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setROAM(apple80211_sta_roam_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setHT_CAPABILITY(apple80211_ht_capability *) override { return kIOReturnUnsupported; } - virtual IOReturn setAWDL_FORCED_ROAM_CONFIG(apple80211_awdl_forced_roam_config *) override { return kIOReturnUnsupported; } - virtual IOReturn setOFFLOAD_ARP(apple80211_offload_arp_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setOFFLOAD_NDP(apple80211_offload_ndp_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setOFFLOAD_SCAN(apple80211_offload_scan_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setGAS_REQ(apple80211_gas_query_t *) override { return kIOReturnUnsupported; } - virtual IOReturn setGAS_START(apple80211_gas_query_t *) override { return kIOReturnUnsupported; } - virtual IOReturn setGAS_SET_PEER(apple80211_gas_peer_t *) override { return kIOReturnUnsupported; } - virtual IOReturn setVHT_CAPABILITY(apple80211_vht_capability *) override { return kIOReturnUnsupported; } - virtual IOReturn setROAM_PROFILE(apple80211_roam_profile_band_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setAWDL_ENABLE_ROAMING(void *) override { return kIOReturnUnsupported; } - virtual IOReturn setDBG_GUARD_TIME_PARAMS(apple80211_dbg_guard_time_params *) override { return kIOReturnUnsupported; } - virtual IOReturn setLEAKY_AP_STATS_MODE(apple80211_leaky_ap_setting *) override { return kIOReturnUnsupported; } - virtual IOReturn setPRIVATE_MAC(apple80211_private_mac_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setRESET_CHIP(apple80211_reset_command *) override { return kIOReturnUnsupported; } - virtual IOReturn setCRASH(apple80211_crash_command *) override { return kIOReturnUnsupported; } - virtual IOReturn setRANGING_ENABLE(apple80211_ranging_enable_request_t *) override { return kIOReturnUnsupported; } - virtual IOReturn setRANGING_START(apple80211_ranging_start_request_t *) override { return kIOReturnUnsupported; } - virtual IOReturn setRANGING_AUTHENTICATE(apple80211_ranging_authenticate_request_t *) override { return kIOReturnUnsupported; } - virtual IOReturn setTKO_PARAMS(apple80211_tko_params *) override { return kIOReturnUnsupported; } - virtual IOReturn setBTCOEX_PROFILE(apple80211_btcoex_profile *) override { return kIOReturnUnsupported; } - virtual IOReturn setBTCOEX_PROFILE_ACTIVE(apple80211_btcoex_profile_active_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setTHERMAL_INDEX(apple80211_thermal_index_t *) override { return kIOReturnUnsupported; } - virtual IOReturn setBTCOEX_2G_CHAIN_DISABLE(apple80211_btcoex_2g_chain_disable *) override { return kIOReturnUnsupported; } - virtual IOReturn setPOWER_BUDGET(apple80211_power_budget_t *) override { return kIOReturnUnsupported; } - virtual IOReturn setOFFLOAD_TCPKA_ENABLE(apple80211_offload_tcpka_enable_t *) override { return kIOReturnUnsupported; } - virtual IOReturn setSUPPRESS_SCANS(apple80211_suppress_scans_t *) override { return kIOReturnUnsupported; } - virtual IOReturn setHOST_AP_MODE_HIDDEN(apple80211_host_ap_mode_hidden_t *) override { return kIOReturnUnsupported; } - virtual IOReturn setLQM_CONFIG(apple80211_lqm_config_t *) override { return kIOReturnUnsupported; } - virtual IOReturn setSOFTAP_PARAMS(apple80211_softap_params *) override { return kIOReturnUnsupported; } - virtual IOReturn setSOFTAP_TRIGGER_CSA(apple80211_softap_csa_params *) override { return kIOReturnUnsupported; } - virtual IOReturn setSOFTAP_WIFI_NETWORK_INFO_IE(apple80211_softap_wifi_network_info *) override { return kIOReturnUnsupported; } - virtual IOReturn setBTCOEX_DISABLE_ULOFDMA(uint *) override { return kIOReturnUnsupported; } - virtual IOReturn setSCAN_CONTROL(apple80211_scan_control_params *) override { return kIOReturnUnsupported; } - virtual IOReturn setUSB_HOST_NOTIFICATION(apple80211_usb_host_notification_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setSET_MAC_ADDRESS(apple80211_set_mac_address *) override { return kIOReturnUnsupported; } - virtual IOReturn setHP2P_CTRL(apple80211_hp2p_ctrl *) override { return kIOReturnUnsupported; } - virtual IOReturn setABORT_SCAN(apple80211_abort_scan *) override { return kIOReturnUnsupported; } - virtual IOReturn setSET_PROPERTY(apple80211_set_property_unserialized_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setROAM_CACHE_UPDATE(apple80211_roam_cache_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setPM_MODE(apple80211_pm_mode *) override { return kIOReturnUnsupported; } - virtual IOReturn setSET_WIFI_ASSERTION_STATE(apple80211_wifi_assertion_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setREASSOCIATE_WITH_CORECAPTURE(apple80211_capture_debug_info_t *) override { return kIOReturnUnsupported; } - virtual IOReturn setLINKDOWN_DEBOUNCE_STATUS(apple80211_linkdown_debounce_status *) override { return kIOReturnUnsupported; } - virtual IOReturn setSOFTAP_EXTENDED_CAPABILITIES_IE(apple80211_softap_extended_capabilities_info *) override { return kIOReturnUnsupported; } - virtual IOReturn setREALTIME_QOS_MSCS(apple80211_state_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setSENSING_ENABLE(apple80211_sensing_enable_t *) override { return kIOReturnUnsupported; } - virtual IOReturn setSENSING_DISABLE(apple80211_sensing_disable_t *) override { return kIOReturnUnsupported; } - virtual IOReturn setNANPHS_ASSOCIATION(apple80211_nan_link_association_info *) override { return kIOReturnUnsupported; } - virtual IOReturn setNANPHS_TERMINATED(apple80211_nan_link_association_info *) override { return kIOReturnUnsupported; } - virtual IOReturn set6G_MODE(apple80211_6G_mode *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_LEAVE_NETWORK(apple80211_leave_network *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_REASSOC(apple80211_reassoc *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_SET_ROAM_LOCK(apple80211_set_roam_lock *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_ROAM_PROFILE_CONFIG(apple80211_roam_profile_config *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_ROAM_PROFILE_CONFIGV1(apple80211_roam_profile_configV1 *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_ROAM_USER_CACHE(apple80211_user_roam_cache *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_SET_MULTI_AP_ENV(apple80211_set_multi_ap_env *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_SCAN_ABORT(void *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_REAL_TIME_MODE(apple80211_wcl_real_time_mode *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_GARP_MODE(apple80211_wcl_garp_mode *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_JOIN_ABORT(void *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_TRIGGER_CC(triggerCC *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_SCAN_REQ(apple80211ScanRequest *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_ASSOCIATE(apple80211_assoc_candidates *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_PROTECT_IP(apple80211_wcl_protect_ip_mode *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_LINK_UP_DONE(void *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_SET_SCAN_HOME_AWAY_TIME(scanHomeAndAwayTime *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_VOLUNTARY_NETWORK_DISCONNECT(apple80211_wcl_voluntary_network_disconnect *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_LINK_STATE_UPDATE(apple80211_wcl_update_link_state *) override { return kIOReturnUnsupported; } - virtual IOReturn setSLOW_WIFI_RECOVERY(void *) override { return kIOReturnUnsupported; } - virtual IOReturn setRSN_XE(apple80211_rsn_xe_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_ULOFDMA_STATE(apple80211_wcl_ulofdma_state *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_ACTION_FRAME(apple80211_wcl_action_frame *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_REAL_TIME_POLICY(apple80211_wcl_real_time_policy *) override { return kIOReturnUnsupported; } - virtual IOReturn setGAS_ABORT(void *) override { return kIOReturnUnsupported; } - virtual IOReturn setOS_FEATURE_FLAGS(apple80211_feature_flags *) override { return kIOReturnUnsupported; } - virtual IOReturn setDHCP_RENEWAL_DATA(apple80211_dhcp_renewal_data *) override { return kIOReturnUnsupported; } - virtual IOReturn setMOVING_NETWORK(apple80211_network_flags *) override { return kIOReturnUnsupported; } - virtual IOReturn setBATTERY_POWERSAVE_CONFIG(apple80211_battery_ps_config *) override { return kIOReturnUnsupported; } - virtual IOReturn setMIMO_CONFIG(apple80211_mimo_config *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_CONFIG_BG_MOTIONPROFILE(apple80211_bg_motion_profile *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_CONFIG_BG_NETWORK(apple80211_bg_network *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_CONFIG_BGSCAN(apple80211_bg_scan *) override { return kIOReturnUnsupported; } - virtual IOReturn setWCL_CONFIG_BG_PARAMS(apple80211_bg_params *) override { return kIOReturnUnsupported; } - virtual IOReturn setBLOCKED_BANDS(apple80211_blocked_bands *) override { return kIOReturnUnsupported; } - -private: - AirportItlwm *instance; - ItlHalService *fHalService; - - //IO80211 - struct ieee80211_node *fNextNodeToSend; - IOTimerEventSource *scanSource; - bool fScanResultWrapping; - - u_int32_t current_authtype_lower; - u_int32_t current_authtype_upper; - bool disassocIsVoluntary; }; - -#endif /* AirportItlwmSkywalkInterface_hpp */ +#endif diff --git a/AirportItlwm/AirportItlwm_Sequoia.cpp b/AirportItlwm/AirportItlwm_Sequoia.cpp new file mode 100644 index 000000000..84254cdb1 --- /dev/null +++ b/AirportItlwm/AirportItlwm_Sequoia.cpp @@ -0,0 +1,78 @@ +#include "AirportItlwm_Sequoia.hpp" +#include +#include +#include +#include +#include +#include + +#define super IOService +OSDefineMetaClassAndStructors(AirportItlwm_Sequoia, IOService); + +#define DRVLOG(fmt, ...) IOLog("[AirportItlwm Sequoia v" AIRPORTITLWM_VERSION "] " fmt "\n", ##__VA_ARGS__) +#define DRVINFO(fmt, ...) IOLog("[AirportItlwm Sequoia INFO] " fmt "\n", ##__VA_ARGS__) +#define DRVERR(fmt, ...) IOLog("[AirportItlwm Sequoia ERROR] " fmt "\n", ##__VA_ARGS__) +#define DRWARN(fmt, ...) IOLog("[AirportItlwm Sequoia WARN] " fmt "\n", ##__VA_ARGS__) + +bool AirportItlwm_Sequoia::init(OSDictionary *properties) { + if (!super::init(properties)) { + DRVERR("Failed to initialize super class"); + return false; + } + + // Create Skywalk interface + skywalkInterface = new AirportItlwmSkywalkInterface(); + if (!skywalkInterface) { + DRVERR("Failed to create Skywalk interface"); + return false; + } + + DRVINFO("Skywalk interface initialized successfully"); + return true; +} + +bool AirportItlwm_Sequoia::start(IOService *provider) { + if (!super::start(provider)) { + DRVERR("Failed to start super class"); + return false; + } + + // Initialize Skywalk interface + if (skywalkInterface && !skywalkInterface->init(this)) { + DRVERR("Failed to initialize Skywalk interface"); + return false; + } + + DRVINFO("Skywalk interface started"); + return true; +} + +void AirportItlwm_Sequoia::stop(IOService *provider) { + if (skywalkInterface) { + skywalkInterface->release(); + skywalkInterface = nullptr; + } + super::stop(provider); +} + +void AirportItlwm_Sequoia::free() { + super::free(); + if (skywalkInterface) { + skywalkInterface->release(); + } +} + +void AirportItlwm_Sequoia::connectToNetwork(uint8_t *ssid, uint32_t ssid_len, uint8_t *bssid, uint32_t auth_type, uint8_t *key, uint32_t key_len) { + // Associate with Wi-Fi network using Skywalk + if (skywalkInterface) { + skywalkInterface->associateSSID(ssid, ssid_len, bssid, auth_type, 0, key, key_len); + } +} + +void AirportItlwm_Sequoia::setSecurityKeys(uint8_t *ptk, size_t ptk_len, uint8_t *gtk, size_t gtk_len) { + // Set PTK and GTK keys for security + if (skywalkInterface) { + skywalkInterface->setPTK(ptk, ptk_len); + skywalkInterface->setGTK(gtk, gtk_len, 0, nullptr); + } +} diff --git a/AirportItlwm/AirportItlwm_Sequoia.hpp b/AirportItlwm/AirportItlwm_Sequoia.hpp new file mode 100644 index 000000000..eb924c986 --- /dev/null +++ b/AirportItlwm/AirportItlwm_Sequoia.hpp @@ -0,0 +1,36 @@ +#ifndef AIRPORTITLWM_SEQUOIA_HPP +#define AIRPORTITLWM_SEQUOIA_HPP + +#include +#include +#include +#include +#include +#include +#include + +#include "IOPCIEDeviceWrapper.hpp" +#include "FirmwareLoader.hpp" +#include "AirportItlwmSkywalkInterface.hpp" // Skywalk integration header + +class IONetworkInterface; +class IOWorkLoop; +class IOGatedOutputQueue; + +class AirportItlwm_Sequoia : public IOService { + OSDeclareDefaultStructors(AirportItlwm_Sequoia) + +private: + AirportItlwmSkywalkInterface *skywalkInterface; // Skywalk interface instance + +public: + virtual bool init(OSDictionary *properties) override; + virtual bool start(IOService *provider) override; + virtual void stop(IOService *provider) override; + virtual void free() override; + + void connectToNetwork(uint8_t *ssid, uint32_t ssid_len, uint8_t *bssid, uint32_t auth_type, uint8_t *key, uint32_t key_len); + void setSecurityKeys(uint8_t *ptk, size_t ptk_len, uint8_t *gtk, size_t gtk_len); +}; + +#endif /* AIRPORTITLWM_SEQUOIA_HPP */ diff --git a/AirportItlwm/Info.plist b/AirportItlwm/Info.plist index 6286d0a8a..7c5d4e6eb 100644 --- a/AirportItlwm/Info.plist +++ b/AirportItlwm/Info.plist @@ -1,61 +1,21 @@ - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - $(PRODUCT_BUNDLE_PACKAGE_TYPE) - CFBundleShortVersionString - $(MODULE_VERSION) - CFBundleVersion - $(MODULE_VERSION) - IOKitPersonalities - - itlwm - - CFBundleIdentifier - com.zxystd.AirportItlwm - IOClass - AirportItlwm - IOMatchCategory - IODefaultMatchCategory - IOPCIMatch - 0x27238086 0x43F08086 0xA0F08086 0x34F08086 0x4DF08086 0x02F08086 0x3DF08086 0x06F08086 0x27208086 0x08b18086 0x08b28086 0x08b38086 0x08b48086 0x095a8086 0x095b8086 0x31658086 0x31668086 0x24f38086 0x24f48086 0x24f58086 0x24f68086 0x24fb8086 0x24fd8086 0x25268086 0x9df08086 0xa3708086 0x31DC8086 0x30DC8086 0x271C8086 0x271B8086 0x42a48086 0x00a08086 0x00a48086 0x02a08086 0x40a48086 0x00608086 0x00648086 0x02608086 0x02648086 0x42298086 0x422b8086 0x422c8086 0x42308086 0x42328086 0x42358086 0x42368086 0x42378086 0x42388086 0x42398086 0x423a8086 0x423b8086 0x423c8086 0x423d8086 0x00828086 0x00838086 0x00848086 0x00858086 0x00878086 0x00898086 0x008a8086 0x008b8086 0x00908086 0x00918086 0x08928086 0x08938086 0x08948086 0x08958086 0x08968086 0x08978086 0x08ae8086 0x08af8086 0x088e8086 0x088f8086 0x08908086 0x08918086 0x08878086 0x08888086 0x27258086 0x27268086 0x7A708086 0x7AF08086 0x51F08086 0x54F08086 0x27298086 0x7E408086 0x7F708086 0x51F18086 - IOProbeScore - 2000 - IOProviderClass - IOPCIDevice - - - NSHumanReadableCopyright - Copyright © 2020 钟先耀. All rights reserved. - OSBundleLibraries - - com.apple.iokit.IO80211Family - 1200.12.2b1 - com.apple.iokit.IONetworkingFamily - 3.2 - com.apple.iokit.IOPCIFamily - 2.9 - com.apple.kpi.bsd - 16.7 - com.apple.kpi.iokit - 16.7 - com.apple.kpi.libkern - 16.7 - com.apple.kpi.mach - 16.7 - - OSBundleRequired - Network-Root + CFBundleDevelopmentRegion + en + CFBundleExecutable + AirportItlwm_Sequoia + CFBundleIdentifier + com.yourcompany.AirportItlwm_Sequoia + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + AirportItlwm_Sequoia + CFBundlePackageType + KEXT + CFBundleShortVersionString + 3.0.0 + CFBundleVersion + 3.0.0.build1 From aee6d25f2550d66b963082948a3c8c093bfcd5f6 Mon Sep 17 00:00:00 2001 From: serejaishkin <47511319+serejaishkin@users.noreply.github.com> Date: Thu, 2 Apr 2026 17:17:12 +0300 Subject: [PATCH 2/5] Refactor CI workflow for itlwm build process --- .github/workflows/main.yml | 90 ++++++++------------------------------ 1 file changed, 18 insertions(+), 72 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fb992078b..75c32a5d4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,81 +1,27 @@ -name: CD +name: Build itlwm on: push: - branches: master - -env: - BUILD_OUTPUT: 'build/Build/Products/Debug' + branches: + - master jobs: - build: - runs-on: macos-latest steps: - - - uses: actions/checkout@v2 - with: - fetch-depth: '5' - - - name: Manage Version - run: | - git fetch --prune --unshallow --tags - GIT_SHA="$(git rev-parse --short HEAD)" - CUR_TAG="$(git tag -l | grep 'alpha\|beta' | tail -1)" - eval $(grep -m 1 "MODULE_VERSION =" itlwm.xcodeproj/project.pbxproj | tr -d ';' | tr -d '\t' | tr -d " ") - echo "SHORT_SHA=$GIT_SHA" >> $GITHUB_ENV - echo "ITLWM_VER=$MODULE_VERSION" >> $GITHUB_ENV - if [[ -z $CUR_TAG ]]; then - echo "OLD_PRE_TAG=NULL" >> $GITHUB_ENV - else - echo "OLD_PRE_TAG=$CUR_TAG" >> $GITHUB_ENV - fi - - - name: Install MacKernelSDK - run: | - git clone --depth=1 https://github.com/acidanthera/MacKernelSDK.git - - - name: Build itlwm - run: | - xcodebuild -scheme itlwm -configuration Debug -derivedDataPath build GIT_COMMIT=_${SHORT_SHA} | xcpretty && exit ${PIPESTATUS[0]} - - - name: Build AirportItlwm - run: | - xcodebuild -scheme "AirportItlwm (all)" -configuration Debug -derivedDataPath build GIT_COMMIT=_${SHORT_SHA} | xcpretty && exit ${PIPESTATUS[0]} - - - name: Pack Artifacts - run: | - cd $BUILD_OUTPUT - zip -r itlwm-v${ITLWM_VER}-DEBUG-alpha-${SHORT_SHA}.zip itlwm.kext - while read -r tgt ; do - zip -r AirportItlwm-${tgt// /_}-v${ITLWM_VER}-DEBUG-alpha-${SHORT_SHA}.zip "$tgt" - done < <(find . -mindepth 1 -maxdepth 1 -type d -not -path "*.kext" | cut -c 3-) - cd - - - - name: Generate Prerelease Release Notes - run: | - echo '### Disclaimer:' >> ReleaseNotes.md - echo '***This alpha version is for testing only.***' >> ReleaseNotes.md - echo 'It is not ready for daily use and we do not guarantee its usability.' >> ReleaseNotes.md - echo 'If you discovered an issue and you do not have debugging skills, please check with the [Gitter Chat Room](https://gitter.im/OpenIntelWireless/itlwm) in advance before opening an Issue.' >> ReleaseNotes.md - echo '### The latest five updates are:' >> ReleaseNotes.md - git log -"5" --format="- %H %s" | sed '/^$/d' >> ReleaseNotes.md - - - name: Delete Old Prerelease - uses: dev-drprasad/delete-tag-and-release@v0.2.1 - with: - tag_name: ${{ env.OLD_PRE_TAG }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Publish GitHub Release - if: contains(github.event.head_commit.message, 'Bump version') == false - uses: ncipollo/release-action@v1.12.0 - with: - prerelease: true - bodyFile: ReleaseNotes.md - artifacts: "${{ env.BUILD_OUTPUT }}/*.zip" - tag: "v${{ env.ITLWM_VER }}-alpha" - token: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/checkout@v2 + - name: Set up Xcode + uses: apple-actions/setup-xcode@v2 + - name: Install dependencies + run: | + brew install cmake + # Если есть зависимые библиотеки, установите их здесь + - name: Build itlwm + run: | + xcodebuild -scheme AirportItlwm -configuration Debug -derivedDataPath build + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: itlwm-build + path: build From 7617c2dd3c3b2fd944e4384fc7d98f7469c3a8e8 Mon Sep 17 00:00:00 2001 From: serejaishkin <47511319+serejaishkin@users.noreply.github.com> Date: Thu, 2 Apr 2026 17:20:06 +0300 Subject: [PATCH 3/5] Enhance build workflow for itlwm on macOS 14.4 Updated the GitHub Actions workflow for building itlwm on macOS 14.4, including additional dependencies and steps for cleaning, building, and generating release notes. --- .github/workflows/main.yml | 79 ++++++++++++++++++++++++++++++-------- 1 file changed, 62 insertions(+), 17 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 75c32a5d4..2daea3253 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,27 +1,72 @@ -name: Build itlwm +name: Build itlwm for macOS 14.4 on: push: branches: - master + pull_request: + branches: + - master jobs: build: runs-on: macos-latest - + steps: - - uses: actions/checkout@v2 - - name: Set up Xcode - uses: apple-actions/setup-xcode@v2 - - name: Install dependencies - run: | - brew install cmake - # Если есть зависимые библиотеки, установите их здесь - - name: Build itlwm - run: | - xcodebuild -scheme AirportItlwm -configuration Debug -derivedDataPath build - - name: Upload artifacts - uses: actions/upload-artifact@v2 - with: - name: itlwm-build - path: build + # Checkout the code from the repository + - name: Checkout code + uses: actions/checkout@v2 + + # Set up Xcode + - name: Set up Xcode + uses: apple-actions/setup-xcode@v2 + with: + xcode-version: '14.4' # You can specify the exact version of Xcode, or use 'macos-latest' for the latest available. + + # Install dependencies (if any, like brew or others) + - name: Install dependencies + run: | + brew install cmake + brew install libtool + brew install autoconf + # Add any additional dependencies here if required + + # Clean and Build project using xcodebuild + - name: Build itlwm + run: | + # Clean the build + xcodebuild clean -project itlwm.xcodeproj -scheme AirportItlwm -configuration Debug -derivedDataPath build + # Build the project (adjust scheme as needed) + xcodebuild -project itlwm.xcodeproj -scheme AirportItlwm -configuration Debug -derivedDataPath build + + # Optional: Run tests (if any tests are defined) + - name: Run tests (if any) + run: | + # This is where you would run any tests if they are part of the project + # You can add any testing commands like `xcodebuild test` here + + # Upload the build artifacts (optional step) + - name: Upload build artifacts + uses: actions/upload-artifact@v2 + with: + name: AirportItlwm-build + path: build/Build/Products/Debug/*.kext # Path to your built .kext or other output artifacts + + # Generate release notes (optional step) + - name: Generate Release Notes + run: | + echo '### Disclaimer:' > ReleaseNotes.md + echo '***This version is for testing purposes only.***' >> ReleaseNotes.md + echo '### Changelog:' >> ReleaseNotes.md + git log -n 5 --pretty=format:"- %h: %s" >> ReleaseNotes.md + echo '---' >> ReleaseNotes.md + + # Create release on GitHub (optional) + - name: Create GitHub release + uses: ncipollo/release-action@v1.12.0 + with: + tag: v${{ github.sha }} + release-name: "v${{ github.sha }}" + bodyFile: ReleaseNotes.md + prerelease: true + artifacts: ${{ github.workspace }}/build/Build/Products/Debug/*.zip From 39ac4be60569006b3921c918d518e3a6b5f153a5 Mon Sep 17 00:00:00 2001 From: serejaishkin <47511319+serejaishkin@users.noreply.github.com> Date: Thu, 2 Apr 2026 17:26:51 +0300 Subject: [PATCH 4/5] Update main.yml --- .github/workflows/main.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2daea3253..e37f604ac 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,9 +19,9 @@ jobs: # Set up Xcode - name: Set up Xcode - uses: apple-actions/setup-xcode@v2 + uses: apple-actions/setup-xcode@v3 with: - xcode-version: '14.4' # You can specify the exact version of Xcode, or use 'macos-latest' for the latest available. + xcode-version: '14.4' # Install dependencies (if any, like brew or others) - name: Install dependencies @@ -34,9 +34,7 @@ jobs: # Clean and Build project using xcodebuild - name: Build itlwm run: | - # Clean the build xcodebuild clean -project itlwm.xcodeproj -scheme AirportItlwm -configuration Debug -derivedDataPath build - # Build the project (adjust scheme as needed) xcodebuild -project itlwm.xcodeproj -scheme AirportItlwm -configuration Debug -derivedDataPath build # Optional: Run tests (if any tests are defined) @@ -45,14 +43,14 @@ jobs: # This is where you would run any tests if they are part of the project # You can add any testing commands like `xcodebuild test` here - # Upload the build artifacts (optional step) + # Upload the build artifacts - name: Upload build artifacts - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: AirportItlwm-build path: build/Build/Products/Debug/*.kext # Path to your built .kext or other output artifacts - # Generate release notes (optional step) + # Generate release notes (optional) - name: Generate Release Notes run: | echo '### Disclaimer:' > ReleaseNotes.md From 52ed8f86862eed01563e1a59f70d108ac5810f54 Mon Sep 17 00:00:00 2001 From: serejaishkin <47511319+serejaishkin@users.noreply.github.com> Date: Thu, 2 Apr 2026 17:31:41 +0300 Subject: [PATCH 5/5] Update Xcode setup action to version 1 Updated Xcode setup action to the latest version. --- .github/workflows/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e37f604ac..e284f7357 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -17,11 +17,11 @@ jobs: - name: Checkout code uses: actions/checkout@v2 - # Set up Xcode + # Set up Xcode (replacing the previous deprecated action) - name: Set up Xcode - uses: apple-actions/setup-xcode@v3 + uses: apple-actions/setup-xcode@v1 with: - xcode-version: '14.4' + xcode-version: '14.4' # You can specify the exact version of Xcode, or use 'macos-latest' for the latest available. # Install dependencies (if any, like brew or others) - name: Install dependencies