int wifi_get_mac_addr_intel(unsigned char *buf){ int ret = 0; int i; struct file *fp = NULL; unsigned char c_mac[MAC_ADDRESS_LEN]; char fname[]="/config/wifi/mac.txt"; WL_TRACE(("%s Enter\n", __FUNCTION__)); fp = dhd_os_open_image(fname); if (fp== NULL){ WL_ERROR(("%s: unable to open %s\n",__FUNCTION__, fname)); return 1; } if ( dhd_os_get_image_block(c_mac, MAC_ADDRESS_LEN, fp) != MAC_ADDRESS_LEN ){ WL_ERROR(("%s: Error on reading mac address from %s \n",__FUNCTION__, fname)); dhd_os_close_image(fp); return 1; } dhd_os_close_image(fp); for (i =0; i< MAC_ADDRESS_LEN ; i+=2){ c_mac[i] = bcm_isdigit(c_mac[i]) ? c_mac[i]-'0' : bcm_toupper(c_mac[i])-'A'+10; c_mac[i+1] = bcm_isdigit(c_mac[i+1]) ? c_mac[i+1]-'0' : bcm_toupper(c_mac[i+1])-'A'+10; buf[i/2] = c_mac[i]*16 + c_mac[i+1]; } WL_TRACE(("%s: read from file mac address: %x:%x:%x:%x:%x:%x\n", __FUNCTION__, buf[0], buf[1], buf[2], buf[3], buf[4], buf[5])); return ret; }
ulong bcm_strtoul(char *cp, char **endp, uint base) { ulong result, value; if (base == 0) { if (cp[0] == '0') { if ((cp[1] == 'x') || (cp[1] == 'X')) { base = 16; cp = &cp[2]; } else { base = 8; cp = &cp[1]; } } else base = 10; } result = 0; while (bcm_isxdigit(*cp) && (value = bcm_isdigit(*cp) ? *cp-'0' : bcm_toupper(*cp)-'A'+10) < base) { result = result*base + value; cp++; } if (endp) *endp = (char *)cp; return (result); }
ulong bcm_strtoul(char *cp, char **endp, uint base) { ulong result, last_result = 0, value; bool minus; minus = FALSE; while (bcm_isspace(*cp)) cp++; if (cp[0] == '+') cp++; else if (cp[0] == '-') { minus = TRUE; cp++; } if (base == 0) { if (cp[0] == '0') { if ((cp[1] == 'x') || (cp[1] == 'X')) { base = 16; cp = &cp[2]; } else { base = 8; cp = &cp[1]; } } else base = 10; } else if (base == 16 && (cp[0] == '0') && ((cp[1] == 'x') || (cp[1] == 'X'))) { cp = &cp[2]; } result = 0; while (bcm_isxdigit(*cp) && (value = bcm_isdigit(*cp) ? *cp-'0' : bcm_toupper(*cp)-'A'+10) < base) { result = result*base + value; /* Detected overflow */ if (result < last_result && !minus) return (ulong)-1; last_result = result; cp++; } if (minus) result = (ulong)(-(long)result); if (endp) *endp = (char *)cp; return (result); }
ulong bcm_strtoul(char *cp, char **endp, uint base) { ulong result, value; /* The real strtoul supports a base of 0, but we don't */ ASSERT(base); result = 0; while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : bcm_toupper(*cp)-'A'+10) < base) { result = result*base + value; cp++; } if (endp) *endp = (char *)cp; return (result); }