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

Revision:
0:fac116e94d44
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Codes/Settings.cpp	Tue Jan 05 11:47:35 2016 +0000
@@ -0,0 +1,409 @@
+/*
+ * Settings.cpp
+ *
+ *  Created on: 
+ *      Author: 
+ */
+
+#include "Settings.h"
+
+LocalFileSystem local("local");
+
+char* Settings::m_ipaddress = NULL;
+char* Settings::m_netmask = NULL;
+char* Settings::m_gateway = NULL;
+char* Settings::m_serverurl = NULL;
+int  Settings::m_dhcp = 0;
+int  Settings::m_ReadRfid = 0;
+int  Settings::m_module_number = 0;
+//int  Settings::m_MaxChannels = 0;
+//int  Settings::m_MaxOutlets = 0;
+//int  Settings::m_FreqBase = 0;
+//int  Settings::m_Samples = 0;
+int  Settings::m_MaxHarmonics = 0;
+int  Settings::m_EventLimit = 0;
+int  Settings::m_MBoxLength = 0;
+//int  Settings::m_NumNeighbors = 0;
+//int  Settings::m_PortTCP = 0;
+//int  Settings::m_MaxTries = 0;
+int  Settings::m_DelayTry = 0;
+int  Settings::m_DelaySend = 0;
+
+bool Settings::m_logMarks = true;
+int Settings::m_logMarksInterval = 40;
+
+//TCPSocketServer Settings::m_ServerSocket;
+//TCPSocketConnection Settings::m_Socket[NEIGHBORS];
+
+float Settings::m_gain[NUMBER_OF_CHANNELS];
+int Settings::m_offset[NUMBER_OF_CHANNELS];
+float Settings::m_limit[NUMBER_OF_CHANNELS];
+int Settings::m_outlet_number[NUMBER_OF_CHANNELS];
+char Settings::m_purpose[NUMBER_OF_CHANNELS];
+int Settings::m_outlet[NUMBER_OF_OUTLETS];
+//char *Settings::m_Neighbor[NEIGHBORS];
+
+void Settings::LoadDefaults()
+{   
+    set_ServerUrl("192.168.1.26");
+    
+    set_IpAddress("192.168.1.100");
+    
+    set_Netmask("255.255.255.0");
+    set_Gateway("192.168.1.5");
+   
+    set_Dhcp(1);
+    set_ReadRfid(1);   // default read RFID
+
+    set_ModuleNumber(1);
+//    set_MaxChannels(NUMBER_OF_CHANNELS);
+//    set_MaxOutlets(NUMBER_OF_OUTLETS);
+//    set_FreqBase(60);
+//    set_Samples(256);
+    set_MaxHarmonics(12);
+    set_EventLimit(3);
+    set_MBoxLength(10);
+//    set_NumNeighbors(3);
+//    set_PortTCP(7890);
+//    set_MaxTries(10);
+    set_DelayTry(500);
+    set_DelaySend(50);
+    
+    set_LogMarks(true);
+    set_LogMarksInterval(40);
+    
+    int i;
+
+    for(i=0;i<NUMBER_OF_CHANNELS;i++)
+    {
+        set_Gain(i,1);
+        set_Offset(i,2048);
+        set_Limit(i,2048);
+        set_OutletNumber(i,i/2);
+        set_Purpose(i,(i%2)?'d':'p');
+    }
+    for(i=0;i<NUMBER_OF_OUTLETS;i++)
+    {
+        set_Outlet(i,i+1);    
+    }
+    
+//    set_Neighbor(0, "192.168.1.6");
+//    set_Neighbor(1, "192.168.1.7");
+//    set_Neighbor(2, "192.168.1.8");
+    
+    /*
+    m_ServerSocket.bind(get_PortTCP());         // liga o serversocket a porta
+    printf("Settings Default: fez bind na porta %d\n", get_PortTCP());
+    
+    for(i=0;i<get_NumNeighbors();i++){
+        m_Socket[i].connect(get_Neighbor(i), get_PortTCP());   // conecta os sockets de envio aos IPs dos vizinhos
+        printf("Settings Default: conectou socket com %s:%d\n", get_Neighbor(i), get_PortTCP());
+    }
+    */    
+}
+
+void Settings::ReadFile()
+{
+    int i;
+    FILE *f = fopen(FILENAME,"r");
+    
+    if(f == NULL)
+    {
+        LoadDefaults();
+        WriteFile();
+        return;
+    }
+    char buf[50];
+    while(fgets(buf,50,f)!= NULL)
+    {
+        char* p = strchr(buf,'\n');
+        if(p)
+        {
+            if(isprint(*(p-1)) == 0) *(p-1) = '\0';
+            *p = '\0';
+        }
+        char **line;
+        int l = split(buf,"=",&line);
+        if(l!=2)continue;
+        if(!strcmp(line[0],"server"))
+        {
+            set_ServerUrl(line[1]);
+        }
+        if(!strcmp(line[0],"address"))
+        {
+            set_IpAddress(line[1]);
+        }
+        if(!strcmp(line[0],"netmask"))
+        {
+            set_Netmask(line[1]);
+        }
+        if(!strcmp(line[0],"gateway"))
+        {
+            set_Gateway(line[1]);
+        }
+        if(!strcmp(line[0],"dhcp"))
+        {
+            if(!strcmp(line[1],"false"))
+                set_Dhcp(0);
+            else
+                set_Dhcp(1);
+        }
+        
+        if(!strcmp(line[0],"ReadRFID"))
+        {
+            if(!strcmp(line[1],"false"))
+                set_ReadRfid(0);
+            else
+                set_ReadRfid(1);
+        }
+
+        if(!strcmp(line[0],"module"))
+        {
+            set_ModuleNumber(atoi(line[1]));
+        }
+
+//        if(!strcmp(line[0],"FreqBase"))
+//        {
+//            set_FreqBase(atoi(line[1]));
+//        }
+//        if(!strcmp(line[0],"MaxChannels"))
+//        {
+//            set_MaxChannels(atoi(line[1]));
+//        }
+//        if(!strcmp(line[0],"MaxOutlets"))
+//        {
+//            set_MaxOutlets(atoi(line[1]));
+//        }
+//        if(!strcmp(line[0],"Samples"))
+//        {
+//            set_Samples(atoi(line[1]));
+//        }
+        if(!strcmp(line[0],"EventLimit"))
+        {
+            set_EventLimit(atoi(line[1]));
+        }
+        if(!strcmp(line[0],"MBoxLength"))
+        {
+            set_MBoxLength(atoi(line[1]));
+        }
+                      
+        for(i=0;i<NUMBER_OF_CHANNELS;i++)
+        {
+            char x[10];
+            sprintf(x,"gain%d",i);
+            if(!strcmp(line[0],x))
+            {
+                set_Gain(i,atof(line[1]));
+            }
+            sprintf(x,"offset%d",i);
+            if(!strcmp(line[0],x))
+            {
+                set_Offset(i,atoi(line[1]));
+            }
+            sprintf(x,"limit%d",i);
+            if(!strcmp(line[0],x))
+            {
+                set_Limit(i,atof(line[1]));
+            }
+            sprintf(x,"type%d",i);
+            if(!strcmp(line[0],x))
+            {
+                set_Purpose(i,line[1][0]);
+                set_OutletNumber(i,line[1][1]-'0');
+            }
+        }
+
+        for(i=0;i<NUMBER_OF_OUTLETS;i++)
+        {
+            char x[10];
+            sprintf(x,"outlet%d",i);
+            if(!strcmp(line[0],x))
+            {
+                set_Outlet(i,atoi(line[1]));
+            }
+        }
+        if(!strcmp(line[0],"MaxHarmonics"))
+        {
+            set_MaxHarmonics(atoi(line[1]));
+        }
+/*        
+        if(!strcmp(line[0],"NumNeighbors"))
+        {
+            set_NumNeighbors(atoi(line[1]));
+        }                
+        
+        if(!strcmp(line[0],"TcpPort"))
+        {
+            set_PortTCP(atoi(line[1]));
+            //m_ServerSocket.bind(get_PortTCP()); // liga o serversocket a porta
+        }     
+        
+        for(i=0;i<get_NumNeighbors();i++)
+        {
+            char x[15];
+            sprintf(x,"Neighbor%d",i);               
+            //printf("Vai buscar %d -> %s\n", i, x);        
+            if(!strcmp(line[0],x))
+            {
+               // printf("Vai usar %d -> %s\n", i, line[1]);
+                set_Neighbor(i, line[1]) ;
+                //m_Socket[i].connect(get_Neighbor(i), get_PortTCP());   // conecta os sockets de envio aos IPs dos vizinhos
+            }
+        }                
+        
+        if(!strcmp(line[0],"MaxTries"))
+        {
+            set_MaxTries(atoi(line[1]));
+            //m_ServerSocket.bind(get_PortTCP()); // liga o serversocket a porta
+        }  
+*/        
+        if(!strcmp(line[0],"DelayTry"))
+        {
+            set_DelayTry(atoi(line[1]));
+            //m_ServerSocket.bind(get_PortTCP()); // liga o serversocket a porta
+        }
+        
+        if(!strcmp(line[0],"DelaySend"))
+        {
+            set_DelaySend(atoi(line[1]));
+            //m_ServerSocket.bind(get_PortTCP()); // liga o serversocket a porta
+        }  
+        
+        if(!strcmp(line[0],"LogMarks"))
+        {
+            if(!strcmp(line[1],"false"))
+                set_LogMarks(false);
+            else
+                set_LogMarks(true);
+        }
+
+        if(!strcmp(line[0],"LogMarksInterval"))
+        {
+            set_LogMarksInterval(atoi(line[1]));
+        }
+        
+            //printf("Param=%s Value=%s\r\n",line[0],line[1]);
+    }
+    
+    /*       
+    m_ServerSocket.bind(get_PortTCP()); // liga o serversocket a porta              
+    printf("Settings LoadFile: fez bind na porta %d\n", get_PortTCP());
+    
+    for(i=0;i<get_NumNeighbors();i++){
+        m_Socket[i].connect(get_Neighbor(i), get_PortTCP());   // conecta os sockets de envio aos IPs dos vizinhos
+        printf("Settings LoadFile: conectou socket com %s:%d\n", get_Neighbor(i), get_PortTCP());
+    }
+    */
+    
+    fclose(f);    
+}
+
+
+void Settings::WriteFile()
+{
+    FILE *f = fopen(FILENAME,"w");
+    int i;
+    
+    if(f == NULL)
+    {
+        printf("Error creating settings file\r\n");
+        return;
+    }
+
+    fprintf(f,"server=%s\r\n",get_ServerUrl());
+    fprintf(f,"address=%s\r\n",get_IpAddress());
+    fprintf(f,"netmask=%s\r\n",get_Netmask());
+    fprintf(f,"gateway=%s\r\n",get_Gateway());
+
+    if(get_Dhcp())
+        fprintf(f,"dhcp=true\r\n");        
+    else
+        fprintf(f,"dhcp=false\r\n");
+
+    if(get_ReadRfid())
+        fprintf(f,"ReadRFID=true\r\n");        
+    else
+        fprintf(f,"ReadRFID=false\r\n");
+
+    fprintf(f,"module=%d\r\n",get_ModuleNumber());
+//    fprintf(f,"MaxChannels=%d\r\n",get_MaxChannels());
+//    fprintf(f,"MaxOutlets=%d\r\n",get_MaxOutlets());    
+//    fprintf(f,"FreqBase=%d\r\n",get_FreqBase());
+//    fprintf(f,"Samples=%d\r\n",get_Samples());
+    fprintf(f,"EventLimit=%d\r\n",get_EventLimit());    
+    fprintf(f,"MBoxLength=%d\r\n",get_MBoxLength());    
+    
+    for(i=0;i<NUMBER_OF_CHANNELS;i++)
+    {
+        fprintf(f,"gain%d=%0.4f\r\n",i,get_Gain(i));
+        fprintf(f,"offset%d=%d\r\n",i,get_Offset(i));
+        fprintf(f,"limit%d=%0.4f\r\n",i,get_Limit(i));
+        fprintf(f,"type%d=%c%d\r\n",i,get_Purpose(i),get_OutletNumber(i));
+    }
+
+    for(i=0;i<NUMBER_OF_OUTLETS;i++)
+    {
+        fprintf(f,"outlet%d=%d\r\n",i,get_Outlet(i));
+    }
+    fprintf(f,"MaxHarmonics=%d\r\n",get_MaxHarmonics());    
+    
+//    fprintf(f,"NumNeighbors=%d\r\n",get_NumNeighbors());   
+//    fprintf(f,"TcpPort=%d\r\n",get_PortTCP()); 
+//    for(i=0;i<get_NumNeighbors();i++)
+//    {
+//        fprintf(f,"Neighbor%d=%s\r\n",i,get_Neighbor(i));
+//    }
+//    fprintf(f,"MaxTries=%d\r\n",get_MaxTries());
+    fprintf(f,"DelayTry=%d\r\n",get_DelayTry());
+    fprintf(f,"DelaySend=%d\r\n",get_DelaySend());        
+
+    if(get_LogMarks())
+        fprintf(f,"LogMarks=true\r\n");        
+    else
+        fprintf(f,"LogMarks=false\r\n");
+
+    fprintf(f,"LogMarksInterval=%d\r\n",get_LogMarksInterval());
+
+        
+    fclose(f);
+}
+            
+void Settings::ShowValues()
+{        
+    printf("ServerUrl: %s\n", get_ServerUrl());
+    printf("IpAddress: %s\n", get_IpAddress());    
+    printf("NetMask: %s\n",   get_Netmask());
+    printf("Gateway: %s\n",   get_Gateway());
+    printf("Dhcp: %d\n",      get_Dhcp());
+    printf("ReadRFID: %d\n",  get_ReadRfid());
+    printf("ModuleNumber: %d\n", get_ModuleNumber() );
+//    printf("FreqBase : %d\n", get_FreqBase() );
+//    printf("Samples : %d\n" , get_Samples() );
+//    printf("MaxChannels : %d\n", get_MaxChannels() );
+//    printf("MaxOutlets  : %d\n", get_MaxOutlets() );        
+    printf("EventLimit : %d\n" , get_EventLimit() );
+    printf("MBoxLength : %d\n" , get_MBoxLength() );    
+    printf("Per Channel\n");
+    int i;
+    for(i=0;i<NUMBER_OF_CHANNELS;i++)
+    {
+        printf("Channel %d Gain %f Offset %d Limmit %f Outlet %d Purpose %c\n ", i, get_Gain(i), get_Offset(i), get_Limit(i), get_OutletNumber(i), get_Purpose(i));
+    }
+    printf("Per Outlet \n");
+    for(i=0;i<NUMBER_OF_OUTLETS;i++)
+    {
+        printf("Outlet %d Number %d \n ", i, get_Outlet(i));
+    }
+    printf("MaxHarmonics : %d\n", get_MaxHarmonics() );
+    
+//    printf("NumNeighbors : %d\n", get_NumNeighbors() );
+//    for(i=0;i<get_NumNeighbors();i++)
+//    {
+//        printf("Neighbor %d Value %s \n ", i, get_Neighbor(i));
+//    }
+//    printf("TcpPort : %d\n", get_PortTCP() );
+//    printf("MaxTries : %d\n", get_MaxTries() );
+
+    printf("DelayTry : %d\n", get_DelayTry() );
+    printf("DelaySend : %d\n", get_DelaySend() );
+}
\ No newline at end of file