Versão sem FFT e aquisição por DMA. 256 amostras.

Dependencies:   EthernetInterface NTPClient mbed-rtos mbed

Committer:
rebonatto
Date:
Tue Jan 05 11:45:44 2016 +0000
Revision:
0:e57bc370d339
Vers?o est?vel sem calculo de FFT. Aquisi??o por DMA. Usa 256 amostras.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rebonatto 0:e57bc370d339 1 /*
rebonatto 0:e57bc370d339 2 * CommTCP.cpp
rebonatto 0:e57bc370d339 3 *
rebonatto 0:e57bc370d339 4 * Created on: 07/07/2013
rebonatto 0:e57bc370d339 5 * Author: Rebonatto
rebonatto 0:e57bc370d339 6 */
rebonatto 0:e57bc370d339 7 #include "CommTCP.h"
rebonatto 0:e57bc370d339 8 #include "EventDetector.h"
rebonatto 0:e57bc370d339 9
rebonatto 0:e57bc370d339 10 #define PORTTCP 7890U
rebonatto 0:e57bc370d339 11 #define NEIGHBORS 2U
rebonatto 0:e57bc370d339 12
rebonatto 0:e57bc370d339 13 void CommTCP::CommTCP_Thread(void const *arg)
rebonatto 0:e57bc370d339 14 {
rebonatto 0:e57bc370d339 15 char buffer[5];
rebonatto 0:e57bc370d339 16 int ret=0,i, r;
rebonatto 0:e57bc370d339 17 int cont = 0;
rebonatto 0:e57bc370d339 18 TCPSocketServer ServerSocket;
rebonatto 0:e57bc370d339 19
rebonatto 0:e57bc370d339 20 ServerSocket.bind(PORTTCP);
rebonatto 0:e57bc370d339 21 ServerSocket.listen();
rebonatto 0:e57bc370d339 22 printf("TCP Thread starting...\r\n");
rebonatto 0:e57bc370d339 23 // printf("ServerSocket %s:%d\n", get_address(), get_port());
rebonatto 0:e57bc370d339 24
rebonatto 0:e57bc370d339 25 while(1){
rebonatto 0:e57bc370d339 26 TCPSocketConnection sock;
rebonatto 0:e57bc370d339 27 for(i=0; i < MAXTRIES; i++){
rebonatto 0:e57bc370d339 28 printf("Aguarda Conexao\n");
rebonatto 0:e57bc370d339 29 r = ServerSocket.accept(sock);
rebonatto 0:e57bc370d339 30 if (r == 0) //Accept Ok
rebonatto 0:e57bc370d339 31 break;
rebonatto 0:e57bc370d339 32 else{
rebonatto 0:e57bc370d339 33 printf("Error in Acceppt\n");
rebonatto 0:e57bc370d339 34 wait_ms(Settings::get_DelayTry());
rebonatto 0:e57bc370d339 35 }
rebonatto 0:e57bc370d339 36 }
rebonatto 0:e57bc370d339 37 //sock.set_blocking(true, 1500);
rebonatto 0:e57bc370d339 38
rebonatto 0:e57bc370d339 39 //printf("Conected %d at %s\n", r, sock.get_address());
rebonatto 0:e57bc370d339 40 for(i=0; i < MAXTRIES; i++){
rebonatto 0:e57bc370d339 41 r = sock.receive(buffer, sizeof(buffer));
rebonatto 0:e57bc370d339 42 if (r != -1) // Receive Ok
rebonatto 0:e57bc370d339 43 break;
rebonatto 0:e57bc370d339 44 else{
rebonatto 0:e57bc370d339 45 printf("Erro na recepcao do Socket TCP\n");
rebonatto 0:e57bc370d339 46 wait_ms(Settings::get_DelayTry());
rebonatto 0:e57bc370d339 47 }
rebonatto 0:e57bc370d339 48 buffer[ret] = '\0';
rebonatto 0:e57bc370d339 49 }
rebonatto 0:e57bc370d339 50 if (cont % 60 == 0)
rebonatto 0:e57bc370d339 51 printf("Recebida conexao %d msg TCP: %d chars: *%s*\n", cont++, ret, buffer);
rebonatto 0:e57bc370d339 52
rebonatto 0:e57bc370d339 53 //printf("Received %d chars:\n*%s*\n", ret, buffer);
rebonatto 0:e57bc370d339 54 sock.close();
rebonatto 0:e57bc370d339 55 SendAcom(0,0);
rebonatto 0:e57bc370d339 56
rebonatto 0:e57bc370d339 57 }
rebonatto 0:e57bc370d339 58 }
rebonatto 0:e57bc370d339 59
rebonatto 0:e57bc370d339 60 void CommTCP::RequestAcom(){
rebonatto 0:e57bc370d339 61 // Metodo para solicitar os acompanhamentos
rebonatto 0:e57bc370d339 62 //char msg[] = "3;-1";
rebonatto 0:e57bc370d339 63 TCPSocketConnection s[NEIGHBORS];
rebonatto 0:e57bc370d339 64 //int escritos, i;
rebonatto 0:e57bc370d339 65 //TCPSocketConnection s[NEIGHBORS];
rebonatto 0:e57bc370d339 66
rebonatto 0:e57bc370d339 67 /*
rebonatto 0:e57bc370d339 68 Formato das mensagens de requisicao
rebonatto 0:e57bc370d339 69 Tipo ; Tomada
rebonatto 0:e57bc370d339 70 Tipos: 1 Solicitacao de fase
rebonatto 0:e57bc370d339 71 2 Solicitacao de diferencial
rebonatto 0:e57bc370d339 72 3 Acompanhamento (manda fase e diferencial)
rebonatto 0:e57bc370d339 73 Tomada: Numero da tomada
rebonatto 0:e57bc370d339 74 -1 (zero) quando de todas as tomadas
rebonatto 0:e57bc370d339 75 */
rebonatto 0:e57bc370d339 76 /*Timer t;
rebonatto 0:e57bc370d339 77 //t.start();
rebonatto 0:e57bc370d339 78
rebonatto 0:e57bc370d339 79 for(i=0;i<Settings::get_NumNeighbors();i++){
rebonatto 0:e57bc370d339 80 s[i].connect(Settings::get_Neighbor(i), Settings::get_PortTCP());
rebonatto 0:e57bc370d339 81 }
rebonatto 0:e57bc370d339 82 //t.stop();
rebonatto 0:e57bc370d339 83 //printf("The time taken in connection was %d useconds\n", t.read_us());
rebonatto 0:e57bc370d339 84 */
rebonatto 0:e57bc370d339 85 /* desabilitado pela falta do vetor de vizinhos
rebonatto 0:e57bc370d339 86 for(i=0; i< NEIGHBORS; i++){
rebonatto 0:e57bc370d339 87 //talvez verificar se o socket est conectado. Se no estiver, destruir objeto e conectar
rebonatto 0:e57bc370d339 88 TCPSocketConnection sock;
rebonatto 0:e57bc370d339 89 sock.connect(Settings::get_Neighbor(i), Settings::get_PortTCP());
rebonatto 0:e57bc370d339 90 //escritos = Settings::get_Socket(i).send_all(msg, sizeof(msg)-1);
rebonatto 0:e57bc370d339 91 //printf("Socket %d\n",s[i].is_connected());
rebonatto 0:e57bc370d339 92 //Timer t1;
rebonatto 0:e57bc370d339 93 //t1.start();
rebonatto 0:e57bc370d339 94 escritos = sock.send_all(msg, strlen(msg));
rebonatto 0:e57bc370d339 95 wait_ms(100);
rebonatto 0:e57bc370d339 96 if(escritos != strlen(msg)){
rebonatto 0:e57bc370d339 97 printf("Erro ao enviar mensagem para vizinho\n");
rebonatto 0:e57bc370d339 98 break;
rebonatto 0:e57bc370d339 99 }
rebonatto 0:e57bc370d339 100 //t1.stop();
rebonatto 0:e57bc370d339 101 //printf("The time taken in send was %d useconds\n", t1.read_us());
rebonatto 0:e57bc370d339 102
rebonatto 0:e57bc370d339 103 sock.close();
rebonatto 0:e57bc370d339 104
rebonatto 0:e57bc370d339 105 }
rebonatto 0:e57bc370d339 106 */
rebonatto 0:e57bc370d339 107 }
rebonatto 0:e57bc370d339 108
rebonatto 0:e57bc370d339 109 void CommTCP::SendAcom(int tipo,int tomada){
rebonatto 0:e57bc370d339 110 // Aqui chama a funço para enviar um acompanhamento
rebonatto 0:e57bc370d339 111 for(int i=0;i<NUMBER_OF_CHANNELS;i++)
rebonatto 0:e57bc370d339 112 {
rebonatto 0:e57bc370d339 113 EventDetector::get_Detector(i).ExternalTrigger();
rebonatto 0:e57bc370d339 114 }
rebonatto 0:e57bc370d339 115 }
rebonatto 0:e57bc370d339 116