Port of TI's CC3100 Websock camera demo. Using FreeRTOS, mbedTLS, also parts of Arducam for cams ov5642 and 0v2640. Can also use MT9D111. Work in progress. Be warned some parts maybe a bit flacky. This is for Seeed Arch max only, for an M3, see the demo for CM3 using the 0v5642 aducam mini.

Dependencies:   mbed

Committer:
dflet
Date:
Tue Sep 15 16:45:04 2015 +0000
Revision:
22:f9b5e0b80bf2
Parent:
0:50cedd586816
Removed some debug.

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