140 lines
5.4 KiB
C
140 lines
5.4 KiB
C
/*
|
|
* 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;
|
|
}
|
|
|