Skip to content

Commit

Permalink
ISO datetime for Clock, FileManager, Frequency manager
Browse files Browse the repository at this point in the history
Added option to show/hide clock (with/without date)
  • Loading branch information
ArjanOnwezen committed May 17, 2021
1 parent c307e9d commit 6bc2cbe
Show file tree
Hide file tree
Showing 10 changed files with 114 additions and 41 deletions.
8 changes: 4 additions & 4 deletions firmware/application/apps/ui_freqman.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,19 +103,19 @@ class FrequencySaveView : public FreqManBaseView {
};

Labels labels {
{ { 2 * 8, 14 * 8 }, "Save as:", Color::white() }
{ { 1 * 8, 12 * 8 }, "Save as:", Color::white() }
};

Button button_save_name {
{ 2 * 8, 17 * 8, 14 * 8, 48 },
{ 1 * 8, 17 * 8, 12 * 8, 48 },
"Name (set)"
};
Button button_save_timestamp {
{ 2 * 8, 25 * 8, 14 * 8, 48 },
{ 1 * 8, 25 * 8, 12 * 8, 48 },
"Timestamp:"
};
LiveDateTime live_timestamp {
{ 17 * 8, 27 * 8, 11 * 8, 16 }
{ 14 * 8, 27 * 8, 16 * 8, 16 }
};
};

Expand Down
17 changes: 16 additions & 1 deletion firmware/application/apps/ui_settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -285,22 +285,30 @@ SetUIView::SetUIView(NavigationView& nav) {
&checkbox_bloff,
&options_bloff,
&checkbox_showsplash,
&checkbox_showclock,
&options_clockformat,
&button_ok
});

checkbox_speaker.set_value(persistent_memory::config_speaker());
checkbox_showsplash.set_value(persistent_memory::config_splash());
checkbox_showclock.set_value(!persistent_memory::hide_clock());
//checkbox_login.set_value(persistent_memory::config_login());

uint32_t backlight_timer = persistent_memory::config_backlight_timer();

if (backlight_timer) {
checkbox_bloff.set_value(true);
options_bloff.set_by_value(backlight_timer);
} else {
options_bloff.set_selected_index(0);
}

if (persistent_memory::clock_with_date()) {
options_clockformat.set_selected_index(1);
} else {
options_clockformat.set_selected_index(0);
}

