123

Dependencies:  

Revision:
2:16796fbfa94d
Parent:
1:441cdd24333e
diff -r 441cdd24333e -r 16796fbfa94d main.cpp
--- a/main.cpp	Sat Jul 06 06:54:10 2019 +0000
+++ b/main.cpp	Sat Jul 06 07:22:50 2019 +0000
@@ -6,76 +6,82 @@
 #include <string> 
 #include "SDBlockDevice.h"
 #include "FATFileSystem.h"
+
 #define GSMRX PA_9
 #define GSMTX PA_10 
 #define SAMPLE_FLAG1 (1UL << 0)
 #define SAMPLE_FLAG2 (1UL << 9)
 #define BUFFER_SIZE 50
 
-int timeCounter = 0;
 typedef struct {
 uint8_t *lcdData;
 char logMessage;      
 } message_t;
-uint8_t request[50] = "Hello!I am SIM800,I send you message from stm32";
+//Инициализация ивентов и очереди
 Queue<message_t, 32> queue;
 MemoryPool<message_t, 100> mpool;
 EventQueue evq;
+EventQueue sdEvent;
+//Инициализация потоков
 Thread eventThread;
 Thread gsmTask;
-EventQueue sdEvent;
 Thread sdEventThread;
 Thread sdLogWrite;
+//Флаги
+int timeCounter = 0;
 int c;
-int stopThread = 1;
+bool pressedButton = false;
+uint8_t counter=0;
+int answerCounter = 0;
+int readTimeStart=0;
+//Буфферы
 string timeBuffer;
-uint8_t counter=0;
+uint8_t request[50] = "Hello!I am SIM800,I send you message from stm32";
 uint8_t *receiveMsg[50];
 char answer[300];
-bool pressedButton = false;
-int i;
-int answerCounter = 0;
+char sslBuffer[1402];
+//Прерывания
 InterruptIn button(BUTTON1);
+//Настройка пинов
 DigitalOut myLed(LED1);
 Serial sim800(GSMRX,GSMTX);                                   //Serial communication of the sim800 and pc.
 Serial pc(SERIAL_TX,SERIAL_RX);
+//Инициализации SD карты 
 SDBlockDevice sd(D11, D12, D13, D4);
 FATFileSystem fs("sd");
-char sslBuffer[1402];
-int a;
 
+//Настройка времени
 void simTime()
 {   
-        sim800.printf("AT\r\n");
-        wait(1);
-        sim800.printf("AT+CLTS=1\r\n");
-        wait(1);
-        sim800.printf("AT+CNTPCID=1\r\n");
-        wait(1);
-        sim800.printf("AT+CNTP=ntp1.vniiftri.ru,7\r\n");
-        wait(1);
-        sim800.printf("AT+CNTP\r\n");
-        wait(1);
-        sim800.printf("AT+CCLK?\r\n");
-        wait(1); 
-        sim800.printf("AT&W\r\n");
-        wait(1); 
+    sim800.printf("AT\r\n");
+    wait(1);
+    sim800.printf("AT+CLTS=1\r\n");
+    wait(1);
+    sim800.printf("AT+CNTPCID=1\r\n");
+    wait(1);
+    sim800.printf("AT+CNTP=ntp1.vniiftri.ru,7\r\n");
+    wait(1);
+    sim800.printf("AT+CNTP\r\n");
+    wait(1);
+    sim800.printf("AT+CCLK?\r\n");
+    wait(1); 
+    sim800.printf("AT&W\r\n");
+    wait(1); 
 }
+//Отправка команд в модуль СИМ800
 void sendAt(const char *AT)
 {
   sim800.printf("%s\r\n",AT);
   wait(1);
 }
-//LCD DISPLAY WORK++++++++++++++++++++++++++++++++++
+//Отправка сообщения с дисплея 
 void lcdStartWork() {
-        if (stopThread==0) wait(3);
-        myLed=!myLed;       
-        message_t *message = mpool.alloc();
-        request[47]=counter;
-        message->lcdData = request; 
-        queue.put(message);      
+    myLed=!myLed;       
+    message_t *message = mpool.alloc();
+    message->lcdData = request; 
+    queue.put(message);      
 }
-
+//Запись сертификата с SD карты 
 void sdReadSsl()
 {
     sd.init();
@@ -93,16 +99,16 @@
     
 }
 
