FreeCalypso > hg > fc-magnetite
comparison src/cs/riviera/rvf/rvf_target.h @ 365:f8ad9dcadde0
RV timing: better RVF_MS_TO_TICKS() formula
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Sun, 31 Dec 2017 06:32:33 +0000 |
| parents | 945cf7f506b2 |
| children |
comparison
equal
deleted
inserted
replaced
| 364:44795dbadbae | 365:f8ad9dcadde0 |
|---|---|
| 124 #ifdef _WINDOWS | 124 #ifdef _WINDOWS |
| 125 #define RVF_MS_TO_TICKS(_x) ((_x) / 50) | 125 #define RVF_MS_TO_TICKS(_x) ((_x) / 50) |
| 126 #define RVF_SECS_TO_TICKS(_x) (((_x) * 1000) / 50) | 126 #define RVF_SECS_TO_TICKS(_x) (((_x) * 1000) / 50) |
| 127 #define RVF_TICKS_TO_MS(_x) ((_x) * 50) | 127 #define RVF_TICKS_TO_MS(_x) ((_x) * 50) |
| 128 #else | 128 #else |
| 129 #if 1 /* new FreeCalypso code */ | |
| 130 /* | |
| 131 * In the present GSM firmware, the Nucleus tick is the TDMA frame, | |
| 132 * and the duration of one TDMA frame by definition equals 60/13 ms. | |
| 133 * Hence we use the natural factors of 13 and 60 instead of TI's | |
| 134 * 200 and 923 (computed to fit the rounded 4.615 ms value), | |
| 135 * and get not only better accuracy, but also a greater maximum | |
| 136 * time value: 330382 s (just under 4 days) instead of the old maximum | |
| 137 * of 21474 s (just under 6 h). | |
| 138 */ | |
| 139 #define RVF_MS_TO_TICKS(_x) ((((_x) * 13) + 30) / 60) | |
| 140 #define RVF_SECS_TO_TICKS(_x) ((((_x) * 13000) + 30) / 60) | |
| 141 /* RVF_TICKS_TO_MS() macro was unused and is being removed */ | |
| 142 #else /* old code from TI */ | |
| 129 /* | 143 /* |
| 130 * To avoid floating point computation, the tick duration 4.615 ms can be | 144 * To avoid floating point computation, the tick duration 4.615 ms can be |
| 131 * resolved to the fraction : 923/200. | 145 * resolved to the fraction : 923/200. |
| 132 * | 146 * |
| 133 * Due to the multiplication with 200, the maximum usable value for | 147 * Due to the multiplication with 200, the maximum usable value for |
| 137 */ | 151 */ |
| 138 #define RVF_MS_TO_TICKS(_x) ((((_x) * 200) + 462) / 923) | 152 #define RVF_MS_TO_TICKS(_x) ((((_x) * 200) + 462) / 923) |
| 139 #define RVF_SECS_TO_TICKS(_x) ((((_x) * 1000 * 200) + 462) / 923) | 153 #define RVF_SECS_TO_TICKS(_x) ((((_x) * 1000 * 200) + 462) / 923) |
| 140 #define RVF_TICKS_TO_MS(_x) ((((_x) * 923) + 100) / 200) | 154 #define RVF_TICKS_TO_MS(_x) ((((_x) * 923) + 100) / 200) |
| 141 #endif | 155 #endif |
| 156 #endif | |
| 142 | 157 |
| 143 #endif /* _RVF_TARGET_H */ | 158 #endif /* _RVF_TARGET_H */ |
