~jochen/Calculateur

6e515eae758b61aabc9158390fe1d0b66f11212d — Jochen 8 months ago 3aa3454
implemented alg w/o fixed array
2 files changed, 20 insertions(+), 52 deletions(-)

M Calculateur.cpp
M Calculateur.h
M Calculateur.cpp => Calculateur.cpp +19 -51
@@ 11,8 11,7 @@ RTC_DATA_ATTR bool BLE_CONFIGURED;

Watchy::Watchy(){} //constructor

int steps[] = {126, 252, 419, 545, 712, 838, 1004, 1131, 1257, 1423, 1550, 1716, 1843, 2009, 2136, 2302, 2428, 2555, 2721, 2848, 3014, 3140, 3307, 3433, 3600, 3726, 3852, 4019, 4145, 4312, 4438, 4604, 4731, 4857, 5024, 5150, 5316, 5443, 5609, 5736, 5902, 10028, 10155, 10321, 10448, 10614, 10740, 10907, 11033, 11200, 11326, 11452, 11619, 11745, 11912, 12038, 12204, 12331, 12457, 12623, 12750, 12916, 13043, 13209, 13335, 13502, 13628, 13755, 13921, 14047, 14214, 14340, 14507, 14633, 14759, 14926, 15052, 15219, 15345, 15511, 15638, 15804, 15931, 20057, 20223, 20350, 20516, 20643, 20809, 20935, 21102, 21228, 21355, 21521, 21647, 21814, 21940, 22107, 22233, 22359, 22526, 22652, 22819, 22945, 23111, 23238, 23404, 23531, 23657, 23823, 23950, 24116, 24243, 24409, 24535, 24702, 24828, 24955, 25121, 25247, 25414, 25540, 25707, 25833, 25959, 30126, 30252, 30419, 30545, 30711, 30838, 31004, 31131, 31257, 31423, 31550, 31716, 31843, 32009, 32135, 32302, 32428, 32555, 32721, 32847, 33014, 33140, 33307, 33433, 33559, 33726, 33852, 34019, 34145, 34311, 34438, 34604, 34731, 34857, 35023, 35150, 35316, 35443, 35609, 35735, 35902, 40028, 40155, 40321, 40447, 40614, 40740, 40907, 41033, 41159, 41326, 41452, 41619, 41745, 41911, 42038, 42204, 42331, 42457, 42623, 42750, 42916, 43043, 43209, 43335, 43502, 43628, 43755, 43921, 44047, 44214, 44340, 44507, 44633, 44759, 44926, 45052, 45219, 45345, 45511, 45638, 45804, 45931, 50057, 50223, 50350, 50516, 50643, 50809, 50935, 51102, 51228, 51355, 51521, 51647, 51814, 51940, 52107, 52233, 52400, 52526, 52652, 52819, 52945, 53112, 53238, 53404, 53531, 53657, 53824, 53950, 54116, 54243, 54409, 54536, 54702, 54828, 54955, 55121, 55248, 55414, 55540, 55707, 55833, 60000, 60126, 60252, 60419, 60545, 60712, 60838, 61004, 61131, 61257, 61424, 61550, 61716, 61843, 62009, 62136, 62302, 62428, 62555, 62721, 62848, 63014, 63140, 63307, 63433, 63600, 63726, 63852, 64019, 64145, 64312, 64438, 64604, 64731, 64857, 65024, 65150, 65316, 65443, 65609, 65736, 65902, 70028, 70155, 70321, 70448, 70614, 70740, 70907, 71033, 71200, 71326, 71452, 71619, 71745, 71912, 72038, 72204, 72331, 72457, 72624, 72750, 72916, 73043, 73209, 73336, 73502, 73628, 73755, 73921, 74048, 74214, 74340, 74507, 74633, 74800, 74926, 75052, 75219, 75345, 75512, 75638, 75804, 75931, 80057, 80224, 80350, 80516, 80643, 80809, 80936, 81102, 81228, 81355, 81521, 81648, 81814, 81940, 82107, 82233, 82400, 82526, 82652, 82819, 82945, 83112, 83238, 83404, 83531, 83657, 83824, 83950, 84116, 84243, 84409, 84536, 84702, 84828, 84955, 85121, 85248, 85414, 85540, 85707, 85833, 90000, 90126, 90252, 90419, 90545, 90712, 90838, 91004, 91131, 91257, 91424, 91550, 91716, 91843, 92009, 92136, 92302, 92428, 92555, 92721, 92848, 93014, 93140, 93307, 93433, 93600, 93726, 93852, 94019, 94145, 94312, 94438, 94604, 94731, 94857, 95024, 95150, 95316, 95443, 95609, 95736, 95902, 100028, 100155, 100321, 100448, 100614, 100740, 100907, 101033, 101200, 101326, 101452, 101619, 101745, 101912, 102038, 102204, 102331, 102457, 102624, 102750, 102916, 103043, 103209, 103336, 103502, 103628, 103755, 103921, 104048, 104214, 104340, 104507, 104633, 104800, 104926, 105052, 105219, 105345, 105512, 105638, 105804, 105931, 110057, 110224, 110350, 110516, 110643, 110809, 110936, 111102, 111228, 111355, 111521, 111648, 111814, 111940, 112107, 112233, 112400, 112526, 112652, 112819, 112945, 113112, 113238, 113404, 113531, 113657, 113824, 113950, 114116, 114243, 114409, 114536, 114702, 114828, 114955, 115121, 115248, 115414, 115540, 115707, 115833, 120000, 120126, 120252, 120419, 120545, 120712, 120838, 121004, 121131, 121257, 121424, 121550, 121716, 121843, 122009, 122136, 122302, 122428, 122555, 122721, 122848, 123014, 123140, 123307, 123433, 123600, 123726, 123852, 124019, 124145, 124312, 124438, 124604, 124731, 124857, 125024, 125150, 125316, 125443, 125609, 125736, 125902, 130028, 130155, 130321, 130448, 130614, 130740, 130907, 131033, 131200, 131326, 131452, 131619, 131745, 131912, 132038, 132204, 132331, 132457, 132624, 132750, 132916, 133043, 133209, 133336, 133502, 133628, 133755, 133921, 134048, 134214, 134340, 134507, 134633, 134800, 134926, 135052, 135219, 135345, 135512, 135638, 135804, 135931, 140057, 140224, 140350, 140516, 140643, 140809, 140936, 141102, 141228, 141355, 141521, 141648, 141814, 141940, 142107, 142233, 142400, 142526, 142652, 142819, 142945, 143112, 143238, 143404, 143531, 143657, 143824, 143950, 144116, 144243, 144409, 144536, 144702, 144828, 144955, 145121, 145248, 145414, 145540, 145707, 145833, 150000, 150126, 150252, 150419, 150545, 150712, 150838, 151004, 151131, 151257, 151424, 151550, 151716, 151843, 152009, 152136, 152302, 152428, 152555, 152721, 152848, 153014, 153140, 153307, 153433, 153600, 153726, 153852, 154019, 154145, 154312, 154438, 154604, 154731, 154857, 155024, 155150, 155316, 155443, 155609, 155736, 155902, 160028, 160155, 160321, 160448, 160614, 160740, 160907, 161033, 161200, 161326, 161452, 161619, 161745, 161912, 162038, 162204, 162331, 162457, 162624, 162750, 162916, 163043, 163209, 163336, 163502, 163628, 163755, 163921, 164048, 164214, 164340, 164507, 164633, 164800, 164926, 165052, 165219, 165345, 165512, 165638, 165804, 165931, 170057, 170224, 170350, 170516, 170643, 170809, 170936, 171102, 171228, 171355, 171521, 171648, 171814, 171940, 172107, 172233, 172400, 172526, 172652, 172819, 172945, 173112, 173238, 173404, 173531, 173657, 173824, 173950, 174116, 174243, 174409, 174536, 174702, 174828, 174955, 175121, 175248, 175414, 175540, 175707, 175833, 180000, 180126, 180252, 180419, 180545, 180712, 180838, 181004, 181131, 181257, 181424, 181550, 181716, 181843, 182009, 182136, 182302, 182428, 182555, 182721, 182848, 183014, 183140, 183307, 183433, 183600, 183726, 183852, 184019, 184145, 184312, 184438, 184604, 184731, 184857, 185024, 185150, 185316, 185443, 185609, 185736, 185902, 190028, 190155, 190321, 190448, 190614, 190740, 190907, 191033, 191200, 191326, 191452, 191619, 191745, 191912, 192038, 192204, 192331, 192457, 192624, 192750, 192916, 193043, 193209, 193336, 193502, 193628, 193755, 193921, 194048, 194214, 194340, 194507, 194633, 194800, 194926, 195052, 195219, 195345, 195512, 195638, 195804, 195931, 200057, 200224, 200350, 200516, 200643, 200809, 200936, 201102, 201228, 201355, 201521, 201648, 201814, 201940, 202107, 202233, 202400, 202526, 202652, 202819, 202945, 203112, 203238, 203404, 203531, 203657, 203824, 203950, 204116, 204243, 204409, 204536, 204702, 204828, 204955, 205121, 205248, 205414, 205540, 205707, 205833, 210000, 210126, 210252, 210419, 210545, 210712, 210838, 211004, 211131, 211257, 211424, 211550, 211716, 211843, 212009, 212136, 212302, 212428, 212555, 212721, 212847, 213014, 213140, 213307, 213433, 213559, 213726, 213852, 214019, 214145, 214311, 214438, 214604, 214731, 214857, 215023, 215150, 215316, 215443, 215609, 215735, 215902, 220028, 220155, 220321, 220447, 220614, 220740, 220907, 221033, 221159, 221326, 221452, 221619, 221745, 221911, 222038, 222204, 222331, 222457, 222623, 222750, 222916, 223043, 223209, 223335, 223502, 223628, 223755, 223921, 224047, 224214, 224340, 224507, 224633, 224759, 224926, 225052, 225219, 225345, 225511, 225638, 225804, 225931, 230057, 230223, 230350, 230516, 230643, 230809, 230935, 231102, 231228, 231355, 231521, 231647, 231814, 231940, 232107, 232233, 232359, 232526, 232652, 232819, 232945, 233111, 233238, 233404, 233531, 233657, 233823, 233950, 234116, 234243, 234409, 234535, 234702, 234828, 234955, 235121, 235247, 235414, 235540, 235707, 235833, 235959};
int steps_index;
int dTime;

