Browse Source

Encore des améliorations, SMS send OK, SIM Pin input OK

Pi3rrot 12 years ago
parent
commit
233ee8fd5d
1 changed files with 124 additions and 34 deletions
  1. 124 34
      Minitel_SM.ino

+ 124 - 34
Minitel_SM.ino

@@ -5,7 +5,13 @@ Minitel m(53,52);			//Dfinition pour le Serial du Minitel
 
 void saisieNum(char *num);
 void saisieTxt(char *txt);
-void send_AT_cmd(const char *at_cmd);
+void send_AT_cmd(const char *at_cmd, char *at_rep);
+void send_sms();
+void enter_pin();
+
+// CAYE PAS BIEN ET JMEN FOUT !
+char rep[50];
+
 
 void setup()
 {
@@ -15,28 +21,113 @@ void setup()
 	/****Simulation ON/OFF*****/
 //	pinMode(8, OUTPUT);
 //	digitalWrite(8, HIGH);
-
+	char rep[30];
+	char mess_ok[50];
 	m.clearScreen();
-	/**** Saisie future du code PIN *****/
-	m.text("[*] Set pin code ", 2, 1);
-	send_AT_cmd("AT+CPIN=2507\r");
 	m.textMode();
 	m.textColor(WHITE);
 	m.bgColor(BLACK);
-	m.text("[ ]", 2, 3); 
+
+	m.text("         Smartphone Minitel V1         ", 1, 1);
+	/**** check du pin *****/
+	send_AT_cmd("AT+CPIN?\r", rep);
+	Serial.println(rep);
+	if (strstr(rep, "READY") == NULL) {
+		m.blink();
+		m.text("[ ] Check for pin lock... ", 2, 3);
+		m.text("Enter PIN code : ", 2, 4);
+		enter_pin();
+
+	}
+	m.noBlink();
+	m.text("[*] PIN code is good ! ", 2, 3);
+
+	m.text("[ ]", 2, 5); 
 	m.blink();
-	m.text("Waiting for Auth Network .....", 6, 3);
+	m.text("Waiting for Auth Network .....", 6, 5);
+	
+	send_AT_cmd("AT+COPS?\r", rep);
+	Serial.print(rep);
+	char *token;
+	token = strtok(rep, " ");
+	while (token == NULL) {
+		delay(100);
+	}
+	sprintf(mess_ok, "You are connected to %s", token);
+	
 	
 	m.noBlink();
-	m.text("[*]", 2, 3);
-	m.text("You are now connected !          ", 6, 3);
-	send_AT_cmd("AT+CGREG?\r");
-	send_AT_cmd("AT+CMGF=1\r");			//Mode texte pour SMS
+	m.text("[*]", 2, 5);
+	m.text(mess_ok, 5, 5);
+	send_AT_cmd("AT+CGREG?\r\r", rep);
+	Serial.print(rep);
+	
+	delay(1000);
+
 
 }
 
 void loop()
 {
+
+	m.clearScreen();
+	m.textMode();
+	m.textColor(WHITE);
+	m.bgColor(RED);
+	m.text("         Smartphone Minitel V1         ", 1, 1);
+	m.text("  Operator : XXXXXX", 1, 23);
+	m.bgColor(BLACK);
+	m.text("1 - Send SMS", 4, 5 );
+	m.text("2 - Read SMS", 4, 6 );
+	
+	while(1) {
+		if(m.available()>0) {
+			char key = NULL;
+			// Obligation de lire 2 buffer en cas de touche Menu
+			key = m.getKey();
+			switch(key) {
+				case '1':
+					send_sms();
+					break;
+				
+				case '2':
+					break;
+			}
+		}
+	}
+	
+	delay(1000);
+
+	
+}
+
+void enter_pin()
+{
+	char pin[5];
+	char at_pin[12];
+	saisieNum(pin);
+	sprintf(at_pin, "AT+CPIN=%s\r", pin);
+	Serial.print(pin);
+	send_AT_cmd(at_pin, rep);
+	Serial.print(rep);
+	return;
+	
+}
+
+void send_sms()
+{
+	
+	m.clearScreen();
+	m.textMode();
+	m.textColor(WHITE);
+	m.bgColor(RED);
+	m.text(" Send SMS ", 4, 1);
+	m.bgColor(BLACK);
+	m.text("Number : +", 1, 4);
+	m.cursor();
+	m.moveCursorTo(12,4);	
+	
+	
 	char num[20];
 	char txt[160];
 //	char *cmgs = "AT+CMGS=\"+";
@@ -46,37 +137,31 @@ void loop()
 	
 //	strcpy(cmdcmgs, cmgs);
 //	Serial.print(cmdcmgs);
-	//send_AT_cmd("AT+CGATT?\r");
+//	send_AT_cmd("AT+CGATT?\r");
 	saisieNum(num);
 	saisieTxt(txt);
-	//Serial.print(num);
+//	Serial.print(num);
 //	strcat(cmdcmgs, num);
 //	Serial.print(cmdcmgs);
 //	strcat(cmdcmgs, endcmgs);
-	sprintf(cmdcmgs, "AT+CMGS=\"+%s\"%s\n", num, txt);
-	send_AT_cmd(cmdcmgs);
-	
-	
-	
-	
+	send_AT_cmd("AT+CMGF=1\r", rep);			//Mode texte pour SMS
+	delay(100);
+	sprintf(cmdcmgs, "AT+CMGS=\"+%s\"\r", num);
+	send_AT_cmd(cmdcmgs, rep);
+	send_AT_cmd(txt, rep);
+		
+	delay(1000);	
 	
+	return loop();
 	
 }
 
+
+
+
 void saisieNum(char *num) {
 	int strCount = 0;
 	
-	m.clearScreen();
-	m.textMode();
-	m.textColor(WHITE);
-	m.bgColor(RED);
-	m.text(" SMS Sender ", 4, 1);
-	m.bgColor(BLACK);
-	m.text("Number : +", 1, 4);
-	m.cursor();
-	m.moveCursorTo(12,4);
-	delay(100);
-	delay(100);
 	while(1) {
 		if(m.available()>0) {
 			char key = NULL;
@@ -120,7 +205,8 @@ void saisieTxt(char *txt) {
 					key = m.getKey();
 					if (key == '8') {
 						txt[strCount]='\x1a';
-						txt[strCount+1]='\0';
+						txt[strCount+1]='\r';
+						txt[strCount+2]='\0';
 						return;
 					}
 				}
@@ -136,13 +222,17 @@ void saisieTxt(char *txt) {
 	}	
 }
 
-void send_AT_cmd(const char *at_cmd)
+void send_AT_cmd(const char *at_cmd, char *at_rep)
 {
-	Serial1.println(at_cmd);
+	Serial1.print(at_cmd);
+	int strCount = 0;
 	Serial.println(at_cmd);
+	delay(100);
 	while(Serial1.available()>0) {
 		char reponse = Serial1.read();
-		Serial.print(reponse); 
+		at_rep[strCount] = reponse;
+		strCount++;
 	}
+	at_rep[strCount]='\0';
 	delay(1000);
 }