Mobile Security System - Revision 1.0
Dependencies: FXOS8700Q N5110 SDFileSystem SRF02 mbed
Diff: main.h
- Revision:
- 2:e504a3cfe113
- Parent:
- 1:3ae4192d0c25
- Child:
- 3:70a7b64fbd98
--- a/main.h Fri Mar 04 12:42:18 2016 +0000 +++ b/main.h Sat Apr 02 13:50:00 2016 +0000 @@ -1,7 +1,6 @@ /** @file main.h @brief Header file containing functions prototypes, defines and global variables. -@brief Shows examples of creating Doxygen documentation. @brief Revision 1.0. @author Daniel Gibbons @date March 2016 @@ -16,49 +15,124 @@ #include "N5110.h" #include "SRF02.h" + /** +@namespace lcd +@brief N5110 LCD connections @namespace srf02 -@brief SRF02 sensor object +@brief SRF02 sensor connections @namespace pc -@brief UART connection for PC +@brief UART connection to PC for debugging +@namespace led_alarm +@brief LED to indicate status of the alarm: flashing -> setting or triggered ; constant -> set +@namespace buzzer +@brief indicates status of the alarm: buzzes when alarm is setting and when triggered +@namespace zero +@brief first button input +@namespace one +@brief second button input +@namespace confirm +@brief third button input +@namespace read_distance +@brief K64F fires to read distance +@namespace sw2 +@brief K64F on-board switch +@namespace sw3 +@brief K64F on-board switch @namespace r_led -@brief K64F on-board LEDs +@brief K64F on-board red LED @namespace g_led -@brief K64F on-board LEDs +@brief K64F on-board green LED @namespace b_led -@brief K64F on-board LEDs -@namespace sw2 -@brief K64F on-board switches -@namespace sw3 -@brief K64F on-board switches +@brief K64F on-board blue LED + */ +// VCC, SCE, RST, D/C, MOSI, SCLK, LED +N5110 lcd(PTE26,PTA0,PTC4,PTD0,PTD2,PTD1,PTC3); SRF02 srf02(I2C_SDA,I2C_SCL); Serial pc(USBTX,USBRX); +PwmOut led_alarm(PTC10); +PwmOut buzzer(PTC11); +InterruptIn button_0(PTB23); +InterruptIn button_1(PTA2); +InterruptIn button_c(PTC2); +Ticker read_distance; + +InterruptIn sw2(SW2); +InterruptIn sw3(SW3); DigitalOut r_led(LED_RED); DigitalOut g_led(LED_GREEN); DigitalOut b_led(LED_BLUE); -InterruptIn sw2(SW2); -InterruptIn sw3(SW3); + +struct State { + int nextState[3]; // array of next states which depend on which button was pressed +}; +typedef const struct State STyp; + +STyp fsm[9] = { + {0,0,0}, // 0 - initialisation (title screen) + {2,1,3}, // 1 - main menu (Set alarm or set new password) + {2,2,4}, // 2 - set alarm + {3,3,1}, // 3 - set new password + {4,4,5}, // 4 - setting calibration + {7,5,6}, // 5 - alarm activated + {6,6,1}, // 6 - deactivate without triggering (enter password) + {7,7,1}, // 7 - alarm triggered (enter password) + {8,8,1} // 8 - display time when alarm was triggered +}; + +int g_current_state; + +int distance[10]; /*!< Stores 10 distance readings from SRF02 */ +int one_second_distance = 0; +float one_second_avg_distance = 0; +int read_distance_counter = 0; + +volatile int g_read_distance_flag; /*!< Flag in read_distance_isr */ +volatile int g_button_0_flag; /*!< Flag in button_0_isr */ +volatile int g_button_1_flag; /*!< Flag in button_1_isr */ +volatile int g_button_c_flag; /*!< Flag in button_c_isr */ + +char buffer[14]; /*!< Stores any string that is going to be displayed on the LCD */ +int length; /*!< Stores the length of any string that is going to be displayed on the LCD */ -int distance; /*!< Stores the distance reading from SRF02 */ + +void error(); /*!< Hangs flashing on_board LED */ + +void init_serial(); /*!< Set-up the serial port */ + +void init_K64F(); /*!< Set-up the on-board LEDs and switches */ + +void init_buttons(); /*!< Set-up the three external buttons */ + +void read_distance_isr(); /*!< Interrupt that triggers when read_distance ticker fires */ + +void button_0_isr(); /*!< Interrupt that triggers when button_0 is pressed by the user */ + +void button_1_isr(); /*!< Interrupt that triggers when button_1 is pressed by the user */ +void button_c_isr(); /*!< Interrupt that triggers when button_c is pressed by the user */ + +void get_distance(); /*!< Gets the average distance in cm from the last 10 readings from the SRF02 */ + +void state_0_screen(); + +void state_1_screen(); + +void state_2_3_6_7_screen(); + +void state_4_screen(); + +void state_5_screen(); + +void state_8_screen(); + +void screen_selection(); /** -Hangs flashing on_board LED -*/ -void error(); - -/** -Set-up the serial port + */ -void init_serial(); - -/** -Set-up the on-board LEDs and switches -*/ -void init_K64F(); - #endif \ No newline at end of file