void Watchy::init(){
    esp_sleep_wakeup_cause_t wakeup_reason;


@@ 25,7 24,7 @@ void Watchy::init(){
            RTC.alarm(ALARM_1); //resets the alarm flag in the RTC
            if(guiState == WATCHFACE_STATE){
                RTC.read(currentTime);
                temps();
                calculateur();
                showWatchFace(true); //partial updates on tick
            }else{
            //


@@ 36,7 35,7 @@ void Watchy::init(){
            break;
        default: //reset
            _rtcConfig();
            temps();
            calculateur();
            RTC.alarmInterrupt(ALARM_2, false);
            RTC.alarmInterrupt(ALARM_1, true); //enable alarm interrupt
    RTC.read(currentTime);


@@ 98,7 97,7 @@ void Watchy::handleButtonPress(){
    if(guiState == MAIN_MENU_STATE){//exit to watch face if already in menu
      RTC.alarm(ALARM_1); //resets the alarm flag in the RTC
      RTC.read(currentTime);
      temps();
      calculateur();
      showWatchFace(false);
    }else if(guiState == APP_STATE){
      showMenu(menuIndex, false);//exit to menu if already in app


@@ 458,10 457,10 @@ void Watchy::drawWatchFace(){
    display.setFont(&MADE_Sunflower_PERSONAL_USE39pt7b);
    display.setTextWrap(false);

    if (steps_index == 0) {
    if (dTime == 0) {
        displayTime = "NEW";
    } else {
        displayTime = String(1000 - steps_index);
        displayTime = String(1000 - dTime);
    }  

    display.getTextBounds(displayTime, x, y, &x1, &y1, &w, &h);


@@ 798,57 797,26 @@ void Watchy::updateFWBegin(){
    showMenu(menuIndex, false);
}

void Watchy::temps(){
    String seconds;
    String minutes;
    String hours;

    String curr_time;

    String next_step;

    int sets;
    int setm;

void Watchy::calculateur(){
    float fDMin;
    RTC.read(currentTime);

    seconds = String(currentTime.Second);
    minutes = String(currentTime.Minute);
    hours = String(currentTime.Hour);
    int secs_total = (currentTime.Hour * 3600) + (currentTime.Minute * 60) + currentTime.Second;

    if (currentTime.Second < 10) {
        seconds = 0 + seconds;
    }

    if (currentTime.Minute < 10) {
        minutes = 0 + minutes;
    if (secs_total == 86) {
      fDMin = (secs_total + 0.4) / 86.4;
    } else {
      fDMin = secs_total / 86.4;
    }

    curr_time = hours + minutes + seconds;
    dTime = floor(fDMin);

    for (int x = 0; x < 1000; x++) {
        if (curr_time.toInt() < steps[x]) {
            next_step = String(steps[x]);
            steps_index = x;
            break;
        }
    }

    if (next_step.length() == 3) {
        sets = (next_step.substring(1,3)).toInt();
        setm = (next_step.substring(0,1)).toInt();
        } else if (next_step.length() == 4) {
        sets = (next_step.substring(2,4)).toInt();
        setm = (next_step.substring(0,2)).toInt();
        } else if (next_step.length() == 5) {
        sets = (next_step.substring(3,5)).toInt();
        setm = (next_step.substring(1,3)).toInt();
        } else {
        sets = (next_step.substring(4,6)).toInt();
        setm = (next_step.substring(2,4)).toInt();
    }
    int next_wake = round((dTime * 86.4) + 86.4);
 
    int next_wake_m = floor(next_wake / 60 % 60);
    int next_wake_s = floor(next_wake % 60);

    RTC.setAlarm(ALM1_MATCH_MINUTES, sets, setm, 0, 0); //alarm wakes up Watchy every minute
    RTC.setAlarm(ALM1_MATCH_MINUTES, next_wake_s, next_wake_m, 0, 0);
}

// time_t compileTime()

M Calculateur.h => Calculateur.h +1 -1
@@ 45,7 45,7 @@ class Watchy {
        void updateFWBegin();

        void showWatchFace(bool partialRefresh);
        void temps();
        void calculateur();
        virtual void drawWatchFace(); //override this method for different watch faces

    private: