コード例 #1
0
ファイル: uEZNetwork.c プロジェクト: FutureDesigns/uEZ
/*---------------------------------------------------------------------------*/
T_uezError UEZNetworkConnect(
        const char *aNetworkName,
        const char *aJoinName,
        const T_uezNetworkAddr *aIPAddr,
        const T_uezNetworkAddr *aIPMask,
        const T_uezNetworkAddr *aIPGateway,
        TBool aEnableDHCP,
        T_uezDevice *aNetwork,
        T_uezNetworkStatus *aStatus)
{
#if 0
    T_uezNetworkSettings settings;
    T_uezError error = UEZ_ERROR_NONE;
    char networkName[32 + 1];
    T_uezDevice network;

    *aNetwork = 0;

    memset(&settings, 0, sizeof(settings));
    memset(aStatus, 0, sizeof(T_uezNetworkStatus));

    settings.iNetworkType = UEZ_NETWORK_TYPE_INFRASTRUCTURE;
    settings.iScanChannel = 0; // auto
    settings.iAutoConnectToOpen = ETrue;
    settings.iTXRate = 0;
    settings.iTXPower = UEZ_NETWORK_TRANSMITTER_POWER_HIGH;
    settings.iEnableDHCP = aEnableDHCP;
    settings.iScanSSID[0] = '\0';
    settings.iJoinSSID[0] = '\0';
    if (aIPAddr)
        memcpy(settings.iIPAddress.v4, aIPAddr->v4, 4);
    if (aIPMask)
        memcpy(settings.iSubnetMask.v4, aIPMask->v4, 4);
    if (aIPGateway)
        memcpy(settings.iGatewayAddress.v4, aIPGateway->v4, 4);

    error = UEZNetworkOpen(aNetworkName, &network, &settings);
    if (error)
        return error;

    if (aNetwork)
        *aNetwork = network;

    error = UEZNetworkScan(network, 0, 0, IScanGetNetworkName,
        (void *)networkName, 5000);
    if (error) {
        UEZNetworkClose(network);
        network = 0;
        return error;
    }

    if (aJoinName) {
        error = UEZNetworkJoin(network, aJoinName, "fdifdifdiFDI", 5000);
        if (error) {
            UEZNetworkClose(network);
            network = 0;
            return error;
        }
    }

    error = UEZNetworkGetStatus(network, aStatus);
    if (error) {
        UEZNetworkClose(network);
        network = 0;
        return error;
    }
    return error;
#else
    // Deprecated!
    return UEZ_ERROR_NOT_SUPPORTED;
#endif
}
コード例 #2
0
void WiFiBlastTask(void)
{
    T_uezDevice network = 0;
    T_uezError error;
    T_uezNetworkStatus status;
    T_uezNetworkSocket socket;
    printf("WifiBlast: Starting...\n");
    T_uezNetworkAddr addr;
    char buffer[80];
    TUInt32 count = 0;

    // Hardcoded to send UDP packets to 192.168.1.2, port 10080
    addr.v4[0] = 192;
    addr.v4[1] = 168;
    addr.v4[2] = 1;
    addr.v4[3] = 2;

    // Get access to the network
    error = UEZNetworkOpen("WirelessNetwork0", &network);
    if (error)
        goto stop;

    // Wait/Ensure we have joined a network (can be done with other commands)
    do {
        error = UEZNetworkGetStatus(network, &status);
        if (error)
            goto stop;

        if (status.iJoinStatus != UEZ_NETWORK_JOIN_STATUS_SUCCESS) {
            printf("WifiBlast: Waiting for network join\n");
            UEZTaskDelay(1000);
        }
    } while (status.iJoinStatus != UEZ_NETWORK_JOIN_STATUS_SUCCESS);

    // Go ahead and start spamming the network with as many packets as we can
    while (1) {
        error = UEZNetworkSocketCreate(network, UEZ_NETWORK_SOCKET_TYPE_TCP,
            &socket);
        if (error) {
            printf("WiFiBlast: Cannot create socket!\n");
            UEZTaskDelay(1000);
        } else {
            error = UEZNetworkSocketConnect(network, socket, &addr, 8010);
            if (error) {
                printf("WiFiBlast: Cannot connect!\n");
            } else {
                while (1) {
                    // Good, we connected (which really just sets up a destination);
                    // Let's send a packet to the target
                    sprintf(buffer, "WiFiBlast: Packet %d\r\n", ++count);
                    error = UEZNetworkSocketWrite(network, socket, buffer,
                        strlen(buffer), ETrue, 5000);
                    if (error)
                        break;
                    // Delay a little bit to share the CPU a bit even though the
                    // above may delay.  Our goal is to keep the transmitter
                    // energy level high.
                    UEZTaskDelay(1);

                    // Print a + to the display to show we sent a packet
                    printf("+");
                }
            }
            // Close the connection and try to reopen
            UEZNetworkSocketClose(network, socket);
            UEZNetworkSocketDelete(network, socket);
        }
    }

stop:
    if (error)
        printf("WifiError: %d\n", error);
    if (network)
        UEZNetworkClose(network);
    printf("WifiBlast: Ended.\n");
    G_wifiBlastStarted = EFalse;
}