Motta backup

Dependencies:   C12832_lcd mbed xbee_lib

Fork of Xbee_Hello_world_A by Tristan Hughes

Revision:
1:3036ca0c5e12
Parent:
0:9cbddcc86466
--- a/main.cpp	Fri Aug 31 14:46:32 2012 +0000
+++ b/main.cpp	Wed Apr 11 14:35:41 2018 +0000
@@ -1,18 +1,199 @@
 #include "mbed.h"
-#include "xbee.h"
+#include "xbee.h" // Include for xbee code
+#include "C12832_lcd.h" // Include for LCD code
+
+char sjekk_XBeeB(char nr);
+void Menu();
+void set_array();
+void send_array();
+void reset();
+void get_array();
+char print_array(char *arr_name);
+
+//  ################################
+//  ################################
+//  ###  XBee A (med LCD skjerm) ###
+//  ################################
+//  ################################
 
-xbee xbee1(p9,p10,p11); //Initalise xbee_lib
+//xbee xbee1(p9,p10,p11); //Initalise xbee_lib varName(rx,tx,reset)
+
+Serial xbee(p9, p10);
+DigitalOut rst(p11);
+
+BusIn bryter[8] = {p12, p13, p14, p15, p16, p17, p18, p19};
+// Brytere 1 - 8 på XBee A.
+char check_array[10] = {0, 0, 0, 0, 0, 0, 0, 0};
+char digital_in_array_b[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+
+DigitalOut b1(p21), b2(p22), b3(p23), b4(p24);
 Serial pc(USBTX, USBRX); //Initalise PC serial comms
+C12832_LCD lcd; //Initialize LCD Screen
 
+char recieveData;
+
+//Code to send strings acsross xbee with xbee.h
+//Code should be on the End Device
 int main()
 {
-    char send_data[202]; //Xbee buffer size is 202 bytes
-    char read_data[202]; //Xbee buffer size is 202 bytes
+    Menu();
+
+    lcd.printf("Starting oppg2_vol1");
+    wait(2);
+    reset();
+
+    //Establish a variable to receive data from End Device
+    //Max buffer is 202
+//   char receiveData[4];
+
+    //Setup LCD screen
+    lcd.cls();
+    lcd.locate(0,1);
+
+
+    /*for (int b=0; b<=7; b++) {
+        if (check_array[b] != 0) {
+            pc.printf("\n Sjekker punkt nr: %d ", b);
+        }
+    }*/
+}
+
+/*char sjekk_XBeeB(int nr)
+{
+
+    pc.printf("yoo");
+    char kommando;
+    //kommando[0]=0; //0xxx (xxx = nr)
+
+    //char *strcat(char *dest, const char *src)
+    char *strcat(char *kommando, const char *nr);
+
+    //str.append(kommando);
+    //str.append(nr);
+
+
+    xbee.printf("yoo");
+    return 1;*/
+//}
 
-    while(1) {
-        pc.scanf("%s",send_data); //Read data from serial console
-        xbee1.SendData(send_data); //Send data to XBee
-        xbee1.RecieveData(read_data,0); //Read data from the XBee
-        pc.printf("You said:%s",read_data);
+
+//void Menu(int innlogget) //Meny funksjonen (krever input av passord variabel. Blir satt til 1 ved rett passord)
+void Menu()
+{
+    //while (innlogget == 1) { //Ved riktig passord (logget inn)
+    pc.printf(" \r \n\n Trykk for onsket valg: \n 1. Sjekke status Digitale innganger \n 2. Sjekke status LEDs \n 3. Stille LEDs \n 4. Sjekke status analog inngang");
+    switch(getchar()) {
+        case '1': //Sjekke status Digitale innganger
+            pc.printf("\r\n\n Sjekke status paa digitale innganger \n\n");
+            set_array(); // Denne sjekker brytere på Xbee A som bestemmer hvilke punkter som skal kontrolleres på XBee B
+            print_array(check_array);
+            wait(2);
+            send_array();
+            wait(6);
+            get_array();
+            wait(2);
+            print_array(digital_in_array_b);
+            //reset();
+            wait(1);
+
+            break;
+
+        case '2': //Sjekke status LEDs
+            pc.printf("\r\n\n Sjekke staus paa LEDs \n\n");
+
+            break;
+
+        case '3': //Stille LEDs
+            pc.printf("\r\n\n Stille LEDs \n\n");
+
+            break;
+        case '4': //Sjekke status Analog inngang
+            pc.printf(" \n Sjekke staus paa Analog inngang \n\n");
+
+            break;
+
+
+        default:
+            pc.printf(" \r \n Ugyldig valg!");
     }
 }
+
+void set_array()
+{
+    for (int i=0; i<=7; i++) {
+        if (bryter[i] != 0) {
+            //xbee.printf("%c", i);
+            //pc.printf("\nsjekk verdi pa bryter nr: %d ", i);
+            //Setter bryter/led nr til array)
+            check_array[i] = 1;
+
+            //char status = sjekk_XBeeB(i);
+            //pc.printf("Status for bryter %d er %d", i, status);
+        }
+    }
+}
+
+void send_array() //sender over hele arrayet
+{
+    for (int c=0; c<=7; c++) {
+        //if (check_array[c] !=0) {
+        //xbee.printf("%c", c);
+        //xbee.printf("%c", check_array[c]);
+        xbee.putc(check_array[c]);
+        //}
+    }
+    pc.printf("\n array sendt \n");
+}
+
+void get_array() //Leser array sendt fra xbee og lagrer dette lokalt
+{
+    if (xbee.readable()) {
+        for (uint8_t i = 0; i <= 7; i++) {
+            if (xbee.readable()) {
+                digital_in_array_b[i] = xbee.getc();
+                //pc.printf("\n\n %d Sjekk verdi pa bryter nr: %d", i, digital_in_array_b[i]);
+
+           } else {
+                digital_in_array_b[i] = NULL;
+                pc.printf("\n feil under mottak\n");
+            }
+            wait_ms(5);
+        }
+
+        //Tømmer bufferet i tilfelle det dukker opp input som ikke hører hjemme
+        while (xbee.readable()) {
+            xbee.getc();
+            wait_ms(5);
+        }
+    }
+}
+
+void reset()
+{
+    // reset the xbees (at least 200ns)
+    rst = 0;
+    wait_ms(1);
+    rst = 1;
+    wait_ms(1);
+}
+
+char print_array(char *arr_name) {
+    pc.printf("\n");
+    for (int d=0; d<=7; d++) {
+        //pc.printf("\n Skriver ut array %d", *arr_name);
+        pc.printf("\n index_nr: %d , verdi: %d \n", d, arr_name[d]);
+    }
+}
+
+
+/*for (int b=0; b<=7; b++)
+{
+    //if (check_array_a[b] != 0) {
+    if ((recievedmessage[b] == b) && (b !=0)) {
+        check_array_a[b] = 1;
+    }
+    pc.printf("\n Lest fra array, nr: %d er verdi: %d", b, check_array_a[b]);
+    wait(1.5);
+    //}
+}
+}*/
\ No newline at end of file