Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Settings/Settings.cpp@70:8c4572d17441, 2020-05-22 (annotated)
- Committer:
- evanso
- Date:
- Fri May 22 17:20:22 2020 +0000
- Revision:
- 70:8c4572d17441
- Parent:
- 69:753ba27325ce
- Child:
- 71:bcbac2cfe005
Added unit test for the settings menu which it passed. And added one more unit test menu screen which it passed.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| evanso | 43:d43759dbddb9 | 1 | #include "Settings.h" |
| evanso | 44:2d957de3bce3 | 2 | |
| evanso | 69:753ba27325ce | 3 | const char settings_part_names[3][9] = { |
| evanso | 69:753ba27325ce | 4 | {"Contrast"}, |
| evanso | 69:753ba27325ce | 5 | {"Controls"}, |
| evanso | 69:753ba27325ce | 6 | {"Sound FX"}, |
| evanso | 69:753ba27325ce | 7 | }; |
| evanso | 69:753ba27325ce | 8 | |
| evanso | 69:753ba27325ce | 9 | const char controls_part_names[2][4] = { |
| evanso | 69:753ba27325ce | 10 | {"Joy"}, |
| evanso | 69:753ba27325ce | 11 | {"Acc"}, |
| evanso | 69:753ba27325ce | 12 | }; |
| evanso | 69:753ba27325ce | 13 | |
| evanso | 69:753ba27325ce | 14 | const char sound_part_names[2][4] = { |
| evanso | 69:753ba27325ce | 15 | {"On"}, |
| evanso | 69:753ba27325ce | 16 | {"Off"}, |
| evanso | 69:753ba27325ce | 17 | }; |
| evanso | 69:753ba27325ce | 18 | |
| evanso | 69:753ba27325ce | 19 | // Defining scroll_order_settings states for scroll_order_settings FSM |
| evanso | 69:753ba27325ce | 20 | scroll_order_setting settings_fsm[3] = { |
| evanso | 69:753ba27325ce | 21 | {controls, sound_fx}, |
| evanso | 69:753ba27325ce | 22 | {sound_fx, contrast}, |
| evanso | 69:753ba27325ce | 23 | {contrast, controls}, |
| evanso | 69:753ba27325ce | 24 | }; |
| evanso | 69:753ba27325ce | 25 | |
| evanso | 69:753ba27325ce | 26 | // Defining on_off_order states for settings_on_off FSM |
| evanso | 69:753ba27325ce | 27 | on_off_order settings_on_off_fsm[2] = { |
| evanso | 69:753ba27325ce | 28 | {off, on}, |
| evanso | 69:753ba27325ce | 29 | {on, off}, |
| evanso | 69:753ba27325ce | 30 | }; |
| evanso | 69:753ba27325ce | 31 | |
| evanso | 69:753ba27325ce | 32 | // Defining control_order states for settings_joy_acc FSM |
| evanso | 69:753ba27325ce | 33 | control_order settings_joy_acc_fsm[2] = { |
| evanso | 69:753ba27325ce | 34 | {acc, joy}, |
| evanso | 69:753ba27325ce | 35 | {joy, acc}, |
| evanso | 69:753ba27325ce | 36 | }; |
| evanso | 69:753ba27325ce | 37 | |
| evanso | 44:2d957de3bce3 | 38 | Settings::Settings() { |
| evanso | 44:2d957de3bce3 | 39 | |
| evanso | 44:2d957de3bce3 | 40 | } |
| evanso | 44:2d957de3bce3 | 41 | |
| evanso | 44:2d957de3bce3 | 42 | Settings::~Settings() { |
| evanso | 44:2d957de3bce3 | 43 | |
| evanso | 44:2d957de3bce3 | 44 | } |
| evanso | 44:2d957de3bce3 | 45 | |
| evanso | 44:2d957de3bce3 | 46 | void Settings::init(){ |
| evanso | 69:753ba27325ce | 47 | control_method_ = joy; |
| evanso | 69:753ba27325ce | 48 | sound_method_ = on; |
| evanso | 70:8c4572d17441 | 49 | displayed_settings_part_ = controls; |
| evanso | 69:753ba27325ce | 50 | } |
| evanso | 69:753ba27325ce | 51 | |
| evanso | 69:753ba27325ce | 52 | ControlsParts Settings::get_control_method(){ |
| evanso | 69:753ba27325ce | 53 | return control_method_; |
| evanso | 69:753ba27325ce | 54 | } |
| evanso | 69:753ba27325ce | 55 | |
| evanso | 70:8c4572d17441 | 56 | |
| evanso | 70:8c4572d17441 | 57 | SettingsParts Settings::get_displayed_settings_part(){ |
| evanso | 70:8c4572d17441 | 58 | return displayed_settings_part_; |
| evanso | 70:8c4572d17441 | 59 | } |
| evanso | 70:8c4572d17441 | 60 | |
| evanso | 69:753ba27325ce | 61 | void Settings::display_settings_screen(N5110 &lcd, float pot_read){ |
| evanso | 69:753ba27325ce | 62 | //Pirnts differnt settings parts |
| evanso | 69:753ba27325ce | 63 | if(displayed_settings_part_ == controls){ |
| evanso | 69:753ba27325ce | 64 | lcd.printString(settings_part_names[displayed_settings_part_],6 ,3); |
| evanso | 69:753ba27325ce | 65 | lcd.printString(controls_part_names[control_method_],60 ,3); |
| evanso | 69:753ba27325ce | 66 | }else if(displayed_settings_part_ == sound_fx){ |
| evanso | 69:753ba27325ce | 67 | lcd.printString(settings_part_names[displayed_settings_part_],6 ,3); |
| evanso | 69:753ba27325ce | 68 | lcd.printString(sound_part_names[sound_method_],60 ,3); |
| evanso | 69:753ba27325ce | 69 | }else if(displayed_settings_part_ == contrast){ |
| evanso | 69:753ba27325ce | 70 | lcd.printString(settings_part_names[displayed_settings_part_],6 ,3); |
| evanso | 69:753ba27325ce | 71 | char buffer[2]; |
| evanso | 69:753ba27325ce | 72 | sprintf(buffer,"%.2f",pot_read); |
| evanso | 69:753ba27325ce | 73 | lcd.printString(buffer,58,3); |
| evanso | 69:753ba27325ce | 74 | } |
| evanso | 69:753ba27325ce | 75 | |
| evanso | 69:753ba27325ce | 76 | //prints setting title and button instructions and arrows |
| evanso | 69:753ba27325ce | 77 | lcd.printString("Settings",18,0); |
| evanso | 69:753ba27325ce | 78 | lcd.drawSprite(39, 18, 3, 5, (int *)arrow_up); |
| evanso | 69:753ba27325ce | 79 | lcd.drawSprite(39, 34, 3, 5, (int *)arrow_down); |
| evanso | 69:753ba27325ce | 80 | lcd.printString("Back(B)Alt(A)",3,5); |
| evanso | 69:753ba27325ce | 81 | } |
| evanso | 69:753ba27325ce | 82 | |
| evanso | 69:753ba27325ce | 83 | void Settings::change_setting(bool pressed) { |
| evanso | 69:753ba27325ce | 84 | // When a is pressed changes the settings for the displayed setting part |
| evanso | 69:753ba27325ce | 85 | if (pressed) { |
| evanso | 69:753ba27325ce | 86 | if (displayed_settings_part_ == sound_fx){ |
| evanso | 69:753ba27325ce | 87 | sound_method_ = settings_on_off_fsm[sound_method_].part_next; |
| evanso | 69:753ba27325ce | 88 | }else if(displayed_settings_part_ == controls){ |
| evanso | 69:753ba27325ce | 89 | control_method_ = settings_joy_acc_fsm[control_method_].part_next; |
| evanso | 69:753ba27325ce | 90 | } |
| evanso | 69:753ba27325ce | 91 | wait(0.15); |
| evanso | 69:753ba27325ce | 92 | } |
| evanso | 69:753ba27325ce | 93 | |
| evanso | 69:753ba27325ce | 94 | } |
| evanso | 69:753ba27325ce | 95 | |
| evanso | 69:753ba27325ce | 96 | void Settings::settings_scroll(Direction d_) { |
| evanso | 69:753ba27325ce | 97 | // Changes displayed settings part depending on joystick input |
| evanso | 70:8c4572d17441 | 98 | if (d_ == N || d_ == NE || d_ == NW ) { |
| evanso | 70:8c4572d17441 | 99 | //printf(" displayed_settings_part_ %d\n",displayed_settings_part_); |
| evanso | 69:753ba27325ce | 100 | displayed_settings_part_ = |
| evanso | 69:753ba27325ce | 101 | settings_fsm[displayed_settings_part_].part_next; |
| evanso | 69:753ba27325ce | 102 | } else if (d_ == S || d_ == SW || d_ == SE) { |
| evanso | 69:753ba27325ce | 103 | displayed_settings_part_= |
| evanso | 69:753ba27325ce | 104 | settings_fsm[displayed_settings_part_].part_next; |
| evanso | 69:753ba27325ce | 105 | displayed_settings_part_ = |
| evanso | 69:753ba27325ce | 106 | settings_fsm[displayed_settings_part_].part_next; |
| evanso | 69:753ba27325ce | 107 | } |
| evanso | 69:753ba27325ce | 108 | wait(0.15); |
| evanso | 44:2d957de3bce3 | 109 | } |