source: rubycfg_ssp/trunk/eventflag.trb@ 285

Last change on this file since 285 was 285, checked in by nmir-saito, 7 years ago

Tracのソース閲覧時に文字化けするためmimetypewo

  • Property svn:mime-type set to text/plain; charset=utf-8
File size: 4.9 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# TOPPERS/SSP Kernel
4# Toyohashi Open Platform for Embedded Real-Time Systems/
5# Advanced Standard Profile Kernel
6#
7# Copyright (C) 2015 by FUJI SOFT INCORPORATED, JAPAN
8# Copyright (C) 2015,2016 by Embedded and Real-Time Systems Laboratory
9# Graduate School of Information Science, Nagoya Univ., JAPAN
10# Copyright (C) 2017 by Naoki Saito
11# Nagoya Municipal Industrial Research Institute, JAPAN
12#
13# 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
14# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
15# 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
16# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
17# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
18# スコード中に含まれていること.
19# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
20# 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
21# 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
22# の無保証規定を掲載すること.
23# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
24# 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
25# と.
26# (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
27# 作権表示,この利用条件および下記の無保証規定を掲載すること.
28# (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
29# 報告すること.
30# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
31# 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
32# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
33# 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
34# 免責すること.
35#
36# 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
37# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
38# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
39# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
40# の責任を負わない.
41#
42# $Id: eventflag.trb 588 2016-02-05 12:54:58Z ertl-hiro $
43#
44
45#
46# イベントフラグ機能の生成スクリプト
47#
48
49class EventflagObject < KernelObject
50 def initialize()
51 super("flg", "eventflag")
52 end
53
54 def prepare()
55 $cfgData[@api].sort.each do |key, params|
56 # flgatrが無効の場合(E_RSATR)
57 #(TA_CLR以外のビットがセットされている場合)
58 if (params[:flgatr] & ~($TA_CLR)) != 0
59 error_illegal_id("E_RSATR", params, :flgatr, :flgid)
60 end
61
62 # iflgptnがFLGPTNに格納できない場合(E_PAR)
63 if (params[:iflgptn] & ~((1 << $TBIT_FLGPTN) - 1)) != 0
64 error_wrong_id("E_PAR", params, :iflgptn, :flgid, "too large")
65 end
66 end
67 end
68
69 def generateData()
70 #
71 # オブジェクト初期化ブロックの生成
72 #
73 if $cfgData[:CRE_FLG].size() > 0
74 # 事前準備(エラーチェック,メモリ領域の生成)
75 prepare()
76
77 # イベントフラグ属性(flgatr)
78 $kernelCfgC.append("const ATR\t_kernel_flginib_atr[TNUM_FLGID] = {")
79 $cfgData[@api].each.with_index do |id, index|
80 flgatr = id[1][:flgatr]
81 $kernelCfgC.append(",") if index > 0
82 $kernelCfgC.append("(#{flgatr.str})")
83 end
84 $kernelCfgC.add("};")
85
86 # イベントフラグパターンの初期値(iflgptn)
87 $kernelCfgC.append("const FLGPTN\t_kernel_flginib_iflgptn[TNUM_FLGID] = {")
88 $cfgData[@api].each.with_index do |id, index|
89 $kernelCfgC.append(",") if index > 0
90 $kernelCfgC.append("(#{id[1][:iflgptn].str})")
91 end
92 $kernelCfgC.add("};")
93
94 # イベントフラグの現在のフラグパターンを格納する変数
95 $kernelCfgC.add2("FLGPTN\t_kernel_flgcb_flgptn[TNUM_FLGID];")
96
97 else
98 # オブジェクトが1つもない場合
99 $kernelCfgC.add("TOPPERS_EMPTY_LABEL(const ATR, _kernel_flginib_atr);")
100 $kernelCfgC.add("TOPPERS_EMPTY_LABEL(const FLGPTN, _kernel_flginib_iflgptn);")
101 $kernelCfgC.add2("TOPPERS_EMPTY_LABEL(FLGPTN, _kernel_flgcb_flgptn);")
102 end
103 end
104end
105
106#
107# イベントフラグに関する情報の生成
108#
109$kernelCfgC.comment_header("Eventflag Functions")
110EventflagObject.new.generate()
Note: See TracBrowser for help on using the repository browser.