/*
* Copyright 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <getopt.h>
#include "wfc_util_fctrl.h"
#include "wfc_util_common.h"
#ifdef WLAN_CHIP_VERSION_WCNSS
#ifndef WFC_UTIL_CFG_FILE_NAME
#define WFC_UTIL_CFG_FILE_NAME "./WCNSS_qcom_cfg.ini"
#endif
#ifndef WFC_UTIL_NV_BIN_FILE_NAME
#define WFC_UTIL_NV_BIN_FILE_NAME "./WCNSS_qcom_wlan_nv.bin"
#endif
#else /* WLAN_CHIP_VERSION_WCN1314 */
#ifndef WFC_UTIL_CFG_FILE_NAME
#define WFC_UTIL_CFG_FILE_NAME "./WCN1314_qcom_cfg.ini"
#endif
#ifndef WFC_UTIL_NV_BIN_FILE_NAME
#define WFC_UTIL_NV_BIN_FILE_NAME "./WCN1314_qcom_wlan_nv.bin"
#endif
#endif /* WLAN_CHIP_VERSION_XXXX */
#define WFC_UTIL_CFG_TAG_END_OF_CFG "END"
#define WFC_UTIL_CFG_TAG_MAC_ADDRESS "NetworkAddress="
#define WFC_UTIL_CFG_TAG_AP_MAC_ADDRESS "gAPMacAddr="
#define WFC_UTIL_CFG_TAG_END_OF_LINE "\n"
#define WFC_UTIL_CFG_LENGHT_MAC (6)
#define WFC_UTIL_CFG_LENGHT_MAC_STRING (WFC_UTIL_CFG_LENGHT_MAC*2)
/*
* persist/WCNSS_qcom_wlan_nv.bin
*
* typedef PACKED_PRE struct PACKED_POST
* {
* //always ensure fields are aligned to 32-bit boundaries
* tANI_U16 productId;
* tANI_U8 productBands;
* tANI_U8 wlanNvRevId;
*
* tANI_U8 numOfTxChains;
* tANI_U8 numOfRxChains;
* tANI_U8 macAddr[NV_FIELD_MAC_ADDR_SIZE];
* tANI_U8 mfgSN[NV_FIELD_MFG_SN_SIZE];
* } sNvFields;
*/
#define WFC_UTIL_NV_BIN_HEADER_LENGTH (4)
#define WFC_UTIL_NV_BIN_POS_PRODUCT_ID (WFC_UTIL_NV_BIN_HEADER_LENGTH + 0)
#define WFC_UTIL_NV_BIN_POS_PRODUCT_BAND (WFC_UTIL_NV_BIN_HEADER_LENGTH + 2)
#define WFC_UTIL_NV_BIN_POS_MAC_ADDR (WFC_UTIL_NV_BIN_HEADER_LENGTH + 6)
int main(int argc, char **argv)
{
int ret = 0;
char mac_add_buff[WFC_UTIL_CFG_LENGHT_MAC_STRING+1];
unsigned char mac_add_buff_2[WFC_UTIL_CFG_LENGHT_MAC] = {0x88, 0xcd, 0xba, 0x0c, 0x90, 0x00};
unsigned char mac_add_buff_3[WFC_UTIL_CFG_LENGHT_MAC] = {0x00, 0x90, 0x0c, 0xba, 0xcd, 0x88};
printf("wfc_util_main is started\n");
if(0 < wfc_util_fget_string(WFC_UTIL_CFG_FILE_NAME,
WFC_UTIL_CFG_TAG_END_OF_CFG,
WFC_UTIL_CFG_TAG_MAC_ADDRESS,
WFC_UTIL_CFG_TAG_END_OF_LINE,
mac_add_buff,
WFC_UTIL_CFG_LENGHT_MAC_STRING+1)) {
printf("wfc_util_main : %s%s\n", WFC_UTIL_CFG_TAG_MAC_ADDRESS, mac_add_buff);
} else {
printf("wfc_util_main : %s is not found\n", WFC_UTIL_CFG_TAG_MAC_ADDRESS);
}
wfc_util_fset_string(WFC_UTIL_CFG_FILE_NAME,
WFC_UTIL_CFG_TAG_END_OF_CFG,
WFC_UTIL_CFG_TAG_AP_MAC_ADDRESS,
WFC_UTIL_CFG_TAG_END_OF_LINE,
"00900cbacd88");
wfc_util_fset_string(WFC_UTIL_CFG_FILE_NAME,
WFC_UTIL_CFG_TAG_END_OF_CFG,
WFC_UTIL_CFG_TAG_MAC_ADDRESS,
WFC_UTIL_CFG_TAG_END_OF_LINE,
"00900cbacd88");
if(0 < wfc_util_fget_string(WFC_UTIL_CFG_FILE_NAME,
WFC_UTIL_CFG_TAG_END_OF_CFG,
WFC_UTIL_CFG_TAG_MAC_ADDRESS,
WFC_UTIL_CFG_TAG_END_OF_LINE,
mac_add_buff,
WFC_UTIL_CFG_LENGHT_MAC_STRING+1)) {
printf("wfc_util_main : %s%s\n", WFC_UTIL_CFG_TAG_MAC_ADDRESS, mac_add_buff);
wfc_util_atoh(mac_add_buff, strlen(mac_add_buff), mac_add_buff_2, WFC_UTIL_CFG_LENGHT_MAC);
printf("wfc_util_main : %s%02x:%02x:%02x:%02x:%02x:%02x\n",
WFC_UTIL_CFG_TAG_MAC_ADDRESS,
mac_add_buff_2[0], mac_add_buff_2[1], mac_add_buff_2[2],
mac_add_buff_2[3], mac_add_buff_2[4], mac_add_buff_2[5]);
wfc_util_htoa(mac_add_buff_2, WFC_UTIL_CFG_LENGHT_MAC, mac_add_buff, WFC_UTIL_CFG_LENGHT_MAC_STRING);
printf("wfc_util_main : %s%s\n", WFC_UTIL_CFG_TAG_MAC_ADDRESS, mac_add_buff);
} else {
printf("wfc_util_main : %s is not found\n", WFC_UTIL_CFG_TAG_MAC_ADDRESS);
}
wfc_util_fset_buffer(WFC_UTIL_NV_BIN_FILE_NAME,
WFC_UTIL_NV_BIN_POS_MAC_ADDR,
mac_add_buff_3,
WFC_UTIL_CFG_LENGHT_MAC);
if(0 < wfc_util_fget_buffer(WFC_UTIL_NV_BIN_FILE_NAME,
WFC_UTIL_NV_BIN_POS_MAC_ADDR,
6,
mac_add_buff_2,
WFC_UTIL_CFG_LENGHT_MAC)) {
printf("wfc_util_main : wfc_util_fget_buffer[%02x:%02x:%02x:%02x:%02x:%02x]\n",
mac_add_buff_2[0], mac_add_buff_2[1], mac_add_buff_2[2],
mac_add_buff_2[3], mac_add_buff_2[4], mac_add_buff_2[5]);
} else {
printf("wfc_util_main : %s is not found\n", WFC_UTIL_CFG_TAG_MAC_ADDRESS);
}
return ret;
}