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 67 int 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