protegemed, aquisição via A/D simples utilizando interrupção do timer

Dependencies:   EthernetInterface NTPClient mbed-rtos mbed

Fork of ptgm_semDMA by Marcelo Rebonatto

Committer:
viniciushl
Date:
Wed Jan 13 18:53:25 2016 +0000
Revision:
1:8129536051df
Parent:
0:fac116e94d44
Alterada captura para aquisi??o simples do A/D utilizando interrup??o do timer;

Who changed what in which revision?

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