-//GSM MODULE WORK_________________________________
+//Отправка сообщения на сервер через модуль 
 void gsmStartWork() {
     while(1)
     {
         osEvent evt = queue.get();
         if (evt.status == osEventMessage) 
         {
-        message_t *message = (message_t*)evt.value.p;
-        *receiveMsg = (uint8_t*)message->lcdData; 
-        printf("lcdData: %s\n\r"   , *receiveMsg);   
+            message_t *message = (message_t*)evt.value.p;
+            *receiveMsg = (uint8_t*)message->lcdData; 
+            printf("lcdData: %s\n\r"   , *receiveMsg);   
         if(timeCounter == 0)
         {
             timeCounter = 1;
@@ -110,9 +116,6 @@
         }
         
         sendAt("AT\r\n");
-        sendAt("AT+CCLK?\r\n");
-
-
       /*  sim800.printf("AT+FSDEL=C:\\USER\\SSL1.CRT\n\r");
         wait(0.5);
         sim800.printf("AT+FSCREATE=C:\\USER\\SSL1.CRT\n\r");
@@ -125,9 +128,8 @@
         wait(3);
         answerCounter=1;
         sendAt("AT+CCLK?\r\n");
-        wait(1);
+        wait(1.5);
         answerCounter=0;
-        a=0;
         sendAt("AT+SAPBR=3,1,Contype,GPRS\r\n");     
         sendAt("AT+SAPBR=3,1,APN,internet.mts.ru\r\n");
         sendAt("AT+SAPBR=3,1,USER,mts\r\n");
@@ -135,10 +137,8 @@
         sendAt("AT+SAPBR=1,1");
         sendAt("AT+HTTPINIT");
         sendAt("AT+HTTPSSL=1");
-        //sendAt("AT+HTTPPARA =REDIR,1");
         sendAt("AT+HTTPPARA=URL,157.230.245.76:1880/message");
         sendAt("AT+HTTPPARA=CONTENT,application/octet-stream");
-      
         sendAt("AT+HTTPDATA=51,10000");
         sim800.write(*receiveMsg,51,NULL,SERIAL_EVENT_TX_COMPLETE);
         wait(0.5);
@@ -149,14 +149,13 @@
         sendAt("AT+HTTPTERM");
         wait(1.5);
         sendAt("AT+SAPBR=0,1");
-        printf("Time: %s\n\r",timeBuffer);   
+        pc.printf("Time: %s\n\r",timeBuffer);   
         mpool.free(message);  
             }
         }
 }
 
-
-
+//Запись логов 
 void sdWriteLog()
 {
     sd.init();
@@ -169,7 +168,7 @@
     fs.unmount();
     sd.deinit();
 }
-
+//Прерывание на нажатие кнопки
 void buttonPressed()
 {   
    // sdEvent.call(&sdReadSsl);
@@ -178,33 +177,39 @@
     pressedButton=true;
     //sdReadSsl();
 }
+
+//Прерывание на отжим кнопки
 void buttonReleased()
 {
     myLed=!myLed;
     pressedButton=false; 
 }
+//Задача для записи логов
 void sdWork()
 {
     while(1)
     {
-    sdEvent.call(&sdWriteLog);
-    wait(5);
+        sdEvent.call(&sdWriteLog);
+        wait(15);
     }
-    }
+}
 //MAIN-----------------------------------------------    
 int main()
 {
     pc.baud(9600);
     sim800.baud(9600);
+    
     pc.printf("*******GPRS TEST*******\r\n");
+    
     sdReadSsl();
     button.rise(&buttonReleased);
     button.fall(&buttonPressed);
+    
     gsmTask.start(gsmStartWork);
     sdLogWrite.start(sdWork);
+    
     eventThread.start(callback(&evq, &EventQueue::dispatch_forever));
     sdEventThread.start(callback(&sdEvent,&EventQueue::dispatch_forever));
-    
     while(1) {
         if(answerCounter==0)
         {
@@ -217,17 +222,16 @@
         }
         else
         {
-             if(sim800.readable()) { 
-             if(a == 1)
-             {
-             
-             if(a == 1) timeBuffer += char(c);
-             if(char(c) =='+') a = 0;
-             }
-             c = sim800.getc(); 
-             if(char(c) =='"') a = 1;
-             
-        } 
+             if(sim800.readable()) 
+             { 
+                 if(readTimeStart == 1)
+                 {
+                     if(readTimeStart == 1) timeBuffer += char(c);
+                     if(char(c) =='+') readTimeStart = 0;
+                 }
+                            if(char(c) =='"') readTimeStart = 1;
+                            c = sim800.getc(); 
+            } 
         }
     }
 }
\ No newline at end of file