Mobile Security System - Revision 1.0
Dependencies: FXOS8700Q N5110 SDFileSystem SRF02 mbed
main.h@8:8a3d1c07bdec, 2016-05-03 (annotated)
- Committer:
- el14dg
- Date:
- Tue May 03 09:51:02 2016 +0000
- Revision:
- 8:8a3d1c07bdec
- Parent:
- 7:8ac5aee0c13e
- Child:
- 9:a5614f53d435
accelerometer functionality implemented and updated doxygen documentation.
Who changed what in which revision?
User | Revision | Line number | New 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 | 1:3ae4192d0c25 | 6 | @date March 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 | 6:dc1229224d8e | 130 | {8,8,1,1} // 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 | 2:e504a3cfe113 | 177 | |
el14dg | 7:8ac5aee0c13e | 178 | // Initialisation Functions |
el14dg | 7:8ac5aee0c13e | 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 | 5:41cb88f47f42 | 189 | |
el14dg | 7:8ac5aee0c13e | 190 | // Interrupt Service Routines (ISRs) |
el14dg | 7:8ac5aee0c13e | 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 | 5:41cb88f47f42 | 209 | |
el14dg | 7:8ac5aee0c13e | 210 | // Button Functions |
el14dg | 7:8ac5aee0c13e | 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 | 3:70a7b64fbd98 | 217 | |
el14dg | 7:8ac5aee0c13e | 218 | // State Functions |
el14dg | 3:70a7b64fbd98 | 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 | 5:41cb88f47f42 | 245 | |
el14dg | 7:8ac5aee0c13e | 246 | // Screen Animation Functions |
el14dg | 7:8ac5aee0c13e | 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 | 1:3ae4192d0c25 | 251 | |
el14dg | 7:8ac5aee0c13e | 252 | // Read Distance Functions |
el14dg | 3:70a7b64fbd98 | 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 | 3:70a7b64fbd98 | 261 | |
el14dg | 7:8ac5aee0c13e | 262 | // Timeout Functions |
el14dg | 7:8ac5aee0c13e | 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 | 8:8a3d1c07bdec | 268 | void device_tampered(); /*!< 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 | 5:41cb88f47f42 | 271 | |
el14dg | 8:8a3d1c07bdec | 272 | // Accelerometer Function |
el14dg | 8:8a3d1c07bdec | 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 | 8:8a3d1c07bdec | 278 | void device_tampered_protocol(); /*!< If the device is moved whilst in the setting state this function is called */ |
el14dg | 8:8a3d1c07bdec | 279 | |
el14dg | 7:8ac5aee0c13e | 280 | // Pin Functions |
el14dg | 7:8ac5aee0c13e | 281 | |
el14dg | 8:8a3d1c07bdec | 282 | |
el14dg | 5:41cb88f47f42 | 283 | |
el14dg | 6:dc1229224d8e | 284 | void enter_pin(); /*!< Prints '*' to the Nokia 5110 LCD when a pin is being entered */ |
el14dg | 4:9cac024c057c | 285 | |
el14dg | 6:dc1229224d8e | 286 | void reset_entered_pin(); /*!< Resets the entered_pin array to have elements with a value of -1 */ |
el14dg | 5:41cb88f47f42 | 287 | |
el14dg | 6:dc1229224d8e | 288 | void check_pin(); /*!< Compares the entered_pin to the set_pin */ |
el14dg | 4:9cac024c057c | 289 | |
el14dg | 6:dc1229224d8e | 290 | void change_pin(); /*!< Writes entered_pin to the SD card when a pin is entered in state 3 - adapted from SD card program by Dr. C.A. Evans */ |
el14dg | 3:70a7b64fbd98 | 291 | |
el14dg | 6:dc1229224d8e | 292 | void read_pin(); /*!< Reads pin from the SD card to the set_pin array - adapted from SD card program by Dr. C.A. Evans */ |
el14dg | 3:70a7b64fbd98 | 293 | |
el14dg | 6:dc1229224d8e | 294 | void delete_file(char filename[]); /*!< Deletes the old pin from the SD card - taken from SD card program by Dr. C.A. Evans */ |
el14dg | 3:70a7b64fbd98 | 295 | |
el14dg | 1:3ae4192d0c25 | 296 | /** |
el14dg | 2:e504a3cfe113 | 297 | |
el14dg | 1:3ae4192d0c25 | 298 | */ |
el14dg | 1:3ae4192d0c25 | 299 | |
el14dg | 1:3ae4192d0c25 | 300 | #endif |