teste de publish

Dependencies:   DS1820 HighSpeedAnalogIn devices mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers serialModem.cpp Source File

serialModem.cpp

00001 #include "serialModem.h"
00002 #include "modem.h"
00003 
00004 //extern Serial pc(USBTX, USBRX); //Instancia de recurso Serial uart pc
00005 //extern Serial modem(P0_10, P0_11); //Instancia de recurso Serial uart Modem
00006 
00007 
00008 
00009 osTimerId serialModem::timer_pacote;
00010 bool serialModem::startTimer_pacote;
00011 bool serialModem::processarPacote;
00012 
00013 /*Timers*/
00014 //osTimerDef( "nomeDoTimer", "Função chamada pelo timer when match")
00015 osTimerDef(timerProcessaPacoteModem,serialModem::chamaProcessaPacote);
00016 /*Timers*/
00017 
00018 void serialModem::chamaProcessaPacote(void const *args){
00019     osSignalSet(idThreadProcessaPacote,0x1);
00020     serialModem::processarPacote = true;
00021 }
00022 
00023 void serialModem::configBaud(){       
00024     uint32_t baud = 9600;    
00025     modem.baud(baud);    
00026     while((!modemCom::sendToModem("ATE0\r\n",1,&modemCom::status.OK,NULL,50,1,50))&&(baud <= 230400)){
00027         baud += 9600;
00028         pc.printf("\r\n Tentando %lu.\r\n",baud);
00029         modem.baud(baud);        
00030     }    
00031     if(baud<=230400){
00032         pc.printf("\r\n Conectado a %lu baud/s.\r\n",baud);    
00033     }else{
00034         pc.printf("Modem inacessivel.\r\n");
00035      }
00036 }
00037 
00038 void serialModem::serial_init(){    
00039     //Instnciando o timer de processamento de pacotes entrantes na serial PC        
00040     //Criando timer_pacote
00041     serialModem::timer_pacote = osTimerCreate(osTimer(timerProcessaPacoteModem),osTimerOnce,NULL);    
00042     //Associando função a ISR da serial PC
00043     modem.attach(&serialModem::isr_serial); //Setando uma função para ISR Serial 2 (Serial modem)
00044 }
00045 void serialModem::isr_serial(){
00046     uint32_t RBR = LPC_UART2->RBR;      //Reset RBR interrupt flag e captura o caractere entrante      
00047     bufModem.putc(RBR);
00048     //pc.putc(RBR);
00049     serialModem::startTimer_pacote=true; //Agenda o inicio do timer  na thread de manipulação de timers
00050     osSignalSet(idThreadTimers, 0x1); //Envia sinal para a thread de manipulação dos timers para ativar os timers agendados           
00051     //timeOutModem.attach(&chamaProcessaPacotePeloTimeOut, 0.1);
00052 }