Mobile Security System - Revision 1.0

Dependencies:   FXOS8700Q N5110 SDFileSystem SRF02 mbed

Committer:
el14dg
Date:
Wed May 04 15:33:54 2016 +0000
Revision:
9:a5614f53d435
Parent:
8:8a3d1c07bdec
FINISHED v1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el14dg 1:3ae4192d0c25 1 /**
el14dg 1:3ae4192d0c25 2 @file main.h
el14dg 1:3ae4192d0c25 3 @brief Header file containing functions prototypes, defines and global variables.
el14dg 1:3ae4192d0c25 4 @brief Revision 1.0.
el14dg 1:3ae4192d0c25 5 @author Daniel Gibbons
el14dg 9:a5614f53d435 6 @date May 2016
el14dg 1:3ae4192d0c25 7 */
el14dg 1:3ae4192d0c25 8
el14dg 1:3ae4192d0c25 9 #ifndef MAIN_H
el14dg 1:3ae4192d0c25 10 #define MAIN_H
el14dg 1:3ae4192d0c25 11
el14dg 1:3ae4192d0c25 12 #define PI 3.14159265359
el14dg 1:3ae4192d0c25 13
el14dg 1:3ae4192d0c25 14 #include "mbed.h"
el14dg 1:3ae4192d0c25 15 #include "N5110.h"
el14dg 1:3ae4192d0c25 16 #include "SRF02.h"
el14dg 8:8a3d1c07bdec 17 #include "FXOS8700Q.h"
el14dg 3:70a7b64fbd98 18 #include "SDFileSystem.h"
el14dg 1:3ae4192d0c25 19
el14dg 2:e504a3cfe113 20
el14dg 1:3ae4192d0c25 21 /**
el14dg 2:e504a3cfe113 22 @namespace lcd
el14dg 2:e504a3cfe113 23 @brief N5110 LCD connections
el14dg 1:3ae4192d0c25 24 @namespace srf02
el14dg 2:e504a3cfe113 25 @brief SRF02 sensor connections
el14dg 8:8a3d1c07bdec 26 @namespace i2c
el14dg 8:8a3d1c07bdec 27 @brief K64F I2C connections for FXOS8700Q on-board Accelerometer
el14dg 8:8a3d1c07bdec 28 @namespace acc
el14dg 8:8a3d1c07bdec 29 @brief K64F FXOS8700Q on-board Accelerometer connections
el14dg 6:dc1229224d8e 30 @namespace sd
el14dg 6:dc1229224d8e 31 @brief SD card connections
el14dg 1:3ae4192d0c25 32 @namespace pc
el14dg 2:e504a3cfe113 33 @brief UART connection to PC for debugging
el14dg 2:e504a3cfe113 34 @namespace led_alarm
el14dg 2:e504a3cfe113 35 @brief LED to indicate status of the alarm: flashing -> setting or triggered ; constant -> set
el14dg 2:e504a3cfe113 36 @namespace buzzer
el14dg 6:dc1229224d8e 37 @brief Indicates status of the alarm: buzzes when alarm is setting and when triggered
el14dg 6:dc1229224d8e 38 @namespace button_0
el14dg 6:dc1229224d8e 39 @brief First button interrupt
el14dg 6:dc1229224d8e 40 @namespace button_1
el14dg 6:dc1229224d8e 41 @brief Second button interrupt
el14dg 6:dc1229224d8e 42 @namespace button_c
el14dg 6:dc1229224d8e 43 @brief Third button interrupt
el14dg 2:e504a3cfe113 44 @namespace sw2
el14dg 2:e504a3cfe113 45 @brief K64F on-board switch
el14dg 2:e504a3cfe113 46 @namespace sw3
el14dg 2:e504a3cfe113 47 @brief K64F on-board switch
el14dg 6:dc1229224d8e 48 @namespace setting_distance
el14dg 6:dc1229224d8e 49 @brief This ticker fires to read the distance when the system is setting
el14dg 6:dc1229224d8e 50 @namespace intruder_distance
el14dg 6:dc1229224d8e 51 @brief This ticker fires to read the distance when the system is set
el14dg 6:dc1229224d8e 52 @namespace alerts
el14dg 6:dc1229224d8e 53 @brief This ticker fires to turn and off the led and buzzer
el14dg 6:dc1229224d8e 54 @namespace pin_timeout
el14dg 6:dc1229224d8e 55 @brief This ticker fires to timeout the user if they don't enter the pin within an alotted time of triggering the device
el14dg 6:dc1229224d8e 56 @namespace setting_screen
el14dg 6:dc1229224d8e 57 @brief This ticker fires to display the setting animation on the setting screen
el14dg 8:8a3d1c07bdec 58 @namespace accelerometer
el14dg 8:8a3d1c07bdec 59 @brief This ticker fires whilst in the setting screen to get accelerometer data
el14dg 6:dc1229224d8e 60 @namespace transition
el14dg 8:8a3d1c07bdec 61 @brief This timeout transitions the system to the set state, five seconds after entering the setting state, or to the menu if the device is moved in the setting state
el14dg 8:8a3d1c07bdec 62 @namespace tamper_transition
el14dg 8:8a3d1c07bdec 63 @brief This timeout transitions the system to the menu if the device is moved in the setting state
el14dg 6:dc1229224d8e 64 @namespace buzz
el14dg 6:dc1229224d8e 65 @brief This timeout turns off the buzzer one second after the device is set
el14dg 6:dc1229224d8e 66 @namespace confirm
el14dg 6:dc1229224d8e 67 @brief This timeout transitions to a screen asking the user to confirm the pin that they have just entered
el14dg 1:3ae4192d0c25 68 @namespace r_led
el14dg 2:e504a3cfe113 69 @brief K64F on-board red LED
el14dg 1:3ae4192d0c25 70 @namespace g_led
el14dg 2:e504a3cfe113 71 @brief K64F on-board green LED
el14dg 1:3ae4192d0c25 72 @namespace b_led
el14dg 2:e504a3cfe113 73 @brief K64F on-board blue LED
el14dg 2:e504a3cfe113 74
el14dg 1:3ae4192d0c25 75 */
el14dg 1:3ae4192d0c25 76
el14dg 2:e504a3cfe113 77 // VCC, SCE, RST, D/C, MOSI, SCLK, LED
el14dg 2:e504a3cfe113 78 N5110 lcd(PTE26,PTA0,PTC4,PTD0,PTD2,PTD1,PTC3);
el14dg 1:3ae4192d0c25 79 SRF02 srf02(I2C_SDA,I2C_SCL);
el14dg 8:8a3d1c07bdec 80 I2C i2c(PTE25, PTE24);
el14dg 8:8a3d1c07bdec 81 FXOS8700QAccelerometer acc(i2c, FXOS8700CQ_SLAVE_ADDR1);
el14dg 3:70a7b64fbd98 82 // MOSI, MISO, SCK, CS
el14dg 3:70a7b64fbd98 83 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd");
el14dg 1:3ae4192d0c25 84 Serial pc(USBTX,USBRX);
el14dg 2:e504a3cfe113 85 PwmOut led_alarm(PTC10);
el14dg 2:e504a3cfe113 86 PwmOut buzzer(PTC11);
el14dg 2:e504a3cfe113 87 InterruptIn button_0(PTB23);
el14dg 2:e504a3cfe113 88 InterruptIn button_1(PTA2);
el14dg 2:e504a3cfe113 89 InterruptIn button_c(PTC2);
el14dg 2:e504a3cfe113 90 InterruptIn sw2(SW2);
el14dg 2:e504a3cfe113 91 InterruptIn sw3(SW3);
el14dg 3:70a7b64fbd98 92 Ticker setting_distance;
el14dg 3:70a7b64fbd98 93 Ticker intruder_distance;
el14dg 5:41cb88f47f42 94 Ticker alerts;
el14dg 5:41cb88f47f42 95 Ticker pin_timeout;
el14dg 5:41cb88f47f42 96 Ticker setting_screen;
el14dg 8:8a3d1c07bdec 97 Ticker accelerometer;
el14dg 3:70a7b64fbd98 98 Timeout transition;
el14dg 8:8a3d1c07bdec 99 Timeout tamper_transition;
el14dg 5:41cb88f47f42 100 Timeout buzz;
el14dg 6:dc1229224d8e 101 Timeout confirm;
el14dg 1:3ae4192d0c25 102 DigitalOut r_led(LED_RED);
el14dg 1:3ae4192d0c25 103 DigitalOut g_led(LED_GREEN);
el14dg 1:3ae4192d0c25 104 DigitalOut b_led(LED_BLUE);
el14dg 2:e504a3cfe113 105
el14dg 2:e504a3cfe113 106 struct State {
el14dg 6:dc1229224d8e 107
el14dg 6:dc1229224d8e 108 /* array of next states which depend on which button was pressed
el14dg 6:dc1229224d8e 109 - nextState[0] ----> button_0 pressed
el14dg 6:dc1229224d8e 110 - nextState[1] ----> button_1 pressed
el14dg 6:dc1229224d8e 111 - nextState[2] ----> button_c pressed (Option 1)
el14dg 6:dc1229224d8e 112 - nextState[3] ----> button_c pressed (Option 2)
el14dg 6:dc1229224d8e 113 */
el14dg 6:dc1229224d8e 114
el14dg 6:dc1229224d8e 115 int nextState[4];
el14dg 6:dc1229224d8e 116
el14dg 2:e504a3cfe113 117 };
el14dg 2:e504a3cfe113 118 typedef const struct State STyp;
el14dg 2:e504a3cfe113 119
el14dg 6:dc1229224d8e 120 // fsm stores all nine states that 'Mobile Security System' is comprised off
el14dg 2:e504a3cfe113 121 STyp fsm[9] = {
el14dg 3:70a7b64fbd98 122 {0,0,0,0}, // 0 - initialisation (title screen)
el14dg 5:41cb88f47f42 123 {2,3,1,1}, // 1 - main menu (Set alarm or set new password)
el14dg 4:9cac024c057c 124 {2,2,4,1}, // 2 - set alarm (enter password)
el14dg 4:9cac024c057c 125 {3,3,1,1}, // 3 - set new password (enter new password)
el14dg 3:70a7b64fbd98 126 {4,4,4,4}, // 4 - setting calibration
el14dg 6:dc1229224d8e 127 {5,6,5,5}, // 5 - alarm activated
el14dg 3:70a7b64fbd98 128 {6,6,1,5}, // 6 - deactivate without triggering (enter password)
el14dg 3:70a7b64fbd98 129 {7,7,1,8}, // 7 - alarm triggered (enter password)
el14dg 9:a5614f53d435 130 {8,1,8,8} // 8 - alarm triggered
el14dg 2:e504a3cfe113 131 };
el14dg 2:e504a3cfe113 132
el14dg 8:8a3d1c07bdec 133 FILE *pin; /*!< File pointer */
el14dg 3:70a7b64fbd98 134
el14dg 8:8a3d1c07bdec 135 int entered_pin[4]; /*!< Pin user enters */
el14dg 8:8a3d1c07bdec 136 int set_pin[4]; /*!< Pin that is saved to SD card and this is the current pin for the system */
el14dg 8:8a3d1c07bdec 137 int index_array[4]; /*!< Array to index the reading from the SD card */
el14dg 8:8a3d1c07bdec 138
el14dg 8:8a3d1c07bdec 139 int pin_counter; /*!< Increments to store the entered pin */
el14dg 8:8a3d1c07bdec 140 int incorrect_pin_flag; /*!< If the entered pin doesn't match the set pin this flag is incremented to 1 */
el14dg 3:70a7b64fbd98 141
el14dg 8:8a3d1c07bdec 142 float acc_X; /*!< Current x-axis reading from the accelerometer */
el14dg 8:8a3d1c07bdec 143 float acc_Y; /*!< Current y-axis reading from the accelerometer */
el14dg 8:8a3d1c07bdec 144 float acc_Z; /*!< Current z-axis reading from the accelerometer */
el14dg 8:8a3d1c07bdec 145 float setting_acc_X; /*!< X-axis reading from the accelerometer when setting screen is initialised */
el14dg 8:8a3d1c07bdec 146 float setting_acc_Y; /*!< Y-axis reading from the accelerometer when setting screen is initialised */
el14dg 8:8a3d1c07bdec 147 float setting_acc_Z; /*!< Z-axis reading from the accelerometer when setting screen is initialised */
el14dg 3:70a7b64fbd98 148
el14dg 8:8a3d1c07bdec 149 int g_current_state; /*!< The current state of the system */
el14dg 8:8a3d1c07bdec 150 int g_next_state; /*!< The next state of the system */
el14dg 2:e504a3cfe113 151
el14dg 3:70a7b64fbd98 152 float distance[10]; /*!< Stores 10 distance readings from SRF02 */
el14dg 8:8a3d1c07bdec 153 float one_second_distance; /*!< The total of all 10 distance readings taken in a second */
el14dg 6:dc1229224d8e 154 double one_second_avg_distance; /*!< one_second_distance divided by 10 */
el14dg 8:8a3d1c07bdec 155 double initial_setting_distance; /*!< The one_second_avg_distance calculated when in the setting state (state 4) */
el14dg 2:e504a3cfe113 156
el14dg 6:dc1229224d8e 157 int setting_distance_counter; /*!< increments to 10 distance readings can be stored over 1 second */
el14dg 6:dc1229224d8e 158 int intruder_distance_counter; /*!< increments to 10 distance readings can be stored over 1 second */
el14dg 6:dc1229224d8e 159 int pin_timeout_counter; /*!< increments to 20 to enable the 20 second timeout when the alarm is triggered */
el14dg 6:dc1229224d8e 160 int setting_alarm_counter; /*!< increments in steps of five and is used for the setting screen animation */
el14dg 5:41cb88f47f42 161
el14dg 6:dc1229224d8e 162 int seconds_till_timeout; /*!< 21 - pin_timeout_counter */
el14dg 3:70a7b64fbd98 163
el14dg 3:70a7b64fbd98 164 volatile int g_setting_distance_flag; /*!< Flag in setting_distance_isr */
el14dg 3:70a7b64fbd98 165 volatile int g_intruder_distance_flag; /*!< Flag in intruder_distance_isr */
el14dg 2:e504a3cfe113 166 volatile int g_button_0_flag; /*!< Flag in button_0_isr */
el14dg 2:e504a3cfe113 167 volatile int g_button_1_flag; /*!< Flag in button_1_isr */
el14dg 2:e504a3cfe113 168 volatile int g_button_c_flag; /*!< Flag in button_c_isr */
el14dg 8:8a3d1c07bdec 169 volatile int g_led_buzzer_flag; /*!< Flag in led_buzzer_isr */
el14dg 8:8a3d1c07bdec 170 volatile int g_acc_flag; /*!< Flag in acc_isr */
el14dg 8:8a3d1c07bdec 171 volatile int g_pin_timeout_flag; /*!< Flag in pin_timeout_isr */
el14dg 8:8a3d1c07bdec 172 volatile int g_setting_screen_flag; /*!< Flag in setting_screen_isr */
el14dg 3:70a7b64fbd98 173
el14dg 6:dc1229224d8e 174 char buffer[14]; /*!< Stores strings that are comprised of variables that are going to be displayed on the LCD */
el14dg 6:dc1229224d8e 175 int length; /*!< Stores the length of strings that are comprised of variables that are going to be displayed on the LCD */
el14dg 1:3ae4192d0c25 176
el14dg 9:a5614f53d435 177 ///
el14dg 9:a5614f53d435 178 /// Initialisation Functions
el14dg 9:a5614f53d435 179 ///
el14dg 2:e504a3cfe113 180 void error(); /*!< Hangs flashing on_board LED */
el14dg 2:e504a3cfe113 181
el14dg 2:e504a3cfe113 182 void init_serial(); /*!< Set-up the serial port */
el14dg 2:e504a3cfe113 183
el14dg 2:e504a3cfe113 184 void init_K64F(); /*!< Set-up the on-board LEDs and switches */
el14dg 2:e504a3cfe113 185
el14dg 2:e504a3cfe113 186 void init_buttons(); /*!< Set-up the three external buttons */
el14dg 2:e504a3cfe113 187
el14dg 6:dc1229224d8e 188 void init_variables(); /*!< Initialises all variables to zero */
el14dg 9:a5614f53d435 189 ///
el14dg 9:a5614f53d435 190 /// Interrupt Service Routines (ISRs)
el14dg 9:a5614f53d435 191 ///
el14dg 6:dc1229224d8e 192 void setting_distance_isr(); /*!< Interrupt Service Routine that triggers when setting_distance ticker fires */
el14dg 3:70a7b64fbd98 193
el14dg 6:dc1229224d8e 194 void intruder_distance_isr(); /*!< Interrupt Service Routine that triggers when intruder_distance ticker fires */
el14dg 2:e504a3cfe113 195
el14dg 6:dc1229224d8e 196 void button_0_isr(); /*!< Interrupt Service Routine that triggers when button_0 is pressed by the user */
el14dg 6:dc1229224d8e 197
el14dg 6:dc1229224d8e 198 void button_1_isr(); /*!< Interrupt Service Routine that triggers when button_1 is pressed by the user */
el14dg 2:e504a3cfe113 199
el14dg 6:dc1229224d8e 200 void button_c_isr(); /*!< Interrupt Service Routine that triggers when button_c is pressed by the user */
el14dg 1:3ae4192d0c25 201
el14dg 6:dc1229224d8e 202 void led_buzzer_isr(); /*!< Interrupt Service Routine that triggers when alerts ticker fires */
el14dg 2:e504a3cfe113 203
el14dg 8:8a3d1c07bdec 204 void acc_isr(); /*!< Interrupt Service Routine that triggers when accelerometer ticker fires */
el14dg 8:8a3d1c07bdec 205
el14dg 6:dc1229224d8e 206 void pin_timeout_isr(); /*!< Interrupt Service Routine that triggers when pin_timeout ticker fires */
el14dg 5:41cb88f47f42 207
el14dg 6:dc1229224d8e 208 void setting_screen_isr(); /*!< Interrupt Service Routine that triggers when setting_screen ticker fires */
el14dg 9:a5614f53d435 209 ///
el14dg 9:a5614f53d435 210 /// Button Functions
el14dg 9:a5614f53d435 211 ///
el14dg 6:dc1229224d8e 212 void button_0_protocol(); /*!< Protocol when button_0 is pressed */
el14dg 5:41cb88f47f42 213
el14dg 6:dc1229224d8e 214 void button_1_protocol(); /*!< Protocol when button_1 is pressed */
el14dg 4:9cac024c057c 215
el14dg 6:dc1229224d8e 216 void button_c_protocol(); /*!< Protocol when button_c is pressed */
el14dg 9:a5614f53d435 217 ///
el14dg 9:a5614f53d435 218 /// State Functions
el14dg 9:a5614f53d435 219 ///
el14dg 6:dc1229224d8e 220 void state_0_screen(); /*!< Sets the screen and the necessary tickers and timeouts for state 0 */
el14dg 2:e504a3cfe113 221
el14dg 6:dc1229224d8e 222 void state_1_screen(); /*!< Sets the screen and the necessary tickers and timeouts for state 1 */
el14dg 5:41cb88f47f42 223
el14dg 6:dc1229224d8e 224 void state_2_screen(); /*!< Sets the screen and the necessary tickers and timeouts for state 2 */
el14dg 2:e504a3cfe113 225
el14dg 6:dc1229224d8e 226 void state_3_screen(); /*!< Sets the screen and the necessary tickers and timeouts for state 3 */
el14dg 2:e504a3cfe113 227
el14dg 6:dc1229224d8e 228 void state_4_screen(); /*!< Sets the screen and the necessary tickers and timeouts for state 4 */
el14dg 3:70a7b64fbd98 229
el14dg 6:dc1229224d8e 230 void state_5_screen(); /*!< Sets the screen and the necessary tickers and timeouts for state 5 */
el14dg 2:e504a3cfe113 231
el14dg 6:dc1229224d8e 232 void state_6_screen(); /*!< Sets the screen and the necessary tickers and timeouts for state 6 */
el14dg 2:e504a3cfe113 233
el14dg 6:dc1229224d8e 234 void state_7_screen(); /*!< Sets the screen and the necessary tickers and timeouts for state 7 */
el14dg 2:e504a3cfe113 235
el14dg 6:dc1229224d8e 236 void state_8_screen(); /*!< Sets the screen and the necessary tickers and timeouts for state 8 */
el14dg 5:41cb88f47f42 237
el14dg 7:8ac5aee0c13e 238 void lcd_border(); /*!< Prints a border to the Nokia 5110 LCD */
el14dg 7:8ac5aee0c13e 239
el14dg 7:8ac5aee0c13e 240 void pin_text_box(); /*!< Prints a box to the Nokia 5110 LCD for the states where a pin is required */
el14dg 7:8ac5aee0c13e 241
el14dg 8:8a3d1c07bdec 242 void screen_progression(); /*!< Calls check pin to see if the entered pin is correct and from there either proceed or go back */
el14dg 8:8a3d1c07bdec 243
el14dg 6:dc1229224d8e 244 void screen_selection(); /*!< Calls the relevant state_X_screen() depending on the value of g_next_state */
el14dg 9:a5614f53d435 245 ///
el14dg 9:a5614f53d435 246 /// Screen Animation Functions
el14dg 9:a5614f53d435 247 ///
el14dg 6:dc1229224d8e 248 void setting_animation(); /*!< Prints the animation on the setting screen to the Nokia 5110 LCD */
el14dg 2:e504a3cfe113 249
el14dg 7:8ac5aee0c13e 250 void timeout_protocol(); /*!< Prints timeout counter when the alarm is triggered */
el14dg 9:a5614f53d435 251 ///
el14dg 9:a5614f53d435 252 /// Read Distance Functions
el14dg 9:a5614f53d435 253 ///
el14dg 6:dc1229224d8e 254 void get_setting_distance(); /*!< Gets the distance from the SRF02 and then increments the setting_distance_counter */
el14dg 3:70a7b64fbd98 255
el14dg 6:dc1229224d8e 256 void get_intruder_distance(); /*!< Gets the distance from the SRF02 and then increments the intruder_distance_counter */
el14dg 3:70a7b64fbd98 257
el14dg 6:dc1229224d8e 258 void calculate_setting_distance(); /*!< Averages the past 10 distance readings and stores them in the initial_setting_distance */
el14dg 3:70a7b64fbd98 259
el14dg 6:dc1229224d8e 260 void calculate_intruder_distance(); /*!< Averages the past 10 distance readings and compares this value to the initial_setting_distance to detect a potential intruder */
el14dg 9:a5614f53d435 261 ///
el14dg 9:a5614f53d435 262 /// Timeout Functions
el14dg 9:a5614f53d435 263 ///
el14dg 6:dc1229224d8e 264 void screen_5_transition(); /*!< Called five seconds after the setting screen is called */
el14dg 4:9cac024c057c 265
el14dg 8:8a3d1c07bdec 266 void pin_confirm(); /*!< Clears the screen when a pin is entered to tell the user to press button 'C' to confirm the entered pin */
el14dg 8:8a3d1c07bdec 267
el14dg 9:a5614f53d435 268 void state_1_transition(); /*!< Sends the user back to state 1 if the device is tampered in the setting state */
el14dg 5:41cb88f47f42 269
el14dg 6:dc1229224d8e 270 void alarm_setting_buzz(); /*!< Turns off buzzer one second after entering state 5 */
el14dg 9:a5614f53d435 271 ///
el14dg 9:a5614f53d435 272 /// Accelerometer Functions
el14dg 9:a5614f53d435 273 ///
el14dg 8:8a3d1c07bdec 274 void get_axis_data(); /*!< Gets the accelerometer data from the K64F on_board accelerometer and stores them in acc_X, acc_Y and acc_Z */
el14dg 8:8a3d1c07bdec 275
el14dg 8:8a3d1c07bdec 276 void compare_axis_data(); /*!< Compares the accelerometer data from the K64F on-board accelerometer with the stored values of setting_acc_X, setting_acc_Y and setting_acc_Z */
el14dg 8:8a3d1c07bdec 277
el14dg 9:a5614f53d435 278 void device_tampered_protocol(); /*!< If the device is moved whilst in the setting state this function is called to stop the alarm from setting */
el14dg 9:a5614f53d435 279 ///
el14dg 9:a5614f53d435 280 /// Pin Functions
el14dg 9:a5614f53d435 281 ///
el14dg 6:dc1229224d8e 282 void enter_pin(); /*!< Prints '*' to the Nokia 5110 LCD when a pin is being entered */
el14dg 4:9cac024c057c 283
el14dg 6:dc1229224d8e 284 void reset_entered_pin(); /*!< Resets the entered_pin array to have elements with a value of -1 */
el14dg 5:41cb88f47f42 285
el14dg 6:dc1229224d8e 286 void check_pin(); /*!< Compares the entered_pin to the set_pin */
el14dg 4:9cac024c057c 287
el14dg 9:a5614f53d435 288 void change_pin(); /*!< Writes entered_pin to the SD card when a pin is entered in state 3 - adapted from 2545_SD_Card Example by Dr. C.A. Evans */
el14dg 3:70a7b64fbd98 289
el14dg 9:a5614f53d435 290 void read_pin(); /*!< Reads pin from the SD card to the set_pin array - adapted from 2545_SD_Card Example by Dr. C.A. Evans */
el14dg 3:70a7b64fbd98 291
el14dg 9:a5614f53d435 292 void delete_file(char filename[]); /*!< Deletes the old pin from the SD card - taken from 2545_SD_Card Example by Dr. C.A. Evans */
el14dg 3:70a7b64fbd98 293
el14dg 1:3ae4192d0c25 294 /**
el14dg 2:e504a3cfe113 295
el14dg 1:3ae4192d0c25 296 */
el14dg 1:3ae4192d0c25 297
el14dg 1:3ae4192d0c25 298 #endif