AB&T / Mbed OS EasyCAT_LAB

Dependencies:   SOEM SPI_STMPE610 SPI_TFT_ILI9341 TFT_fonts

Committer:
sulymarco
Date:
Tue Jun 11 10:19:08 2019 +0000
Revision:
0:7077d8f28b3e
Added SPI speed parameter

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sulymarco 0:7077d8f28b3e 1 /*
sulymarco 0:7077d8f28b3e 2 * Licensed under the GNU General Public License version 2 with exceptions. See
sulymarco 0:7077d8f28b3e 3 * LICENSE file in the project root for full license information
sulymarco 0:7077d8f28b3e 4 */
sulymarco 0:7077d8f28b3e 5
sulymarco 0:7077d8f28b3e 6 #include "mbed.h"
sulymarco 0:7077d8f28b3e 7
sulymarco 0:7077d8f28b3e 8 #include <osal.h>
sulymarco 0:7077d8f28b3e 9 #include <config.h>
sulymarco 0:7077d8f28b3e 10
sulymarco 0:7077d8f28b3e 11
sulymarco 0:7077d8f28b3e 12 uint64_t tick = 0;
sulymarco 0:7077d8f28b3e 13 uint64_t last_tick = 0;
sulymarco 0:7077d8f28b3e 14
sulymarco 0:7077d8f28b3e 15
sulymarco 0:7077d8f28b3e 16 #define timercmp(a, b, CMP) \
sulymarco 0:7077d8f28b3e 17 (((a)->tv_sec == (b)->tv_sec) ? \
sulymarco 0:7077d8f28b3e 18 ((a)->tv_usec CMP (b)->tv_usec) : \
sulymarco 0:7077d8f28b3e 19 ((a)->tv_sec CMP (b)->tv_sec))
sulymarco 0:7077d8f28b3e 20
sulymarco 0:7077d8f28b3e 21
sulymarco 0:7077d8f28b3e 22 #define timeradd(a, b, result) \
sulymarco 0:7077d8f28b3e 23 do{ \
sulymarco 0:7077d8f28b3e 24 (result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \
sulymarco 0:7077d8f28b3e 25 (result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \
sulymarco 0:7077d8f28b3e 26 if ((result)->tv_usec >= 1000000) \
sulymarco 0:7077d8f28b3e 27 { \
sulymarco 0:7077d8f28b3e 28 ++(result)->tv_sec; \
sulymarco 0:7077d8f28b3e 29 (result)->tv_usec -= 1000000; \
sulymarco 0:7077d8f28b3e 30 } \
sulymarco 0:7077d8f28b3e 31 } while (0)
sulymarco 0:7077d8f28b3e 32 #define timersub(a, b, result) \
sulymarco 0:7077d8f28b3e 33 do { \
sulymarco 0:7077d8f28b3e 34 (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
sulymarco 0:7077d8f28b3e 35 (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
sulymarco 0:7077d8f28b3e 36 if ((result)->tv_usec < 0) { \
sulymarco 0:7077d8f28b3e 37 --(result)->tv_sec; \
sulymarco 0:7077d8f28b3e 38 (result)->tv_usec += 1000000; \
sulymarco 0:7077d8f28b3e 39 } \
sulymarco 0:7077d8f28b3e 40 } while (0)
sulymarco 0:7077d8f28b3e 41
sulymarco 0:7077d8f28b3e 42
sulymarco 0:7077d8f28b3e 43 #define CFG_TICKS_PER_SECOND 1000000
sulymarco 0:7077d8f28b3e 44 #define USECS_PER_SEC 1000000
sulymarco 0:7077d8f28b3e 45 #define USECS_PER_TICK (USECS_PER_SEC / CFG_TICKS_PER_SECOND)
sulymarco 0:7077d8f28b3e 46
sulymarco 0:7077d8f28b3e 47
sulymarco 0:7077d8f28b3e 48
sulymarco 0:7077d8f28b3e 49 int gettimeofday_(struct timeval *tp, void *tzp)
sulymarco 0:7077d8f28b3e 50 {
sulymarco 0:7077d8f28b3e 51 //tick_t tick = tick_get();
sulymarco 0:7077d8f28b3e 52 uint32_t actual_tick = us_ticker_read();
sulymarco 0:7077d8f28b3e 53 tick += (actual_tick - last_tick);
sulymarco 0:7077d8f28b3e 54 last_tick = actual_tick;
sulymarco 0:7077d8f28b3e 55
sulymarco 0:7077d8f28b3e 56 //tick_t ticks_left;
sulymarco 0:7077d8f28b3e 57 uint64_t ticks_left;
sulymarco 0:7077d8f28b3e 58
sulymarco 0:7077d8f28b3e 59 tp->tv_sec = tick / CFG_TICKS_PER_SECOND;
sulymarco 0:7077d8f28b3e 60 ticks_left = tick % CFG_TICKS_PER_SECOND;
sulymarco 0:7077d8f28b3e 61 tp->tv_usec = ticks_left * USECS_PER_TICK;
sulymarco 0:7077d8f28b3e 62
sulymarco 0:7077d8f28b3e 63 return 0;
sulymarco 0:7077d8f28b3e 64 }
sulymarco 0:7077d8f28b3e 65
sulymarco 0:7077d8f28b3e 66 int osal_usleep (uint32 usec)
sulymarco 0:7077d8f28b3e 67 {
sulymarco 0:7077d8f28b3e 68 wait_us(usec);
sulymarco 0:7077d8f28b3e 69 return 0;
sulymarco 0:7077d8f28b3e 70 }
sulymarco 0:7077d8f28b3e 71
sulymarco 0:7077d8f28b3e 72
sulymarco 0:7077d8f28b3e 73 int osal_gettimeofday(struct timeval *tv, struct timezone *tz)
sulymarco 0:7077d8f28b3e 74 {
sulymarco 0:7077d8f28b3e 75 return gettimeofday_(tv, tz);
sulymarco 0:7077d8f28b3e 76 }
sulymarco 0:7077d8f28b3e 77
sulymarco 0:7077d8f28b3e 78
sulymarco 0:7077d8f28b3e 79 ec_timet osal_current_time (void)
sulymarco 0:7077d8f28b3e 80 {
sulymarco 0:7077d8f28b3e 81 struct timeval current_time;
sulymarco 0:7077d8f28b3e 82 ec_timet return_value;
sulymarco 0:7077d8f28b3e 83
sulymarco 0:7077d8f28b3e 84 gettimeofday_ (&current_time, 0);
sulymarco 0:7077d8f28b3e 85 return_value.sec = current_time.tv_sec;
sulymarco 0:7077d8f28b3e 86 return_value.usec = current_time.tv_usec;
sulymarco 0:7077d8f28b3e 87 return return_value;
sulymarco 0:7077d8f28b3e 88 }
sulymarco 0:7077d8f28b3e 89
sulymarco 0:7077d8f28b3e 90 void osal_timer_start (osal_timert * self, uint32 timeout_usec)
sulymarco 0:7077d8f28b3e 91 {
sulymarco 0:7077d8f28b3e 92 struct timeval start_time;
sulymarco 0:7077d8f28b3e 93 struct timeval timeout;
sulymarco 0:7077d8f28b3e 94 struct timeval stop_time;
sulymarco 0:7077d8f28b3e 95
sulymarco 0:7077d8f28b3e 96 gettimeofday_ (&start_time, 0);
sulymarco 0:7077d8f28b3e 97 timeout.tv_sec = timeout_usec / USECS_PER_SEC;
sulymarco 0:7077d8f28b3e 98 timeout.tv_usec = timeout_usec % USECS_PER_SEC;
sulymarco 0:7077d8f28b3e 99 timeradd (&start_time, &timeout, &stop_time);
sulymarco 0:7077d8f28b3e 100
sulymarco 0:7077d8f28b3e 101 self->stop_time.sec = stop_time.tv_sec;
sulymarco 0:7077d8f28b3e 102 self->stop_time.usec = stop_time.tv_usec;
sulymarco 0:7077d8f28b3e 103 }
sulymarco 0:7077d8f28b3e 104
sulymarco 0:7077d8f28b3e 105 boolean osal_timer_is_expired (osal_timert * self)
sulymarco 0:7077d8f28b3e 106 {
sulymarco 0:7077d8f28b3e 107 struct timeval current_time;
sulymarco 0:7077d8f28b3e 108 struct timeval stop_time;
sulymarco 0:7077d8f28b3e 109 int is_not_yet_expired;
sulymarco 0:7077d8f28b3e 110
sulymarco 0:7077d8f28b3e 111 gettimeofday_ (&current_time, 0);
sulymarco 0:7077d8f28b3e 112 stop_time.tv_sec = self->stop_time.sec;
sulymarco 0:7077d8f28b3e 113 stop_time.tv_usec = self->stop_time.usec;
sulymarco 0:7077d8f28b3e 114 is_not_yet_expired = timercmp (&current_time, &stop_time, <);
sulymarco 0:7077d8f28b3e 115
sulymarco 0:7077d8f28b3e 116 return is_not_yet_expired == false;
sulymarco 0:7077d8f28b3e 117 }