TI's CC3100 host driver and demo. Experimental and a work in progress.

Dependencies:   mbed

Committer:
dflet
Date:
Wed Nov 19 23:04:04 2014 +0000
Revision:
2:a3e52cf86086
Parent:
0:bbe98578d4c0
Added more boards!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dflet 0:bbe98578d4c0 1 /*
dflet 0:bbe98578d4c0 2 * wlan_rx_filters.h - CC31xx/CC32xx Host Driver Implementation
dflet 0:bbe98578d4c0 3 *
dflet 0:bbe98578d4c0 4 * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
dflet 0:bbe98578d4c0 5 *
dflet 0:bbe98578d4c0 6 *
dflet 0:bbe98578d4c0 7 * Redistribution and use in source and binary forms, with or without
dflet 0:bbe98578d4c0 8 * modification, are permitted provided that the following conditions
dflet 0:bbe98578d4c0 9 * are met:
dflet 0:bbe98578d4c0 10 *
dflet 0:bbe98578d4c0 11 * Redistributions of source code must retain the above copyright
dflet 0:bbe98578d4c0 12 * notice, this list of conditions and the following disclaimer.
dflet 0:bbe98578d4c0 13 *
dflet 0:bbe98578d4c0 14 * Redistributions in binary form must reproduce the above copyright
dflet 0:bbe98578d4c0 15 * notice, this list of conditions and the following disclaimer in the
dflet 0:bbe98578d4c0 16 * documentation and/or other materials provided with the
dflet 0:bbe98578d4c0 17 * distribution.
dflet 0:bbe98578d4c0 18 *
dflet 0:bbe98578d4c0 19 * Neither the name of Texas Instruments Incorporated nor the names of
dflet 0:bbe98578d4c0 20 * its contributors may be used to endorse or promote products derived
dflet 0:bbe98578d4c0 21 * from this software without specific prior written permission.
dflet 0:bbe98578d4c0 22 *
dflet 0:bbe98578d4c0 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
dflet 0:bbe98578d4c0 24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
dflet 0:bbe98578d4c0 25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
dflet 0:bbe98578d4c0 26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
dflet 0:bbe98578d4c0 27 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
dflet 0:bbe98578d4c0 28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
dflet 0:bbe98578d4c0 29 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
dflet 0:bbe98578d4c0 30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
dflet 0:bbe98578d4c0 31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
dflet 0:bbe98578d4c0 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
dflet 0:bbe98578d4c0 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dflet 0:bbe98578d4c0 34 *
dflet 0:bbe98578d4c0 35 */
dflet 0:bbe98578d4c0 36
dflet 0:bbe98578d4c0 37 #ifndef RX_FILTERS_PREPROCESSOR_CLI_IF_H_
dflet 0:bbe98578d4c0 38 #define RX_FILTERS_PREPROCESSOR_CLI_IF_H_
dflet 0:bbe98578d4c0 39
dflet 0:bbe98578d4c0 40
dflet 0:bbe98578d4c0 41 /*****************************************************************************/
dflet 0:bbe98578d4c0 42 /* Include files */
dflet 0:bbe98578d4c0 43 /*****************************************************************************/
dflet 0:bbe98578d4c0 44 #include "cc3100_simplelink.h"
dflet 0:bbe98578d4c0 45
dflet 0:bbe98578d4c0 46 #ifdef __cplusplus
dflet 0:bbe98578d4c0 47 extern "C" {
dflet 0:bbe98578d4c0 48 #endif
dflet 0:bbe98578d4c0 49
dflet 0:bbe98578d4c0 50
dflet 0:bbe98578d4c0 51 /*****************************************************************************/
dflet 0:bbe98578d4c0 52 /* Macro declarations */
dflet 0:bbe98578d4c0 53 /*****************************************************************************/
dflet 0:bbe98578d4c0 54
dflet 0:bbe98578d4c0 55 /*!
dflet 0:bbe98578d4c0 56 * \def SL_RX_FILTER_MAX_FILTERS
dflet 0:bbe98578d4c0 57 * The Max number of filters for 64 filters
dflet 0:bbe98578d4c0 58 */
dflet 0:bbe98578d4c0 59 #define SL_RX_FILTER_MAX_FILTERS 64
dflet 0:bbe98578d4c0 60
dflet 0:bbe98578d4c0 61 /*!
dflet 0:bbe98578d4c0 62 * \def SL_RX_FILTER_MAX_PRE_PREPARED_FILTERS_SETS
dflet 0:bbe98578d4c0 63 * The Max number of software filters
dflet 0:bbe98578d4c0 64 */
dflet 0:bbe98578d4c0 65 #define SL_RX_FILTER_MAX_PRE_PREPARED_FILTERS_SETS (32)
dflet 0:bbe98578d4c0 66 /*!
dflet 0:bbe98578d4c0 67 * \def SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS
dflet 0:bbe98578d4c0 68 *
dflet 0:bbe98578d4c0 69 */
dflet 0:bbe98578d4c0 70 #define SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS (2)
dflet 0:bbe98578d4c0 71 /*!
dflet 0:bbe98578d4c0 72 * \def SL_RX_FILTER_NUM_OF_FILTER_PAYLOAD_ARGS
dflet 0:bbe98578d4c0 73 *
dflet 0:bbe98578d4c0 74 */
dflet 0:bbe98578d4c0 75 #define SL_RX_FILTER_NUM_OF_FILTER_PAYLOAD_ARGS (2)
dflet 0:bbe98578d4c0 76 /*!
dflet 0:bbe98578d4c0 77 * \def SL_RX_FILTER_NUM_OF_FILTER_PAYLOAD_ARGS
dflet 0:bbe98578d4c0 78 *
dflet 0:bbe98578d4c0 79 */
dflet 0:bbe98578d4c0 80 #define SL_RX_FILTER_NUM_OF_COMBINATION_TYPE_ARGS (2)
dflet 0:bbe98578d4c0 81 /*!
dflet 0:bbe98578d4c0 82 * \def SL_RX_FILTER_LENGTH_OF_REGX_PATTERN_LENGTH
dflet 0:bbe98578d4c0 83 *
dflet 0:bbe98578d4c0 84 */
dflet 0:bbe98578d4c0 85 #define SL_RX_FILTER_LENGTH_OF_REGX_PATTERN_LENGTH (32)
dflet 0:bbe98578d4c0 86
dflet 0:bbe98578d4c0 87
dflet 0:bbe98578d4c0 88 /* List of possible error numbers */
dflet 0:bbe98578d4c0 89 #define RXFL_OK (0) /* O.K */
dflet 0:bbe98578d4c0 90 #define RXFL_OUTPUT_OR_INPUT_BUFFER_LENGTH_TOO_SMALL (76) /* ! The output buffer length is smaller than required for that operation */
dflet 0:bbe98578d4c0 91 #define RXFL_DEPENDENT_FILTER_SOFTWARE_FILTER_NOT_FIT (75) /* Node filter can't be child of software filter and vice_versa */
dflet 0:bbe98578d4c0 92 #define RXFL_DEPENDENCY_IS_NOT_PERSISTENT (74) /* Dependency filter is not persistent */
dflet 0:bbe98578d4c0 93 #define RXFL_SYSTEM_STATE_NOT_SUPPORTED_FOR_THIS_FILTER (72) /* System state is not supported */
dflet 0:bbe98578d4c0 94 #define RXFL_TRIGGER_USE_REG5_TO_REG8 (71) /* Only counters 5 - 8 are allowed, for Tigger */
dflet 0:bbe98578d4c0 95 #define RXFL_TRIGGER_USE_REG1_TO_REG4 (70) /* Only counters 1 - 4 are allowed, for trigger */
dflet 0:bbe98578d4c0 96 #define RXFL_ACTION_USE_REG5_TO_REG8 (69) /* Only counters 5 - 8 are allowed, for action */
dflet 0:bbe98578d4c0 97 #define RXFL_ACTION_USE_REG1_TO_REG4 (68) /* Only counters 1 - 4 are allowed, for action */
dflet 0:bbe98578d4c0 98 #define RXFL_FIELD_SUPPORT_ONLY_EQUAL_AND_NOTEQUAL (67) /* Rule compare function Id is out of range */
dflet 0:bbe98578d4c0 99 #define RXFL_WRONG_MULTICAST_BROADCAST_ADDRESS (66) /* The address should be of type mutlicast or broadcast */
dflet 0:bbe98578d4c0 100 #define RXFL_THE_FILTER_IS_NOT_OF_HEADER_TYPE (65) /* The filter should be of header type */
dflet 0:bbe98578d4c0 101 #define RXFL_WRONG_COMPARE_FUNC_FOR_BROADCAST_ADDRESS (64) /* The compare funcion is not suitable for broadcast address */
dflet 0:bbe98578d4c0 102 #define RXFL_WRONG_MULTICAST_ADDRESS (63) /* The address should be of muticast type */
dflet 0:bbe98578d4c0 103 #define RXFL_DEPENDENT_FILTER_IS_NOT_PERSISTENT (62) /* The dependency filter is not persistent */
dflet 0:bbe98578d4c0 104 #define RXFL_DEPENDENT_FILTER_IS_NOT_ENABLED (61) /* The dependency filter is not enabled */
dflet 0:bbe98578d4c0 105 #define RXFL_FILTER_HAS_CHILDS (60) /* The filter has childs and can't be removed */
dflet 0:bbe98578d4c0 106 #define RXFL_CHILD_IS_ENABLED (59) /* Can't disable filter while the child is enabled */
dflet 0:bbe98578d4c0 107 #define RXFL_DEPENDENCY_IS_DISABLED (58) /* Can't enable filetr in case its depndency filter is disabled */
dflet 0:bbe98578d4c0 108 #define RXFL_NUMBER_OF_CONNECTION_POINTS_EXCEEDED (52) /* Number of connection points exceeded */
dflet 0:bbe98578d4c0 109 #define RXFL_DEPENDENT_FILTER_DEPENDENCY_ACTION_IS_DROP (51) /* The dependent filter has Drop action, thus the filter can't be created */
dflet 0:bbe98578d4c0 110 #define RXFL_FILTER_DO_NOT_EXISTS (50) /* The filter doesn't exists */
dflet 0:bbe98578d4c0 111 #define RXFL_DEPEDENCY_NOT_ON_THE_SAME_LAYER (49) /* The filter and its dependency must be on the same layer */
dflet 0:bbe98578d4c0 112 #define RXFL_NUMBER_OF_ARGS_EXCEEDED (48) /* Number of arguments excceded */
dflet 0:bbe98578d4c0 113 #define RXFL_ACTION_NO_REG_NUMBER (47) /* Action require counter number */
dflet 0:bbe98578d4c0 114 #define RXFL_DEPENDENT_FILTER_LAYER_DO_NOT_FIT (46) /* the filter and its dependency should be from the same layer */
dflet 0:bbe98578d4c0 115 #define RXFL_DEPENDENT_FILTER_SYSTEM_STATE_DO_NOT_FIT (45) /* The filter and its dependency system state don't fit */
dflet 0:bbe98578d4c0 116 #define RXFL_DEPENDENT_FILTER_DO_NOT_EXIST_2 (44) /* The parent filter don't exist */
dflet 0:bbe98578d4c0 117 #define RXFL_DEPENDENT_FILTER_DO_NOT_EXIST_1 (43) /* The parent filter is null */
dflet 0:bbe98578d4c0 118 #define RXFL_RULE_HEADER_ACTION_TYPE_NOT_SUPPORTED (42) /* The action type is not supported */
dflet 0:bbe98578d4c0 119 #define RXFL_RULE_HEADER_TRIGGER_COMPARE_FUNC_OUT_OF_RANGE (41) /* The Trigger comparision function is out of range */
dflet 0:bbe98578d4c0 120 #define RXFL_RULE_HEADER_TRIGGER_OUT_OF_RANGE (40) /* The Trigger is out of range */
dflet 0:bbe98578d4c0 121 #define RXFL_RULE_HEADER_COMPARE_FUNC_OUT_OF_RANGE (39) /* The rule compare function is out of range */
dflet 0:bbe98578d4c0 122 #define RXFL_FRAME_TYPE_NOT_SUPPORTED (38) /* ASCII frame type string is illegal */
dflet 0:bbe98578d4c0 123 #define RXFL_RULE_FIELD_ID_NOT_SUPPORTED (37) /* Rule field ID is out of range */
dflet 0:bbe98578d4c0 124 #define RXFL_RULE_HEADER_FIELD_ID_ASCII_NOT_SUPPORTED (36) /* This ASCII field ID is not supported */
dflet 0:bbe98578d4c0 125 #define RXFL_RULE_HEADER_NOT_SUPPORTED (35) /* The header rule is not supported on current release */
dflet 0:bbe98578d4c0 126 #define RXFL_RULE_HEADER_OUT_OF_RANGE (34) /* The header rule is out of range */
dflet 0:bbe98578d4c0 127 #define RXFL_RULE_HEADER_COMBINATION_OPERATOR_OUT_OF_RANGE (33) /* Combination function Id is out of ramge */
dflet 0:bbe98578d4c0 128 #define RXFL_RULE_HEADER_FIELD_ID_OUT_OF_RANGE (32) /* rule field Id is out of range */
dflet 0:bbe98578d4c0 129 #define RXFL_UPDATE_NOT_SUPPORTED (31) /* Update not supported */
dflet 0:bbe98578d4c0 130 #define RXFL_NO_FILTERS_ARE_DEFINED (24) /* No filters are defined in the system */
dflet 0:bbe98578d4c0 131 #define RXFL_NUMBER_OF_FILTER_EXCEEDED (23) /* Number of max filters excceded */
dflet 0:bbe98578d4c0 132
dflet 0:bbe98578d4c0 133
dflet 0:bbe98578d4c0 134 /******************************************************************************/
dflet 0:bbe98578d4c0 135 /* Type declarations */
dflet 0:bbe98578d4c0 136 /******************************************************************************/
dflet 0:bbe98578d4c0 137
dflet 0:bbe98578d4c0 138 /*!
dflet 0:bbe98578d4c0 139
dflet 0:bbe98578d4c0 140
dflet 0:bbe98578d4c0 141 * \typedef SlrxFilterID_t
dflet 0:bbe98578d4c0 142 * Unique filter ID which is allocated by the system , negative number means error
dflet 0:bbe98578d4c0 143 */
dflet 0:bbe98578d4c0 144 typedef _i8 SlrxFilterID_t;
dflet 0:bbe98578d4c0 145
dflet 0:bbe98578d4c0 146
dflet 0:bbe98578d4c0 147 /*!
dflet 0:bbe98578d4c0 148 * \typedef SlrxFilterCompareMask_t
dflet 0:bbe98578d4c0 149 * The mask is used for the rule comparison function
dflet 0:bbe98578d4c0 150 */
dflet 0:bbe98578d4c0 151 typedef _u8 SlrxFilterCompareMask_t;
dflet 0:bbe98578d4c0 152
dflet 0:bbe98578d4c0 153 /*!
dflet 0:bbe98578d4c0 154 * \typedef SlrxFilterIdMask_t
dflet 0:bbe98578d4c0 155 * Representation of filters Id as a bit field
dflet 0:bbe98578d4c0 156 * The bit field is used to declare which filters are involved
dflet 0:bbe98578d4c0 157 * in operation. Number of filter can be up to 128 filters. i.e. 128 bits are needed.
dflet 0:bbe98578d4c0 158 * On the current release, up to 64 filters can be defined.
dflet 0:bbe98578d4c0 159 */
dflet 0:bbe98578d4c0 160 typedef _u8 SlrxFilterIdMask_t[128/8];
dflet 0:bbe98578d4c0 161
dflet 0:bbe98578d4c0 162 /*!
dflet 0:bbe98578d4c0 163 * \typedef SlrxFilterPrePreparedFilters_t
dflet 0:bbe98578d4c0 164 * Describes the supported software filter sets,
dflet 0:bbe98578d4c0 165 */
dflet 0:bbe98578d4c0 166 typedef _u8 SlrxFilterPrePreparedFilters_t;
dflet 0:bbe98578d4c0 167 #define SL_ARP_AUTO_REPLY_PRE_PREPARED_FILTERS (0)
dflet 0:bbe98578d4c0 168 #define SL_MULTICASTSIPV4_DROP_PREPREPARED_FILTERS (1)
dflet 0:bbe98578d4c0 169 #define SL_MULTICASTSIPV6_DROP_PREPREPARED_FILTERS (2)
dflet 0:bbe98578d4c0 170 #define SL_MULTICASTSWIFI_DROP_PREPREPARED_FILTERS (3)
dflet 0:bbe98578d4c0 171
dflet 0:bbe98578d4c0 172
dflet 0:bbe98578d4c0 173
dflet 0:bbe98578d4c0 174 /*!
dflet 0:bbe98578d4c0 175 * \typedef SlrxFilterPrePreparedFiltersMask_t
dflet 0:bbe98578d4c0 176 * Describes the supported software filter sets,
dflet 0:bbe98578d4c0 177 * each bit represents different software filter set
dflet 0:bbe98578d4c0 178 * The filter sets are defined at SlrxFilterPrePreparedFilters_t
dflet 0:bbe98578d4c0 179 */
dflet 0:bbe98578d4c0 180 typedef _u8 SlrxFilterPrePreparedFiltersMask_t[SL_RX_FILTER_MAX_PRE_PREPARED_FILTERS_SETS/8];
dflet 0:bbe98578d4c0 181
dflet 0:bbe98578d4c0 182
dflet 0:bbe98578d4c0 183 /*! \typedef SlrxFilterRegxPattern_t
dflet 0:bbe98578d4c0 184 * The struct contains the regular expression pattern which is used in case of payload rule.
dflet 0:bbe98578d4c0 185 * Not supported in the current release
dflet 0:bbe98578d4c0 186 */
dflet 0:bbe98578d4c0 187 typedef struct SlrxFilterRegxPattern_t
dflet 0:bbe98578d4c0 188 {
dflet 0:bbe98578d4c0 189 _u8 x[SL_RX_FILTER_LENGTH_OF_REGX_PATTERN_LENGTH];
dflet 0:bbe98578d4c0 190 }SlrxFilterRegxPattern_t;
dflet 0:bbe98578d4c0 191
dflet 0:bbe98578d4c0 192
dflet 0:bbe98578d4c0 193 /*! \typedef SlrxFilterAsciiArg_t
dflet 0:bbe98578d4c0 194 * The buffer is used to provide container for ASCII argument, which may be used in case of HEADER rule.
dflet 0:bbe98578d4c0 195 * example for ASCII argument can be : IP = 256.0.67.1
dflet 0:bbe98578d4c0 196 */
dflet 0:bbe98578d4c0 197 typedef _u8 SlrxFilterAsciiArg_t;
dflet 0:bbe98578d4c0 198
dflet 0:bbe98578d4c0 199
dflet 0:bbe98578d4c0 200 /*! \typedef SlrxFilterBinaryArg_t
dflet 0:bbe98578d4c0 201 * The buffer provides container for binary argument, which may be used in case of HEADER rule
dflet 0:bbe98578d4c0 202 */
dflet 0:bbe98578d4c0 203 typedef _u8 SlrxFilterBinaryArg_t ;
dflet 0:bbe98578d4c0 204
dflet 0:bbe98578d4c0 205
dflet 0:bbe98578d4c0 206 /*! \typedef SlrxFilterActionArg_t
dflet 0:bbe98578d4c0 207 * Provides container for the filter action argument.
dflet 0:bbe98578d4c0 208 * for example: in case action is to send automatic response , the argument is the template to be used for the automatic response.
dflet 0:bbe98578d4c0 209 *
dflet 0:bbe98578d4c0 210 *
dflet 0:bbe98578d4c0 211 */
dflet 0:bbe98578d4c0 212 typedef _u8 SlrxFilterActionArg_t ;
dflet 0:bbe98578d4c0 213
dflet 0:bbe98578d4c0 214
dflet 0:bbe98578d4c0 215
dflet 0:bbe98578d4c0 216 /*! \typedef SlrxFilterOffset_t
dflet 0:bbe98578d4c0 217 * The offset relative to the packet payload start location.
dflet 0:bbe98578d4c0 218 * Not supported on current release
dflet 0:bbe98578d4c0 219 */
dflet 0:bbe98578d4c0 220 typedef _u32 SlrxFilterOffset_t;
dflet 0:bbe98578d4c0 221
dflet 0:bbe98578d4c0 222
dflet 0:bbe98578d4c0 223
dflet 0:bbe98578d4c0 224 /*! \typedef SlrxFilterRuleType_t
dflet 0:bbe98578d4c0 225 * Enumerates the different filter types.
dflet 0:bbe98578d4c0 226 * On the current release only HEADER and COMBINATION are supported.
dflet 0:bbe98578d4c0 227 */
dflet 0:bbe98578d4c0 228 typedef _u8 SlrxFilterRuleType_t;
dflet 0:bbe98578d4c0 229 /* possible values for SlrxFilterRuleType_t */
dflet 0:bbe98578d4c0 230 #define HEADER (0)
dflet 0:bbe98578d4c0 231 #define COMBINATION (1)
dflet 0:bbe98578d4c0 232 #define EXACT_PATTERN (2)
dflet 0:bbe98578d4c0 233 #define LIKELIHOOD_PATTERN (3)
dflet 0:bbe98578d4c0 234 #define ALWAYS_TRUE (4)
dflet 0:bbe98578d4c0 235 #define NUM_OF_FILTER_TYPES (5)
dflet 0:bbe98578d4c0 236
dflet 0:bbe98578d4c0 237
dflet 0:bbe98578d4c0 238 /*! \typedef SlrxFilterFlags_t
dflet 0:bbe98578d4c0 239 * Bit field which sets the behaviour of the RX filter
dflet 0:bbe98578d4c0 240 *
dflet 0:bbe98578d4c0 241 */
dflet 0:bbe98578d4c0 242
dflet 0:bbe98578d4c0 243 #define RX_FILTER_BINARY (0x1)
dflet 0:bbe98578d4c0 244 #define RX_FILTER_PERSISTENT (0x8)
dflet 0:bbe98578d4c0 245 #define RX_FILTER_ENABLE (0x10)
dflet 0:bbe98578d4c0 246
dflet 0:bbe98578d4c0 247 typedef union SlrxFilterFlags_t
dflet 0:bbe98578d4c0 248 {
dflet 0:bbe98578d4c0 249
dflet 0:bbe98578d4c0 250 /* struct
dflet 0:bbe98578d4c0 251 { */
dflet 0:bbe98578d4c0 252 /*!
dflet 0:bbe98578d4c0 253 * The filter argument can be set as binary argument or ASCII arguments.
dflet 0:bbe98578d4c0 254 * When the bit is on the argument are binary.
dflet 0:bbe98578d4c0 255 */
dflet 0:bbe98578d4c0 256 /* _u8 Binary: 1; */
dflet 0:bbe98578d4c0 257 /*!
dflet 0:bbe98578d4c0 258 *
dflet 0:bbe98578d4c0 259 */
dflet 0:bbe98578d4c0 260 /* _u8 AutoSort : 1; */
dflet 0:bbe98578d4c0 261 /*!
dflet 0:bbe98578d4c0 262 *
dflet 0:bbe98578d4c0 263 */
dflet 0:bbe98578d4c0 264 /* _u8 AutoFaultDetect : 1; */
dflet 0:bbe98578d4c0 265 /*!
dflet 0:bbe98578d4c0 266 * When the bit is on it means the the node is enabled .
dflet 0:bbe98578d4c0 267 */
dflet 0:bbe98578d4c0 268 /* _u8 Enabled : 1; */
dflet 0:bbe98578d4c0 269 /* _u8 padding : 3; */
dflet 0:bbe98578d4c0 270 /*
dflet 0:bbe98578d4c0 271 };*/
dflet 0:bbe98578d4c0 272
dflet 0:bbe98578d4c0 273 _u8 IntRepresentation;
dflet 0:bbe98578d4c0 274
dflet 0:bbe98578d4c0 275 }SlrxFilterFlags_t;
dflet 0:bbe98578d4c0 276
dflet 0:bbe98578d4c0 277 /*! \typedef SlrxFilterCompareFunction_t
dflet 0:bbe98578d4c0 278 * Used as comparison function for the header type arguments
dflet 0:bbe98578d4c0 279 *
dflet 0:bbe98578d4c0 280 */
dflet 0:bbe98578d4c0 281 typedef _u8 SlrxFilterCompareFunction_t;
dflet 0:bbe98578d4c0 282 /* Possible values for SlrxFilterCompareFunction_t */
dflet 0:bbe98578d4c0 283 #define COMPARE_FUNC_IN_BETWEEN (0)
dflet 0:bbe98578d4c0 284 #define COMPARE_FUNC_EQUAL (1)
dflet 0:bbe98578d4c0 285 #define COMPARE_FUNC_NOT_EQUAL_TO (2)
dflet 0:bbe98578d4c0 286 #define COMPARE_FUNC_NOT_IN_BETWEEN (3)
dflet 0:bbe98578d4c0 287 #define COMPARE_FUNC_NUM_OF_FILTER_COMPARE_FUNC (4)
dflet 0:bbe98578d4c0 288
dflet 0:bbe98578d4c0 289 /*! \typedef SlrxFilterCompareFunction_t
dflet 0:bbe98578d4c0 290 * Used as comparison function for the header type arguments
dflet 0:bbe98578d4c0 291 *
dflet 0:bbe98578d4c0 292 */
dflet 0:bbe98578d4c0 293 typedef _u8 SlrxTriggerCompareFunction_t;
dflet 0:bbe98578d4c0 294 /* Possible values for SlrxTriggerCompareFunction_t */
dflet 0:bbe98578d4c0 295 #define TRIGGER_COMPARE_FUNC_EQUAL (0)
dflet 0:bbe98578d4c0 296 /* arg1 == protocolVal ,not supported in current release */
dflet 0:bbe98578d4c0 297 #define TRIGGER_COMPARE_FUNC_NOT_EQUAL_TO (1)
dflet 0:bbe98578d4c0 298 /* arg1 == protocolVal */
dflet 0:bbe98578d4c0 299 #define TRIGGER_COMPARE_FUNC_SMALLER_THAN (2)
dflet 0:bbe98578d4c0 300 /* arg1 == protocolVal */
dflet 0:bbe98578d4c0 301 #define TRIGGER_COMPARE_FUNC_BIGGER_THAN (3)
dflet 0:bbe98578d4c0 302 /* definition */
dflet 0:bbe98578d4c0 303 #define TRIGGER_COMPARE_FUNC_NUM_OF_FILTER_COMPARE_FUNC (4)
dflet 0:bbe98578d4c0 304
dflet 0:bbe98578d4c0 305
dflet 0:bbe98578d4c0 306 /*! \typedef SlrxFilterHdrField_t
dflet 0:bbe98578d4c0 307 * Provides list of possible header types which may be defined as part of the rule
dflet 0:bbe98578d4c0 308 *
dflet 0:bbe98578d4c0 309 */
dflet 0:bbe98578d4c0 310 typedef _u8 SlrxFilterHdrField_t;
dflet 0:bbe98578d4c0 311 /* Possible values for SlrxFilterHdrField_t */
dflet 0:bbe98578d4c0 312 #define NULL_FIELD_ID_TYPE (0)
dflet 0:bbe98578d4c0 313 /* 802.11 control\data\management */
dflet 0:bbe98578d4c0 314 #define FRAME_TYPE_FIELD (1)
dflet 0:bbe98578d4c0 315 /* 802.11 beacon\probe\.. */
dflet 0:bbe98578d4c0 316 #define FRAME_SUBTYPE_FIELD (2)
dflet 0:bbe98578d4c0 317 /* 802.11 bssid type */
dflet 0:bbe98578d4c0 318 #define BSSID_FIELD (3)
dflet 0:bbe98578d4c0 319 /* */
dflet 0:bbe98578d4c0 320 #define MAC_SRC_ADDRESS_FIELD (4)
dflet 0:bbe98578d4c0 321 /* */
dflet 0:bbe98578d4c0 322 #define MAC_DST_ADDRESS_FIELD (5)
dflet 0:bbe98578d4c0 323 /* */
dflet 0:bbe98578d4c0 324 #define FRAME_LENGTH_FIELD (6)
dflet 0:bbe98578d4c0 325 /* */
dflet 0:bbe98578d4c0 326 #define PROTOCOL_TYPE_FIELD (7)
dflet 0:bbe98578d4c0 327 /* */
dflet 0:bbe98578d4c0 328 #define IP_VERSION_FIELD (8)
dflet 0:bbe98578d4c0 329 /* TCP / UDP */
dflet 0:bbe98578d4c0 330 #define IP_PROTOCOL_FIELD (9)
dflet 0:bbe98578d4c0 331 /* */
dflet 0:bbe98578d4c0 332 #define IPV4_SRC_ADRRESS_FIELD (10)
dflet 0:bbe98578d4c0 333 /* */
dflet 0:bbe98578d4c0 334 #define IPV4_DST_ADDRESS_FIELD (11)
dflet 0:bbe98578d4c0 335 /* */
dflet 0:bbe98578d4c0 336 #define IPV6_SRC_ADRRESS_FIELD (12)
dflet 0:bbe98578d4c0 337 /* */
dflet 0:bbe98578d4c0 338 #define IPV6_DST_ADDRESS_FIELD (13)
dflet 0:bbe98578d4c0 339 /* */
dflet 0:bbe98578d4c0 340 #define SRC_PORT_FIELD (14)
dflet 0:bbe98578d4c0 341 /* */
dflet 0:bbe98578d4c0 342 #define DST_PORT_FIELD (15)
dflet 0:bbe98578d4c0 343 /* Definition */
dflet 0:bbe98578d4c0 344 #define NUM_OF_FIELD_NAME_FIELD (16)
dflet 0:bbe98578d4c0 345
dflet 0:bbe98578d4c0 346 /*! \union SlrxFilterHeaderArg_t
dflet 0:bbe98578d4c0 347 * The structure holds the header ARGS which are used in case of HDR rule.
dflet 0:bbe98578d4c0 348 */
dflet 0:bbe98578d4c0 349 /* -- 36 bytes */
dflet 0:bbe98578d4c0 350 typedef union SlrxFilterHeaderArg_t
dflet 0:bbe98578d4c0 351 {
dflet 0:bbe98578d4c0 352 /*----------------------------- Large size ---------------------------------*/
dflet 0:bbe98578d4c0 353 /*! buffer for binary arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS
dflet 0:bbe98578d4c0 354 * example : IPV6 16 bytes, 39 characters
dflet 0:bbe98578d4c0 355 * ipv6 Ascii address: 2001:0db8:3c4d:0015:0000:0000:abcd:ef12
dflet 0:bbe98578d4c0 356 */
dflet 0:bbe98578d4c0 357
dflet 0:bbe98578d4c0 358 SlrxFilterBinaryArg_t RxFilterDB16BytesRuleArgs[SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][16 ]; /* Binary Values for comparition */
dflet 0:bbe98578d4c0 359 /*! buffer for ASCII arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS
dflet 0:bbe98578d4c0 360 * example : IPV6 16 bytes, 39 characters
dflet 0:bbe98578d4c0 361 * ipv6 Ascii address: 2001:0db8:3c4d:0015:0000:0000:abcd:ef12
dflet 0:bbe98578d4c0 362 * Ascii format for ipV6 is not supported
dflet 0:bbe98578d4c0 363 */
dflet 0:bbe98578d4c0 364 /*----------------------------- Medium size ---------------------------------*/
dflet 0:bbe98578d4c0 365 /*! buffer for binary arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS
dflet 0:bbe98578d4c0 366 * MAC address: 6 bytes, 17 chars
dflet 0:bbe98578d4c0 367 */
dflet 0:bbe98578d4c0 368 SlrxFilterBinaryArg_t RxFilterDB6BytesRuleArgs[SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][6]; /* Binary Values for comparition */
dflet 0:bbe98578d4c0 369 /*!
dflet 0:bbe98578d4c0 370 * ! buffer for ASCII arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS
dflet 0:bbe98578d4c0 371 * IP address: 4 bytes, 15 chars
dflet 0:bbe98578d4c0 372 * 2 bytes are added for padding
dflet 0:bbe98578d4c0 373 */
dflet 0:bbe98578d4c0 374 SlrxFilterAsciiArg_t RxFilterDB18BytesAsciiRuleArgs[SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][18]; /* Ascii Values for comparison */
dflet 0:bbe98578d4c0 375 /*----------------------------- Small size ---------------------------------*/
dflet 0:bbe98578d4c0 376 /*! buffer for binary arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS
dflet 0:bbe98578d4c0 377 * IP address: 4 bytes, 15 chars
dflet 0:bbe98578d4c0 378 * Port: 2 bytes, chars: 5 chars
dflet 0:bbe98578d4c0 379 */
dflet 0:bbe98578d4c0 380 SlrxFilterBinaryArg_t RxFilterDB4BytesRuleArgs[SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][4]; /* Binary Values for comparison */
dflet 0:bbe98578d4c0 381 /*! buffer for ASCII arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS
dflet 0:bbe98578d4c0 382 * Port: 2 bytes, chars: 5 chars
dflet 0:bbe98578d4c0 383 */
dflet 0:bbe98578d4c0 384 SlrxFilterAsciiArg_t RxFilterDB5BytesRuleAsciiArgs[SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][5]; /* Ascii Values for comparison */
dflet 0:bbe98578d4c0 385 /*----------------------------- 1 byte size ---------------------------------*/
dflet 0:bbe98578d4c0 386 /*! buffer for binary arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS
dflet 0:bbe98578d4c0 387 */
dflet 0:bbe98578d4c0 388 SlrxFilterBinaryArg_t RxFilterDB1BytesRuleArgs[SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][1]; /* Binary Values for comparison */
dflet 0:bbe98578d4c0 389 }SlrxFilterHeaderArg_t;
dflet 0:bbe98578d4c0 390
dflet 0:bbe98578d4c0 391
dflet 0:bbe98578d4c0 392
dflet 0:bbe98578d4c0 393 /*! \typedef SlrxFilterRuleHeaderArgsAndMask_t
dflet 0:bbe98578d4c0 394 * Structure which defines the Header Args and mask
dflet 0:bbe98578d4c0 395 */
dflet 0:bbe98578d4c0 396 /* -- 52 bytes */
dflet 0:bbe98578d4c0 397 typedef struct SlrxFilterRuleHeaderArgsAndMask_t
dflet 0:bbe98578d4c0 398 {
dflet 0:bbe98578d4c0 399 /*! Argument for the comparison function */
dflet 0:bbe98578d4c0 400 /* -- 36 byte */
dflet 0:bbe98578d4c0 401 SlrxFilterHeaderArg_t RuleHeaderArgs;
dflet 0:bbe98578d4c0 402
dflet 0:bbe98578d4c0 403 /*! the mask is used in order to enable partial comparison,
dflet 0:bbe98578d4c0 404 * Use the 0xFFFFFFFF in case you don't want to use mask
dflet 0:bbe98578d4c0 405 */
dflet 0:bbe98578d4c0 406 /* -- 16 bytes */
dflet 0:bbe98578d4c0 407 SlrxFilterCompareMask_t RuleHeaderArgsMask[16];
dflet 0:bbe98578d4c0 408
dflet 0:bbe98578d4c0 409 }SlrxFilterRuleHeaderArgsAndMask_t;
dflet 0:bbe98578d4c0 410
dflet 0:bbe98578d4c0 411 /*! \typedef SlrxFilterHeaderType_t
dflet 0:bbe98578d4c0 412 * Structure which defines the Header rule
dflet 0:bbe98578d4c0 413 * The header rule defines compare function on the protocol header
dflet 0:bbe98578d4c0 414 * For example destMacAddre is between ( 12:6::78:77, 12:6::78:90 )
dflet 0:bbe98578d4c0 415 *
dflet 0:bbe98578d4c0 416 */
dflet 0:bbe98578d4c0 417 /* -- 56 byte */
dflet 0:bbe98578d4c0 418 typedef struct SlrxFilterHeaderType_t
dflet 0:bbe98578d4c0 419 {
dflet 0:bbe98578d4c0 420 /*! see :: SlrxFilterRuleHeaderArgsAndMask_t */
dflet 0:bbe98578d4c0 421 /* -- 52 bytes */
dflet 0:bbe98578d4c0 422 SlrxFilterRuleHeaderArgsAndMask_t RuleHeaderArgsAndMask;
dflet 0:bbe98578d4c0 423
dflet 0:bbe98578d4c0 424 /*! Packet HDR field which will be compared to the argument */
dflet 0:bbe98578d4c0 425 /* -- 1 byte */
dflet 0:bbe98578d4c0 426 SlrxFilterHdrField_t RuleHeaderfield;
dflet 0:bbe98578d4c0 427
dflet 0:bbe98578d4c0 428 /* -- 1 byte */
dflet 0:bbe98578d4c0 429 /*! type of the comparison function
dflet 0:bbe98578d4c0 430 * see :: SlrxFilterCompareFunction_t
dflet 0:bbe98578d4c0 431 */
dflet 0:bbe98578d4c0 432 SlrxFilterCompareFunction_t RuleCompareFunc;
dflet 0:bbe98578d4c0 433
dflet 0:bbe98578d4c0 434 /*! padding */
dflet 0:bbe98578d4c0 435 /* -- 2 bytes */
dflet 0:bbe98578d4c0 436 _u8 RulePadding[2];
dflet 0:bbe98578d4c0 437
dflet 0:bbe98578d4c0 438 }SlrxFilterHeaderType_t;
dflet 0:bbe98578d4c0 439
dflet 0:bbe98578d4c0 440 /*! \typedef SlrxFilterPayloadType_t
dflet 0:bbe98578d4c0 441 * Structure which defines payload rule.
dflet 0:bbe98578d4c0 442 * Not supported on current release.
dflet 0:bbe98578d4c0 443 */
dflet 0:bbe98578d4c0 444 /* -- 40 byte */
dflet 0:bbe98578d4c0 445 typedef struct SlrxFilterPayloadType_t
dflet 0:bbe98578d4c0 446 {
dflet 0:bbe98578d4c0 447 /*! Not supported on current release */
dflet 0:bbe98578d4c0 448 /* -- 32 byte */
dflet 0:bbe98578d4c0 449 SlrxFilterRegxPattern_t RegxPattern;
dflet 0:bbe98578d4c0 450 /*! Not supported on current release */
dflet 0:bbe98578d4c0 451 /* -- 4 byte */
dflet 0:bbe98578d4c0 452 SlrxFilterOffset_t LowerOffset;
dflet 0:bbe98578d4c0 453 /*! Not supported on current release */
dflet 0:bbe98578d4c0 454 /* -- 4 byte */
dflet 0:bbe98578d4c0 455 SlrxFilterOffset_t UpperOffset;
dflet 0:bbe98578d4c0 456 }SlrxFilterPayloadType_t;
dflet 0:bbe98578d4c0 457
dflet 0:bbe98578d4c0 458 /*! \typedef SlrxFilterCombinationTypeOperator_t
dflet 0:bbe98578d4c0 459 * Enumerate the optional operators for the combination type
dflet 0:bbe98578d4c0 460 * filterID1 is located in the first arg , filterId2 is the second arg,see ::SlrxFilterCombinationType_t.CombinationFilterId
dflet 0:bbe98578d4c0 461 */
dflet 0:bbe98578d4c0 462 typedef _u8 SlrxFilterCombinationTypeOperator_t;
dflet 0:bbe98578d4c0 463 /* Possible values for SlrxFilterCombinationTypeOperator_t */
dflet 0:bbe98578d4c0 464 /*! !filterID1 */
dflet 0:bbe98578d4c0 465 #define COMBINED_FUNC_NOT (0)
dflet 0:bbe98578d4c0 466 /*! filterID1 && filterID2 */
dflet 0:bbe98578d4c0 467 #define COMBINED_FUNC_AND (1)
dflet 0:bbe98578d4c0 468 /*! filterID1 && filterID2 */
dflet 0:bbe98578d4c0 469 #define COMBINED_FUNC_OR (2)
dflet 0:bbe98578d4c0 470
dflet 0:bbe98578d4c0 471 /*! \typedef SlrxFilterCombinationType_t
dflet 0:bbe98578d4c0 472 * Defines the structure which define the combination type filter
dflet 0:bbe98578d4c0 473 * The combined filter enable to make operation on one or two filter,
dflet 0:bbe98578d4c0 474 * for example !filterId1 or and(filterId2,filterId3).
dflet 0:bbe98578d4c0 475 *
dflet 0:bbe98578d4c0 476 */
dflet 0:bbe98578d4c0 477 /* -- 4 byte */
dflet 0:bbe98578d4c0 478 typedef struct SlrxFilterCombinationType_t
dflet 0:bbe98578d4c0 479 {
dflet 0:bbe98578d4c0 480 /* ! combination operator */
dflet 0:bbe98578d4c0 481 /* -- 1 byte */
dflet 0:bbe98578d4c0 482 SlrxFilterCombinationTypeOperator_t CombinationTypeOperator;
dflet 0:bbe98578d4c0 483 /* ! filterID, may be one or two depends on the combination operator type */
dflet 0:bbe98578d4c0 484 /* -- 2 byte */
dflet 0:bbe98578d4c0 485 SlrxFilterID_t CombinationFilterId[SL_RX_FILTER_NUM_OF_COMBINATION_TYPE_ARGS];
dflet 0:bbe98578d4c0 486 /* ! Padding */
dflet 0:bbe98578d4c0 487 /* -- 1 byte */
dflet 0:bbe98578d4c0 488 _u8 Padding;
dflet 0:bbe98578d4c0 489 }SlrxFilterCombinationType_t;
dflet 0:bbe98578d4c0 490
dflet 0:bbe98578d4c0 491
dflet 0:bbe98578d4c0 492 /*! \typedef SlrxFilterRule_t
dflet 0:bbe98578d4c0 493 * Rule structure composed of behavioral flags and the filter rule definitions
dflet 0:bbe98578d4c0 494 *
dflet 0:bbe98578d4c0 495 */
dflet 0:bbe98578d4c0 496 /* -- 56 byte */
dflet 0:bbe98578d4c0 497 typedef union SlrxFilterRule_t
dflet 0:bbe98578d4c0 498 {
dflet 0:bbe98578d4c0 499 /* ! Header type rule , see explanation on the ::SlrxFilterHeaderType_t structure */
dflet 0:bbe98578d4c0 500 /* -- 56 byte */
dflet 0:bbe98578d4c0 501 SlrxFilterHeaderType_t HeaderType;
dflet 0:bbe98578d4c0 502 /* ! Payload rule, not supported in current release */
dflet 0:bbe98578d4c0 503 /* -- 40 byte */
dflet 0:bbe98578d4c0 504 SlrxFilterPayloadType_t PayLoadHeaderType; /* future for exact pattern or like hood pattern */
dflet 0:bbe98578d4c0 505 /* ! Combined type rule , see explanation in ::SlrxFilterCombinationType_t structure */
dflet 0:bbe98578d4c0 506 /* -- 4 byte */
dflet 0:bbe98578d4c0 507 SlrxFilterCombinationType_t CombinationType;
dflet 0:bbe98578d4c0 508 }SlrxFilterRule_t;
dflet 0:bbe98578d4c0 509
dflet 0:bbe98578d4c0 510 /*! \typedef SlrxFilterTriggerRoles_t
dflet 0:bbe98578d4c0 511 * Bit field which represents the roleId possible values
dflet 0:bbe98578d4c0 512 * In the current release only Station/AP roles are supported.
dflet 0:bbe98578d4c0 513 */
dflet 0:bbe98578d4c0 514 #define RX_FILTER_ROLE_AP (1)
dflet 0:bbe98578d4c0 515 #define RX_FILTER_ROLE_STA (2)
dflet 0:bbe98578d4c0 516 #define RX_FILTER_ROLE_PROMISCUOUS (4)
dflet 0:bbe98578d4c0 517 #define RX_FILTER_ROLE_NULL (0)
dflet 0:bbe98578d4c0 518
dflet 0:bbe98578d4c0 519 typedef union SlrxFilterTriggerRoles_t
dflet 0:bbe98578d4c0 520 {
dflet 0:bbe98578d4c0 521 /* struct */
dflet 0:bbe98578d4c0 522 /* { */
dflet 0:bbe98578d4c0 523 /* _u8 RoleAP :1; */
dflet 0:bbe98578d4c0 524 /* _u8 RoleStation :1; */
dflet 0:bbe98578d4c0 525 /* The filter is activated only in Promiscuous mode */
dflet 0:bbe98578d4c0 526 /* _u8 PromiscuousMode :1; */
dflet 0:bbe98578d4c0 527 /* _u8 RoleReserved :5; */
dflet 0:bbe98578d4c0 528 /* }; */
dflet 0:bbe98578d4c0 529 /* ! Bit fiels of the Filter role */
dflet 0:bbe98578d4c0 530 _u8 IntRepresentation;
dflet 0:bbe98578d4c0 531
dflet 0:bbe98578d4c0 532 }SlrxFilterTriggerRoles_t;
dflet 0:bbe98578d4c0 533
dflet 0:bbe98578d4c0 534 /*! \typedef SlrxFilterTriggerConnectionStates_t
dflet 0:bbe98578d4c0 535 * Bit field representing the possible values of the When section of the rule
dflet 0:bbe98578d4c0 536 *
dflet 0:bbe98578d4c0 537 */
dflet 0:bbe98578d4c0 538 #define RX_FILTER_CONNECTION_STATE_STA_CONNECTED (1)
dflet 0:bbe98578d4c0 539 #define RX_FILTER_CONNECTION_STATE_STA_NOT_CONNECTED (2)
dflet 0:bbe98578d4c0 540 #define RX_FILTER_CONNECTION_STATE_STA_HAS_IP (4)
dflet 0:bbe98578d4c0 541 #define RX_FILTER_CONNECTION_STATE_STA_HAS_NO_IP (8)
dflet 0:bbe98578d4c0 542
dflet 0:bbe98578d4c0 543 typedef union SlrxFilterTriggerConnectionStates_t
dflet 0:bbe98578d4c0 544 {
dflet 0:bbe98578d4c0 545 /* struct */
dflet 0:bbe98578d4c0 546 /* { */
dflet 0:bbe98578d4c0 547 /* _u8 RoleStationWiFiConnected :1; */
dflet 0:bbe98578d4c0 548 /* _u8 RoleStationWiFiDisconneted:1; */
dflet 0:bbe98578d4c0 549 /* _u8 RoleStationWiFiHasIp:1; */
dflet 0:bbe98578d4c0 550 /* _u8 RoleStationWiFiHasNoIp:1; */
dflet 0:bbe98578d4c0 551 /* _u8 RoleStationWiFiSocketOpened:1; */
dflet 0:bbe98578d4c0 552 /* _u8 RoleStationWiFiSocketclosed:1; */
dflet 0:bbe98578d4c0 553 /* }; */
dflet 0:bbe98578d4c0 554 /* */
dflet 0:bbe98578d4c0 555 /* ! */
dflet 0:bbe98578d4c0 556 _u8 IntRepresentation;
dflet 0:bbe98578d4c0 557
dflet 0:bbe98578d4c0 558 }SlrxFilterTriggerConnectionStates_t;
dflet 0:bbe98578d4c0 559
dflet 0:bbe98578d4c0 560 /*! \typedef SlrxFilterDBTriggerArg_t
dflet 0:bbe98578d4c0 561 * Provides container for entering the filter 'when' argument.
dflet 0:bbe98578d4c0 562 * The current release support 'When rules' which has no arguments.
dflet 0:bbe98578d4c0 563 * For example :
dflet 0:bbe98578d4c0 564 * When connect to specific AP -- the AP bssid is the argument.
dflet 0:bbe98578d4c0 565 *
dflet 0:bbe98578d4c0 566 */
dflet 0:bbe98578d4c0 567 typedef _u32 SlrxFilterDBTriggerArg_t;
dflet 0:bbe98578d4c0 568
dflet 0:bbe98578d4c0 569
dflet 0:bbe98578d4c0 570
dflet 0:bbe98578d4c0 571 /*! \typedef SlrxFilterCounterId_t
dflet 0:bbe98578d4c0 572 * the counter ID we have 4 counters
dflet 0:bbe98578d4c0 573 */
dflet 0:bbe98578d4c0 574 typedef _u8 SlrxFilterCounterId_t;
dflet 0:bbe98578d4c0 575 /* Possible values for SlrxFilterCounterId_t */
dflet 0:bbe98578d4c0 576 #define NO_TRIGGER (0)
dflet 0:bbe98578d4c0 577 #define RX_FILTER_COUNTER1 (1)
dflet 0:bbe98578d4c0 578 #define RX_FILTER_COUNTER2 (2)
dflet 0:bbe98578d4c0 579 #define RX_FILTER_COUNTER3 (3)
dflet 0:bbe98578d4c0 580 #define RX_FILTER_COUNTER4 (4)
dflet 0:bbe98578d4c0 581 #define RX_FILTER_COUNTER5 (5)
dflet 0:bbe98578d4c0 582 #define RX_FILTER_COUNTER6 (6)
dflet 0:bbe98578d4c0 583 #define RX_FILTER_COUNTER7 (7)
dflet 0:bbe98578d4c0 584 #define RX_FILTER_COUNTER8 (8)
dflet 0:bbe98578d4c0 585 #define MAX_RX_FILTER_COUNTER (9)
dflet 0:bbe98578d4c0 586
dflet 0:bbe98578d4c0 587
dflet 0:bbe98578d4c0 588
dflet 0:bbe98578d4c0 589 /*! \typedef SlrxFilterActionArgs_t
dflet 0:bbe98578d4c0 590 * Possible value for filter action args
dflet 0:bbe98578d4c0 591 *
dflet 0:bbe98578d4c0 592 */
dflet 0:bbe98578d4c0 593
dflet 0:bbe98578d4c0 594 typedef _u8 SlrxFilterActionArgs_t;
dflet 0:bbe98578d4c0 595 /* Possible values for SlrxFilterActionArgs_t */
dflet 0:bbe98578d4c0 596 #define ACTION_ARG_REG_1_4 (0)
dflet 0:bbe98578d4c0 597 /* ! Can be use as counter */
dflet 0:bbe98578d4c0 598 #define ACTION_ARG_TEMPLATE (1)
dflet 0:bbe98578d4c0 599 /* ! Can be use as counter */
dflet 0:bbe98578d4c0 600 #define ACTION_ARG_EVENT (2)
dflet 0:bbe98578d4c0 601
dflet 0:bbe98578d4c0 602 /* ! GPIO number */
dflet 0:bbe98578d4c0 603 #define ACTION_ARG_GPIO (4)
dflet 0:bbe98578d4c0 604 /*!
dflet 0:bbe98578d4c0 605 * \def SL_RX_FILTER_NUM_OF_BYTES_FOR_ACTIONS_ARGS
dflet 0:bbe98578d4c0 606 *
dflet 0:bbe98578d4c0 607 */
dflet 0:bbe98578d4c0 608 #define SL_RX_FILTER_NUM_OF_BYTES_FOR_ACTIONS_ARGS (5)
dflet 0:bbe98578d4c0 609
dflet 0:bbe98578d4c0 610
dflet 0:bbe98578d4c0 611
dflet 0:bbe98578d4c0 612
dflet 0:bbe98578d4c0 613 /*! \typedef SlrxFilterTrigger_t
dflet 0:bbe98578d4c0 614 * The filter trigger, determine when the filter is triggered,
dflet 0:bbe98578d4c0 615 * The filter is triggered in the following condition :\n
dflet 0:bbe98578d4c0 616 * 1. The filter parent is triggered\n
dflet 0:bbe98578d4c0 617 * 2. The requested connection type exists, i.e. wlan_connect\n
dflet 0:bbe98578d4c0 618 * 3. The filter role is the same as the system role\n
dflet 0:bbe98578d4c0 619 *
dflet 0:bbe98578d4c0 620 */
dflet 0:bbe98578d4c0 621 /* -- 12 byte */
dflet 0:bbe98578d4c0 622 typedef struct SlrxFilterTrigger_t
dflet 0:bbe98578d4c0 623 {
dflet 0:bbe98578d4c0 624 /*! The parent filter ID, this is the way to build filter tree. */
dflet 0:bbe98578d4c0 625 /* NULL value means tree root.
dflet 0:bbe98578d4c0 626 */
dflet 0:bbe98578d4c0 627 /* -- 1 byte */
dflet 0:bbe98578d4c0 628 SlrxFilterID_t ParentFilterID;
dflet 0:bbe98578d4c0 629 /* ! See ::SlrxFilterCounterId_t explanation */
dflet 0:bbe98578d4c0 630 /* -- 1 byte */
dflet 0:bbe98578d4c0 631 SlrxFilterCounterId_t Trigger;
dflet 0:bbe98578d4c0 632 /* ! See :: SlrxFilterTriggerConnectionStates_t */
dflet 0:bbe98578d4c0 633 /* -- 1 byte */
dflet 0:bbe98578d4c0 634 SlrxFilterTriggerConnectionStates_t TriggerArgConnectionState;
dflet 0:bbe98578d4c0 635 /* ! See ::SlrxFilterTriggerRoles_t */
dflet 0:bbe98578d4c0 636 /* -- 1 byte */
dflet 0:bbe98578d4c0 637 SlrxFilterTriggerRoles_t TriggerArgRoleStatus;
dflet 0:bbe98578d4c0 638 /* ! The Trigger arguments are in the same order as the Trigger bit field order. */
dflet 0:bbe98578d4c0 639 /* -- 4 byte */
dflet 0:bbe98578d4c0 640 SlrxFilterDBTriggerArg_t TriggerArg;
dflet 0:bbe98578d4c0 641 /** The compare function which will be operate for each bit that is turned on in the ::SlrxFilterTrigger_t.Trigger field,
dflet 0:bbe98578d4c0 642 * for example , in case the second bit in the Trigger function is on the second function in the list will be executed.
dflet 0:bbe98578d4c0 643 *
dflet 0:bbe98578d4c0 644 */
dflet 0:bbe98578d4c0 645 /* -- 1 byte */
dflet 0:bbe98578d4c0 646 SlrxTriggerCompareFunction_t TriggerCompareFunction;
dflet 0:bbe98578d4c0 647
dflet 0:bbe98578d4c0 648 /* ! padding */
dflet 0:bbe98578d4c0 649 /* -- 3 byte */
dflet 0:bbe98578d4c0 650 _u8 Padding[3];
dflet 0:bbe98578d4c0 651 } SlrxFilterTrigger_t;
dflet 0:bbe98578d4c0 652
dflet 0:bbe98578d4c0 653 /*! \typedef SlrxFilterActionType_t
dflet 0:bbe98578d4c0 654 * The actions are executed only if the filter is matched,\n
dflet 0:bbe98578d4c0 655 * In case of false match the packet is transfered to the HOST. \n
dflet 0:bbe98578d4c0 656 * The action is composed of bit field structure,
dflet 0:bbe98578d4c0 657 * up to 2 actions can be defined per filter.
dflet 0:bbe98578d4c0 658 *
dflet 0:bbe98578d4c0 659 */
dflet 0:bbe98578d4c0 660 #define RX_FILTER_ACTION_NULL (0x0)
dflet 0:bbe98578d4c0 661 #define RX_FILTER_ACTION_DROP (0x1)
dflet 0:bbe98578d4c0 662 #define RX_FILTER_ACTION_GPIO (0x2)
dflet 0:bbe98578d4c0 663 #define RX_FILTER_ACTION_ON_REG_INCREASE (0x4)
dflet 0:bbe98578d4c0 664 #define RX_FILTER_ACTION_ON_REG_DECREASE (0x8)
dflet 0:bbe98578d4c0 665 #define RX_FILTER_ACTION_ON_REG_RESET (0x10)
dflet 0:bbe98578d4c0 666 #define RX_FILTER_ACTION_SEND_TEMPLATE (0x20) /* unsupported */
dflet 0:bbe98578d4c0 667 #define RX_FILTER_ACTION_EVENT_TO_HOST (0x40) /* unsupported */
dflet 0:bbe98578d4c0 668
dflet 0:bbe98578d4c0 669 typedef union SlrxFilterActionType_t
dflet 0:bbe98578d4c0 670 {
dflet 0:bbe98578d4c0 671 /* struct */
dflet 0:bbe98578d4c0 672 /* { */
dflet 0:bbe98578d4c0 673 /* ! No action to execute the packet is dropped,drop is always on leaf. */
dflet 0:bbe98578d4c0 674 /* ! If not dropped ,The packet is passed to the next filter or in case it is the last filter to the host */
dflet 0:bbe98578d4c0 675 /* _u8 ActionDrop : 1; */
dflet 0:bbe98578d4c0 676 /* ! Not Supported in the current release */
dflet 0:bbe98578d4c0 677 /* _u8 ActionGpio : 1; */
dflet 0:bbe98578d4c0 678 /*! action can increase counter registers.
dflet 0:bbe98578d4c0 679 * 1 = Increase
dflet 0:bbe98578d4c0 680 * 2 = decrease
dflet 0:bbe98578d4c0 681 * 3 = reset
dflet 0:bbe98578d4c0 682 */
dflet 0:bbe98578d4c0 683 /* _u8 ActionOnREGIncrease : 1; */
dflet 0:bbe98578d4c0 684 /* _u8 ActionOnREGDecrease : 1; */
dflet 0:bbe98578d4c0 685 /* _u8 ActionOnREGReset : 1; */
dflet 0:bbe98578d4c0 686
dflet 0:bbe98578d4c0 687 /* ! Not Supported in the current release */
dflet 0:bbe98578d4c0 688 /* _u8 ActionSendTemplate : 1; */
dflet 0:bbe98578d4c0 689 /* ! Not Supported in the current release */
dflet 0:bbe98578d4c0 690 /* _u8 ActionEventToHost: 1; */
dflet 0:bbe98578d4c0 691 /* _u8 padding: 1; */
dflet 0:bbe98578d4c0 692 /* }; */
dflet 0:bbe98578d4c0 693
dflet 0:bbe98578d4c0 694 _u8 IntRepresentation;
dflet 0:bbe98578d4c0 695
dflet 0:bbe98578d4c0 696 }SlrxFilterActionType_t;
dflet 0:bbe98578d4c0 697
dflet 0:bbe98578d4c0 698 /*! \typedef SlrxFilterAction_t
dflet 0:bbe98578d4c0 699 * Several actions can be defined,\n
dflet 0:bbe98578d4c0 700 * The action is executed in case the filter rule is matched.
dflet 0:bbe98578d4c0 701 */
dflet 0:bbe98578d4c0 702 /* -- 8 byte */
dflet 0:bbe98578d4c0 703 typedef struct SlrxFilterAction_t
dflet 0:bbe98578d4c0 704 {
dflet 0:bbe98578d4c0 705 /* -- 1 byte */
dflet 0:bbe98578d4c0 706 /* ! Determine which actions are supported */
dflet 0:bbe98578d4c0 707 SlrxFilterActionType_t ActionType;
dflet 0:bbe98578d4c0 708 /* ! Buffer for the action arguments */
dflet 0:bbe98578d4c0 709 /**
dflet 0:bbe98578d4c0 710 * <b>location 0</b> - The counter to increase
dflet 0:bbe98578d4c0 711 * In case the action is of type "increase" the arg will contain the counter number,
dflet 0:bbe98578d4c0 712 * The counter number values are as in ::SlrxFilterCounterId_t.\n
dflet 0:bbe98578d4c0 713 * <b>location 1</b> - The template arg.\n
dflet 0:bbe98578d4c0 714 * <b>location 2</b> - The event arg.\n
dflet 0:bbe98578d4c0 715 *
dflet 0:bbe98578d4c0 716 */
dflet 0:bbe98578d4c0 717 /* -- 5 byte */
dflet 0:bbe98578d4c0 718 SlrxFilterActionArg_t ActionArg[SL_RX_FILTER_NUM_OF_BYTES_FOR_ACTIONS_ARGS];
dflet 0:bbe98578d4c0 719
dflet 0:bbe98578d4c0 720 /* ! Padding */
dflet 0:bbe98578d4c0 721 /* - 2 Bytes */
dflet 0:bbe98578d4c0 722 _u8 Padding[2];
dflet 0:bbe98578d4c0 723
dflet 0:bbe98578d4c0 724 } SlrxFilterAction_t;
dflet 0:bbe98578d4c0 725
dflet 0:bbe98578d4c0 726
dflet 0:bbe98578d4c0 727 /*! \struct _WlanRxFilterOperationCommandBuff_t
dflet 0:bbe98578d4c0 728 * The structure is used for the interface HOST NWP.\n
dflet 0:bbe98578d4c0 729 * The supported operation : \n
dflet 0:bbe98578d4c0 730 * ::ENABLE_DISABLE_RX_FILTER,\n
dflet 0:bbe98578d4c0 731 * ::REMOVE_RX_FILTER,\n
dflet 0:bbe98578d4c0 732 *
dflet 0:bbe98578d4c0 733 */
dflet 0:bbe98578d4c0 734 /* 20 bytes */
dflet 0:bbe98578d4c0 735 typedef struct _WlanRxFilterOperationCommandBuff_t
dflet 0:bbe98578d4c0 736 {
dflet 0:bbe98578d4c0 737 /* -- 16 bytes */
dflet 0:bbe98578d4c0 738 SlrxFilterIdMask_t FilterIdMask;
dflet 0:bbe98578d4c0 739 /* 4 bytes */
dflet 0:bbe98578d4c0 740 _u8 Padding[4];
dflet 0:bbe98578d4c0 741 }_WlanRxFilterOperationCommandBuff_t;
dflet 0:bbe98578d4c0 742
dflet 0:bbe98578d4c0 743
dflet 0:bbe98578d4c0 744
dflet 0:bbe98578d4c0 745 /* -- 56 bytes */
dflet 0:bbe98578d4c0 746 typedef struct _WlanRxFilterUpdateArgsCommandBuff_t
dflet 0:bbe98578d4c0 747 {
dflet 0:bbe98578d4c0 748 /* -- 1 bytes */
dflet 0:bbe98578d4c0 749 _u8 FilterId;
dflet 0:bbe98578d4c0 750
dflet 0:bbe98578d4c0 751 /* -- 1 bytes */
dflet 0:bbe98578d4c0 752 /* ! the args representation */
dflet 0:bbe98578d4c0 753 _u8 BinaryRepresentation;
dflet 0:bbe98578d4c0 754
dflet 0:bbe98578d4c0 755 /* -- 52 byte */
dflet 0:bbe98578d4c0 756 SlrxFilterRuleHeaderArgsAndMask_t FilterRuleHeaderArgsAndMask;
dflet 0:bbe98578d4c0 757
dflet 0:bbe98578d4c0 758 /* -- 2 bytes */
dflet 0:bbe98578d4c0 759 _u8 Padding[2];
dflet 0:bbe98578d4c0 760 }_WlanRxFilterUpdateArgsCommandBuff_t;
dflet 0:bbe98578d4c0 761
dflet 0:bbe98578d4c0 762
dflet 0:bbe98578d4c0 763 /*! \typedef _WlanRxFilterRetrieveEnableStatusCommandResponseBuff_t
dflet 0:bbe98578d4c0 764 * The structure is used for the interface HOST NWP.\n
dflet 0:bbe98578d4c0 765 *
dflet 0:bbe98578d4c0 766 */
dflet 0:bbe98578d4c0 767 /* -- 16 bytes */
dflet 0:bbe98578d4c0 768 typedef struct _WlanRxFilterRetrieveEnableStatusCommandResponseBuff_t
dflet 0:bbe98578d4c0 769 {
dflet 0:bbe98578d4c0 770
dflet 0:bbe98578d4c0 771 /* ! the filter set bit map */
dflet 0:bbe98578d4c0 772 /* -- 16 bytes */
dflet 0:bbe98578d4c0 773 SlrxFilterIdMask_t FilterIdMask;
dflet 0:bbe98578d4c0 774
dflet 0:bbe98578d4c0 775 }_WlanRxFilterRetrieveEnableStatusCommandResponseBuff_t;
dflet 0:bbe98578d4c0 776
dflet 0:bbe98578d4c0 777
dflet 0:bbe98578d4c0 778 /*! \struct _WlanRxFilterPrePreparedFiltersCommandBuff_t
dflet 0:bbe98578d4c0 779 * The function enables to perform operations on pre-prepared filters
dflet 0:bbe98578d4c0 780 *
dflet 0:bbe98578d4c0 781 */
dflet 0:bbe98578d4c0 782 typedef struct _WlanRxFilterPrePreparedFiltersCommandBuff_t
dflet 0:bbe98578d4c0 783 {
dflet 0:bbe98578d4c0 784 /* ! the filter set bit map */
dflet 0:bbe98578d4c0 785 /* -- 4 bytes */
dflet 0:bbe98578d4c0 786 SlrxFilterPrePreparedFiltersMask_t FilterPrePreparedFiltersMask;
dflet 0:bbe98578d4c0 787
dflet 0:bbe98578d4c0 788 }_WlanRxFilterPrePreparedFiltersCommandBuff_t;
dflet 0:bbe98578d4c0 789
dflet 0:bbe98578d4c0 790
dflet 0:bbe98578d4c0 791 /*! \typedef sl_protocol_WlanRxFilterPrePreparedFiltersCommandResponseBuff_t
dflet 0:bbe98578d4c0 792 *
dflet 0:bbe98578d4c0 793 */
dflet 0:bbe98578d4c0 794 /*-- 4 bytes */
dflet 0:bbe98578d4c0 795 typedef struct _WlanRxFilterPrePreparedFiltersCommandResponseBuff_t
dflet 0:bbe98578d4c0 796 {
dflet 0:bbe98578d4c0 797 /* -- 4 bytes */
dflet 0:bbe98578d4c0 798 /* ! the filter set bit map */
dflet 0:bbe98578d4c0 799 SlrxFilterPrePreparedFiltersMask_t FilterPrePreparedFiltersMask;
dflet 0:bbe98578d4c0 800
dflet 0:bbe98578d4c0 801 }_WlanRxFilterPrePreparedFiltersCommandResponseBuff_t;
dflet 0:bbe98578d4c0 802
dflet 0:bbe98578d4c0 803
dflet 0:bbe98578d4c0 804
dflet 0:bbe98578d4c0 805 typedef _u8 SLrxFilterOperation_t;
dflet 0:bbe98578d4c0 806 #define SL_ENABLE_DISABLE_RX_FILTER (0)
dflet 0:bbe98578d4c0 807 #define SL_REMOVE_RX_FILTER (1)
dflet 0:bbe98578d4c0 808 #define SL_STORE_RX_FILTERS (2)
dflet 0:bbe98578d4c0 809 #define SL_UPDATE_RX_FILTER_ARGS (3)
dflet 0:bbe98578d4c0 810 #define SL_FILTER_RETRIEVE_ENABLE_STATE (4)
dflet 0:bbe98578d4c0 811 #define SL_FILTER_PRE_PREPARED_RETRIEVE_CREATE_REMOVE_STATE (5)
dflet 0:bbe98578d4c0 812 #define SL_FILTER_PRE_PREPARED_SET_CREATE_REMOVE_STATE (6)
dflet 0:bbe98578d4c0 813
dflet 0:bbe98578d4c0 814
dflet 0:bbe98578d4c0 815 /* Bit manipulation for 8 bit */
dflet 0:bbe98578d4c0 816 #define ISBITSET8(x,i) ((x[i>>3] & (0x80>>(i&7)))!=0) /* < Is bit set, 8 bit unsigned numbers = x , location = i */
dflet 0:bbe98578d4c0 817 #define SETBIT8(x,i) x[i>>3]|=(0x80>>(i&7)); /* < Set bit,8 bit unsigned numbers = x , location = i */
dflet 0:bbe98578d4c0 818 #define CLEARBIT8(x,i) x[i>>3]&=(0x80>>(i&7))^0xFF; /* < Clear bit,8 bit unsigned numbers = x , location = i */
dflet 0:bbe98578d4c0 819
dflet 0:bbe98578d4c0 820
dflet 0:bbe98578d4c0 821 /*********************************************************************************************/
dflet 0:bbe98578d4c0 822 /* Function prototypes */
dflet 0:bbe98578d4c0 823 /*********************************************************************************************/
dflet 0:bbe98578d4c0 824
dflet 0:bbe98578d4c0 825 /*!
dflet 0:bbe98578d4c0 826
dflet 0:bbe98578d4c0 827 \addtogroup wlan
dflet 0:bbe98578d4c0 828 @{
dflet 0:bbe98578d4c0 829
dflet 0:bbe98578d4c0 830 */
dflet 0:bbe98578d4c0 831
dflet 0:bbe98578d4c0 832
dflet 0:bbe98578d4c0 833 /*!
dflet 0:bbe98578d4c0 834 \brief Adds new filter rule to the system
dflet 0:bbe98578d4c0 835
dflet 0:bbe98578d4c0 836 \param[in] RuleType The rule type
dflet 0:bbe98578d4c0 837 \param[in] FilterFlags Flags which set the type of header rule Args and sets the persistent flag
dflet 0:bbe98578d4c0 838 \param[in] pRule Determine the filter rule logic
dflet 0:bbe98578d4c0 839 \param[in] pTrigger Determine when the rule is triggered also sets rule parent.
dflet 0:bbe98578d4c0 840 \param[in] pAction Sets the action to be executed in case the match functions pass
dflet 0:bbe98578d4c0 841 \param[out] pFilterId The filterId which was created
dflet 0:bbe98578d4c0 842
dflet 0:bbe98578d4c0 843 \return On success, zero is returned. Otherwise error code is returned
dflet 0:bbe98578d4c0 844 */
dflet 0:bbe98578d4c0 845 #if _SL_INCLUDE_FUNC(sl_WlanRxFilterAdd)
dflet 0:bbe98578d4c0 846 SlrxFilterID_t sl_WlanRxFilterAdd( SlrxFilterRuleType_t RuleType,
dflet 0:bbe98578d4c0 847 SlrxFilterFlags_t FilterFlags,
dflet 0:bbe98578d4c0 848 const SlrxFilterRule_t* const Rule,
dflet 0:bbe98578d4c0 849 const SlrxFilterTrigger_t* const Trigger,
dflet 0:bbe98578d4c0 850 const SlrxFilterAction_t* const Action,
dflet 0:bbe98578d4c0 851 SlrxFilterID_t* pFilterId);
dflet 0:bbe98578d4c0 852
dflet 0:bbe98578d4c0 853 #endif
dflet 0:bbe98578d4c0 854
dflet 0:bbe98578d4c0 855
dflet 0:bbe98578d4c0 856
dflet 0:bbe98578d4c0 857
dflet 0:bbe98578d4c0 858
dflet 0:bbe98578d4c0 859 /*!
dflet 0:bbe98578d4c0 860 \brief Sets parameters to Rx filters
dflet 0:bbe98578d4c0 861
dflet 0:bbe98578d4c0 862 \param[in] RxFilterOperation
dflet 0:bbe98578d4c0 863 possible operations :
dflet 0:bbe98578d4c0 864 - SL_ENABLE_DISABLE_RX_FILTER - Enables\disables filter in a filter list
dflet 0:bbe98578d4c0 865 - SL_REMOVE_RX_FILTER - Removes filter from memory ( to remove from flash call SL_STORE_RX_FILTERS after this command)
dflet 0:bbe98578d4c0 866 - SL_STORE_RX_FILTERS - Save the filters for persistent
dflet 0:bbe98578d4c0 867 - SL_UPDATE_RX_FILTER_ARGS - Update the arguments of existing filter
dflet 0:bbe98578d4c0 868 - SL_FILTER_PRE_PREPARED_SET_CREATE_REMOVE_STATE - Change the default creation of the pre-prepared filters
dflet 0:bbe98578d4c0 869
dflet 0:bbe98578d4c0 870 \param[in] pInputBuffer options:
dflet 0:bbe98578d4c0 871 The buffer input is _WlanRxFilterOperationCommandBuff_t:
dflet 0:bbe98578d4c0 872 - SL_ENABLE_DISABLE_RX_FILTER
dflet 0:bbe98578d4c0 873 - SL_REMOVE_RX_FILTER
dflet 0:bbe98578d4c0 874 - SL_STORE_RX_FILTERS
dflet 0:bbe98578d4c0 875 The buffer input is _WlanRxFilterUpdateArgsCommandBuff_t:
dflet 0:bbe98578d4c0 876 - SL_UPDATE_RX_FILTER_ARGS
dflet 0:bbe98578d4c0 877 The buffer input is _WlanRxFilterPrePreparedFiltersCommandBuff_t:
dflet 0:bbe98578d4c0 878 - SL_FILTER_PRE_PREPARED_SET_CREATE_REMOVE_STATE
dflet 0:bbe98578d4c0 879
dflet 0:bbe98578d4c0 880 \param[in] InputbufferLength The length in byte of the input buffer
dflet 0:bbe98578d4c0 881
dflet 0:bbe98578d4c0 882 \return On success, zero is returned. Otherwise error code is returned
dflet 0:bbe98578d4c0 883 */
dflet 0:bbe98578d4c0 884
dflet 0:bbe98578d4c0 885 #if _SL_INCLUDE_FUNC(sl_WlanRxFilterSet)
dflet 0:bbe98578d4c0 886 _i16 sl_WlanRxFilterSet( const SLrxFilterOperation_t RxFilterOperation,
dflet 0:bbe98578d4c0 887 const _u8* const pInputBuffer,
dflet 0:bbe98578d4c0 888 _u16 InputbufferLength);
dflet 0:bbe98578d4c0 889 #endif
dflet 0:bbe98578d4c0 890
dflet 0:bbe98578d4c0 891 /*!
dflet 0:bbe98578d4c0 892 \brief Gets parameters of Rx filters
dflet 0:bbe98578d4c0 893
dflet 0:bbe98578d4c0 894 \param[in] RxFilterOperation
dflet 0:bbe98578d4c0 895 possible operations :
dflet 0:bbe98578d4c0 896 - SL_FILTER_RETRIEVE_ENABLE_STATE - Retrieves the enable disable status
dflet 0:bbe98578d4c0 897 - SL_FILTER_PRE_PREPARED_RETRIEVE_CREATE_REMOVE_STATE - Retrieves the pre-prepared filters creation status
dflet 0:bbe98578d4c0 898
dflet 0:bbe98578d4c0 899 \param[in] pOutputBuffer
dflet 0:bbe98578d4c0 900 The buffer input is _WlanRxFilterRetrieveEnableStatusCommandResponseBuff_t:
dflet 0:bbe98578d4c0 901 - SL_FILTER_RETRIEVE_ENABLE_STATE
dflet 0:bbe98578d4c0 902 The buffer input is _WlanRxFilterPrePreparedFiltersCommandResponseBuff_t:
dflet 0:bbe98578d4c0 903 - SL_FILTER_PRE_PREPARED_RETRIEVE_CREATE_REMOVE_STATE
dflet 0:bbe98578d4c0 904
dflet 0:bbe98578d4c0 905 \param[in] OutputbufferLength The length in byte of the output buffer
dflet 0:bbe98578d4c0 906
dflet 0:bbe98578d4c0 907 \return On success, zero is returned. Otherwise error code is returned
dflet 0:bbe98578d4c0 908 */
dflet 0:bbe98578d4c0 909
dflet 0:bbe98578d4c0 910 #if _SL_INCLUDE_FUNC(sl_WlanRxFilterGet)
dflet 0:bbe98578d4c0 911 _i16 sl_WlanRxFilterGet(const SLrxFilterOperation_t RxFilterOperation,
dflet 0:bbe98578d4c0 912 _u8* pOutputBuffer,
dflet 0:bbe98578d4c0 913 _u16 OutputbufferLength);
dflet 0:bbe98578d4c0 914 #endif
dflet 0:bbe98578d4c0 915
dflet 0:bbe98578d4c0 916
dflet 0:bbe98578d4c0 917 /*!
dflet 0:bbe98578d4c0 918
dflet 0:bbe98578d4c0 919 Close the Doxygen group.
dflet 0:bbe98578d4c0 920 @}
dflet 0:bbe98578d4c0 921
dflet 0:bbe98578d4c0 922 */
dflet 0:bbe98578d4c0 923
dflet 0:bbe98578d4c0 924 #ifdef __cplusplus
dflet 0:bbe98578d4c0 925 }
dflet 0:bbe98578d4c0 926 #endif /* __cplusplus */
dflet 0:bbe98578d4c0 927
dflet 0:bbe98578d4c0 928 #endif /* RX_FILTERS_PREPROCESSOR_CLI_IF_H_ */
dflet 0:bbe98578d4c0 929
dflet 0:bbe98578d4c0 930
dflet 0:bbe98578d4c0 931