David Fletcher / Mbed 2 deprecated cc3100_Test_websock_Camera_CM4F

Dependencies:   mbed

Committer:
dflet
Date:
Wed Jun 24 09:54:16 2015 +0000
Revision:
0:50cedd586816
First commit work in progress

Who changed what in which revision?

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