Newer
Older
mbed-os / targets / TARGET_Cypress / TARGET_PSOC6 / mtb-pdl-cat1 / personalities / peripheral / connectivity_wifi-1.0.cypersonality
@Dustin Crossman Dustin Crossman on 4 Jun 2021 28 KB Fix file modes.
<?xml version="1.0" encoding="utf-8"?>


<!--****************************************************************************
* \file connectivity_wifi.cypersonality
* \version 1.0.1
*
* \brief
* Personality description file for the WiFi part of Low Power Assistant.
*
********************************************************************************
* \copyright
* Copyright 2019-2020 Cypress Semiconductor Corporation
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*****************************************************************************-->

<Personality id="connectivity_wifi" name="WiFi" version="1.0" path="" xmlns="http://cypress.com/xsd/cyhwpersonality_v1">
  <Dependencies>
    <IpBlock name="43xxx_wifi" />
    <Resource name="wifi\.power" used="true" />
  </Dependencies>
  <ExposedMembers>
  </ExposedMembers>

  <Parameters>
    <ParamDoc id="doc" name="Configuration Help" group="Documentation" default="https://cypresssemiconductorco.github.io/lpa/lpa_api_reference_manual/html/index.html" linkText="Open Low Power Assistant Documentation" visible="true" desc="Open the Low Power Assistant Documentation." />

    <!-- Host wake settings -->
    <ParamBool id="hostWake" name="Enable" group="Host Wake Configuration" default="true" visible="true" editable="true" desc="Enable host wake configuration." />
    <ParamBlock id="hostIRQ" blockType="ioss\.port\.pin" name="Host Device Interrupt Pin" group="Host Wake Configuration" canBeEmpty="true" visible="`${hostWake}`" desc="Select the host pin which is connected to WiFi device's WL_HOST_WAKE signal. The pin must be enabled on the Pins tab to be added as an option to the pull-down menu. If left empty, the HOST_WAKE pin will be unconfigured." >
      <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" >
        <Parameter id="isrTrigger" severity="WARNING" reason="The pin must be configured to generate interrupts on rising or falling edge.">
          <Choice>
            <Option value="CY_GPIO_INTR_RISING"/>
            <Option value="CY_GPIO_INTR_FALLING"/>
          </Choice>
        </Parameter>
      </Constraint>
      <Constraint type="ACCEPT" targetLocation=".*" valid="true" />
    </ParamBlock>

    <ParamChoice id="deviceIRQPin" name="WiFi Device Interrupt Pin" group="Host Wake Configuration" default="CY_WIFI_DEVICE_IRQ_GPIO_0" visible="`${hostWake}`" editable="false" desc="WiFi device GPIO_0 is reserved as host wake-up interrupt request pin (WL_HOST_WAKE).">
      <Entry name="GPIO_0 (WL_HOST_WAKE)" value="CY_WIFI_DEVICE_IRQ_GPIO_0" visible="true" />
    </ParamChoice>
    <ParamBool id="hostIRQConnected" name="hostIRQConnected" group="Internal" default="`${hostIRQ ne &quot;&quot;}`" visible="false" editable="false" desc="True, if HOST_WAKE is connected" />

    <!-- ARP Offload settings -->
    <ParamBool id="arpOffload" name="Enable" group="ARP Offload" default="false" visible="true" editable="true" desc="Enable ARP offload feature." />
    <ParamChoice id="arpResponse" name="ARP Offload Feature(s)" group="ARP Offload" default="0u" visible="`${arpOffload}`" editable="`${arpOffload}`" desc="Select ARP offload feature.">
      <Entry name="Disabled" value="0u" visible="true" />
      <Entry name="Host Auto Reply" value="CY_ARP_OL_HOST_AUTO_REPLY_ENABLE" visible="true" />
      <Entry name="Peer Auto Reply" value="CY_ARP_OL_PEER_AUTO_REPLY_ENABLE" visible="true" />
      <Entry name="Host and Peer Auto Reply" value="CY_ARP_OL_HOST_AUTO_REPLY_ENABLE | CY_ARP_OL_PEER_AUTO_REPLY_ENABLE" visible="true" />
    </ParamChoice>
    <ParamChoice id="arpInSleep" name="ARP Offload When Host Sleeping" group="ARP Offload" default="CY_ARP_OL_PEER_AUTO_REPLY_ENABLE" visible="false" editable="`${arpOffload}`" desc="Respond to ARP requests when sleeping.">
      <Entry name="Disabled" value="0u" visible="true" />
      <Entry name="Peer Auto Reply" value="CY_ARP_OL_PEER_AUTO_REPLY_ENABLE" visible="true" />
    </ParamChoice>
    <ParamBool id="arpSnoopHostIp" name="Snoop Host IP From Traffic When ARP Offload Enabled " group="ARP Offload" default="false" visible="`${arpOffload}`" editable="`${arpOffload}`" desc="The host IP address is snooped from an ARP request. If disabled, the WiFi device will need to be informed of the host IP address when the network interface is configured (statically or dynamically via DHCP)." />
    <ParamRange id="peerAge" name="ARP Offload Cache Entries Expire After (s)" group="ARP Offload" default="1200" min="1" max="4294967295" resolution="1" visible="`${arpOffload}`" editable="`${arpOffload}`" desc="When the ARP cache table is offloaded from the host to the device, table entries are subject to an aging value called peer age." />

    <!-- AWS MQTT Filters -->
    <!-- TLS Configuration -->
    <ParamBool id="configTLS" name="Enable MQTT TLS Filter" group="AWS MQTT Filters" default="false" visible="true" editable="true" desc="Enable AWS MQTT filter for TLS protocol." />
    <ParamString id="configTLSID" name="Filter ID" group="MQTT TLS Filter Configuration" default="0" visible="`${configTLS}`" editable="false" desc="Filter ID." />
    <ParamChoice id="filterTLSAction" name="Action" group="MQTT TLS Filter Configuration" default="CY_PF_ACTION_KEEP" visible="`${configTLS}`" editable="true" desc="Filter can either pass up packets that match the filter to the host device (Keep) or drop them so the host device never gets them (Discard)." >
      <Entry name="Keep" value="CY_PF_ACTION_KEEP" visible="true" />
      <Entry name="Discard" value="CY_PF_ACTION_DISCARD" visible="true" />
    </ParamChoice>
    <ParamChoice id="filterTLSAllow" name="When Active" group="MQTT TLS Filter Configuration" default="CY_PF_ACTIVE_SLEEP | CY_PF_ACTIVE_WAKE" visible="`${configTLS}`" editable="false" desc="Defines when the filter is active." >
      <Entry name="Always" value="CY_PF_ACTIVE_SLEEP | CY_PF_ACTIVE_WAKE" visible="true" />
    </ParamChoice>
    <ParamChoice id="filterTLSProt" name="Protocol" group="MQTT TLS Filter Configuration" default="CY_PF_PROTOCOL_TCP" visible="`${configTLS}`" editable="true" desc="Choose communication protocol." >
      <Entry name="TCP" value="CY_PF_PROTOCOL_TCP" visible="true" />
      <Entry name="UDP" value="CY_PF_PROTOCOL_UDP" visible="true" />
    </ParamChoice>
    <ParamChoice id="filterTLSDir" name="Direction" group="MQTT TLS Filter Configuration" default="PF_PN_PORT_DEST" visible="`${configTLS}`" editable="true" desc="Choose source or destination port." >
      <Entry name="Destination Port" value="PF_PN_PORT_DEST" visible="true" />
      <Entry name="Source Port" value="PF_PN_PORT_SOURCE" visible="true" />
     </ParamChoice>
    <ParamRange id="filterTLSPort" name="Port Number" group="MQTT TLS Filter Configuration" default="8883" min="0" max="65535" resolution="1" visible="`${configTLS}`" editable="false" desc="Port number for TLS protocol filter." />

    <!-- Non TLS Configuration -->
    <ParamBool id="configNonTLS" name="Enable MQTT Filter" group="AWS MQTT Filters" default="false" visible="true" editable="true" desc="Enable AWS MQTT filter for non TLS protocols." />
    <ParamString id="configNonTLSID" name="Filter ID" group="MQTT Filter Configuration" default="`${configTLS ? 1 : 0}`" visible="`${configNonTLS}`" editable="false" desc="Filter ID." />
    <ParamChoice id="filterNonTLSAction" name="Action" group="MQTT Filter Configuration" default="CY_PF_ACTION_KEEP" visible="`${configNonTLS}`" editable="true" desc="Filter can either pass up packets that match the filter to the host device (Keep) or drop them so the host device never gets them (Discard)." >
      <Entry name="Keep" value="CY_PF_ACTION_KEEP" visible="true" />
      <Entry name="Discard" value="CY_PF_ACTION_DISCARD" visible="true" />
    </ParamChoice>
    <ParamChoice id="filterNonTLSAllow" name="When Active" group="MQTT Filter Configuration" default="CY_PF_ACTIVE_SLEEP | CY_PF_ACTIVE_WAKE" visible="`${configNonTLS}`" editable="false" desc="Defines when the filter is active." >
      <Entry name="Always" value="CY_PF_ACTIVE_SLEEP | CY_PF_ACTIVE_WAKE" visible="true" />
    </ParamChoice>
    <ParamChoice id="filterNonTLSProt" name="Protocol" group="MQTT Filter Configuration" default="CY_PF_PROTOCOL_TCP" visible="`${configNonTLS}`" editable="true" desc="Choose communication protocol." >
      <Entry name="TCP" value="CY_PF_PROTOCOL_TCP" visible="true" />
      <Entry name="UDP" value="CY_PF_PROTOCOL_UDP" visible="true" />
    </ParamChoice>
    <ParamChoice id="filterNonTLSDir" name="Direction" group="MQTT Filter Configuration" default="PF_PN_PORT_DEST" visible="`${configNonTLS}`" editable="true" desc="Choose source or destination port." >
      <Entry name="Destination Port" value="PF_PN_PORT_DEST" visible="true" />
      <Entry name="Source Port" value="PF_PN_PORT_SOURCE" visible="true" />
    </ParamChoice>
    <ParamRange id="filterNonTLSPort" name="Port Number" group="MQTT Filter Configuration" default="1883" min="0" max="65535" resolution="1" visible="`${configNonTLS}`" editable="false" desc="Port number for non TLS protocols filter." />

    <ParamBool id="minKeepFilt" name="Add Minimal Set of Keep Filters" group="Packet Filters" default="false" visible="true" editable="true" desc="Create a minimal set of keep filters required for the host to join the network. The set allows ARP, 802_1X Security, DHCP, and DNS. Enabling this option will enable and configure packet filter configurations 0-3." />

    <!-- Packet Filter Configurations -->
    <!-- Minimum Set of Keep Filters to be able to connect to the network:
      - Keep, EtherType 0x806 # Allow ARP
      - Keep, EtherType 0x888e # Allow 802_1X Security
      - Keep, Port Filter: UDP, Dest Port 68 # Allow DHCP
      - Keep, Port Filter: UDP, Source Port 53 # Allow DNS
    Enable and configure the filters when requested -->
    <Repeat count="20">
      <ParamBool id="config$idx_editable" name="Filter Configuration $idx is Editable" group="Internal" default="`${($idx &gt;= 4) || !minKeepFilt}`" visible="false" editable="false" desc="" />
      <ParamBool id="config$idx" name="Enable Filter Configuration $idx" group="Packet Filters" default="`${($idx &lt; 4) &amp;&amp; minKeepFilt}`" visible="true" editable="`${config$idx_editable}`" desc="Enable packet filter configuration $idx." />
      <ParamBool id="config$idx_id" name="Filter ID" group="Packet Filter Configuration $idx" 
        default="`${$idx == 0 ? ((configTLS ? 1 : 0) + (configNonTLS ? 1 : 0)) : 
                               (getParamValue(&quot;config&quot; . ($idx-1) . &quot;_id&quot;) + (getParamValue(&quot;config&quot; . ($idx-1)) ? 1 : 0))}`" visible="`${config$idx}`" editable="false" desc="Filter ID." />

      <ParamChoice id="filter$idx_type" name="Filter Type" group="Packet Filter Configuration $idx" 
        default="`${$idx == 0 || $idx == 1 ? (minKeepFilt ? CY_PF_PORT_ETHER_TYPE_FILTER : CY_PF_PORT_FILTER) :
                                              CY_PF_PORT_FILTER}`" visible="`${config$idx}`" editable="`${config$idx_editable}`" desc="Choose filter type." >
        <Entry name="Port Filter" value="CY_PF_PORT_FILTER" visible="true" />
        <Entry name="Port Filter Block" value="CY_PF_PORT_BLOCK_FILTER" visible="true" />
        <Entry name="Ether Type" value="CY_PF_PORT_ETHER_TYPE_FILTER" visible="true" />
        <Entry name="IP Type" value="CY_PF_PORT_IP_TYPE_FILTER" visible="true" />
      </ParamChoice>
      <ParamBool id="filter$idx_portnum" name="Filter$idx Portnum" group="Internal" default="`${filter$idx_type eq CY_PF_PORT_FILTER || filter$idx_type eq CY_PF_PORT_BLOCK_FILTER}`" visible="false" editable="false" desc="Filter Port Number." />
      <ParamChoice id="filter$idx_action" name="Action" group="Packet Filter Configuration $idx" default="`${CY_PF_ACTION_KEEP}`" visible="`${config$idx}`" editable="`${config$idx_editable}`" desc="The filter can either pass up packets that match the filter to the host device (Keep) or drop them so that the host device never gets them (Discard)." >
        <Entry name="Keep" value="CY_PF_ACTION_KEEP" visible="true" />
        <Entry name="Discard" value="CY_PF_ACTION_DISCARD" visible="true" />
      </ParamChoice>
      <ParamChoice id="filter$idx_allow" name="When Active" group="Packet Filter Configuration $idx" default="CY_PF_ACTIVE_SLEEP | CY_PF_ACTIVE_WAKE" visible="`${config$idx}`" editable="false" desc="Defines when the filter is active." >
        <Entry name="Always" value="CY_PF_ACTIVE_SLEEP | CY_PF_ACTIVE_WAKE" visible="true" />
      </ParamChoice>
      <ParamChoice id="filter$idx_prot" name="Protocol" group="Packet Filter Configuration $idx"
        default="`${$idx == 2 || $idx == 3 ? (minKeepFilt ? CY_PF_PROTOCOL_UDP : CY_PF_PROTOCOL_TCP) :
                                              CY_PF_PROTOCOL_TCP}`" visible="`${config$idx &amp;&amp; filter$idx_portnum}`" editable="`${config$idx_editable}`" desc="Choose the communication protocol." >
        <Entry name="TCP" value="CY_PF_PROTOCOL_TCP" visible="true" />
        <Entry name="UDP" value="CY_PF_PROTOCOL_UDP" visible="true" />
      </ParamChoice>
      <ParamChoice id="filter$idx_dir" name="Direction" group="Packet Filter Configuration $idx" 
      default="`${$idx == 3 ? (minKeepFilt ? PF_PN_PORT_SOURCE : PF_PN_PORT_DEST) :
                              PF_PN_PORT_DEST}`" visible="`${config$idx &amp;&amp; filter$idx_portnum}`" editable="`${config$idx_editable}`" desc="Choose the source or destination port." >
        <Entry name="Destination Port" value="PF_PN_PORT_DEST" visible="true" />
        <Entry name="Source Port" value="PF_PN_PORT_SOURCE" visible="true" />
      </ParamChoice>
      <ParamRange id="filter$idx_ether_type" name="EtherType" group="Packet Filter Configuration $idx" min="2048" max="65535" resolution="1" 
        default="`${toHex($idx == 0 ? (minKeepFilt ? 0x0806 : 0x800) :
                          $idx == 1 ? (minKeepFilt ? 0x888e : 0x800) :
                                       0x800)}`" visible="`${config$idx &amp;&amp; (filter$idx_type eq CY_PF_PORT_ETHER_TYPE_FILTER)}`" editable="`${config$idx_editable}`" desc="Enter a 16-bit ether type value. Example: 0x800 for IP, 0x806 for ARP." />
      <ParamRange id="filter$idx_ip_type" name="IP Protocol" group="Packet Filter Configuration $idx" default="0" min="0" max="255" resolution="1" visible="`${config$idx &amp;&amp; (filter$idx_type eq CY_PF_PORT_IP_TYPE_FILTER)}`" editable="`${config$idx_editable}`" desc="Enter the desired IP protocol number." />
      <ParamRange id="filter$idx_port" name="Port Number" group="Packet Filter Configuration $idx" min="0" max="65535" resolution="1" 
        default="`${$idx == 2 ? (minKeepFilt ? 68 : 1024) :
                    $idx == 3 ? (minKeepFilt ? 53 : 1024) :
                                1024}`" visible="`${config$idx &amp;&amp; filter$idx_portnum}`" editable="`${config$idx_editable}`" desc="Either the single port to be filtered or the beginning of the block of contiguous numbers. When using a block, the starting port must be power of 2." />
      <ParamRange id="filter$idx_end_port" name="Range" group="Packet Filter Configuration $idx" default="1023" min="0" max="65535" resolution="1" visible="`${config$idx &amp;&amp; (filter$idx_type eq CY_PF_PORT_BLOCK_FILTER)}`" editable="`${config$idx_editable}`" desc="Indicates the size of the block of port numbers, must be of the (2^y - 1) form and less than Port Number." />
    </Repeat>

   <!-- TCPKA Offload settings -->
    <ParamBool id="tcpkaOffload" name="Enable" group="TCP Keep Alive Offload" default="false" visible="true" editable="true" desc="Enable TCP Keep Alive offload feature." />
    <ParamRange id="tcpkaInterval" name="Interval (s)" group="TCP Keep Alive Offload" default="20" min="0" max="65535" resolution="1" visible="`${tcpkaOffload}`" editable="`${tcpkaOffload}`" desc="Interval in seconds between keep alive transmissions." />
    <ParamRange id="tcpkaRetryInterval" name="Retry Interval (s)" group="TCP Keep Alive Offload" default="3" min="0" max="65535" resolution="1" visible="`${tcpkaOffload}`" editable="`${tcpkaOffload}`" desc="Interval in seconds to retry a transmission if no keep alive ACK is received." />
    <ParamRange id="tcpkaRetryCount" name="Retry Count" group="TCP Keep Alive Offload" default="3" min="0" max="65535" resolution="1" visible="`${tcpkaOffload}`" editable="`${tcpkaOffload}`" desc="Number of retries to send a keep alive if no ACK is received." />
    <!-- Up to 4 simultaneous connections -->
    <Repeat count="4">
      <ParamRange id="tcpkaSrcPort$idx" name="Source Port" group="Connection $idx Configuration" default="0" min="0" max="65535" resolution="1" visible="`${tcpkaOffload}`" editable="`${tcpkaOffload}`" desc="Source port." />
      <ParamRange id="tcpkaDstPort$idx" name="Destination Port" group="Connection $idx Configuration" default="0" min="0" max="65535" resolution="1" visible="`${tcpkaOffload}`" editable="`${tcpkaOffload}`" desc="Destination port." />
      <ParamString id="tcpkaDstIpAddr$idx" name="Destination IP Address" group="Connection $idx Configuration" default="0.0.0.0" visible="`${tcpkaOffload}`" editable="`${tcpkaOffload}`" desc="Destination IP address." />
    </Repeat>

    <ParamString id="numOfActiveFilters" name="NumOfContexts" group="Internal" default="`${(config0 ? 1 : 0) + (config1 ? 1 : 0) + (config2 ? 1 : 0) + (config3 ? 1 : 0) + (config4 ? 1 : 0) + (config5 ? 1 : 0) + (config6 ? 1 : 0) + (config7 ? 1 : 0) + (config8 ? 1 : 0) + (config9 ? 1 : 0) + (config10 ? 1 : 0) + (config11 ? 1 : 0) + (config12 ? 1 : 0) + (config13 ? 1 : 0) + (config14 ? 1 : 0) + (config15 ? 1 : 0) + (config16 ? 1 : 0) + (config17 ? 1 : 0) + (config18 ? 1 : 0) + (config19 ? 1 : 0) + (configTLS ? 1 : 0) + (configNonTLS ? 1 : 0)}`" visible="false" editable="false" desc="Number of active filter configurations." />
    <ParamBool id="pktFilterEn" name="Packet filters Enabled" group="Internal" default="`${numOfActiveFilters != 0}`" visible="false" editable="false" desc="Are there any filters enabled flag." />
    <ParamString id="longIndent" name="Long Indent" group="Internal" default="&#9;&#9;&#9;" visible="false" editable="false" desc="Long indent for structure generation." />
    <ParamBool id="arpAgentEn" name="ARP Agent Enabled" group="Internal" default="`${(arpResponse ne &quot;0u&quot;) || arpSnoopHostIp}`" visible="false" editable="false" desc="" />
    <ParamString id="arpOflIdx" name="Index of arp_ol in the ol_list" group="Internal" default="`${pktFilterEn ? 1 : 0}`" visible="false" editable="false" desc="" />
    <ParamString id="tcpkaOflIdx" name="Index of tcpka_ol in the ol_list" group="Internal" default="`${arpOflIdx + (arpOffload ? 1 : 0)}`" visible="false" editable="false" desc="" />
  </Parameters>

  <DRCs>
    <DRC type="ERROR" text="Port Number must be of the (2^x) form for Filter Configuration $idx." condition="`${config$idx &amp;&amp; (filter$idx_type eq CY_PF_PORT_BLOCK_FILTER) &amp;&amp; ((filter$idx_port &amp; (filter$idx_port - 1)) != 0)}`" repeatCount="20" paramId="filter$idx_port">
    </DRC>
    <DRC type="ERROR" text="Range must be of the (2^y - 1) form for Filter Configuration $idx." condition="`${config$idx &amp;&amp; (filter$idx_type eq CY_PF_PORT_BLOCK_FILTER) &amp;&amp; (((filter$idx_end_port + 1) &amp; filter$idx_end_port) != 0)}`" repeatCount="20" paramId="filter$idx_end_port">
    </DRC>
    <DRC type="ERROR" text="Range must be less than Port Number for Filter Configuration $idx." condition="`${config$idx &amp;&amp; (filter$idx_type eq CY_PF_PORT_BLOCK_FILTER) &amp;&amp; (filter$idx_end_port &lt; filter$idx_port ? false : true)}`" repeatCount="20" paramId="filter$idx_end_port">
    </DRC>
    <DRC type="INFO" text="Host Device Interrupt Pin must be connected when the system is configured for the Deep Sleep power state." condition="`${hostWake &amp;&amp; !hostIRQConnected}`" paramId="hostIRQ">
    </DRC>
  </DRCs>

  <!-- Generated firmware -->
  <ConfigFirmware>
    <ConfigInclude value="cy_lpa_compat.h" include="true" />
    <ConfigInclude value="cy_lpa_wifi_ol.h" include="true" />
    <ConfigInclude value="cy_lpa_wifi_ol_common.h" include="true" />
    <ConfigInclude value="cy_lpa_wifi_arp_ol.h" include="`${arpOffload}`" />
    <ConfigInclude value="cy_lpa_wifi_pf_ol.h" include="`${pktFilterEn}`" />
    <ConfigInclude value="cy_lpa_wifi_tko_ol.h" include="`${tcpkaOffload}`" />
    <ConfigInclude value="cycfg_pins.h" include="`${hostWake}`" />

    <ConfigDefine name="CYCFG_WIFI_HOST_WAKE_ENABLED" public="true" value="(`${hostIRQConnected ? 1 : 0}`u)" include="`${hostWake}`" preventOverride="false" />
    <ConfigDefine name="CYCFG_ARP_OL_ENABLED" public="false" value="(1u)" include="`${arpOffload}`" preventOverride="false" />
    <ConfigDefine name="CYCFG_PF_OL_ENABLED" public="false" value="(1u)" include="`${pktFilterEn}`" preventOverride="false" />
    <ConfigDefine name="CYCFG_TKO_OL_ENABLED" public="false" value="(1u)" include="`${tcpkaOffload}`" preventOverride="false" />

    <!-- HOST_WAKE Pin Configuration -->
    <ConfigDefine name="CYCFG_WIFI_HOST_WAKE_GPIO" public="true" value="`${hostIRQConnected ? hostIRQ . &quot;_HAL_PORT_PIN&quot; : &quot;CYHAL_NC_PIN_VALUE&quot;}`" include="`${hostWake}`" preventOverride="false" />
    <ConfigDefine name="CYCFG_WIFI_HOST_WAKE_IRQ_EVENT" public="true" value="`${hostIRQConnected ? hostIRQ . &quot;_HAL_IRQ&quot; : &quot;0&quot;}`" include="`${hostWake}`" preventOverride="false" />

    <!-- Address Resolution Protocol (ARP) Offload Configuration -->
    <ConfigDefine name="CY_ARP_OL_FEATURE_AWAKE_ENABLE_MASK_0" public="true" value="(`${arpAgentEn ? (&quot;CY_ARP_OL_AGENT_ENABLE&quot;) : &quot;0u&quot;}``${arpResponse ne &quot;0u&quot; ? (&quot; | &quot;) : (&quot;&quot;)}``${arpResponse ne &quot;0u&quot; ? arpResponse : (&quot;&quot;)}``${arpSnoopHostIp ? (&quot; | CY_ARP_OL_SNOOP_ENABLE&quot;) : &quot;&quot;}`)" include="`${arpOffload}`" preventOverride="false" />
    <ConfigDefine name="CY_ARP_OL_FEATURE_SLEEP_ENABLE_MASK_0" public="true" value="(`${arpInSleep}`)" include="`${arpOffload}`" preventOverride="false" />
    <ConfigDefine name="CY_ARP_OL_PEER_AGE_0" public="true" value="(`${peerAge}`UL)" include="`${arpOffload}`" preventOverride="false" />

    <ConfigVariable const="false" type="arp_ol_t" name="arp_ol_0_ctxt" public="false" include="`${arpOffload}`" />
    <ConfigVariable const="false" type="pf_ol_t" name="pf_ol_0" public="false" include="`${pktFilterEn}`" />
    <ConfigVariable const="false" type="tko_ol_t" name="tko_ol_0_ctxt" public="false" include="`${tcpkaOffload}`" />

    <ConfigStruct name="arp_ol_cfg_0" type="arp_ol_cfg_t" const="true" public="false" include="`${arpOffload}`" isArray="false" >
      <Member name="awake_enable_mask" value="CY_ARP_OL_FEATURE_AWAKE_ENABLE_MASK_0" />
      <Member name="sleep_enable_mask" value="CY_ARP_OL_FEATURE_SLEEP_ENABLE_MASK_0" />
      <Member name="peerage" value="CY_ARP_OL_PEER_AGE_0" />
    </ConfigStruct>

    <!-- Packet Filter (PF) Offload Configuration -->
    <ConfigStruct name="cy_pf_ol_cfg_0" type="cy_pf_ol_cfg_t" const="true" isArray="true" public="false" include="`${pktFilterEn}`">
      <Member name="`${configTLSID}`u" value="{.feature = CY_PF_OL_FEAT_PORTNUM,&#xA;`${longIndent}`.bits = `${filterTLSAllow}``${filterTLSAction eq CY_PF_ACTION_DISCARD ? (&quot; | CY_PF_ACTION_DISCARD&quot;) : (&quot;&quot;)}`,&#xA;`${longIndent}`.id = `${configTLSID}`u,&#xA;`${longIndent}`.u = {&#xA;&#9;`${longIndent}`.pf = {&#xA;`${longIndent}``${longIndent}`.portnum = {.portnum = `${filterTLSPort}`u,&#xA;`${longIndent}``${longIndent}``${longIndent}`.range = 0u,&#xA;`${longIndent}``${longIndent}``${longIndent}`.direction = `${filterTLSDir}`,},&#xA;`${longIndent}``${longIndent}`.proto = `${filterTLSProt}`,&#xA;&#9;&#9;`${longIndent}`},&#xA;&#9;`${longIndent}`},&#xA;`${longIndent}`}" include="`${configTLS}`" />

      <Member name="`${configNonTLSID}`u" value="{.feature = CY_PF_OL_FEAT_PORTNUM,&#xA;`${longIndent}`.bits = `${filterNonTLSAllow}``${filterNonTLSAction eq CY_PF_ACTION_DISCARD ? (&quot; | CY_PF_ACTION_DISCARD&quot;) : (&quot;&quot;)}`,&#xA;`${longIndent}`.id = `${configNonTLSID}`u,&#xA;`${longIndent}`.u = {&#xA;&#9;`${longIndent}`.pf = {&#xA;`${longIndent}``${longIndent}`.portnum = {.portnum = `${filterNonTLSPort}`u,&#xA;`${longIndent}``${longIndent}``${longIndent}`.range = 0u,&#xA;`${longIndent}``${longIndent}``${longIndent}`.direction = `${filterNonTLSDir}`,},&#xA;`${longIndent}``${longIndent}`.proto = `${filterNonTLSProt}`,&#xA;&#9;&#9;`${longIndent}`},&#xA;&#9;`${longIndent}`},&#xA;`${longIndent}`}" include="`${configNonTLS}`" />

      <Member name="`${config##_id}`u" value="{.feature = `${filter##_type eq CY_PF_PORT_ETHER_TYPE_FILTER ? (&quot;CY_PF_OL_FEAT_ETHTYPE&quot;) : (filter##_type eq CY_PF_PORT_IP_TYPE_FILTER ? (&quot;CY_PF_OL_FEAT_IPTYPE&quot;) : (&quot;CY_PF_OL_FEAT_PORTNUM&quot;))}`,&#xA;`${longIndent}`.bits = `${filter##_allow}``${filter##_action eq CY_PF_ACTION_DISCARD ? (&quot; | CY_PF_ACTION_DISCARD&quot;) : (&quot;&quot;)}`,&#xA;`${longIndent}`.id = `${config##_id}`u,&#xA;`${longIndent}``${filter##_type eq CY_PF_PORT_ETHER_TYPE_FILTER ? (&quot;.u = {&#xA;&#9;&#9;&#9;&#9;.eth = {&#xA;&#9;&#9;&#9;&#9;&#9;&#9;.eth_type = &quot;) : (&quot;&quot;)}``${filter##_type eq CY_PF_PORT_ETHER_TYPE_FILTER ? (filter##_ether_type) : (&quot;&quot;)}``${filter##_type eq CY_PF_PORT_ETHER_TYPE_FILTER ? (&quot;u,&#xA;&#9;&#9;&#9;&#9;&#9;&#9;},&#xA;&#9;&#9;&#9;&#9;},&#xA;&#9;&#9;&#9;&quot;) : (&quot;&quot;)}``${filter##_type eq CY_PF_PORT_IP_TYPE_FILTER ? (&quot;.u = {&#xA;&#9;&#9;&#9;&#9;.ip = {&#xA;&#9;&#9;&#9;&#9;&#9;&#9;.ip_type = &quot;) : (&quot;&quot;)}``${filter##_type eq CY_PF_PORT_IP_TYPE_FILTER ? (filter##_ip_type) : (&quot;&quot;)}``${filter##_type eq CY_PF_PORT_IP_TYPE_FILTER ? (&quot;u,&#xA;&#9;&#9;&#9;&#9;&#9;&#9;},&#xA;&#9;&#9;&#9;&#9;},&#xA;&#9;&#9;&#9;&quot;) : (&quot;&quot;)}``${filter##_portnum ? (&quot;.u = {&#xA;&#9;&#9;&#9;&#9;.pf = {&#xA;&#9;&#9;&#9;&#9;&#9;&#9;.portnum = {.portnum = &quot;) : (&quot;&quot;)}``${filter##_portnum ? (filter##_port) : (&quot;&quot;)}``${filter##_portnum ? (&quot;u,&#xA;&quot;) : (&quot;&quot;)}``${filter##_portnum ? (&quot;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&quot;) : (&quot;&quot;)}``${filter##_portnum ? (&quot;.range = &quot;) : (&quot;&quot;)}``${filter##_portnum ? (filter##_type eq CY_PF_PORT_BLOCK_FILTER ? filter##_end_port : 0) : (&quot;&quot;)}``${filter##_portnum ? (&quot;u,&#xA;&quot;) : (&quot;&quot;)}``${filter##_portnum ? (&quot;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&quot;) : (&quot;&quot;)}``${filter##_portnum ? (&quot;.direction = &quot;) : (&quot;&quot;)}``${filter##_portnum ? (filter##_dir) : (&quot;&quot;)}``${filter##_portnum ? (&quot;,},&#xA;&quot;) : (&quot;&quot;)}``${filter##_portnum ? (&quot;&#9;&#9;&#9;&#9;&#9;&#9;&quot;) : (&quot;&quot;)}``${filter##_portnum ? (&quot;.proto = &quot;) : (&quot;&quot;)}``${filter##_portnum ? (filter##_prot) : (&quot;&quot;)}``${filter##_portnum ? (&quot;,&#xA;&#9;&#9;&#9;&#9;&#9;},&#xA;&#9;&#9;&#9;&#9;},&#xA;&#9;&#9;&#9;&quot;) : (&quot;&quot;)}`}" include="`${config##}`" count="20"/>

      <Member name="`${numOfActiveFilters}`u" value="{.feature = CY_PF_OL_FEAT_LAST}" include="true"/>      
    </ConfigStruct>

    <!-- TCP Keep Alive (TKA) Offload Configuration -->
    <ConfigStruct name="cy_tko_ol_cfg_0" type="cy_tko_ol_cfg_t" const="true" isArray="false" public="false" include="`${tcpkaOffload}`">
      <Member name="interval" value="`${tcpkaInterval}`" include="true" />
      <Member name="retry_interval" value="`${tcpkaRetryInterval}`" include="true" />
      <Member name="retry_count" value="`${tcpkaRetryCount}`" include="true" />
      <Member name="`${&quot;ports[##]&quot;}`" value="{
                              &#xA;`${longIndent}`.local_port = `${tcpkaSrcPort##}`,
                              &#xA;`${longIndent}`.remote_port = `${tcpkaDstPort##}`,
                              &#xA;`${longIndent}`&quot;`${tcpkaDstIpAddr##}`&quot;
          &#xA;&#9;&#9;&#9;}" include="true" count="4"/>
    </ConfigStruct>

    <ConfigStruct name="ol_list_0" type="ol_desc_t" const="true" isArray="true" public="false" include="`${pktFilterEn || arpOffload || tcpkaOffload}`">
      <Member name="`${0}`u" value="{&quot;Pkt_Filter&quot;, &amp;cy_pf_ol_cfg_0, &amp;pf_ol_fns, &amp;pf_ol_0}" include="`${pktFilterEn}`" />
      <Member name="`${arpOflIdx}`u" value="{&quot;ARP&quot;, &amp;arp_ol_cfg_0, &amp;arp_ol_fns, &amp;arp_ol_0_ctxt}" include="`${arpOffload}`" />
      <Member name="`${tcpkaOflIdx}`u" value="{&quot;TKO&quot;, &amp;cy_tko_ol_cfg_0, &amp;tko_ol_fns, &amp;tko_ol_0_ctxt}" include="`${tcpkaOffload}`" />
      <Member name="`${tcpkaOflIdx + 1}`u" value="{NULL, NULL, NULL, NULL}" include="`${pktFilterEn || arpOffload || tcpkaOffload}`" />
    </ConfigStruct>

    <ConfigFunction signature="const ol_desc_t *cycfg_get_default_ol_list(void)" body="&#9;return &amp;ol_list_0[0];" public="false" include="`${pktFilterEn || arpOffload || tcpkaOffload}`" />
  </ConfigFirmware>
</Personality>