AJ_Status AJ_WSL_NET_SetPassphrase(const char* SSID, const char* passphrase, uint32_t passLen) { AJ_Status status; AJ_BufList* passphraseList; passphraseList = AJ_BufListCreate(); uint8_t* hexPassphrase = NULL; if (passLen == 64) { hexPassphrase = (uint8_t*)AJ_WSL_Malloc(32); status = AJ_HexToRaw(passphrase, 64, hexPassphrase, 32); if (status == AJ_OK) { WSL_MarshalPacket(passphraseList, WMI_SET_PMK, 0, hexPassphrase, 32); } else { AJ_WSL_Free(hexPassphrase); // Passphrase was not valid HEX data return AJ_ERR_INVALID; } } else { WSL_MarshalPacket(passphraseList, WSL_SET_PASSPHRASE, 0, SSID, passphrase, strlen(SSID), passLen); } WMI_MarshalHeader(passphraseList, 1, 1); AJ_InfoPrintf(("AJ_WSL_NET_SetPassphrase(): SET_PASSPHRASE\n")); AJ_WSL_WMI_PadPayload(passphraseList); //AJ_BufListPrintDumpContinuous(passphraseList); status = AJ_WSL_WMI_QueueWorkItem(0, AJ_WSL_WORKITEM(AJ_WSL_WORKITEM_NETWORK, WSL_SET_PASSPHRASE), AJ_WSL_HTC_DATA_ENDPOINT1, passphraseList); AJ_WSL_Free(hexPassphrase); return status; }
void WSL_ClearScanList() { int i; for (i = 0; i < list.size; i++) { AJ_WSL_Free(list.items[i].ssid); } AJ_WSL_Free(list.items); list.size = 0; }
void AJ_WSL_WMI_FreeWorkItem(wsl_work_item* item) { if (item) { AJ_BufListFree(item->list, TRUE); AJ_BufListFreeNodeAndBuffer(item->node, NULL); AJ_WSL_Free(item); } }
// this is a placeholder for a callback function called when a BSSINFO packet arrives void AJ_WSL_BSSINFO_Recv(AJ_BufNode* node) { wsl_scan_item* item; item = (wsl_scan_item*)WMI_UnmarshalScan(node->bufferStart); memcpy(&list.list[list.size], item, sizeof(wsl_scan_item)); AJ_WSL_Free(item); list.size++; }
void WSL_ClearScanList(wsl_scan_list* list) { int i; for (i = 0; i < list->size; i++) { AJ_WSL_Free(list->list[i].ssid); } memset(list->list, 0, sizeof(wsl_scan_item) * AJ_WSL_SCAN_LIST_SIZE); list->size = 0; }
/* * Callback function for BSSINFO packets */ void AJ_WSL_BSSINFO_Recv(AJ_BufNode* node) { wsl_scan_item* item; item = (wsl_scan_item*)WMI_UnmarshalScan(node->bufferStart, node->length); memcpy(&list.items[list.size], item, sizeof(wsl_scan_item)); if (wifiCallback) { wifiCallback(wifiContext, list.items[list.size].ssid, list.items[list.size].bssid, list.items[list.size].rssi, list.items[list.size].secType, list.items[list.size].cipherType); } AJ_WSL_Free(item); list.size++; }