checkbox_speaker.on_select = [this](Checkbox&, bool v) {
if (v) audio::output::speaker_mute(); //Just mute audio if speaker is disabled

Expand All @@ -316,7 +324,14 @@ SetUIView::SetUIView(NavigationView& nav) {
else
persistent_memory::set_config_backlight_timer(0);

if (checkbox_showclock.value()){
if (options_clockformat.selected_index() == 1)
persistent_memory::set_clock_with_date(true);
else
persistent_memory::set_clock_with_date(false);
}
persistent_memory::set_config_splash(checkbox_showsplash.value());
persistent_memory::set_clock_hidden(!checkbox_showclock.value());
//persistent_memory::set_config_login(checkbox_login.value());
nav.pop();
};
Expand Down
31 changes: 23 additions & 8 deletions firmware/application/apps/ui_settings.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ class SetDateTimeView : public View {

private:
Labels labels {
{ { 6 * 8, 7 * 16 }, "YYYY/MM/DD HH:MM:SS", Color::grey() },
{ { 10 * 8, 9 * 16 }, "/ / : :", Color::light_grey() }
{ { 6 * 8, 7 * 16 }, "YYYY-MM-DD HH:MM:SS", Color::grey() },
{ { 10 * 8, 9 * 16 }, "- - : :", Color::light_grey() }
};

NumberField field_year {
Expand Down Expand Up @@ -226,19 +226,19 @@ class SetUIView : public View {
};*/

Checkbox checkbox_speaker {
{ 3 * 8, 2 * 16 },
{ 3 * 8, 4 * 16 },
20,
"Hide H1 Speaker option"
};

Checkbox checkbox_bloff {
{ 3 * 8, 5 * 16 },
{ 3 * 8, 6 * 16 },
20,
"Backlight off after:"
};

OptionsField options_bloff {
{ 52, 6 * 16 + 8 },
10,
{ 52, 7 * 16 + 8 },
20,
{
{ "5 seconds", 5 },
{ "15 seconds", 15 },
Expand All @@ -252,10 +252,25 @@ class SetUIView : public View {

Checkbox checkbox_showsplash {
{ 3 * 8, 9 * 16 },
11,
20,
"Show splash"
};

Checkbox checkbox_showclock {
{ 3 * 8, 11 * 16 },
20,
"Show clock with:"
};

OptionsField options_clockformat {
{ 52, 12 * 16 + 8 },
20,
{
{ "time only", 0 },
{ "time and date", 1 }
}
};

Button button_ok {
{ 2 * 8, 16 * 16, 12 * 8, 32 },
"Save"
Expand Down
14 changes: 7 additions & 7 deletions firmware/application/string_format.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -165,8 +165,8 @@ std::string to_string_datetime(const rtc::RTC& value, const TimeFormat format) {
std::string string { "" };

if (format == YMDHMS) {
string += to_string_dec_uint(value.year(), 4) + "/" +
to_string_dec_uint(value.month(), 2, '0') + "/" +
string += to_string_dec_uint(value.year(), 4) + "-" +
to_string_dec_uint(value.month(), 2, '0') + "-" +
to_string_dec_uint(value.day(), 2, '0') + " ";
}

Expand All @@ -189,11 +189,11 @@ std::string to_string_timestamp(const rtc::RTC& value) {
}

std::string to_string_FAT_timestamp(const FATTimestamp& timestamp) {
return to_string_dec_uint((timestamp.FAT_date >> 9) + 1980) + "/" +
to_string_dec_uint((timestamp.FAT_date >> 5) & 0xF, 2) + "/" +
to_string_dec_uint((timestamp.FAT_date & 0x1F), 2) + " " +
to_string_dec_uint((timestamp.FAT_time >> 11), 2) + ":" +
to_string_dec_uint((timestamp.FAT_time >> 5) & 0x3F, 2);
return to_string_dec_uint((timestamp.FAT_date >> 9) + 1980) + "-" +
to_string_dec_uint((timestamp.FAT_date >> 5) & 0xF, 2, '0') + "-" +
to_string_dec_uint((timestamp.FAT_date & 0x1F), 2, '0') + " " +
to_string_dec_uint((timestamp.FAT_time >> 11), 2, '0') + ":" +
to_string_dec_uint((timestamp.FAT_time >> 5) & 0x3F, 2, '0');
}

std::string unit_auto_scale(double n, const uint32_t base_nano, uint32_t precision) {
Expand Down
16 changes: 13 additions & 3 deletions firmware/application/ui_navigation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
#include "ui_view_wav.hpp"
#include "ui_whipcalc.hpp"

#include "acars_app.hpp"
//#include "acars_app.hpp"
#include "ais_app.hpp"
#include "analog_audio_app.hpp"
#include "analog_tv_app.hpp"
Expand Down Expand Up @@ -350,13 +350,21 @@ InformationView::InformationView(
});

version.set_style(&style_infobar);

ltime.set_hide_clock(portapack::persistent_memory::hide_clock());
ltime.set_style(&style_infobar);
ltime.set_seconds_enabled(true);
ltime.set_date_enabled(false);

ltime.set_date_enabled(portapack::persistent_memory::clock_with_date());
set_dirty();
}

void InformationView::refresh() {
ltime.set_hide_clock(portapack::persistent_memory::hide_clock());
ltime.set_seconds_enabled(true);
ltime.set_date_enabled(portapack::persistent_memory::clock_with_date());

}

/* Navigation ************************************************************/

bool NavigationView::is_top() const {
Expand Down Expand Up @@ -387,6 +395,7 @@ void NavigationView::pop() {

update_view();
}

}

void NavigationView::pop_modal() {
Expand Down Expand Up @@ -606,6 +615,7 @@ SystemView::SystemView(
}
else{
add_child(&info_view);
info_view.refresh();
}

this->status_view.set_back_enabled(!this->navigation_view.is_top());
Expand Down
6 changes: 4 additions & 2 deletions firmware/application/ui_navigation.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ class SystemStatusView : public View {
class InformationView : public View {
public:
InformationView(NavigationView& nav);

void refresh();
private:
static constexpr auto version_string = "v1.4.0";
NavigationView& nav_;
Expand All @@ -228,8 +228,10 @@ class InformationView : public View {
};

LiveDateTime ltime {
{174, 0, 8 * 8, 16}
{86, 0, 19 * 8, 16}
};


};

class BMPView : public View {
Expand Down
18 changes: 17 additions & 1 deletion firmware/common/portapack_persistent_memory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -224,9 +224,17 @@ void set_playdead_sequence(const uint32_t new_value) {

// ui_config is an uint32_t var storing information bitwise
// bits 0,1,2 store the backlight timer
// bits 31, 30,29,28,27 stores the different single bit configs depicted below
// bits 31, 30,29,28,27, 26, 25 stores the different single bit configs depicted below
// bits on position 4 to 19 (16 bits) store the clkout frequency

bool hide_clock() { // clock hidden from main menu
return data->ui_config & (1 << 25);
}

bool clock_with_date() { // show clock with date, if not hidden
return data->ui_config & (1 << 26);
}

bool clkout_enabled() {
return data->ui_config & (1 << 27);
}
Expand All @@ -251,6 +259,14 @@ uint32_t config_backlight_timer() {
return timer_seconds[data->ui_config & 7]; //first three bits, 8 possible values
}

void set_clock_hidden(bool v) {
data->ui_config = (data->ui_config & ~(1 << 25)) | (v << 25);
}

void set_clock_with_date(bool v) {
data->ui_config = (data->ui_config & ~(1 << 26)) | (v << 26);
}

void set_clkout_enabled(bool v) {
data->ui_config = (data->ui_config & ~(1 << 27)) | (v << 27);
}
Expand Down
4 changes: 4 additions & 0 deletions firmware/common/portapack_persistent_memory.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,11 +75,15 @@ bool stealth_mode();
void set_stealth_mode(const bool v);

bool config_splash();
bool hide_clock();
bool clock_with_date();
bool config_login();
bool config_speaker();
uint32_t config_backlight_timer();

void set_config_splash(bool v);
void set_clock_hidden(bool v);
void set_clock_with_date(bool v);
void set_config_login(bool v);
void set_config_speaker(bool v);
void set_config_backlight_timer(uint32_t i);
Expand Down
39 changes: 24 additions & 15 deletions firmware/common/ui_widget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -410,23 +410,29 @@ void Labels::paint(Painter& painter) {
void LiveDateTime::on_tick_second() {
rtcGetTime(&RTCD1, &datetime);
text = "";

if(date_enabled){
text = to_string_dec_uint(datetime.month(), 2, '0') + "/" + to_string_dec_uint(datetime.day(), 2, '0') + " ";
}

text = text + to_string_dec_uint(datetime.hour(), 2, '0') + ":" + to_string_dec_uint(datetime.minute(), 2, '0');
if(!hide_clock) {
if(date_enabled){
text = to_string_dec_uint(datetime.year(), 4, '0') + "-" +
to_string_dec_uint(datetime.month(), 2, '0') + "-" +
to_string_dec_uint(datetime.day(), 2, '0') + " ";
}
else{
text = " ";
}

text = text + to_string_dec_uint(datetime.hour(), 2, '0') + ":" + to_string_dec_uint(datetime.minute(), 2, '0');

if(seconds_enabled){
text += ":";
if(seconds_enabled){
text += ":";

if(init_delay==0)
text += to_string_dec_uint(datetime.second(), 2, '0');
else
{
// Placeholder while the seconds are not updated
text += "XX";
init_delay--;
if(init_delay==0)
text += to_string_dec_uint(datetime.second(), 2, '0');
else
{
// Placeholder while the seconds are not updated
text += "XX";
init_delay--;
}
}
}
set_dirty();
Expand Down Expand Up @@ -459,6 +465,9 @@ void LiveDateTime::paint(Painter& painter) {
text
);
}
void LiveDateTime::set_hide_clock(bool new_value){
this->hide_clock = new_value;
}

void LiveDateTime::set_date_enabled(bool new_value){
this->date_enabled = new_value;
Expand Down
2 changes: 2 additions & 0 deletions firmware/common/ui_widget.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,7 @@ class LiveDateTime : public Widget {

void paint(Painter& painter) override;

void set_hide_clock(bool new_value);
void set_seconds_enabled(bool new_value);
void set_date_enabled(bool new_value);

Expand All @@ -255,6 +256,7 @@ class LiveDateTime : public Widget {
void on_tick_second();

uint16_t init_delay = 4;
bool hide_clock = false;
bool date_enabled = true;
bool seconds_enabled = false;

Expand Down

0 comments on commit 6bc2cbe

Please sign in to comment.