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@82:3211b31e9421, 2020-05-25 (annotated)
- Committer:
- evanso
- Date:
- Mon May 25 18:39:51 2020 +0000
- Revision:
- 82:3211b31e9421
- Parent:
- 74:6827b43c689d
- Child:
- 85:87bc28b151d8
Made commenting and formatting of code more consistent.
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 | 74:6827b43c689d | 3 | const char settings_part_names[4][9] = { |
| evanso | 69:753ba27325ce | 4 | {"Contrast"}, |
| evanso | 69:753ba27325ce | 5 | {"Controls"}, |
| evanso | 69:753ba27325ce | 6 | {"Sound FX"}, |
| evanso | 74:6827b43c689d | 7 | {" Music "}, |
| evanso | 69:753ba27325ce | 8 | }; |
| evanso | 69:753ba27325ce | 9 | |
| evanso | 69:753ba27325ce | 10 | const char controls_part_names[2][4] = { |
| evanso | 69:753ba27325ce | 11 | {"Joy"}, |
| evanso | 69:753ba27325ce | 12 | {"Acc"}, |
| evanso | 69:753ba27325ce | 13 | }; |
| evanso | 69:753ba27325ce | 14 | |
| evanso | 69:753ba27325ce | 15 | const char sound_part_names[2][4] = { |
| evanso | 69:753ba27325ce | 16 | {"On"}, |
| evanso | 69:753ba27325ce | 17 | {"Off"}, |
| evanso | 69:753ba27325ce | 18 | }; |
| evanso | 69:753ba27325ce | 19 | |
| evanso | 74:6827b43c689d | 20 | const char music_part_names[2][4] = { |
| evanso | 74:6827b43c689d | 21 | {"On"}, |
| evanso | 74:6827b43c689d | 22 | {"Off"}, |
| evanso | 74:6827b43c689d | 23 | }; |
| evanso | 74:6827b43c689d | 24 | |
| evanso | 69:753ba27325ce | 25 | // Defining scroll_order_settings states for scroll_order_settings FSM |
| evanso | 74:6827b43c689d | 26 | scroll_order_setting settings_fsm[4] = { |
| evanso | 74:6827b43c689d | 27 | {music, contrast, controls}, |
| evanso | 74:6827b43c689d | 28 | {contrast, controls, sound_fx}, |
| evanso | 74:6827b43c689d | 29 | {controls, sound_fx, music}, |
| evanso | 74:6827b43c689d | 30 | {sound_fx, music, contrast}, |
| evanso | 69:753ba27325ce | 31 | }; |
| evanso | 69:753ba27325ce | 32 | |
| evanso | 74:6827b43c689d | 33 | // Defining on_off_order states for _on_off FSM |
| evanso | 69:753ba27325ce | 34 | on_off_order settings_on_off_fsm[2] = { |
| evanso | 69:753ba27325ce | 35 | {off, on}, |
| evanso | 69:753ba27325ce | 36 | {on, off}, |
| evanso | 74:6827b43c689d | 37 | }; |
| evanso | 74:6827b43c689d | 38 | |
| evanso | 74:6827b43c689d | 39 | // Defining on_off_order states for music_on_off FSM |
| evanso | 74:6827b43c689d | 40 | music_on_off_order music_on_off_fsm[2] = { |
| evanso | 74:6827b43c689d | 41 | {music_off, music_on}, |
| evanso | 74:6827b43c689d | 42 | {music_on, music_off}, |
| evanso | 74:6827b43c689d | 43 | }; |
| evanso | 69:753ba27325ce | 44 | |
| evanso | 69:753ba27325ce | 45 | // Defining control_order states for settings_joy_acc FSM |
| evanso | 69:753ba27325ce | 46 | control_order settings_joy_acc_fsm[2] = { |
| evanso | 69:753ba27325ce | 47 | {acc, joy}, |
| evanso | 69:753ba27325ce | 48 | {joy, acc}, |
| evanso | 69:753ba27325ce | 49 | }; |
| evanso | 69:753ba27325ce | 50 | |
| evanso | 44:2d957de3bce3 | 51 | Settings::Settings() { |
| evanso | 44:2d957de3bce3 | 52 | |
| evanso | 44:2d957de3bce3 | 53 | } |
| evanso | 44:2d957de3bce3 | 54 | |
| evanso | 44:2d957de3bce3 | 55 | Settings::~Settings() { |
| evanso | 44:2d957de3bce3 | 56 | |
| evanso | 44:2d957de3bce3 | 57 | } |
| evanso | 44:2d957de3bce3 | 58 | |
| evanso | 82:3211b31e9421 | 59 | void Settings::init() { |
| evanso | 69:753ba27325ce | 60 | control_method_ = joy; |
| evanso | 69:753ba27325ce | 61 | sound_method_ = on; |
| evanso | 70:8c4572d17441 | 62 | displayed_settings_part_ = controls; |
| evanso | 74:6827b43c689d | 63 | music_method_ = music_on; |
| evanso | 69:753ba27325ce | 64 | } |
| evanso | 69:753ba27325ce | 65 | |
| evanso | 82:3211b31e9421 | 66 | ControlsParts Settings::get_control_method() { |
| evanso | 69:753ba27325ce | 67 | return control_method_; |
| evanso | 69:753ba27325ce | 68 | } |
| evanso | 69:753ba27325ce | 69 | |
| evanso | 70:8c4572d17441 | 70 | |
| evanso | 82:3211b31e9421 | 71 | SoundParts Settings::get_sound_method() { |
| evanso | 73:d1aea9b8da92 | 72 | return sound_method_; |
| evanso | 73:d1aea9b8da92 | 73 | } |
| evanso | 73:d1aea9b8da92 | 74 | |
| evanso | 82:3211b31e9421 | 75 | MusicParts Settings::get_music_method() { |
| evanso | 74:6827b43c689d | 76 | return music_method_; |
| evanso | 74:6827b43c689d | 77 | } |
| evanso | 74:6827b43c689d | 78 | |
| evanso | 82:3211b31e9421 | 79 | SettingsParts Settings::get_displayed_settings_part() { |
| evanso | 70:8c4572d17441 | 80 | return displayed_settings_part_; |
| evanso | 70:8c4572d17441 | 81 | } |
| evanso | 70:8c4572d17441 | 82 | |
| evanso | 82:3211b31e9421 | 83 | void Settings::display_settings_screen(N5110 &lcd, float pot_read) { |
| evanso | 82:3211b31e9421 | 84 | // Pirnts differnt settings parts |
| evanso | 82:3211b31e9421 | 85 | if(displayed_settings_part_ == controls) { |
| evanso | 69:753ba27325ce | 86 | lcd.printString(settings_part_names[displayed_settings_part_],6 ,3); |
| evanso | 69:753ba27325ce | 87 | lcd.printString(controls_part_names[control_method_],60 ,3); |
| evanso | 82:3211b31e9421 | 88 | }else if(displayed_settings_part_ == sound_fx) { |
| evanso | 69:753ba27325ce | 89 | lcd.printString(settings_part_names[displayed_settings_part_],6 ,3); |
| evanso | 69:753ba27325ce | 90 | lcd.printString(sound_part_names[sound_method_],60 ,3); |
| evanso | 82:3211b31e9421 | 91 | }else if(displayed_settings_part_ == music) { |
| evanso | 74:6827b43c689d | 92 | lcd.printString(settings_part_names[displayed_settings_part_],6 ,3); |
| evanso | 74:6827b43c689d | 93 | lcd.printString(music_part_names[music_method_],60 ,3); |
| evanso | 82:3211b31e9421 | 94 | }else if(displayed_settings_part_ == contrast) { |
| evanso | 69:753ba27325ce | 95 | lcd.printString(settings_part_names[displayed_settings_part_],6 ,3); |
| evanso | 69:753ba27325ce | 96 | char buffer[2]; |
| evanso | 69:753ba27325ce | 97 | sprintf(buffer,"%.2f",pot_read); |
| evanso | 69:753ba27325ce | 98 | lcd.printString(buffer,58,3); |
| evanso | 69:753ba27325ce | 99 | } |
| evanso | 69:753ba27325ce | 100 | |
| evanso | 82:3211b31e9421 | 101 | // prints setting title and button instructions and arrows |
| evanso | 69:753ba27325ce | 102 | lcd.printString("Settings",18,0); |
| evanso | 69:753ba27325ce | 103 | lcd.drawSprite(39, 18, 3, 5, (int *)arrow_up); |
| evanso | 69:753ba27325ce | 104 | lcd.drawSprite(39, 34, 3, 5, (int *)arrow_down); |
| evanso | 69:753ba27325ce | 105 | lcd.printString("Back(B)Alt(A)",3,5); |
| evanso | 69:753ba27325ce | 106 | } |
| evanso | 69:753ba27325ce | 107 | |
| evanso | 69:753ba27325ce | 108 | void Settings::change_setting(bool pressed) { |
| evanso | 69:753ba27325ce | 109 | // When a is pressed changes the settings for the displayed setting part |
| evanso | 69:753ba27325ce | 110 | if (pressed) { |
| evanso | 82:3211b31e9421 | 111 | if (displayed_settings_part_ == sound_fx) { |
| evanso | 69:753ba27325ce | 112 | sound_method_ = settings_on_off_fsm[sound_method_].part_next; |
| evanso | 82:3211b31e9421 | 113 | }else if(displayed_settings_part_ == controls) { |
| evanso | 69:753ba27325ce | 114 | control_method_ = settings_joy_acc_fsm[control_method_].part_next; |
| evanso | 82:3211b31e9421 | 115 | }else if(displayed_settings_part_ == music) { |
| evanso | 74:6827b43c689d | 116 | music_method_ = music_on_off_fsm[music_method_].part_next; |
| evanso | 74:6827b43c689d | 117 | } |
| evanso | 71:bcbac2cfe005 | 118 | wait(0.3); |
| evanso | 69:753ba27325ce | 119 | } |
| evanso | 69:753ba27325ce | 120 | |
| evanso | 69:753ba27325ce | 121 | } |
| evanso | 69:753ba27325ce | 122 | |
| evanso | 69:753ba27325ce | 123 | void Settings::settings_scroll(Direction d_) { |
| evanso | 69:753ba27325ce | 124 | // Changes displayed settings part depending on joystick input |
| evanso | 70:8c4572d17441 | 125 | if (d_ == N || d_ == NE || d_ == NW ) { |
| evanso | 82:3211b31e9421 | 126 | // printf(" displayed_settings_part_ %d\n",displayed_settings_part_); |
| evanso | 69:753ba27325ce | 127 | displayed_settings_part_ = |
| evanso | 69:753ba27325ce | 128 | settings_fsm[displayed_settings_part_].part_next; |
| evanso | 69:753ba27325ce | 129 | } else if (d_ == S || d_ == SW || d_ == SE) { |
| evanso | 69:753ba27325ce | 130 | displayed_settings_part_= |
| evanso | 74:6827b43c689d | 131 | settings_fsm[displayed_settings_part_].part_previous; |
| evanso | 69:753ba27325ce | 132 | } |
| evanso | 69:753ba27325ce | 133 | wait(0.15); |
| evanso | 44:2d957de3bce3 | 134 | } |