#include "app_utils.h" #include #include "utils.h" #include "wm_crypto_hard.h" static uint32_t millis_cnt = 0; uint32_t millis(void) { return millis_cnt; } void millis_run_cb(void *arg) { millis_cnt++; } void us_delay(uint32_t us) { struct tls_timer_cfg timer_config = { .is_repeat = false, .unit = TLS_TIMER_UNIT_US, .timeout = 0xFFFFFFFF, }; uint8_t timer_id = tls_timer_create(&timer_config); if(WM_TIMER_ID_INVALID == timer_id) return; tls_timer_start(timer_id); // Perform a blocking delay while(tls_timer_read(timer_id) < us); tls_timer_destroy(timer_id); } void ms_delay(uint32_t ms) { struct tls_timer_cfg timer_config = { .is_repeat = false, .unit = TLS_TIMER_UNIT_MS, .timeout = 0xFFFFFFFF, }; uint8_t timer_id = tls_timer_create(&timer_config); if(WM_TIMER_ID_INVALID == timer_id) return; tls_timer_start(timer_id); // Perform a blocking delay while(tls_timer_read(timer_id) < ms); tls_timer_destroy(timer_id); } uint32_t random_gen_6_digit(void) { unsigned char random_buf[6] = {0}; uint32_t output_num = 0; tls_crypto_random_init(0x19031998, CRYPTO_RNG_SWITCH_16); tls_crypto_random_bytes(random_buf, sizeof random_buf); tls_crypto_random_stop(); for(uint8_t i = 0; i < sizeof random_buf; i++) { // Ensures the last digit is not 0 if(i == (sizeof random_buf) - 1 && random_buf[i] % 10 == 0)random_buf[i]++; output_num += (random_buf[i] % 10) * pow(10, i); } return output_num; } void time_date_to_tm(const char *time_date, struct tm *time) { if(!time_date) return; /* Months are on three letters : Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec */ const char *MONTHS[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; const unsigned long int MONTHS_CNT = sizeof(MONTHS)/sizeof(*MONTHS); char month[4]; time->tm_mon = 0; sscanf(time_date, "%d:%d:%d %s %d %d", &time->tm_hour, &time->tm_min, &time->tm_sec, month, &time->tm_mday, &time->tm_year); for(unsigned long int i = 0; i < MONTHS_CNT; i++) { if(strcasecmp(MONTHS[i], month) == 0) { time->tm_mon = i; break; } } // Adjust year value time->tm_year -= 1900; }