C++程序  |  140行  |  5.36 KB

/*
 * 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;
}