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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers cc3100_wlan_rx_filters.h Source File

cc3100_wlan_rx_filters.h

00001 /*
00002  * wlan_rx_filters.h - CC31xx/CC32xx Host Driver Implementation
00003  *
00004  * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
00005  *
00006  *
00007  *  Redistribution and use in source and binary forms, with or without
00008  *  modification, are permitted provided that the following conditions
00009  *  are met:
00010  *
00011  *    Redistributions of source code must retain the above copyright
00012  *    notice, this list of conditions and the following disclaimer.
00013  *
00014  *    Redistributions in binary form must reproduce the above copyright
00015  *    notice, this list of conditions and the following disclaimer in the
00016  *    documentation and/or other materials provided with the
00017  *    distribution.
00018  *
00019  *    Neither the name of Texas Instruments Incorporated nor the names of
00020  *    its contributors may be used to endorse or promote products derived
00021  *    from this software without specific prior written permission.
00022  *
00023  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00024  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00025  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
00026  *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
00027  *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00028  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00029  *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
00030  *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
00031  *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00032  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00033  *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00034  *
00035 */
00036 
00037 
00038 /*****************************************************************************/
00039 /* Include files                                                             */
00040 /*****************************************************************************/
00041 #include "cc3100_simplelink.h"
00042 
00043 #ifndef RX_FILTERS_PREPROCESSOR_CLI_IF_H_
00044 #define RX_FILTERS_PREPROCESSOR_CLI_IF_H_
00045 
00046 #include "cc3100_driver.h"
00047 
00048 /*****************************************************************************/
00049 /* Macro declarations                                                                        */
00050 /*****************************************************************************/
00051 
00052 /*!
00053  * \def SL_RX_FILTER_MAX_FILTERS
00054  *  The Max number of filters for 64 filters
00055  */
00056 #define SL_RX_FILTER_MAX_FILTERS 64
00057 
00058 /*!
00059  * \def SL_RX_FILTER_MAX_PRE_PREPARED_FILTERS_SETS
00060  * The Max number of software filters
00061  */
00062 #define SL_RX_FILTER_MAX_PRE_PREPARED_FILTERS_SETS      (32)
00063 /*!
00064  * \def SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS
00065  *
00066  */
00067 #define SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS          (2)
00068 /*!
00069  * \def SL_RX_FILTER_NUM_OF_FILTER_PAYLOAD_ARGS
00070  *
00071  */
00072 #define SL_RX_FILTER_NUM_OF_FILTER_PAYLOAD_ARGS         (2)
00073 /*!
00074  * \def SL_RX_FILTER_NUM_OF_FILTER_PAYLOAD_ARGS
00075  *
00076  */
00077 #define SL_RX_FILTER_NUM_OF_COMBINATION_TYPE_ARGS       (2)
00078 /*!
00079  * \def SL_RX_FILTER_LENGTH_OF_REGX_PATTERN_LENGTH
00080  *
00081  */
00082 #define SL_RX_FILTER_LENGTH_OF_REGX_PATTERN_LENGTH      (32)
00083 
00084 
00085 /*  List of possible error numbers */
00086 #define RXFL_OK                                                (0) /*  O.K */
00087 #define RXFL_OUTPUT_OR_INPUT_BUFFER_LENGTH_TOO_SMALL           (76) /* ! The output buffer length is smaller than required for that operation */
00088 #define RXFL_DEPENDENT_FILTER_SOFTWARE_FILTER_NOT_FIT          (75) /* Node filter can't be child of software filter and vice_versa */
00089 #define RXFL_DEPENDENCY_IS_NOT_PERSISTENT                      (74) /*  Dependency filter is not persistent */
00090 #define RXFL_SYSTEM_STATE_NOT_SUPPORTED_FOR_THIS_FILTER        (72) /*  System state is not supported */
00091 #define RXFL_TRIGGER_USE_REG5_TO_REG8                          (71) /*  Only counters 5 - 8 are allowed, for Tigger */
00092 #define RXFL_TRIGGER_USE_REG1_TO_REG4                          (70) /*  Only counters 1 - 4 are allowed, for trigger */
00093 #define RXFL_ACTION_USE_REG5_TO_REG8                           (69) /*  Only counters 5 - 8 are allowed, for action */
00094 #define RXFL_ACTION_USE_REG1_TO_REG4                           (68) /*  Only counters 1 - 4 are allowed, for action */
00095 #define RXFL_FIELD_SUPPORT_ONLY_EQUAL_AND_NOTEQUAL             (67) /*  Rule compare function Id is out of range */
00096 #define RXFL_WRONG_MULTICAST_BROADCAST_ADDRESS                 (66) /*  The address should be of type mutlicast or broadcast */
00097 #define RXFL_THE_FILTER_IS_NOT_OF_HEADER_TYPE                  (65) /*  The filter should be of header type */
00098 #define RXFL_WRONG_COMPARE_FUNC_FOR_BROADCAST_ADDRESS          (64) /*  The compare funcion is not suitable for broadcast address */
00099 #define RXFL_WRONG_MULTICAST_ADDRESS                           (63) /*  The address should be of muticast type */
00100 #define RXFL_DEPENDENT_FILTER_IS_NOT_PERSISTENT                (62) /*  The dependency filter is not persistent */
00101 #define RXFL_DEPENDENT_FILTER_IS_NOT_ENABLED                   (61) /*  The dependency filter is not enabled */
00102 #define RXFL_FILTER_HAS_CHILDS                                 (60) /*  The filter has childs and can't be removed */
00103 #define RXFL_CHILD_IS_ENABLED                                  (59) /*  Can't disable filter while the child is enabled */
00104 #define RXFL_DEPENDENCY_IS_DISABLED                            (58) /*  Can't enable filetr in case its depndency filter is disabled */
00105 #define RXFL_NUMBER_OF_CONNECTION_POINTS_EXCEEDED              (52) /*  Number of connection points exceeded */
00106 #define RXFL_DEPENDENT_FILTER_DEPENDENCY_ACTION_IS_DROP        (51) /*  The dependent filter has Drop action, thus the filter can't be created */
00107 #define RXFL_FILTER_DO_NOT_EXISTS                              (50) /*  The filter doesn't exists */
00108 #define RXFL_DEPEDENCY_NOT_ON_THE_SAME_LAYER                   (49) /*  The filter and its dependency must be on the same layer */
00109 #define RXFL_NUMBER_OF_ARGS_EXCEEDED                           (48) /*  Number of arguments excceded */
00110 #define RXFL_ACTION_NO_REG_NUMBER                              (47) /*  Action require counter number */
00111 #define RXFL_DEPENDENT_FILTER_LAYER_DO_NOT_FIT                 (46) /*  the filter and its dependency should be from the same layer */
00112 #define RXFL_DEPENDENT_FILTER_SYSTEM_STATE_DO_NOT_FIT          (45) /*  The filter and its dependency system state don't fit  */
00113 #define RXFL_DEPENDENT_FILTER_DO_NOT_EXIST_2                   (44) /*  The parent filter don't exist  */
00114 #define RXFL_DEPENDENT_FILTER_DO_NOT_EXIST_1                   (43) /*  The parent filter is null */
00115 #define RXFL_RULE_HEADER_ACTION_TYPE_NOT_SUPPORTED             (42) /*  The action type is not supported */
00116 #define RXFL_RULE_HEADER_TRIGGER_COMPARE_FUNC_OUT_OF_RANGE     (41) /*  The Trigger comparision function is out of range */
00117 #define RXFL_RULE_HEADER_TRIGGER_OUT_OF_RANGE                  (40) /*  The Trigger is out of range */
00118 #define RXFL_RULE_HEADER_COMPARE_FUNC_OUT_OF_RANGE             (39) /*  The rule compare function is out of range */
00119 #define RXFL_FRAME_TYPE_NOT_SUPPORTED                          (38) /*  ASCII frame type string is illegal */
00120 #define RXFL_RULE_FIELD_ID_NOT_SUPPORTED                       (37) /*  Rule field ID is out of range */
00121 #define RXFL_RULE_HEADER_FIELD_ID_ASCII_NOT_SUPPORTED          (36) /*  This ASCII field ID is not supported */
00122 #define RXFL_RULE_HEADER_NOT_SUPPORTED                         (35) /*  The header rule is not supported on current release */
00123 #define RXFL_RULE_HEADER_OUT_OF_RANGE                          (34) /*  The header rule is out of range */
00124 #define RXFL_RULE_HEADER_COMBINATION_OPERATOR_OUT_OF_RANGE     (33) /*  Combination function Id is out of ramge */
00125 #define RXFL_RULE_HEADER_FIELD_ID_OUT_OF_RANGE                 (32) /*  rule field Id is out of range */
00126 #define RXFL_UPDATE_NOT_SUPPORTED                              (31) /*  Update not supported */
00127 #define RXFL_NO_FILTERS_ARE_DEFINED                            (24) /*  No filters are defined in the system */
00128 #define RXFL_NUMBER_OF_FILTER_EXCEEDED                         (23) /*  Number of max filters excceded */
00129 
00130 
00131 /******************************************************************************/
00132 /* Type declarations                                                                         */
00133 /******************************************************************************/
00134 
00135 /*!
00136 
00137 
00138  * \typedef SlrxFilterID_t
00139  * Unique filter ID which is allocated by the system , negative number means error
00140  */
00141 typedef  int8_t    SlrxFilterID_t;
00142 
00143 
00144 /*!
00145  * \typedef SlrxFilterCompareMask_t
00146  * The mask is used for the rule comparison function
00147  */
00148 typedef uint8_t   SlrxFilterCompareMask_t;
00149 
00150 /*!
00151  * \typedef SlrxFilterIdMask_t
00152  *  Representation of filters Id as a bit field
00153  *  The bit field is used to declare which filters are involved
00154  *  in operation. Number of filter can be up to 128 filters. i.e. 128 bits are needed.
00155  *  On the current release, up to 64 filters can be defined.
00156  */
00157 typedef uint8_t   SlrxFilterIdMask_t[128/8];
00158 
00159 /*!
00160  * \typedef SlrxFilterPrePreparedFilters_t
00161  *  Describes the supported software filter sets,
00162  */
00163 typedef uint8_t  SlrxFilterPrePreparedFilters_t;
00164 #define SL_ARP_AUTO_REPLY_PRE_PREPARED_FILTERS       (0)
00165 #define SL_MULTICASTSIPV4_DROP_PREPREPARED_FILTERS   (1)
00166 #define SL_MULTICASTSIPV6_DROP_PREPREPARED_FILTERS   (2)
00167 #define SL_MULTICASTSWIFI_DROP_PREPREPARED_FILTERS   (3)
00168 
00169 
00170 
00171 /*!
00172  * \typedef SlrxFilterPrePreparedFiltersMask_t
00173  *  Describes the supported software filter sets,
00174  *  each bit represents different software filter set
00175  *  The filter sets are defined at SlrxFilterPrePreparedFilters_t
00176  */
00177 typedef uint8_t   SlrxFilterPrePreparedFiltersMask_t[SL_RX_FILTER_MAX_PRE_PREPARED_FILTERS_SETS/8];
00178 
00179 
00180 /*! \typedef SlrxFilterRegxPattern_t
00181  * The struct contains the regular expression pattern which is used in case of payload rule.
00182  * Not supported in the current release
00183  */
00184 typedef struct SlrxFilterRegxPattern_t {
00185     uint8_t x[SL_RX_FILTER_LENGTH_OF_REGX_PATTERN_LENGTH];
00186 } SlrxFilterRegxPattern_t;
00187 
00188 
00189 /*! \typedef SlrxFilterAsciiArg_t
00190  * The buffer is used to provide container for ASCII argument, which may be used in case of HEADER rule.
00191  * example for ASCII argument can be : IP = 256.0.67.1
00192  */
00193 typedef uint8_t SlrxFilterAsciiArg_t;
00194 
00195 
00196 /*! \typedef SlrxFilterBinaryArg_t
00197  * The buffer provides container for binary argument, which  may be used in case of HEADER rule
00198  */
00199 typedef uint8_t   SlrxFilterBinaryArg_t ;
00200 
00201 
00202 /*! \typedef SlrxFilterActionArg_t
00203  *  Provides container for the filter action argument.
00204  *  for example: in case action is to send automatic response , the argument is the template to be used for the automatic response.
00205  *
00206  *
00207  */
00208 typedef  uint8_t SlrxFilterActionArg_t ;
00209 
00210 
00211 
00212 /*! \typedef SlrxFilterOffset_t
00213  * The offset relative to the packet payload start location.
00214  * Not supported on current release
00215  */
00216 typedef uint32_t   SlrxFilterOffset_t;
00217 
00218 
00219 
00220 /*! \typedef SlrxFilterRuleType_t
00221  * Enumerates the different filter types.
00222  * On the current release only HEADER and COMBINATION are supported.
00223  */
00224 typedef uint8_t SlrxFilterRuleType_t;
00225 /* possible values for SlrxFilterRuleType_t */
00226 #define HEADER                    (0)
00227 #define COMBINATION               (1)
00228 #define EXACT_PATTERN             (2)
00229 #define LIKELIHOOD_PATTERN        (3)
00230 #define ALWAYS_TRUE               (4)
00231 #define NUM_OF_FILTER_TYPES       (5)
00232 
00233 
00234 /*! \typedef SlrxFilterFlags_t
00235  * Bit field which sets the behaviour of the RX filter
00236  *
00237  */
00238 
00239 #define RX_FILTER_BINARY          (0x1)
00240 #define RX_FILTER_PERSISTENT      (0x8)
00241 #define RX_FILTER_ENABLE          (0x10)
00242 
00243 typedef union SlrxFilterFlags_t {
00244 
00245     /* struct
00246     { */
00247     /*!
00248      *  The filter argument can be set as binary argument or ASCII arguments.
00249      *  When the bit is on the argument are binary.
00250      */
00251     /* uint8_t Binary: 1; */
00252     /*!
00253      *
00254      */
00255     /* uint8_t AutoSort : 1; */
00256     /*!
00257      *
00258      */
00259     /* uint8_t AutoFaultDetect : 1; */
00260     /*!
00261      *  When the bit is on it means the the node is enabled .
00262     */
00263     /* uint8_t Enabled : 1; */
00264     /* uint8_t padding : 3; */
00265     /*
00266     };*/
00267 
00268     uint8_t IntRepresentation;
00269 
00270 } SlrxFilterFlags_t;
00271 
00272 /*! \typedef SlrxFilterCompareFunction_t
00273  * Used as comparison function for the header type arguments
00274  *
00275  */
00276 typedef uint8_t SlrxFilterCompareFunction_t;
00277 /* Possible values for SlrxFilterCompareFunction_t */
00278 #define COMPARE_FUNC_IN_BETWEEN                 (0)
00279 #define COMPARE_FUNC_EQUAL                      (1)
00280 #define COMPARE_FUNC_NOT_EQUAL_TO               (2)
00281 #define COMPARE_FUNC_NOT_IN_BETWEEN             (3)
00282 #define COMPARE_FUNC_NUM_OF_FILTER_COMPARE_FUNC (4)
00283 
00284 /*! \typedef SlrxFilterCompareFunction_t
00285  * Used as comparison function for the header type arguments
00286  *
00287  */
00288 typedef uint8_t SlrxTriggerCompareFunction_t;
00289 /* Possible values for SlrxTriggerCompareFunction_t */
00290 #define TRIGGER_COMPARE_FUNC_EQUAL              (0)
00291 /*   arg1 == protocolVal ,not supported in current release */
00292 #define TRIGGER_COMPARE_FUNC_NOT_EQUAL_TO       (1)
00293 /*   arg1 == protocolVal */
00294 #define TRIGGER_COMPARE_FUNC_SMALLER_THAN       (2)
00295 /*   arg1 == protocolVal */
00296 #define TRIGGER_COMPARE_FUNC_BIGGER_THAN        (3)
00297 /* definition */
00298 #define TRIGGER_COMPARE_FUNC_NUM_OF_FILTER_COMPARE_FUNC (4)
00299 
00300 
00301 /*! \typedef SlrxFilterHdrField_t
00302  * Provides list of possible header types which may be defined as part of the rule
00303  *
00304  */
00305 typedef uint8_t SlrxFilterHdrField_t;
00306 /* Possible values for SlrxFilterHdrField_t */
00307 #define NULL_FIELD_ID_TYPE           (0)
00308 /* 802.11 control\data\management */
00309 #define FRAME_TYPE_FIELD             (1)
00310 /*  802.11 beacon\probe\.. */
00311 #define FRAME_SUBTYPE_FIELD          (2)
00312 /*  802.11 bssid type */
00313 #define BSSID_FIELD                  (3)
00314 /* */
00315 #define MAC_SRC_ADDRESS_FIELD        (4)
00316 /* */
00317 #define MAC_DST_ADDRESS_FIELD        (5)
00318 /* */
00319 #define FRAME_LENGTH_FIELD           (6)
00320 /* */
00321 #define PROTOCOL_TYPE_FIELD          (7)
00322 /* */
00323 #define IP_VERSION_FIELD             (8)
00324 /* TCP / UDP */
00325 #define IP_PROTOCOL_FIELD            (9)
00326 /* */
00327 #define IPV4_SRC_ADRRESS_FIELD       (10)
00328 /* */
00329 #define IPV4_DST_ADDRESS_FIELD       (11)
00330 /* */
00331 #define IPV6_SRC_ADRRESS_FIELD       (12)
00332 /* */
00333 #define IPV6_DST_ADDRESS_FIELD       (13)
00334 /* */
00335 #define SRC_PORT_FIELD               (14)
00336 /* */
00337 #define DST_PORT_FIELD               (15)
00338 /* Definition */
00339 #define NUM_OF_FIELD_NAME_FIELD      (16)
00340 
00341 /*! \union SlrxFilterHeaderArg_t
00342  * The structure holds the header ARGS which are used in case of HDR rule.
00343  */
00344 /* -- 36 bytes */
00345 typedef union SlrxFilterHeaderArg_t  {
00346     /*----------------------------- Large size ---------------------------------*/
00347     /*! buffer for binary arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS
00348      * example : IPV6 16 bytes, 39 characters
00349      * ipv6 Ascii address: 2001:0db8:3c4d:0015:0000:0000:abcd:ef12
00350      */
00351 
00352     SlrxFilterBinaryArg_t RxFilterDB16BytesRuleArgs [SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][16 ]; /*  Binary Values for comparition */
00353     /*! buffer for ASCII arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS
00354      * example : IPV6 16 bytes, 39 characters
00355      * ipv6 Ascii address: 2001:0db8:3c4d:0015:0000:0000:abcd:ef12
00356      * Ascii format for ipV6 is not supported
00357      */
00358     /*----------------------------- Medium size ---------------------------------*/
00359     /*! buffer for binary arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS
00360      * MAC address: 6 bytes, 17 chars
00361      */
00362     SlrxFilterBinaryArg_t RxFilterDB6BytesRuleArgs [SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][6]; /*  Binary Values for comparition */
00363     /*!
00364      * ! buffer for ASCII arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS
00365      *  IP address: 4 bytes, 15 chars
00366      *  2 bytes are added for padding
00367      */
00368     SlrxFilterAsciiArg_t RxFilterDB18BytesAsciiRuleArgs [SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][18]; /* Ascii Values for comparison */
00369     /*----------------------------- Small size ---------------------------------*/
00370     /*! buffer for binary arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS
00371      *  IP address: 4 bytes, 15 chars
00372      *  Port: 2 bytes, chars: 5 chars
00373      */
00374     SlrxFilterBinaryArg_t RxFilterDB4BytesRuleArgs [SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][4]; /*  Binary Values for comparison */
00375     /*! buffer for ASCII arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS
00376      * Port: 2 bytes, chars: 5 chars
00377      */
00378     SlrxFilterAsciiArg_t RxFilterDB5BytesRuleAsciiArgs [SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][5]; /* Ascii Values for comparison */
00379     /*----------------------------- 1 byte size ---------------------------------*/
00380     /*! buffer for binary arguments, number of argument may be up to SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS
00381      */
00382     SlrxFilterBinaryArg_t RxFilterDB1BytesRuleArgs [SL_RX_FILTER_NUM_OF_FILTER_HEADER_ARGS][1]; /*  Binary Values for comparison */
00383 } SlrxFilterHeaderArg_t ;
00384 
00385 
00386 
00387 /*! \typedef SlrxFilterRuleHeaderArgsAndMask_t
00388  * Structure which defines the Header Args and mask
00389  */
00390 /* -- 52 bytes */
00391 typedef struct SlrxFilterRuleHeaderArgsAndMask_t {
00392     /*! Argument for the comparison function */
00393     /* -- 36 byte */
00394     SlrxFilterHeaderArg_t  RuleHeaderArgs;
00395 
00396     /*! the mask is used in order to enable partial comparison,
00397      *  Use the 0xFFFFFFFF in case you don't want to use mask
00398      */
00399     /* -- 16 bytes */
00400     SlrxFilterCompareMask_t RuleHeaderArgsMask[16];
00401 
00402 } SlrxFilterRuleHeaderArgsAndMask_t;
00403 
00404 /*! \typedef SlrxFilterHeaderType_t
00405  * Structure which defines the Header rule
00406  * The header rule defines compare function on the protocol header
00407  * For example destMacAddre is between ( 12:6::78:77,  12:6::78:90 )
00408  *
00409  */
00410 /* -- 56 byte */
00411 typedef struct SlrxFilterHeaderType_t {
00412     /*! see :: SlrxFilterRuleHeaderArgsAndMask_t */
00413     /* -- 52 bytes */
00414     SlrxFilterRuleHeaderArgsAndMask_t RuleHeaderArgsAndMask;
00415 
00416     /*! Packet HDR field which will be compared to the argument */
00417     /* -- 1 byte */
00418     SlrxFilterHdrField_t RuleHeaderfield;
00419 
00420     /* -- 1 byte */
00421     /*! type of the comparison function
00422      * see :: SlrxFilterCompareFunction_t
00423      */
00424     SlrxFilterCompareFunction_t RuleCompareFunc;
00425 
00426     /*! padding */
00427     /* -- 2 bytes */
00428     uint8_t RulePadding[2];
00429 
00430 } SlrxFilterHeaderType_t;
00431 
00432 /*! \typedef SlrxFilterPayloadType_t
00433  *  Structure which defines payload rule.
00434  *  Not supported on current release.
00435  */
00436 /* -- 40 byte  */
00437 typedef struct SlrxFilterPayloadType_t {
00438     /*! Not supported on current release */
00439     /* -- 32 byte */
00440     SlrxFilterRegxPattern_t RegxPattern;
00441     /*! Not supported on current release */
00442     /* -- 4 byte */
00443     SlrxFilterOffset_t LowerOffset;
00444     /*! Not supported on current release */
00445     /* -- 4 byte */
00446     SlrxFilterOffset_t UpperOffset;
00447 } SlrxFilterPayloadType_t;
00448 
00449 /*! \typedef SlrxFilterCombinationTypeOperator_t
00450  * Enumerate the optional operators for the combination type
00451  * filterID1 is located in  the first arg , filterId2 is the second arg,see ::SlrxFilterCombinationType_t.CombinationFilterId
00452  */
00453 typedef uint8_t SlrxFilterCombinationTypeOperator_t;
00454 /* Possible values for SlrxFilterCombinationTypeOperator_t */
00455 /*! !filterID1 */
00456 #define COMBINED_FUNC_NOT     (0)
00457 /*! filterID1 && filterID2 */
00458 #define COMBINED_FUNC_AND     (1)
00459 /*! filterID1 && filterID2 */
00460 #define COMBINED_FUNC_OR      (2)
00461 
00462 /*! \typedef SlrxFilterCombinationType_t
00463  * Defines the structure which define the combination type filter
00464  * The combined filter enable to make operation on one or two filter,
00465  * for example !filterId1 or and(filterId2,filterId3).
00466  *
00467  */
00468 /* -- 4  byte */
00469 typedef struct SlrxFilterCombinationType_t {
00470     /* ! combination operator */
00471     /*  -- 1 byte */
00472     SlrxFilterCombinationTypeOperator_t CombinationTypeOperator;
00473     /* ! filterID, may be one or two depends on the combination operator type */
00474     /*  -- 2  byte */
00475     SlrxFilterID_t CombinationFilterId[SL_RX_FILTER_NUM_OF_COMBINATION_TYPE_ARGS];
00476     /* ! Padding */
00477     /*  -- 1  byte */
00478     uint8_t Padding;
00479 } SlrxFilterCombinationType_t;
00480 
00481 
00482 /*! \typedef SlrxFilterRule_t
00483  * Rule structure composed of behavioral flags and the filter rule definitions
00484  *
00485  */
00486 /*  -- 56  byte */
00487 typedef union SlrxFilterRule_t {
00488     /* ! Header type rule , see explanation on the ::SlrxFilterHeaderType_t structure */
00489     /*  -- 56 byte */
00490     SlrxFilterHeaderType_t HeaderType;
00491     /* ! Payload rule, not supported in current release */
00492     /*  -- 40 byte */
00493     SlrxFilterPayloadType_t PayLoadHeaderType; /* future for exact pattern or like hood pattern */
00494     /* ! Combined type rule , see explanation in ::SlrxFilterCombinationType_t structure */
00495     /*  -- 4  byte */
00496     SlrxFilterCombinationType_t CombinationType;
00497 } SlrxFilterRule_t;
00498 
00499 /*! \typedef SlrxFilterTriggerRoles_t
00500  * Bit field which represents the roleId possible values
00501  * In the current release only Station/AP roles are supported.
00502  */
00503 #define RX_FILTER_ROLE_AP                            (1)
00504 #define RX_FILTER_ROLE_STA                           (2)
00505 #define RX_FILTER_ROLE_PROMISCUOUS                   (4)
00506 #define RX_FILTER_ROLE_NULL                          (0)
00507 
00508 typedef union SlrxFilterTriggerRoles_t {
00509     /*     struct                                                            */
00510     /*     {                                                                 */
00511     /*         uint8_t RoleAP :1;                                      */
00512     /*         uint8_t RoleStation :1;                                 */
00513     /* The filter is activated only in Promiscuous mode          */
00514     /*         uint8_t PromiscuousMode :1;                             */
00515     /*         uint8_t RoleReserved :5;                                */
00516     /*     };                                                                */
00517     /* ! Bit fiels of the Filter role    */
00518     uint8_t IntRepresentation;
00519 
00520 } SlrxFilterTriggerRoles_t;
00521 
00522 /*! \typedef SlrxFilterTriggerConnectionStates_t
00523  * Bit field representing the possible values of the When section of the rule
00524  *
00525  */
00526 #define RX_FILTER_CONNECTION_STATE_STA_CONNECTED     (1)
00527 #define RX_FILTER_CONNECTION_STATE_STA_NOT_CONNECTED (2)
00528 #define RX_FILTER_CONNECTION_STATE_STA_HAS_IP        (4)
00529 #define RX_FILTER_CONNECTION_STATE_STA_HAS_NO_IP     (8)
00530 
00531 typedef union SlrxFilterTriggerConnectionStates_t {
00532     /*     struct */
00533     /*     {      */
00534     /*         uint8_t RoleStationWiFiConnected :1;  */
00535     /*         uint8_t RoleStationWiFiDisconneted:1; */
00536     /*         uint8_t RoleStationWiFiHasIp:1;       */
00537     /*         uint8_t RoleStationWiFiHasNoIp:1;     */
00538     /*         uint8_t RoleStationWiFiSocketOpened:1; */
00539     /*         uint8_t RoleStationWiFiSocketclosed:1; */
00540     /*     }; */
00541     /*  */
00542     /* ! */
00543     uint8_t IntRepresentation;
00544 
00545 } SlrxFilterTriggerConnectionStates_t;
00546 
00547 /*! \typedef SlrxFilterDBTriggerArg_t
00548  * Provides container for entering the filter 'when' argument.
00549  * The current release support 'When rules' which has no arguments.
00550  * For example :
00551  *  When connect to specific AP -- the AP bssid is the argument.
00552  *
00553  */
00554 typedef uint32_t  SlrxFilterDBTriggerArg_t;
00555 
00556 
00557 
00558 /*! \typedef  SlrxFilterCounterId_t
00559  * the counter ID we have 4 counters
00560  */
00561 typedef uint8_t SlrxFilterCounterId_t;
00562 /* Possible values for SlrxFilterCounterId_t */
00563 #define NO_TRIGGER                                  (0)
00564 #define RX_FILTER_COUNTER1                          (1)
00565 #define RX_FILTER_COUNTER2                          (2)
00566 #define RX_FILTER_COUNTER3                          (3)
00567 #define RX_FILTER_COUNTER4                          (4)
00568 #define RX_FILTER_COUNTER5                          (5)
00569 #define RX_FILTER_COUNTER6                          (6)
00570 #define RX_FILTER_COUNTER7                          (7)
00571 #define RX_FILTER_COUNTER8                          (8)
00572 #define MAX_RX_FILTER_COUNTER                       (9)
00573 
00574 
00575 
00576 /*! \typedef SlrxFilterActionArgs_t
00577  * Possible value for filter action args
00578  *
00579  */
00580 
00581 typedef uint8_t  SlrxFilterActionArgs_t;
00582 /* Possible values for SlrxFilterActionArgs_t */
00583 #define ACTION_ARG_REG_1_4                          (0)
00584 /* ! Can be use as counter */
00585 #define ACTION_ARG_TEMPLATE                         (1)
00586 /* ! Can be use as counter */
00587 #define ACTION_ARG_EVENT                            (2)
00588 
00589 /* ! GPIO number */
00590 #define ACTION_ARG_GPIO                             (4)
00591 /*!
00592  * \def SL_RX_FILTER_NUM_OF_BYTES_FOR_ACTIONS_ARGS
00593  *
00594  */
00595 #define SL_RX_FILTER_NUM_OF_BYTES_FOR_ACTIONS_ARGS  (5)
00596 
00597 
00598 
00599 
00600 /*! \typedef SlrxFilterTrigger_t
00601  * The filter trigger, determine when the filter is triggered,
00602  * The filter is triggered in the following condition :\n
00603  * 1. The filter parent is triggered\n
00604  * 2. The requested connection type exists, i.e. wlan_connect\n
00605  * 3. The filter role is the same as the system role\n
00606  *
00607  */
00608 /*  --  12 byte */
00609 typedef struct SlrxFilterTrigger_t {
00610     /*! The parent filter ID, this is the way to build filter tree. */
00611     /*  NULL           value means  tree root.
00612     */
00613     /*  --  1 byte */
00614     SlrxFilterID_t ParentFilterID;
00615     /* ! See ::SlrxFilterCounterId_t explanation */
00616     /*  -- 1 byte */
00617     SlrxFilterCounterId_t Trigger;
00618     /* ! See :: SlrxFilterTriggerConnectionStates_t */
00619     /*  -- 1 byte */
00620     SlrxFilterTriggerConnectionStates_t TriggerArgConnectionState;
00621     /* ! See ::SlrxFilterTriggerRoles_t */
00622     /*  -- 1 byte */
00623     SlrxFilterTriggerRoles_t TriggerArgRoleStatus;
00624     /* ! The Trigger arguments are in the same order as the Trigger bit field order. */
00625     /*  --  4 byte */
00626     SlrxFilterDBTriggerArg_t TriggerArg;
00627     /** The compare function which will be operate for each bit that is turned on in the ::SlrxFilterTrigger_t.Trigger field,
00628      * for example , in case the second bit in the Trigger function is on the second function in the list will be executed.
00629      *
00630     */
00631     /*  --  1 byte */
00632     SlrxTriggerCompareFunction_t TriggerCompareFunction;
00633 
00634     /* ! padding */
00635     /*  --  3 byte */
00636     uint8_t Padding[3];
00637 } SlrxFilterTrigger_t;
00638 
00639 /*! \typedef SlrxFilterActionType_t
00640  *  The actions are executed only if the filter is matched,\n
00641  *  In case of false match the packet is transfered to the HOST. \n
00642  *  The action is composed of bit field structure,
00643  *  up to 2 actions can be defined per filter.
00644  *
00645  */
00646 #define RX_FILTER_ACTION_NULL               (0x0)
00647 #define RX_FILTER_ACTION_DROP               (0x1)
00648 #define RX_FILTER_ACTION_GPIO               (0x2)
00649 #define RX_FILTER_ACTION_ON_REG_INCREASE    (0x4)
00650 #define RX_FILTER_ACTION_ON_REG_DECREASE    (0x8)
00651 #define RX_FILTER_ACTION_ON_REG_RESET       (0x10)
00652 #define RX_FILTER_ACTION_SEND_TEMPLATE      (0x20) /* unsupported */
00653 #define RX_FILTER_ACTION_EVENT_TO_HOST      (0x40) /* unsupported */
00654 
00655 typedef union SlrxFilterActionType_t {
00656     /*     struct */
00657     /*     { */
00658     /* ! No action to execute the packet is dropped,drop is always on leaf. */
00659     /* ! If not dropped ,The packet is passed to the next filter or in case it is the last filter to the host */
00660     /*         uint8_t ActionDrop : 1; */
00661     /* ! Not Supported in the current release */
00662     /*         uint8_t ActionGpio : 1; */
00663     /*! action can increase counter registers.
00664      *  1 = Increase
00665      *  2 = decrease
00666      *  3 = reset
00667      */
00668     /*         uint8_t ActionOnREGIncrease : 1; */
00669     /*         uint8_t ActionOnREGDecrease : 1; */
00670     /*         uint8_t ActionOnREGReset : 1;    */
00671 
00672     /* ! Not Supported in the current release */
00673     /*         uint8_t ActionSendTemplate : 1; */
00674     /* ! Not Supported in the current release */
00675     /*         uint8_t ActionEventToHost: 1;   */
00676     /*         uint8_t padding: 1;             */
00677     /*     }; */
00678 
00679     uint8_t IntRepresentation;
00680 
00681 } SlrxFilterActionType_t;
00682 
00683 /*! \typedef SlrxFilterAction_t
00684  * Several actions can be defined,\n
00685  * The action is executed in case the filter rule is matched.
00686  */
00687 /*  -- 8 byte   */
00688 typedef struct SlrxFilterAction_t {
00689     /*  -- 1 byte */
00690     /* ! Determine which actions are supported */
00691     SlrxFilterActionType_t ActionType;
00692     /* ! Buffer for the action arguments */
00693     /**
00694      * <b>location 0</b> - The counter to increase
00695      *     In case the action is of type "increase" the arg will contain the counter number,
00696      *     The counter number values are as in  ::SlrxFilterCounterId_t.\n
00697      * <b>location 1</b> - The template arg.\n
00698      * <b>location 2</b> - The event arg.\n
00699      *
00700      */
00701     /*  -- 5 byte */
00702     SlrxFilterActionArg_t ActionArg[SL_RX_FILTER_NUM_OF_BYTES_FOR_ACTIONS_ARGS];
00703 
00704     /* ! Padding */
00705     /* - 2 Bytes */
00706     uint8_t Padding[2];
00707 
00708 } SlrxFilterAction_t;
00709 
00710 
00711 /*! \struct _WlanRxFilterOperationCommandBuff_t
00712  *  The structure is used for the interface HOST NWP.\n
00713  *  The supported operation : \n
00714  *   ::ENABLE_DISABLE_RX_FILTER,\n
00715  *   ::REMOVE_RX_FILTER,\n
00716  *
00717  */
00718 /*  20 bytes */
00719 typedef struct _WlanRxFilterOperationCommandBuff_t  {
00720     /*  -- 16 bytes */
00721     SlrxFilterIdMask_t FilterIdMask;
00722     /*  4 bytes */
00723     uint8_t Padding[4];
00724 } _WlanRxFilterOperationCommandBuff_t ;
00725 
00726 
00727 
00728 /* -- 56 bytes */
00729 typedef struct _WlanRxFilterUpdateArgsCommandBuff_t {
00730     /*  -- 1 bytes */
00731     uint8_t  FilterId;
00732 
00733     /*  -- 1 bytes */
00734     /* ! the args representation */
00735     uint8_t BinaryRepresentation;
00736 
00737     /*  -- 52 byte */
00738     SlrxFilterRuleHeaderArgsAndMask_t FilterRuleHeaderArgsAndMask;
00739 
00740     /* -- 2 bytes */
00741     uint8_t Padding[2];
00742 } _WlanRxFilterUpdateArgsCommandBuff_t;
00743 
00744 
00745 /*! \typedef _WlanRxFilterRetrieveEnableStatusCommandResponseBuff_t
00746  *  The structure is used for the interface HOST NWP.\n
00747  *
00748  */
00749 /* -- 16 bytes */
00750 typedef struct _WlanRxFilterRetrieveEnableStatusCommandResponseBuff_t {
00751 
00752     /* ! the filter set bit map */
00753     /*  -- 16 bytes             */
00754     SlrxFilterIdMask_t FilterIdMask;
00755 
00756 } _WlanRxFilterRetrieveEnableStatusCommandResponseBuff_t;
00757 
00758 
00759 /*! \struct _WlanRxFilterPrePreparedFiltersCommandBuff_t
00760  *  The function enables to perform operations on pre-prepared filters
00761  *
00762  */
00763 typedef struct _WlanRxFilterPrePreparedFiltersCommandBuff_t  {
00764     /* ! the filter set bit map */
00765     /*  -- 4 bytes */
00766     SlrxFilterPrePreparedFiltersMask_t  FilterPrePreparedFiltersMask;
00767 
00768 } _WlanRxFilterPrePreparedFiltersCommandBuff_t ;
00769 
00770 
00771 /*! \typedef sl_protocol_WlanRxFilterPrePreparedFiltersCommandResponseBuff_t
00772  *
00773  */
00774 /*-- 4 bytes  */
00775 typedef struct _WlanRxFilterPrePreparedFiltersCommandResponseBuff_t {
00776     /* -- 4 bytes */
00777     /* ! the filter set bit map */
00778     SlrxFilterPrePreparedFiltersMask_t  FilterPrePreparedFiltersMask;
00779 
00780 } _WlanRxFilterPrePreparedFiltersCommandResponseBuff_t;
00781 
00782 
00783 
00784 typedef uint8_t SLrxFilterOperation_t;
00785 #define SL_ENABLE_DISABLE_RX_FILTER                         (0)
00786 #define SL_REMOVE_RX_FILTER                                 (1)
00787 #define SL_STORE_RX_FILTERS                                 (2)
00788 #define SL_UPDATE_RX_FILTER_ARGS                            (3)
00789 #define SL_FILTER_RETRIEVE_ENABLE_STATE                     (4)
00790 #define SL_FILTER_PRE_PREPARED_RETRIEVE_CREATE_REMOVE_STATE (5)
00791 #define SL_FILTER_PRE_PREPARED_SET_CREATE_REMOVE_STATE      (6)
00792 
00793 
00794 /*  Bit manipulation for 8 bit */
00795 #define ISBITSET8(x,i) ((x[i>>3] & (0x80>>(i&7)))!=0) /* < Is bit set, 8 bit unsigned numbers = x , location = i */
00796 #define SETBIT8(x,i) x[i>>3]|=(0x80>>(i&7)); /* < Set bit,8 bit unsigned numbers = x , location = i */
00797 #define CLEARBIT8(x,i) x[i>>3]&=(0x80>>(i&7))^0xFF; /* < Clear bit,8 bit unsigned numbers = x , location = i */
00798 
00799 namespace mbed_cc3100 {
00800 
00801 /* ******************************************************************************/
00802 /*     RX filters - Start  */
00803 /* ******************************************************************************/
00804 /*  -- 80 bytes */
00805 typedef struct _WlanRxFilterAddCommand_t {
00806     /*  -- 1 byte */
00807     SlrxFilterRuleType_t RuleType;
00808     /*  -- 1 byte */
00809     SlrxFilterFlags_t FilterFlags;
00810     /*  --  1 byte */
00811     SlrxFilterID_t FilterId;
00812     /*  --  1 byte */
00813     uint8_t Padding;
00814     /*  -- 56 byte */
00815     SlrxFilterRule_t Rule;
00816     /*  --  12 byte ( 3 padding ) */
00817     SlrxFilterTrigger_t Trigger;
00818     /*  --  8 byte */
00819     SlrxFilterAction_t Action;
00820 } _WlanRxFilterAddCommand_t;
00821 
00822 
00823 
00824 /* -- 4 bytes */
00825 typedef struct l_WlanRxFilterAddCommandReponse_t {
00826     /*  -- 1 byte */
00827     SlrxFilterID_t FilterId;
00828     /* -- 1 Byte */
00829     uint8_t          Status;
00830     /*  -- 2 byte */
00831     uint8_t  Padding[2];
00832 
00833 } _WlanRxFilterAddCommandReponse_t;
00834 
00835 
00836 
00837 /*
00838  * \struct _WlanRxFilterSetCommand_t
00839  */
00840 typedef struct _WlanRxFilterSetCommand_t {
00841     uint16_t InputBufferLength;
00842     /* 1 byte */
00843     SLrxFilterOperation_t RxFilterOperation;
00844     uint8_t Padding[1];
00845 } _WlanRxFilterSetCommand_t;
00846 
00847 /**
00848  * \struct _WlanRxFilterSetCommandReponse_t
00849  */
00850 typedef struct _WlanRxFilterSetCommandReponse_t {
00851     /* 1 byte */
00852     uint8_t  Status;
00853     /* 3 bytes  */
00854     uint8_t Padding[3];
00855 
00856 } _WlanRxFilterSetCommandReponse_t;
00857 
00858 /**
00859  * \struct _WlanRxFilterGetCommand_t
00860  */
00861 typedef struct _WlanRxFilterGetCommand_t {
00862     uint16_t OutputBufferLength;
00863     /* 1 byte  */
00864     SLrxFilterOperation_t RxFilterOperation;
00865     uint8_t Padding[1];
00866 } _WlanRxFilterGetCommand_t;
00867 
00868 /**
00869  * \struct _WlanRxFilterGetCommandReponse_t
00870  */
00871 typedef struct _WlanRxFilterGetCommandReponse_t {
00872     /* 1 byte  */
00873     uint8_t  Status;
00874     /* 1 bytes  */
00875     uint8_t Padding;
00876     /* 2 byte  */
00877     uint16_t OutputBufferLength;
00878 
00879 } _WlanRxFilterGetCommandReponse_t;
00880 
00881 
00882 
00883 /* ******************************************************************************/
00884 /*     RX filters -- End  */
00885 /* ******************************************************************************/
00886 
00887 class cc3100_driver;
00888 
00889 class cc3100_wlan_rx_filters
00890 {
00891 
00892 public:
00893 
00894     cc3100_wlan_rx_filters(cc3100_driver &driver);
00895 
00896     ~cc3100_wlan_rx_filters();
00897 
00898 
00899     /*********************************************************************************************/
00900     /* Function prototypes                                                                       */
00901     /*********************************************************************************************/
00902 
00903     /*!
00904 
00905         \addtogroup wlan
00906         @{
00907 
00908     */
00909 
00910 
00911     /*!
00912       \brief Adds new filter rule to the system
00913 
00914       \param[in]    RuleType     The rule type
00915       \param[in]    FilterFlags  Flags which set the type of header rule Args and sets the persistent flag
00916       \param[in]    pRule        Determine the filter rule logic
00917       \param[in]    pTrigger     Determine when the rule is triggered also sets rule parent.
00918       \param[in]    pAction      Sets the action to be executed in case the match functions pass
00919       \param[out]   pFilterId    The filterId which was created
00920 
00921       \return       On success, zero is returned. Otherwise error code is returned
00922      */
00923 #if _SL_INCLUDE_FUNC(sl_WlanRxFilterAdd)
00924     SlrxFilterID_t sl_WlanRxFilterAdd(    SlrxFilterRuleType_t                 RuleType,
00925                                           SlrxFilterFlags_t                     FilterFlags,
00926                                           const SlrxFilterRule_t* const         Rule,
00927                                           const SlrxFilterTrigger_t* const     Trigger,
00928                                           const SlrxFilterAction_t* const     Action,
00929                                           SlrxFilterID_t*                     pFilterId);
00930 
00931 #endif
00932 
00933 
00934 
00935 
00936 
00937     /*!
00938       \brief   Sets parameters to Rx filters
00939 
00940      \param[in] RxFilterOperation
00941      possible operations :
00942         - SL_ENABLE_DISABLE_RX_FILTER - Enables\disables filter in a filter list
00943         - SL_REMOVE_RX_FILTER - Removes filter from memory ( to remove from flash call SL_STORE_RX_FILTERS after this command)
00944         - SL_STORE_RX_FILTERS - Save the filters for persistent
00945         - SL_UPDATE_RX_FILTER_ARGS - Update the arguments of existing filter
00946         - SL_FILTER_PRE_PREPARED_SET_CREATE_REMOVE_STATE - Change the default creation of the pre-prepared filters
00947 
00948       \param[in] pInputBuffer options:
00949        The buffer input is _WlanRxFilterOperationCommandBuff_t:
00950          - SL_ENABLE_DISABLE_RX_FILTER
00951         - SL_REMOVE_RX_FILTER
00952         - SL_STORE_RX_FILTERS
00953         The buffer input is _WlanRxFilterUpdateArgsCommandBuff_t:
00954          - SL_UPDATE_RX_FILTER_ARGS
00955        The buffer input is _WlanRxFilterPrePreparedFiltersCommandBuff_t:
00956          - SL_FILTER_PRE_PREPARED_SET_CREATE_REMOVE_STATE
00957 
00958       \param[in] InputbufferLength The length in byte of the input buffer
00959 
00960       \return    On success, zero is returned. Otherwise error code is returned
00961      */
00962 
00963 #if _SL_INCLUDE_FUNC(sl_WlanRxFilterSet)
00964     int16_t sl_WlanRxFilterSet(  const SLrxFilterOperation_t RxFilterOperation,
00965                                  const uint8_t*  const pInputBuffer,
00966                                  uint16_t InputbufferLength);
00967 #endif
00968 
00969     /*!
00970       \brief    Gets parameters of Rx filters
00971 
00972      \param[in] RxFilterOperation
00973      possible operations :
00974         - SL_FILTER_RETRIEVE_ENABLE_STATE - Retrieves the enable disable status
00975         - SL_FILTER_PRE_PREPARED_RETRIEVE_CREATE_REMOVE_STATE - Retrieves the pre-prepared filters creation status
00976 
00977      \param[in] pOutputBuffer
00978        The buffer input is _WlanRxFilterRetrieveEnableStatusCommandResponseBuff_t:
00979          - SL_FILTER_RETRIEVE_ENABLE_STATE
00980        The buffer input is _WlanRxFilterPrePreparedFiltersCommandResponseBuff_t:
00981          - SL_FILTER_PRE_PREPARED_RETRIEVE_CREATE_REMOVE_STATE
00982 
00983       \param[in] OutputbufferLength   The length in byte of the output buffer
00984 
00985        \return   On success, zero is returned. Otherwise error code is returned
00986     */
00987 
00988 #if _SL_INCLUDE_FUNC(sl_WlanRxFilterGet)
00989     int16_t sl_WlanRxFilterGet(const SLrxFilterOperation_t RxFilterOperation,
00990                                uint8_t*  pOutputBuffer,
00991                                uint16_t  OutputbufferLength);
00992 #endif
00993 
00994 private:
00995 
00996     cc3100_driver           &_driver;
00997 
00998 
00999     /*!
01000 
01001      Close the Doxygen group.
01002      @}
01003 
01004      */
01005 };//class
01006 
01007 }//namespace mbed_cc3100
01008 
01009 #endif /* RX_FILTERS_PREPROCESSOR_CLI_IF_H_ */
01010 
01011 
01012