TIDA-010247: about void check_signal_pattern()

Part Number: TIDA-010247

Tool/software:

Dear TI expert,

Currently i am designing new project which is very similar with TIDA-010247, i am learning TIDA-010247, about check_signal_pattern() function, i am not understand. I do not know why use the Systick_counter variable, which is added 1 every TIMER0 interrupt. the period is 100ms.

current_counter = Systick_counter;  //50ms per Counter , i do not understand this. Can you explain?
bool check_signal_pattern()
{
    static int state                = 0;
    static uint32_t last_time       = 0;
    static uint32_t current_time    = 0;
    static uint32_t current_counter = 0;
    static uint32_t last_counter    = 0;

    double elapsed_time = 0;
    int input_level     = DL_GPIO_readPins(WAKE_IN_MCU_PORT, WAKE_IN_MCU_PIN);

    current_time    = SysTick->VAL;     //12.5ns per Tick, max 4000000
    current_counter = Systick_counter;  //50ms per Counter

    if (current_counter == last_counter) {
        elapsed_time = (double) (current_time - last_time) * 12.5 /
                       1000000;  // convert to ms
    } else if (current_counter > last_counter) {
        elapsed_time = (double) (4000000 * (current_counter - last_counter) -
                                 last_time + current_time) *
                       12.5 / 1000000;  // convert to ms
    } else {
        elapsed_time =
            (double) (4000000 * (1200 - last_counter + current_counter) -
                      last_time + current_time) *
            12.5 / 1000000;  // convert to ms
    }

    switch (state) {
        case 0:
            if (input_level == WAKE_IN_MCU_PIN) {
                state        = 1;
                last_time    = current_time;
                last_counter = current_counter;
            }
            break;
        case 1:
            if (elapsed_time >=
                DEBOUNCE_TIME) {  //DEBOUNCE TIME is defined to 1ms
                if (input_level == 0) {
                    state        = 2;
                    last_time    = current_time;
                    last_counter = current_counter;
                } else {
                    state = 0;
                }
            }

            break;
        case 2:
            if (elapsed_time >= DEBOUNCE_TIME) {
                if (input_level == WAKE_IN_MCU_PIN) {
                    state        = 3;
                    last_time    = current_time;
                    last_counter = current_counter;
                } else {
                    state = 0;
                }
            }
            break;
        case 3:
            if (elapsed_time >= DEBOUNCE_TIME) {
                if (input_level == 0) {
                    gWAKEINMCU = true;
                    state      = 0;
                } else {
                    state = 0;
                }
            }
            break;
    }

    return gWAKEINMCU;
}