コード例 #1
0
void sendArg(struct benchData* arg)
{
#ifndef TEST
    char tmp[100];
    switch(arg->dataType)
    {
    /* INT RESULTS are not taken into account by the client
    because an OpenCL result is assumed to be an array */
    case kINT:
        write(newsockfd,"s\n",2*sizeof(char));
        sprintf(tmp,"%ld\n",arg->value.intNumber);
        write(newsockfd,tmp,strlen(tmp));
        break;
    case kREAL:
        write(newsockfd,"r\n",2*sizeof(char));
        sprintf(tmp,"%f\n",arg->value.real);
        write(newsockfd,tmp,strlen(tmp));
        break;
    case kFLOAT4:
        write(newsockfd,"f\n",2*sizeof(char));
        sprintf(tmp,"(%f,%f,%f,%f)\n",arg->value.float4.s[0],arg->value.float4.s[1],arg->value.float4.s[2],arg->value.float4.s[3]);
        write(newsockfd,tmp,strlen(tmp));
        break;
    case kINT_STREAM:
        write(newsockfd,"nl\n",3*sizeof(char));
        sendIntArray(arg->value.intArray);
        break;
    case kREAL_STREAM:
        write(newsockfd,"rl\n",3*sizeof(char));
        sendRealArray(arg->value.realArray);
        break;
    case kFLOAT4_STREAM:
        write(newsockfd,"zl\n",3*sizeof(char));
        sendFloat4Array(arg->value.float4Array);
        break;
    }
    write(newsockfd,".\n",2*sizeof(char));
#endif
}
コード例 #2
0
ファイル: multipoint.c プロジェクト: votton/nrf_100a
void masterMain() {
    //master
    short i;
    short l;
    short nextSlot;
    int clients[MAX_CLIENTS];
    int clientInfo[MAX_CLIENTS];

    nrf_init();
    delay();

    nrf_txmode();
    delay();
    
    nextSlot = 0;
    for (i=0; i<MAX_CLIENTS; i++) {
        clients[i] = 0;
    }

    sendLiteralBytes("\nLoop Start\n");
    LED_RED = 0;
    LED_GREEN = 0;
//    while(1) {
//        LED_RED = !LED_RED;
//        LED_GREEN = nrf_send(&tx_buf,&rx_buf);
//        delay();
//    }
    while(1) {
        LED_RED = !LED_RED;
        delay();
        sendIntArray(&clients,MAX_CLIENTS);
        sendLiteralBytes("\n");
        
        nrf_setTxAddr(0); //master channel
        nrf_setRxAddr(0,0); //master channel
        tx_buf[0] = 0x42;
        tx_buf[1] = nextSlot+1;
        //sendLiteralBytes("Attempt Send\n");
        //displayStatus(nrf_getStatus());
        if (nrf_send(&tx_buf,&rx_buf)) {
            sendLiteralBytes("\nClient Connected!\n");

            clients[nextSlot] = 1;

            //find the next available slot
            nextSlot = -1;
            for (i=0; i<MAX_CLIENTS; i++) {
                if (clients[i] == 0) {
                    nextSlot = i;
                    break;
                }
            }
        }

        for (i=0; i<MAX_CLIENTS; i++) {
            if (clients[i] != 0) {
                nrf_setTxAddr(i+1); //slave channel
                nrf_setRxAddr(0,i+1); //slave channel
                if (nrf_send(&tx_buf,&rx_buf)) {
                    clients[i] = 1;
                    clientInfo[i] = 1;
                } else {
                    clients[i]++;
                    if (clients[i] > 3) {
                        sendLiteralBytes("Client Disconnected!\n");
                        clients[i] = 0;
                        clientInfo[i] = 0;
                    }
                    for (l=0; l<MAX_CLIENTS; l++) {
                        if (clients[l] == 0) {
                            nextSlot = l;
                            break;
                        }
                    }
                }
            }
        }
    }
}