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 | } |