int set_net_cmd_cb(int numParam, char* buf, void* ctx) { struct wl_ssid_t ssid; wl_err_t err = WL_FAILURE; tParam* param = (tParam*) buf; if (param->paramLen < WL_SSID_MAX_LENGTH) { memcpy(ssid.ssid, ¶m->param, param->paramLen); ssid.len = param->paramLen; ssid.ssid[ssid.len] = 0; INFO_SPI("SSID:%s\n", ssid.ssid); //dump(ssid.ssid, ssid.len); err = wl_cm_set_network(&ssid, NULL); if (err != 1) WARN("err=%d\n", err); } else { WARN("SSID len out of range"); } return err; }
cmd_state_t cmd_connect(int argc, char* argv[], void* ctx) { struct wl_ssid_t ssid; char desired_ssid[WL_SSID_MAX_LENGTH]; int len = 0; if (argc < 2) { printk("usage: connect <ssid>\n"); return CMD_DONE; } len = join_argv(desired_ssid, sizeof desired_ssid, argc - 1, argv + 1); if (0 == len) { return CMD_DONE; } memcpy(ssid.ssid, desired_ssid, len); ssid.len = len; wl_cm_set_network(&ssid, NULL); return CMD_DONE; }
int set_key_cmd_cb(int numParam, char* buf, void* ctx) { struct wl_ssid_t ssid; struct wl_mac_addr_t bssid; uint8_t idx=0, len=0; char key[13], key_hex[27]; char keyIdx[2]; wl_err_t err = WL_SUCCESS; tParam* params = (tParam*) buf; INFO_SPI("%s params=%d\n", __FUNCTION__, numParam); // SSID memset(&ssid, 0, sizeof ssid); if (params->paramLen < WL_SSID_MAX_LENGTH) { memcpy(ssid.ssid, ¶ms->param, params->paramLen); ssid.len = params->paramLen; INFO_SPI("%s\n", ssid.ssid); } else { //printk("SSID len out of range"); RETURN_ERR(WL_FAILURE) } params = (tParam*)((char*)buf+PARAM_LEN_SIZE+params->paramLen); strncpy(keyIdx, (const char*)¶ms->param, params->paramLen); keyIdx[(uint8_t)params->paramLen]='\0'; idx = (uint8_t)atoi(keyIdx); // KEY IDX if ((params->paramLen != 1)||(idx < 0)||(idx > 3)){ //printk("KEY IDX out of range %d\n", idx); RETURN_ERR(WL_FAILURE) } params = (tParam*)((char*)params+PARAM_LEN_SIZE+params->paramLen); strncpy(key_hex, (const char*)¶ms->param, params->paramLen); key_hex[(uint8_t)params->paramLen]='\0'; len = ascii_to_key(key, key_hex); // KEY if (( len != 5)&&(len != 13)) { //printk("KEY len out of range %d", len); RETURN_ERR(WL_FAILURE) } #if 0 printk("KEY IDX = %d\n", idx); dump(key, len); printk("KEY len %d\n", len); #endif memset(&bssid.octet, 0xff, sizeof bssid.octet); wl_add_wep_key(idx, len, key, &bssid); //wl_set_auth_mode(AUTH_MODE_SHARED_KEY); wl_set_default_wep_key(idx); //Connect err = wl_cm_set_network(&ssid, NULL); if (err != 1) WARN("err=%d\n", err); RETURN_ERR(err) }
pass[(uint8_t)params->paramLen]='\0'; INFO_SPI("Pass: %s %d\n", pass, params->paramLen); if (wl_set_passphrase(&net, pass, params->paramLen, ENC_TYPE_AUTO, AUTH_MODE_AUTO) != WL_SUCCESS) { WARN("%s : Failed to add passphrase\n", __func__); RETURN_ERR(WL_FAILURE) } printk("Connect to network..."); //Connect err = wl_cm_set_network(&net.ssid, NULL); if (err != 1) printk("err=%d\n", err); else printk("OK\n"); RETURN_ERR(err) } void set_result(wl_status_t _status) { result = _status; } void set_result_cmd(int err) {