1a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*
2a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * keyParser.c
3a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
4a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
5a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * All rights reserved.
6a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
7a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Redistribution and use in source and binary forms, with or without
8a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * modification, are permitted provided that the following conditions
9a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * are met:
10a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
11a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  * Redistributions of source code must retain the above copyright
12a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    notice, this list of conditions and the following disclaimer.
13a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  * Redistributions in binary form must reproduce the above copyright
14a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    notice, this list of conditions and the following disclaimer in
15a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    the documentation and/or other materials provided with the
16a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    distribution.
17a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  * Neither the name Texas Instruments nor the names of its
18a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    contributors may be used to endorse or promote products derived
19a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    from this software without specific prior written permission.
20a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
21a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
33a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
34a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** \file keyParser.c
35a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief KEY parser module implementation.
36a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
37a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \see keyParser.h
38a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/
39a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
40a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/****************************************************************************
41a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                                                                          *
42a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *   MODULE:	KEY parser                                                  *
43a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *   PURPOSE:   KEY parser implementation									*
44a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *                                                                          *
45a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/
46a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
47a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define __FILE_ID__  FILE_ID_33
48a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "osApi.h"
49a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "report.h"
50a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "rsnApi.h"
51a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
52a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "keyParser.h"
53a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "keyParserExternal.h"
54a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "keyParserWep.h"
55a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
56a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS keyParserNone_config(keyParser_t *pKeyParser);
57a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
58a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**
59a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
60a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Function  - Init KEY Parser module.
61a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
62a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description:
63a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
64a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Called by RSN Manager.
65a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Registers the function 'rsn_keyParserRecv()' at the distributor to receive KEY frames upon receiving a KEY_RECV event.
66a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
67a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS:
68a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
69a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
70a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS:
71a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
72a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*  TI_STATUS - 0 on success, any other value on failure.
73a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
74a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/
75a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
76a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtkeyParser_t* keyParser_create(TI_HANDLE hOs)
77a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
78a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	keyParser_t 		*pKeyParser;
79a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
80a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/* allocate key parser context memory */
81a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	pKeyParser = (keyParser_t*)os_memoryCAlloc(hOs, 1, sizeof(keyParser_t));
82a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	if (pKeyParser == NULL)
83a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	{
84a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt		return NULL;
85a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	}
86a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
87a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	pKeyParser->hOs = hOs;
88a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
89a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return pKeyParser;
90a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
91a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
92a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**
93a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
94a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Function  - Init KEY Parser module.
95a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
96a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description:
97a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
98a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Called by RSN Manager.
99a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Registers the function 'rsn_keyParserRecv()' at the distributor to receive KEY frames upon receiving a KEY_RECV event.
100a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
101a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS:
102a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
103a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
104a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS:
105a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
106a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*  TI_STATUS - 0 on success, any other value on failure.
107a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
108a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/
109a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
110a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS keyParser_unload(struct _keyParser_t *pKeyParser)
111a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
112a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	/* free key parser context memory */
113a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	os_memoryFree(pKeyParser->hOs, pKeyParser, sizeof(keyParser_t));
114a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
115a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return TI_OK;
116a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
117a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
118a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**
119a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
120a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Function  - Init KEY Parser module.
121a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
122a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description:
123a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
124a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Called by RSN Manager.
125a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Registers the function 'rsn_keyParserRecv()' at the distributor to receive KEY frames upon receiving a KEY_RECV event.
126a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
127a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS:
128a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
129a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
130a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS:
131a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
132a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*  TI_STATUS - 0 on success, any other value on failure.
133a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*
134a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/
135a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
136a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS keyParser_config(struct _keyParser_t *pKeyParser,
137a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt						TRsnPaeConfig *pPaeConfig,
138a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                        struct _unicastKey_t *pUcastKey,
139a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                        struct _broadcastKey_t *pBcastKey,
140a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                        struct _mainKeys_t *pParent,
141a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt						TI_HANDLE hReport,
142a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt						TI_HANDLE hOs,
143a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt                        TI_HANDLE hCtrlData)
144a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
145a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
146a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pKeyParser->pParent = pParent;
147a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pKeyParser->pUcastKey = pUcastKey;
148a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pKeyParser->pBcastKey = pBcastKey;
149a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pKeyParser->pPaeConfig = pPaeConfig;
150a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
151a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pKeyParser->hReport = hReport;
152a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	pKeyParser->hOs = hOs;
153a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    pKeyParser->hCtrlData = hCtrlData;
154a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
155a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	keyParserExternal_config(pKeyParser);
156a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
157a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return TI_OK;
158a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
159a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
160a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
161a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
162a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS keyParserNone_config(keyParser_t *pKeyParser)
163a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
164a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	pKeyParser->recv = NULL;
165a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	pKeyParser->replayReset = NULL;
166a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
167a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return TI_OK;
168a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
169a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
170a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
171a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
172a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS keyParser_nop(keyParser_t *pKeyParser)
173a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
174a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTRACE0(pKeyParser->hReport, REPORT_SEVERITY_INFORMATION, "KEY_PARSER: nop \n");
175a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
176a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	return TI_OK;
177a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt}
178a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
179a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
180