Showing 2 changed files with 33 additions and 1 deletions
+30 -1
BLE_iBeacon.ino
... ...
@@ -28,6 +28,9 @@
28 28
 #include "display.h"
29 29
 #include "button.h"
30 30
 
31
+#include <EEPROM.h>
32
+#define EEPROM_SIZE 1 // To save BeaconType upon restart
33
+
31 34
 BLEAdvertising *pAdvertising;
32 35
 
33 36
 
... ...
@@ -80,6 +83,7 @@ void setup() {
80 83
   Heltec.display->clear();
81 84
   #endif //_HELTEC_H_
82 85
   Serial.begin(115200);
86
+  EEPROM.begin(EEPROM_SIZE);
83 87
 
84 88
   Serial.println("------------------------------");
85 89
 
... ...
@@ -117,7 +121,32 @@ void setup() {
117 121
   }
118 122
   sprintf(macStr,"%02x:%02x:%02x:%02x:%02x:%02x", new_mac[0], new_mac[1], new_mac[2], new_mac[3], new_mac[4], new_mac[5]);
119 123
 
120
-  beaconTypeStr = "Init(Safe)  ";
124
+  beacon_type = EEPROM.read(0);
125
+  if( ( 0 == beacon_type ) || ( 0xff == beacon_type ) ) {
126
+    beacon_type = EN_BEACON_TYPE_safe;
127
+    beaconTypeStr = "Init(Safe)  ";  
128
+  } 
129
+  switch( beacon_type ) {
130
+  case EN_BEACON_TYPE_entry:
131
+    beaconTypeStr="Init(Entry) ";
132
+    break;
133
+  case EN_BEACON_TYPE_hazard:
134
+    beaconTypeStr="Init(Hazard)";
135
+    break;
136
+  case EN_BEACON_TYPE_safe:
137
+    beaconTypeStr="Init(Safe) ";
138
+    break;
139
+  case EN_BEACON_TYPE_exit:
140
+    beaconTypeStr="Init(Exit) ";
141
+    break;
142
+  case EN_BEACON_TYPE_other:
143
+    beaconTypeStr="Init(Other)";
144
+    break;
145
+  default:
146
+    beacon_type = EN_BEACON_TYPE_safe;
147
+    beaconTypeStr="Init(Safe)  ";
148
+    break;
149
+  } 
121 150
   
122 151
   // Create the BLE Device
123 152
   BLEDevice::init(BEACON_NAME);
+3
button.h
... ...
@@ -1,6 +1,7 @@
1 1
 #ifndef _BUTTON_H
2 2
 #define _BUTTON_H
3 3
 
4
+#include <EEPROM.h>
4 5
 #include "beacon.h"
5 6
 
6 7
 int buttonState = 0;         // variable for reading the pushbutton status
... ...
@@ -39,6 +40,8 @@ void pollPrg()
39 40
       break;
40 41
     }
41 42
     Serial.println("Switching to "+beaconTypeStr);
43
+    EEPROM.write(0, beacon_type);
44
+    EEPROM.commit();
42 45
   }
43 46
   DisplayButtonStatus();
44 47
 }