1/*
2 * Copyright 2012 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#include <stdio.h>
18#include <stdlib.h>
19#include <string.h>
20#include <getopt.h>
21#include "wfc_util_fctrl.h"
22#include "wfc_util_common.h"
23
24#ifdef WLAN_CHIP_VERSION_WCNSS
25#ifndef WFC_UTIL_CFG_FILE_NAME
26#define WFC_UTIL_CFG_FILE_NAME          "./WCNSS_qcom_cfg.ini"
27#endif
28#ifndef WFC_UTIL_NV_BIN_FILE_NAME
29#define WFC_UTIL_NV_BIN_FILE_NAME       "./WCNSS_qcom_wlan_nv.bin"
30#endif
31#else  /* WLAN_CHIP_VERSION_WCN1314 */
32#ifndef WFC_UTIL_CFG_FILE_NAME
33#define WFC_UTIL_CFG_FILE_NAME          "./WCN1314_qcom_cfg.ini"
34#endif
35#ifndef WFC_UTIL_NV_BIN_FILE_NAME
36#define WFC_UTIL_NV_BIN_FILE_NAME       "./WCN1314_qcom_wlan_nv.bin"
37#endif
38#endif /* WLAN_CHIP_VERSION_XXXX */
39#define WFC_UTIL_CFG_TAG_END_OF_CFG     "END"
40#define WFC_UTIL_CFG_TAG_MAC_ADDRESS    "NetworkAddress="
41#define WFC_UTIL_CFG_TAG_AP_MAC_ADDRESS "gAPMacAddr="
42#define WFC_UTIL_CFG_TAG_END_OF_LINE    "\n"
43#define WFC_UTIL_CFG_LENGHT_MAC         (6)
44#define WFC_UTIL_CFG_LENGHT_MAC_STRING  (WFC_UTIL_CFG_LENGHT_MAC*2)
45
46/*
47 * persist/WCNSS_qcom_wlan_nv.bin
48 *
49 * typedef PACKED_PRE struct PACKED_POST
50 * {
51 *     //always ensure fields are aligned to 32-bit boundaries
52 *     tANI_U16  productId;
53 *     tANI_U8   productBands;
54 *     tANI_U8   wlanNvRevId;
55 *
56 *     tANI_U8   numOfTxChains;
57 *     tANI_U8   numOfRxChains;
58 *     tANI_U8   macAddr[NV_FIELD_MAC_ADDR_SIZE];
59 *     tANI_U8   mfgSN[NV_FIELD_MFG_SN_SIZE];
60 * } sNvFields;
61 */
62#define WFC_UTIL_NV_BIN_HEADER_LENGTH    (4)
63#define WFC_UTIL_NV_BIN_POS_PRODUCT_ID   (WFC_UTIL_NV_BIN_HEADER_LENGTH + 0)
64#define WFC_UTIL_NV_BIN_POS_PRODUCT_BAND (WFC_UTIL_NV_BIN_HEADER_LENGTH + 2)
65#define WFC_UTIL_NV_BIN_POS_MAC_ADDR     (WFC_UTIL_NV_BIN_HEADER_LENGTH + 6)
66
67int main(int argc, char **argv)
68{
69	int ret = 0;
70	char mac_add_buff[WFC_UTIL_CFG_LENGHT_MAC_STRING+1];
71	unsigned char mac_add_buff_2[WFC_UTIL_CFG_LENGHT_MAC] = {0x88, 0xcd, 0xba, 0x0c, 0x90, 0x00};
72	unsigned char mac_add_buff_3[WFC_UTIL_CFG_LENGHT_MAC] = {0x00, 0x90, 0x0c, 0xba, 0xcd, 0x88};
73
74	printf("wfc_util_main is started\n");
75
76	if(0 < wfc_util_fget_string(WFC_UTIL_CFG_FILE_NAME,
77	                            WFC_UTIL_CFG_TAG_END_OF_CFG,
78	                            WFC_UTIL_CFG_TAG_MAC_ADDRESS,
79	                            WFC_UTIL_CFG_TAG_END_OF_LINE,
80	                            mac_add_buff,
81	                            WFC_UTIL_CFG_LENGHT_MAC_STRING+1)) {
82		printf("wfc_util_main : %s%s\n", WFC_UTIL_CFG_TAG_MAC_ADDRESS, mac_add_buff);
83	} else {
84		printf("wfc_util_main : %s is not found\n", WFC_UTIL_CFG_TAG_MAC_ADDRESS);
85	}
86
87	wfc_util_fset_string(WFC_UTIL_CFG_FILE_NAME,
88	                     WFC_UTIL_CFG_TAG_END_OF_CFG,
89	                     WFC_UTIL_CFG_TAG_AP_MAC_ADDRESS,
90	                     WFC_UTIL_CFG_TAG_END_OF_LINE,
91	                     "00900cbacd88");
92
93	wfc_util_fset_string(WFC_UTIL_CFG_FILE_NAME,
94	                     WFC_UTIL_CFG_TAG_END_OF_CFG,
95	                     WFC_UTIL_CFG_TAG_MAC_ADDRESS,
96	                     WFC_UTIL_CFG_TAG_END_OF_LINE,
97	                     "00900cbacd88");
98
99	if(0 < wfc_util_fget_string(WFC_UTIL_CFG_FILE_NAME,
100	                            WFC_UTIL_CFG_TAG_END_OF_CFG,
101	                            WFC_UTIL_CFG_TAG_MAC_ADDRESS,
102	                            WFC_UTIL_CFG_TAG_END_OF_LINE,
103	                            mac_add_buff,
104	                            WFC_UTIL_CFG_LENGHT_MAC_STRING+1)) {
105		printf("wfc_util_main : %s%s\n", WFC_UTIL_CFG_TAG_MAC_ADDRESS, mac_add_buff);
106
107		wfc_util_atoh(mac_add_buff, strlen(mac_add_buff), mac_add_buff_2, WFC_UTIL_CFG_LENGHT_MAC);
108		printf("wfc_util_main : %s%02x:%02x:%02x:%02x:%02x:%02x\n",
109		                        WFC_UTIL_CFG_TAG_MAC_ADDRESS,
110		                        mac_add_buff_2[0], mac_add_buff_2[1], mac_add_buff_2[2],
111		                        mac_add_buff_2[3], mac_add_buff_2[4], mac_add_buff_2[5]);
112
113		wfc_util_htoa(mac_add_buff_2, WFC_UTIL_CFG_LENGHT_MAC, mac_add_buff, WFC_UTIL_CFG_LENGHT_MAC_STRING);
114		printf("wfc_util_main : %s%s\n", WFC_UTIL_CFG_TAG_MAC_ADDRESS, mac_add_buff);
115
116	} else {
117		printf("wfc_util_main : %s is not found\n", WFC_UTIL_CFG_TAG_MAC_ADDRESS);
118	}
119
120	wfc_util_fset_buffer(WFC_UTIL_NV_BIN_FILE_NAME,
121	                     WFC_UTIL_NV_BIN_POS_MAC_ADDR,
122	                     mac_add_buff_3,
123	                     WFC_UTIL_CFG_LENGHT_MAC);
124
125	if(0 < wfc_util_fget_buffer(WFC_UTIL_NV_BIN_FILE_NAME,
126	                            WFC_UTIL_NV_BIN_POS_MAC_ADDR,
127	                            6,
128	                            mac_add_buff_2,
129	                            WFC_UTIL_CFG_LENGHT_MAC)) {
130		printf("wfc_util_main : wfc_util_fget_buffer[%02x:%02x:%02x:%02x:%02x:%02x]\n",
131		                        mac_add_buff_2[0], mac_add_buff_2[1], mac_add_buff_2[2],
132		                        mac_add_buff_2[3], mac_add_buff_2[4], mac_add_buff_2[5]);
133	} else {
134		printf("wfc_util_main : %s is not found\n", WFC_UTIL_CFG_TAG_MAC_ADDRESS);
135	}
136
137	return ret;
138}
139
140