gsm and sd card

Dependencies:   Base64

Files at this revision

API Documentation at this revision

Comitter:
Sergey_K
Date:
Thu Jul 11 11:14:05 2019 +0000
Parent:
2:16796fbfa94d
Commit message:
add new SD work

Changed in this revision

Base64.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Base64.lib	Thu Jul 11 11:14:05 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/ansond/code/Base64/#4920bc5699f3
--- a/main.cpp	Sat Jul 06 07:22:50 2019 +0000
+++ b/main.cpp	Thu Jul 11 11:14:05 2019 +0000
@@ -6,6 +6,7 @@
 #include <string> 
 #include "SDBlockDevice.h"
 #include "FATFileSystem.h"
+#include "Base64.h"
 
 #define GSMRX PA_9
 #define GSMTX PA_10 
@@ -40,16 +41,34 @@
 uint8_t *receiveMsg[50];
 char answer[300];
 char sslBuffer[1402];
+ char  * encoded;
+ string id_Stm;
 //Прерывания
 InterruptIn button(BUTTON1);
+InterruptIn sd_button(D5);
 //Настройка пинов
 DigitalOut myLed(LED1);
+DigitalOut RedLed(LED3);
+DigitalIn   myButton(D5);
 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");
+Base64 n;
 
+void encodeBase64()
+{
+    pc.printf("Read uid !\r\n");
+    volatile uint32_t *UniqueID = (uint32_t *)0x1FFF7A10;
+    volatile uint32_t __UniqueID[2];
+    __UniqueID[0] = UniqueID[0];
+    __UniqueID[1] = UniqueID[1];
+    __UniqueID[2] = UniqueID[2];
+    size_t  encodedLen;
+ char  * encoded = n. Encode ((char*)UniqueID,12 ,&encodedLen);
+    pc.printf("STMuid:{%s} \ r \ n" ,encoded);
+}
 //Настройка времени
 void simTime()
 {   
@@ -75,8 +94,7 @@
   wait(1);
 }
 //Отправка сообщения с дисплея 
-void lcdStartWork() {
-    myLed=!myLed;       
+void lcdStartWork() {    
     message_t *message = mpool.alloc();
     message->lcdData = request; 
     queue.put(message);      
@@ -84,11 +102,25 @@
 //Запись сертификата с SD карты 
 void sdReadSsl()
 {
+    
+    pc.printf("Read uid !\r\n");
+ 
+    RedLed = 0;
+    volatile uint32_t *UniqueID = (uint32_t *)0x1FFF7A10;
+    volatile uint32_t __UniqueID[2];
+    __UniqueID[0] = UniqueID[0];
+    __UniqueID[1] = UniqueID[1];
+    __UniqueID[2] = UniqueID[2];
+    size_t  encodedLen;
+    char  * encoded = n. Encode ((char*)UniqueID,12 ,&encodedLen);
+    pc.printf("STMuid:{%s} \ r \ n" ,encoded);
+    id_Stm = encoded;
     sd.init();
     fs.mount(&sd);
-    FILE *fp = fopen("/sd/ssl.txt", "r");   
+    FILE *fp = fopen((string("/sd/")+ encoded +string(".txt")).c_str(), "r");   
     if (fp == NULL) {
         printf("Fail open txt file\r\n");
+           myLed = 1;
     }
     fread(sslBuffer, sizeof(sslBuffer), 1, fp );
     fclose(fp);
@@ -109,22 +141,22 @@
             message_t *message = (message_t*)evt.value.p;
             *receiveMsg = (uint8_t*)message->lcdData; 
             printf("lcdData: %s\n\r"   , *receiveMsg);   
-        if(timeCounter == 0)
+       if(timeCounter == 0)
         {
             timeCounter = 1;
-            simTime();
+          //  simTime();
         }
         
         sendAt("AT\r\n");
-      /*  sim800.printf("AT+FSDEL=C:\\USER\\SSL1.CRT\n\r");
+        sim800.printf("AT+FSDEL=C:\\USER\\SSL2.CRT\n\r");
         wait(0.5);
-        sim800.printf("AT+FSCREATE=C:\\USER\\SSL1.CRT\n\r");
+        sim800.printf("AT+FSCREATE=C:\\USER\\SSL2.CRT\n\r");
         wait(1.5);
-        sim800.printf("AT+FSWRITE=C:\\USER\\SSL1.CRT,0,1402,10\n\r");
+        sim800.printf("AT+FSWRITE=C:\\USER\\SSL2.CRT,0,1402,10\n\r");
         wait(0.2);
         sim800.printf("%s\n\r",sslBuffer);
-        wait(1);*/
-        sim800.printf("AT+SSLSETCERT=C:\\USER\\SSL1.CRT\n\r");
+        wait(1);
+        sim800.printf("AT+SSLSETCERT=C:\\USER\\SSL2.CRT\n\r");
         wait(3);
         answerCounter=1;
         sendAt("AT+CCLK?\r\n");
@@ -138,6 +170,9 @@
         sendAt("AT+HTTPINIT");
         sendAt("AT+HTTPSSL=1");
         sendAt("AT+HTTPPARA=URL,157.230.245.76:1880/message");
+        pc.printf("%s\r\n",id_Stm);
+        sim800.printf("AT+HTTPPARA=UA,%s-1.0.0\r\n",id_Stm);
+        wait(0.5);
         sendAt("AT+HTTPPARA=CONTENT,application/octet-stream");
         sendAt("AT+HTTPDATA=51,10000");
         sim800.write(*receiveMsg,51,NULL,SERIAL_EVENT_TX_COMPLETE);
@@ -177,13 +212,23 @@
     pressedButton=true;
     //sdReadSsl();
 }
-
+void sslButtonPressed()
+{   
+    if(pressedButton==false)   sdEvent.call(&sdReadSsl);
+    pressedButton==false;
+    //sdReadSsl();
+}
 //Прерывание на отжим кнопки
 void buttonReleased()
 {
-    myLed=!myLed;
+    
     pressedButton=false; 
 }
+void sslButtonReleased()
+{
+    
+    pressedButton=true; 
+}
 //Задача для записи логов
 void sdWork()
 {
@@ -201,12 +246,15 @@
     
     pc.printf("*******GPRS TEST*******\r\n");
     
-    sdReadSsl();
+    myButton.mode(PullUp);
     button.rise(&buttonReleased);
     button.fall(&buttonPressed);
+    sd_button.rise(&sslButtonReleased);
+    sd_button.fall(&sslButtonPressed);
+    
     
     gsmTask.start(gsmStartWork);
-    sdLogWrite.start(sdWork);
+    //sdLogWrite.start(sdWork);
     
     eventThread.start(callback(&evq, &EventQueue::dispatch_forever));
     sdEventThread.start(callback(&sdEvent,&EventQueue::dispatch_forever));