Changeset 95 for ssp_qb_r5f100le_cs/trunk/extension/time_event.c
- Timestamp:
- Jun 2, 2015, 3:39:53 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ssp_qb_r5f100le_cs/trunk/extension/time_event.c
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 5 5 * Copyright (C) 2011 by Meika Sugimoto 6 6 * 7 * ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF 8 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»EüÏE 9 * ÄzziȺCpÆÄÔj·é±Æð³Åø·éD 10 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 11 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[X 12 * R[hÉÜÜêÄ¢é±ÆD 13 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉgp 14 * Å«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 15 gipÒ} 16 * j 17 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺLÌ³Û 18 * ØKèðfÚ·é±ÆD 19 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉgp 20 * Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌì 24 * \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ 26 * ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹Q 28 * ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDܽC 29 * {\tgEFAÌ[UܽÍGh[U©çÌ¢©ÈéRÉîà 30 * ¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 7 * 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ 8 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・ 9 * 再配布(以下,利用と呼ぶ)することを無償で許諾する. 10 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権 11 * 表示,この利用条件および下記の無保証規定が,そのままの形でソース 12 * コード中に含まれていること. 13 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用 14 * できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ 15 * ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保 16 * 証規定を掲載すること. 17 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用 18 * できない形で再配布する場合には,次のいずれかの条件を満たすこと. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作 20 * 権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報 22 * 告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害 24 * からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また, 25 * 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ 26 * く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 31 27 * 32 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ33 * ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉη34 * éK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEFAÌp35 * Éæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»ÌÓCð36 * íÈ¢D28 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ 29 * びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す 30 * る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用 31 * により直接的または間接的に生じたいかなる損害に関しても,その責任を負 32 * わない. 37 33 * 38 34 */ … … 44 40 45 41 /* 46 * »ÝÌVXeiPÊ: 1~bj42 * 現在のシステム時刻(単位: 1ミリ秒) 47 43 * 48 * µ§ÉÍCOÌ^CeBbNÌVXeD44 * 厳密には,前のタイムティックのシステム時刻. 49 45 */ 50 46 EVTTIM current_time; 51 47 52 48 /* 53 * ^CCxgq[vÅLøÈŬÌVXeiPÊ: 1~bj49 * タイムイベントヒープ中で有効な最小のシステム時刻(単位: 1ミリ秒) 54 50 */ 55 51 EVTTIM min_time; … … 57 53 58 54 /* 59 * ^CCxgL 60 [ÌL 61 [wb_ 55 * タイムイベントキューのキューヘッダ 62 56 * 63 * ^CCxgL 64 [ubNÌI[ÉmÛ·éD 57 * タイムイベントキューブロックの終端に確保する. 65 58 */ 66 59 #define TMEVT_HEAD() (tmevt_queue[tnum_tmevt_queue]) … … 68 61 69 62 /* 70 * Cxg¶är}N63 * イベント発生時刻比較マクロ 71 64 * 72 * Cxg¶ÍCmin_time©çÌÎlÅär·éD·Èí¿C73 * min_time ðŬliÅàߢjCmit_time-1ªÅåliÅà¢j74 * ÆÝȵÄär·éD65 * イベント発生時刻は,min_timeからの相対値で比較する.すなわち, 66 * min_timeを最小値(最も近い時刻),mit_time-1が最大値(最も遠い時刻) 67 * とみなして比較する. 75 68 */ 76 69 #define EVTTIM_LT(t1, t2) (((t1) - min_time) < ((t2) - min_time)) … … 78 71 79 72 /* 80 * ^CCxgÌú»73 * タイムイベントの初期化 81 74 */ 82 75 … … 86 79 initialize_time_event(void) 87 80 { 88 /* ÏÌú»*/81 /* 変数の初期化 */ 89 82 current_time = 0U; 90 83 min_time = 0U; 91 84 92 /* ^CCxgL 93 [Ìú» */ 85 /* タイムイベントキューの初期化 */ 94 86 queue_initialize(&TMEVT_HEAD() , (QUEIDX)tnum_tmevt_queue); 95 87 } … … 98 90 99 91 /* 100 * ^CCxgÌo^92 * タイムイベントの登録 101 93 */ 102 94 … … 108 100 QUEIDX pos = TMEVT_HEAD().next; 109 101 110 /* }üÊuðõ*/102 /* 挿入位置を検索 */ 111 103 while((pos != TMEVT_NULL) 112 104 && (EVTTIM_LE(tmevt_time[pos] , evttim))) { … … 114 106 } 115 107 116 /* L 117 [É}ü */ 108 /* キューに挿入 */ 118 109 queue_insert_prev(&(tmevt_queue[0]) , pos , (QUEIDX)tmevtid); 119 110 tmevt_callback[tmevtid] = (CBACK)callback; … … 125 116 126 117 /* 127 * ^CCxgÌí118 * タイムイベントの削除 128 119 */ 129 120 … … 133 124 time_event_dequeue(ID tmevtid) 134 125 { 135 /* L 136 [©çí */ 126 /* キューから削除 */ 137 127 (void)queue_delete_next(&(tmevt_queue[0]) , (QUEIDX)tmevtid); 138 128 } … … 141 131 142 132 /* 143 * VXeÌÊm133 * システム時刻の通知 144 134 */ 145 135 … … 153 143 i_lock_cpu(); 154 144 155 /* »ÝÌXV*/145 /* 現在時刻の更新 */ 156 146 current_time += (EVTTIM)TIC_NUME; 157 147 158 /* R[obNÌÀs*/148 /* コールバックの実行 */ 159 149 while((pos != TMEVT_NULL) 160 150 && EVTTIM_LT(tmevt_time[pos] , current_time)) { … … 165 155 } 166 156 167 /* min_time ÌXV*/157 /* min_timeの更新 */ 168 158 min_time = current_time; 169 159 -
Property svn:mime-type
set to
Note:
See TracChangeset
for help on using the changeset viewer.