Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: Middleware EthernetInterface HC_SR04_Ultrasonic_Library mbed-rtos mbed
main.cpp
- Committer:
- RoHe
- Date:
- 2015-12-05
- Revision:
- 0:5db5c980e717
- Child:
- 1:106e93f9c7c8
File content as of revision 0:5db5c980e717:
/*
Main.cpp
Last update by RoHe 16/11/2015
*/
#include <string.h>
#include "mbed.h"
#include "EthernetInterface.h"
#include "rtos.h"
#include "SensorPIR.h"
#include "Ether.h"
#include "Initial.h"
#include "Threads.cpp"
#include "StringManager.h"
int main()
{
/*////////////////////////////////////
Initialization of the outports
Comments:
-Inicialize all the output in zero
-It has Pull - up
*/
ledRED=1; // it has pull-up
ledGREEN=1;
ledBLUE=1;
/*////////////////////////////////////
SET Initial configuration and welcome message
*/
pc.baud(115200);
pc.printf("Hello World from TCP Client-Server RoHE Main TASK GUS integrate YORCH1.\n\r");
/*//////////////////////////////////
Declares all necessary CLASSES
*/
EthernetInterface eth;
eth.init(); //Use DHCP
eth.connect();
/*///////////////////////////////////
Declares all necessary THREADS
*/
Thread thread1(led_thread);
//Thread thread2(receivedFromServer1);
/*////////////////////////////////////
Declares all necessary INTERRUPTIONS
*/
sw2.fall(&sw2_press);
//////////////////////////////////////////////////////APPLICATION /////////////////////////////////////////////////////////
s_myIP = eth.getIPAddress();
pc.printf("\nClient IP Address is %s\r", s_myIP);
pc.printf("\nClient IP MAC address is %s\r", eth.getMACAddress);
pc.printf("\nClient IP Gateway is %s\r", eth.getGateway());
pc.printf("\nClient IP network mask is %s\n\r", eth.getNetworkMask());
/*
CONSTRAINS:
-No se puede poner un serial print el los threads ....
-se tiene que abrir y cerrar las conecciones par que pueda leer nuevos mensajes
-se puede leer mensajes si no se cierra el socket pero la conexion se queda abierta
y no puede recibir mas mensajes .. se saco el forpara hacerlo una sola vez y no se cierra la conexion
*/
/*
// Connect to Server2
(socketTCP.connect(ECHO_SERVER_ADDRESS2, ECHO_SERVER_PORT2) < 0) {
pc.printf("Unable to connect to (%s) on port (%d)\n\r", ECHO_SERVER_ADDRESS2, ECHO_SERVER_PORT2);
}
_isConnectedServer2=true;
pc.printf("Connected to Server at %s\n\r",ECHO_SERVER_ADDRESS2);
*/
while(true) {
// Connect to Server1
//TODO: try to connect to both servers
//TODO: only try 5 times after ti server1 goes down
//TODO: cual es la diferencia entre recieved_all y recieved
//TOTRY: que valor regresa cuando hace el connect???
//QUESTION: que son los numero que aparecen despues de los dos puntos,
//parece ser uqe es el numero que noceciones que lleva acabo 192.168.1.81:49160
//NOSIRVE: si se conecta los dos micros con el programa de TCP Server4 y se les pide un reply
//los micros no contestan y para terminarla si pides dos veces un reply se queda colgado ..
//ACCOMPLISH: los colores de los leds ya responen de acuerdo a la conexion
//GetPersonStatus(1);
for(int i=0,isConServer1=0; i<2 && isConServer1==0; i++) {
if(socketTCP1.connect(ECHO_SERVER_ADDRESS1, ECHO_SERVER_PORT1) == -1) {
_isConnectedServer1=false;
pc.printf("Unable to connect1 to (%s) on port (%d)\n\r", ECHO_SERVER_ADDRESS1, ECHO_SERVER_PORT1);
pc.printf("TRY SERVER 1 number (%d)\n\r",(i+1));
isConServer1=0;
} else {
_isConnectedServer1=socketTCP1.is_connected();
pc.printf("Ya se conecto con el servidor 1\n\r");
isConServer1=1;
wait(1);
char hello[] = "Hello World\n\r";
printf("Sending message to Server : '%s' \n",hello);
socketTCP1.send_all(hello, sizeof(hello) - 1);
}
}//END FOR1
for(int i=0,isConServer2=0; i<2 && isConServer2==0; i++) {
if(socketTCP2.connect(ECHO_SERVER_ADDRESS2, ECHO_SERVER_PORT2) == -1) {
_isConnectedServer2=false;
pc.printf("Unable to connect2 to (%s) on port (%d)\n\r", ECHO_SERVER_ADDRESS2, ECHO_SERVER_PORT2);
pc.printf("TRY SERVER 2 number (%d)\n\r",(i+1));
isConServer2=0;
//wait(1);
} else {
_isConnectedServer2=socketTCP2.is_connected();
pc.printf("Ya se conecto con el servidor 2\n\r");
isConServer2=1;
}
}//END FOR2
//RECEIVED from TCP SERVER1
n1 = socketTCP1.receive_all(buf1, 256);
buf1[n1] = '\0';
if(n1>0) {
pc.printf("Received message from server1 IF: '%s'\n\r", buf1);
socketTCP1.close();
} else {
//_isConnectedServer1==false; //quiere decir que se desconecto del servidor
pc.printf("Not received1 ELSE value of lenght: '%u'\n\r",strlen(buf1));
socketTCP1.close();
//isConnectedServer1=false;
}
//socketTCP1.close();
//socketTCP2.close();
if(strcmp(buf1,"reply")==0) {
// SEND to server1
//Entra pero no puede mandar los datos
// pc.printf("Entro a la funcion strcmp: \n\r");
if(socketTCP1.connect(ECHO_SERVER_ADDRESS1, ECHO_SERVER_PORT1) == -1) {
pc.printf("Unable to connect1 to (%s) on port (%d)\n\r", ECHO_SERVER_ADDRESS1, ECHO_SERVER_PORT1);
}
char c_myIP[] = "192.168.1.77\n\r";
pc.printf("Sending message to Server : %s \n\r",c_myIP);
socketTCP1.send_all(c_myIP, sizeof(c_myIP) - 1);
socketTCP1.close();
}
//socketTCP1.close();
//RECEIVED from TCP SERVER2
n2 = socketTCP2.receive(buf2, 256);
buf2[n2] = '\0';
if(n2>0) {
pc.printf("Received message from server2 IF: '%s'\n\r", buf2);
socketTCP2.close();
//isConnectedServer1=false;
} else {
//_isConnectedServer1==false; //quiere decir que se desconecto del servidor
pc.printf("Not received2 ELSE value of lenght: '%u'\n\r",strlen(buf2));
socketTCP2.close();
//isConnectedServer1=false;
}
//
}// END while
eth.disconnect();
}