ok

Dependencies:   mbed Projet-matthieu

main.cpp

Committer:
robin25
Date:
2019-05-20
Revision:
0:17fcad2a7373

File content as of revision 0:17fcad2a7373:

#include "mbed.h"
#include "WiflyInterface.h"
#include <string.h>
DigitalOut SetalarmOn(p26);
Serial pc(USBTX, USBRX);
#define On 0
#define Off 1 

/* creation de l'instance wifly
-
sécurité : WPA
-
SSID : vega
-
mt de passe : btssnvega
Attention au sens des broches : TX RX
Reset Status */
WiflyInterface wifly(p9, p10, p12, p11, "vega", "btssnvega", WPA);
//WiflyInterface wifly(p9, p10, p30, p29, "nom", "MDP", NONE);
TCPSocketServer server;
TCPSocketConnection client;
int serveur_port = 2000;
unsigned int NbcaracRecu = 0;
int main()
{
    bool client_connected = false;
    bool client_open = false;
    char buffer [100];
    pc.printf("Hello, I'm happy my Virtual Serial port is ok.\n\r");
    pc.printf("Init WIfi.\n\r");
     if (wifly.init("192.168.0.20","255.255.255.0","192.168.0.254")!=0) { //Innitialise interface ici dhcp
        pc.printf("ERREUR INIT ETHERNET\r\n");
        return-1;
    }
    pc.printf("Init Wifi ok.\n\rConnect Wifly.\n\r");
    if (!wifly.connect()) { // Connecte interface
        pc.printf("Tests en erreur, ERREUR Connect, quitte programme\r\n");
        return-1;
//       }
    }
    pc.printf("Ip sur Wifly is Ok.\n\r");
    printf("IP Address is %s\r\n",wifly.getIPAddress());
    pc.printf("\r\nVous devez maintenant installer Tcp.\n\r");
    if (server.bind (serveur_port)!=0) {
        pc.printf("Erreur Tcp bind\r\n");
        return-1;
    }
    pc.printf("Succes Tcp Bind\r\n");
    if (server.listen()!=0) {
        pc.printf("ERREUR Tcp Listen\r\n");
        return-1;
    }
    pc.printf("Succes Tcp listen\r\n");
    pc.printf("Connectez un client Tcp port %u...\r\n",serveur_port);
    client.set_blocking(false, 1); // Timeout after (100ms)
    while(1) {
        if (client_connected==false) {
            if (server.accept (client)!=0) {
                pc.printf("ERREUR connexion client\r\n"); // erreur
                return -1;
            }
            client_open = false;
            client_connected = true;
            pc.printf("Client Tcp connecte\r\n");
            NbcaracRecu = 0;
        } else {
            if ( client.is_connected() ) {
                if (pc.readable()) { // interface virtuel serie recoit donnees
                    buffer[0] = pc.getc();
                    client.send(buffer,1);
                }
// lecture message
                int nbcaractere = client.receive(buffer+NbcaracRecu,sizeof(buffer)-NbcaracRecu);
                if (nbcaractere>0) { // interface Wifi recoit donnees
                    NbcaracRecu = NbcaracRecu + nbcaractere;
                    buffer[NbcaracRecu] = 0;
// pour debug
                    pc.printf("Jai recu ce jour : Totrecu = %u recu = %u phrase : %s\r\n Code Ascii : ",NbcaracRecu,nbcaractere,buffer);
                    for (unsigned i = 0; i <NbcaracRecu; i++) {
                        pc.printf("%u,",buffer[i]);
                    }
                    pc.printf("\r\n");

// si dernier octet est 10 alors message complet

                    if (buffer[NbcaracRecu-1] == 10)  {

                        buffer[NbcaracRecu-2] = 0;   // on met 0 en fin de message en retirant \r\n

// pour afficher pour verifier en debug
                        for (unsigned i = 0; i <NbcaracRecu; i++) {
                            pc.printf("%u,",buffer[i]);
                        }
                        pc.printf("\r\n");
                        pc.printf("\r\n---------------------------------\r\n");
                        pc.printf("Phrase complete : %s\r\n",buffer);
// jusque la ...


// on interprete les messages
                        if (client_open == false) {
                            if (strcmp(buffer,"connect;")==0) {
                                pc.printf("Commande reconnue On\r\n");
                                client.send("on\n\r",strlen("on\n\r"));
                                client_open = true;
                            } else {
                                client_connected = false;
                                client.close();
                                pc.printf("Client deconnecte\r\n");
                                pc.printf("Connectez un client Tcp port 2000...\r\n");
                            }
                        } else 
                        if (strcmp(buffer,"on;")==0) {
                            pc.printf("Commande reconnue On\r\n");
                            client.send("on\n\r",strlen("on\n\r"));
                            SetalarmOn = On;
                            }
                        else if (strcmp(buffer,"off;")==0) {
                            pc.printf("Commande reconnue Off\r\n");
                            client.send("off\n\r",strlen("off\n\r"));
                            SetalarmOn = Off;
                            }
                        else pc.printf("Commande inconnu\r\n");
                        
                        NbcaracRecu = 0;

                    }
                }
            } else {
                client_connected = false;
                client_open = false;
                client.close();
                pc.printf("Client deconnecte\r\n");
                pc.printf("Connectez un client Tcp port 2000...\r\n");
            }
        }
    }
}