PingPong

Dependencies:   EthernetInterface_pm mbed-rtos mbed

Revision:
0:c8f056a185d0
diff -r 000000000000 -r c8f056a185d0 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Mar 27 17:39:23 2014 +0000
@@ -0,0 +1,129 @@
+#include "mbed.h"
+#include "EthernetInterface.h"
+#include "string.h"
+#include "stdio.h"
+
+#include "Configuracoes.h" 
+#include "CommTCP.h"
+#include "Http_post.h"
+
+void InitializeEthernetLink();
+void *montamsg(char *msg, int seq, char *type);
+void SendMessage(char *msg);
+
+EthernetInterface eth;
+int errorCnt = 0;
+int errorSnd = 0;
+
+DigitalOut myled(LED1);
+
+int main() {
+    char msg[50];
+    int c=0;
+    
+    InitializeEthernetLink();
+    printf("Test %s with2 %d messages\n", MSG, FINAL);
+    
+    //Start TCP daemon service
+    Thread TcpService(CommTCP::CommTCP_Thread);
+
+    //wait(2); //Time to TCP bind and listen
+    while(1) {       
+        
+        if (PING){
+            montamsg(msg, c++, "Ping");
+            SendMessage(msg);
+        }
+        else{
+            montamsg(msg, c++, "Pong");
+            SendMessage(msg);
+        }
+        //printf("%s\n", msg);
+                
+        TCPSocketConnection s;
+        HttpPost::DoPost(s, APACHE);                       
+        
+        if(c % 1000 == 0){
+            printf("%s\n", msg);
+            //wait(10);
+        }
+                
+        if (c == FINAL) {
+            printf("Vai acabar |||\n");
+            //while(CommTCP::getCont() < FINAL);
+            //wait(3);
+            break;
+        }
+    }
+    printf("Foram recebidas %d mensagens corretas\n", CommTCP::getCont() );
+    printf("%d Erros of connection and %d Errors of send\n", errorCnt, errorSnd);
+    printf("%d Erros of HTTP connection and %d Errors of send\n", HttpPost::getCountCnt(), HttpPost::getCountSnd() );
+    printf("%d Erros of TCP connection and %d Errors of send\n", CommTCP::getCountCnt(), CommTCP::getCountSnd() );
+    //TcpService.terminate();
+    
+    while(1) {
+        myled = 1;
+        wait(0.2);
+        myled = 0;
+        wait(0.2);
+    }
+}
+
+void SendMessage(char *msg){
+    TCPSocketConnection socket;
+    int r, i;
+    
+    
+    for(i = 0; i < MAXTRIES; i++){
+        r = socket.connect(VIZINHO, TCPPORT);
+        if (r < 0) {
+            if (i == 0)
+                errorCnt++;
+            printf("Error %d Unable to connect %d to (%s) on port (%d) Try %d\n", errorCnt, r, VIZINHO, TCPPORT, i);
+            wait_ms(DELAYTRY);
+        }
+        else
+            break;
+    }
+    if (r == 0) {
+        for(i =0; i < MAXTRIES; i++){
+            r = socket.send_all(msg, strlen(msg));        
+            if (r < 0) {
+                if (i == 0)
+                    errorSnd++;
+                printf("Error %d Unable to Send Try %d\n", errorSnd, i);
+                wait_ms(DELAYTRY);
+            }
+            else
+                break;
+        }
+        wait_ms(DELAY);
+        //printf("Enviou Mensagem %s com %d bytes\n", msg, strlen(msg));
+        socket.close();
+    }
+    
+    return;
+}
+
+
+void *montamsg(char *msg, int seq, char *type){
+    char aux[10];
+    
+    memset(msg, 0, sizeof(msg));
+    strcat(msg, MEUIP);
+    strcat(msg, ":");
+    strcat(msg, type);
+    strcat(msg, ":");
+    sprintf(aux, "%d", seq);
+    strcat(msg, aux);
+    
+    return NULL;
+}
+
+void InitializeEthernetLink()
+{
+    eth.init(MEUIP,"255.255.255.0","192.168.1.5");
+        
+    eth.connect();
+    printf("IP Address is %s\n", eth.getIPAddress());
+}
\ No newline at end of file