Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/trunk/asp3_dcre/cfg/pass2.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    77#              Graduate School of Information Science, Nagoya Univ., JAPAN
    88#
    9 #  上記著作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11 #  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    12 #  変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14 #  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15 #      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    16 #      スコード中に含まれていること.
    17 #  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18 #      用できる形で再é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21 #      è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23 #      の無保証規定を掲載すること.
    24 #  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25 #      用できない形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27 #      と.
    28 #    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31 #        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32 #    (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35 #        報告すること.
    36 #  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37 #      害からも,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40 #      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    41 #      由に基づく請求からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43 #      å
    44 è²¬ã™ã‚‹ã“と.
    45 #
    46 #  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    47 ãŠ
    48 #  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49 #  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    50 #  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    51 #  の責任を負わない.
     9#  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10#  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11#  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12#  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13#      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14#      スコード中に含まれていること.
     15#  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16#      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17#      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18#      の無保証規定を掲載すること.
     19#  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20#      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21#      と.
     22#    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23#        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24#    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25#        報告すること.
     26#  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27#      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28#      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29#      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30#      免責すること.
     31#
     32#  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33#  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34#  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35#  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36#  の責任を負わない.
    5237#
    5338#  $Id$
     
    5540
    5641#
    57 #               ãƒ‘ス2の処理
    58 #
    59 
    60 #
    61 ãƒ‘ス1の生成物の読み込み
     42#               パス2の処理
     43#
     44
     45#
     46パス1の生成物の読み込み
    6247#
    6348module Cfg1Out
    6449  #
    65   #  Sレコードファイルからシンボルの値を取り出す
     50  #  Sレコードファイルからシンボルの値を取り出す
    6651  #
    6752  def self.GetSymbolValue(symbol, size, signed)
     
    7459
    7560  #
    76   #  パス1の生成物の読み込み(メインの処理)
     61  #  パス1の生成物の読み込み(メインの処理)
    7762  #
    7863  def self.Read
    79     # cfg1_out.symsの読み込み
     64    # cfg1_out.symsの読み込み
    8065    @symbolAddress = ReadSymbolFile(CFG1_OUT_SYMS)
    8166
    82     # cfg1_out.srecの読み込み
     67    # cfg1_out.srecの読み込み
    8368    begin
    8469      @cfg1SRec = SRecord.new(CFG1_OUT_SREC)
     
    8772    end
    8873
    89     # マジックナンバーの取得
     74    # マジックナンバーの取得
    9075    if @symbolAddress.has_key?(CFG1_MAGIC_NUM)
    9176      $asmLabel = ""
     
    10893    end
    10994
    110     # 固定出力した変数の取得
     95    # 固定出力した変数の取得
    11196    $sizeOfSigned = GetSymbolValue($asmLabel + CFG1_SIZEOF_SIGNED, 4, false)
    11297
    113     # 値取得シンボルの取得
     98    # 値取得シンボルの取得
    11499    $symbolValueTable.each do |symbolName, symbolData|
    115100      symbol = $cfg1_prefix + symbolName
     
    117102        value = GetSymbolValue(symbol, $sizeOfSigned, true)
    118103        if !value.nil?
    119           # C言語の真偽値をRubyの真偽値に変換して取り込む
     104          # C言語の真偽値をRubyの真偽値に変換して取り込む
    120105          symbolData[:VALUE] = (value != 0)
    121106        end
     
    130115
    131116    #
    132     #  ハッシュの初期化
     117    #  ハッシュの初期化
    133118    #
    134119    $cfgData = {}
     
    148133
    149134    #
    150     #  ドメイン生成データをコンフィギュレーションデータ($cfgData)に格納
     135    #  ドメイン生成データをコンフィギュレーションデータ($cfgData)に格納
    151136    #
    152137    $cfgData[:CRE_DOM] = {}
     
    160145
    161146  #
    162   #  パラメータの値を取り出す
     147  #  パラメータの値を取り出す
    163148  #
    164149  def self.GetParamValue(paramName, param, apiIndex, index, apiParam, cfgInfo)
    165     if apiParam.has_key?(:ID_DEF)                               # オブジェクト識別名(定義)
     150    if apiParam.has_key?(:ID_DEF)                               # オブジェクト識別名(定義)
    166151      value = @objidValues[paramName][param]
    167     elsif apiParam.has_key?(:ID_REF)                    # オブジェクト識別名(参ç
    168 §ï¼‰
     152    elsif apiParam.has_key?(:ID_REF)                    # オブジェクト識別名(参照)
    169153      if @objidValues[paramName].has_key?(param)
    170154        value = @objidValues[paramName][param]
     
    176160        value = nil
    177161      end
    178     elsif apiParam.has_key?(:EXPTYPE)                   # 整数定数式パラメータ
     162    elsif apiParam.has_key?(:EXPTYPE)                   # 整数定数式パラメータ
    179163      if apiIndex.nil?
    180164        if param.is_a?(NumStr)
     
    188172                                                                        apiParam.has_key?(:SIGNED))
    189173      end
    190     else                                                                                # 一般定数式/文字列パラメータ
     174    else                                                                                # 一般定数式/文字列パラメータ
    191175      return(param)
    192176    end
     
    195179
    196180  #
    197   #  指定したフェーズのためのパス1の生成物の読み込み
     181  #  指定したフェーズのためのパス1の生成物の読み込み
    198182  #
    199183  def self.ReadPhase(phase)
    200184    #
    201     #  オブジェクトIDの割当て
    202     #
    203     # 割り当てたオブジェクトIDは,@objidValuesに保持する.@objidValuesは,
    204     # 2重のハッシュ(ハッシュのハッシュ)である.
    205     #
    206     # å
    207 ·ä½“的には,@objidValuesは,オブジェクトIDのパラメータ名(例えば,セ
    208     # マフォIDであれば"semid".これを保持する変数名は,objidParamNameとす
    209     # る)をキーとし,そのオブジェクトIDの割当て表(これを保持する変数名
    210     # は,objidListとする)を値とするハッシュである.オブジェクトIDの割当
    211     # て表は,オブジェクト名(これを保持する変数名は,objNameとする)をキー
    212     # とし,そのID番号(これを保持する変数名は,objidNumberとする)を値と
    213     # するハッシュである.
    214     #
    215     # 例えば,セマフォSEM1のID番号が1の場合には,次のように設定される.
     185    #  オブジェクトIDの割当て
     186    #
     187    # 割り当てたオブジェクトIDは,@objidValuesに保持する.@objidValuesは,
     188    # 2重のハッシュ(ハッシュのハッシュ)である.
     189    #
     190    # 具体的には,@objidValuesは,オブジェクトIDのパラメータ名(例えば,セ
     191    # マフォIDであれば"semid".これを保持する変数名は,objidParamNameとす
     192    # る)をキーとし,そのオブジェクトIDの割当て表(これを保持する変数名
     193    # は,objidListとする)を値とするハッシュである.オブジェクトIDの割当
     194    # て表は,オブジェクト名(これを保持する変数名は,objNameとする)をキー
     195    # とし,そのID番号(これを保持する変数名は,objidNumberとする)を値と
     196    # するハッシュである.
     197    #
     198    # 例えば,セマフォSEM1のID番号が1の場合には,次のように設定される.
    216199    #   @objidValues["semid"]["SEM1"] == 1
    217200    #
    218201
    219     # ID番号割り当ての前処理
     202    # ID番号割り当ての前処理
    220203    objidParamNameList = []
    221204    $cfgFileInfo.each do |cfgInfo|
    222       # プリプロセッサディレクティブは読み飛ばす
     205      # プリプロセッサディレクティブは読み飛ばす
    223206      next if cfgInfo.has_key?(:DIRECTIVE)
    224207
    225208      apiDef = $apiDefinition[cfgInfo[:APINAME]]
    226       # 異なるフェーズの静的APIは読み飛ばす
     209      # 異なるフェーズの静的APIは読み飛ばす
    227210      next if apiDef[:PHASE] != phase
    228211
    229212      apiIndex = cfgInfo[:INDEX]
    230213      if !apiIndex.nil?
    231         # シンボルファイルに静的APIのインデックスが存在しなければ読み飛
    232         # ばす(ifdef等で消えた静的API)
     214        # シンボルファイルに静的APIのインデックスが存在しなければ読み飛
     215        # ばす(ifdef等で消えた静的API)
    233216        symbol = "#{$cfg1_prefix}static_api_#{apiIndex}"
    234217        next unless @symbolAddress.has_key?(symbol)
     
    240223          objName = cfgInfo[objidParamName]
    241224          if $inputObjid.has_key?(objName)
    242             # ID番号å
    243 ¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã«å®šç¾©ã•ã‚Œã¦ã„た場合
     225            # ID番号入力ファイルに定義されていた場合
    244226            @objidValues[objidParamName][objName] = $inputObjid[objName]
    245227          else
     
    251233    end
    252234
    253     # ID番号の割当て処理
     235    # ID番号の割当て処理
    254236    objidParamNameList.each do |objidParamName|
    255237      objidList = @objidValues[objidParamName]
    256238
    257       # 未使用のID番号のリスト(使用したものから消していく)
     239      # 未使用のID番号のリスト(使用したものから消していく)
    258240      unusedObjidList = (1.upto(objidList.keys.size)).to_a
    259241
    260       # 割り当て済みのID番号の処理
     242      # 割り当て済みのID番号の処理
    261243      objidList.each do |objName, objidNumber|
    262244        if $inputObjid.has_key?(objName)
    263245          objidIndex = unusedObjidList.index($inputObjid[objName])
    264246          if objidIndex.nil?
    265             # ID番号å
    266 ¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã§æŒ‡å®šã•ã‚ŒãŸå€¤ãŒä¸æ­£
     247            # ID番号入力ファイルで指定された値が不正
    267248            error_exit("value of `#{objName}' in ID input file is illegal")
    268249          else
    269             # 未使用のID番号のリストから削除
     250            # 未使用のID番号のリストから削除
    270251            unusedObjidList.delete_at(objidIndex)
    271252          end
     
    273254      end
    274255
    275       # ID番号の割当て
     256      # ID番号の割当て
    276257      objidList.each do |objName, objidNumber|
    277258        if objidList[objName].nil?
    278           # 以下で,@objidValuesを書き換えている
     259          # 以下で,@objidValuesを書き換えている
    279260          objidList[objName] = unusedObjidList.shift
    280261        end
     
    283264
    284265    #
    285     #  静的APIデータをコンフィギュレーションデータ($cfgData)に格納
     266    #  静的APIデータをコンフィギュレーションデータ($cfgData)に格納
    286267    #
    287268    $cfgFileInfo.each do |cfgInfo|
    288       # プリプロセッサディレクティブは読み飛ばす
     269      # プリプロセッサディレクティブは読み飛ばす
    289270      next if cfgInfo.has_key?(:DIRECTIVE)
    290271
    291272      apiDef = $apiDefinition[cfgInfo[:APINAME]]
    292       # 異なるフェーズの静的APIは読み飛ばす
     273      # 異なるフェーズの静的APIは読み飛ばす
    293274      next if apiDef[:PHASE] != phase
    294275
     
    296277      apiIndex = cfgInfo[:INDEX]
    297278      if !apiIndex.nil?
    298         # シンボルファイルに静的APIのインデックスが存在しなければ読み飛
    299         # ばす(ifdef等で消えた静的API)
     279        # シンボルファイルに静的APIのインデックスが存在しなければ読み飛
     280        # ばす(ifdef等で消えた静的API)
    300281        symbol = "#{$cfg1_prefix}static_api_#{apiIndex}"
    301282        next unless @symbolAddress.has_key?(symbol)
    302283      end
    303284
    304       # パラメータの値をハッシュ形式に格納
     285      # パラメータの値をハッシュ形式に格納
    305286      params = {}
    306287      apiDef[:PARAM].each do |apiParam|
    307288        next unless apiParam.has_key?(:NAME)
    308289        paramName = apiParam[:NAME]
    309         next unless cfgInfo.has_key?(paramName)         # パラメータがない場合
     290        next unless cfgInfo.has_key?(paramName)         # パラメータがない場合
    310291        paramData = cfgInfo[paramName]
    311292
     
    322303      end
    323304
    324       # ドメインIDを追加
     305      # ドメインIDを追加
    325306      if cfgInfo.has_key?(:DOMAIN)
    326307        domainName = cfgInfo[:DOMAIN]
     
    328309      end
    329310
    330       # クラスIDを追加
     311      # クラスIDを追加
    331312      if cfgInfo.has_key?(:CLASS)
    332313        if apiIndex.nil?
     
    339320      end
    340321
    341       # API名,ファイル名,行番号を追加
     322      # API名,ファイル名,行番号を追加
    342323      params[:apiname] = cfgInfo[:APINAME]
    343324      params[:_file_] = cfgInfo[:_FILE_]
    344325      params[:_line_] = cfgInfo[:_LINE_]
    345326
    346       # 登録キーを決定する
     327      # 登録キーを決定する
    347328      if apiDef.has_key?(:KEYPAR)
    348329        keyParam = params[apiDef[:KEYPAR].to_sym]
    349330        key = keyParam.val
    350331        if $cfgData[apiSym].has_key?(key)
    351           # 登録キーの重複
     332          # 登録キーの重複
    352333          error("E_OBJ: #{apiDef[:KEYPAR]} `#{keyParam}' " \
    353334                                                                "is duplicated in #{cfgInfo[:APINAME]}",
     
    362343
    363344  #
    364   #  ID番号出力ファイルの生成
     345  #  ID番号出力ファイルの生成
    365346  #
    366347  def self.OutputId(fileName)
     
    375356
    376357#
    377 ãƒ‘ス2の処理
     358パス2の処理
    378359#
    379360def Pass2
    380361  #
    381   #  パス1から引き渡されるæƒ
    382 å ±ã‚’ファイルから読み込む
     362  #  パス1から引き渡される情報をファイルから読み込む
    383363  #
    384364  db = PStore.new(CFG1_OUT_DB)
     
    393373
    394374  #
    395   #  パス1の生成物を読み込む
     375  #  パス1の生成物を読み込む
    396376  #
    397377  Cfg1Out.Read()
    398   abort if $errorFlag                                   # エラー発生時はabortする
    399 
    400   #
    401   #  値取得シンボルをグローバル変数として定義する
     378  abort if $errorFlag                                   # エラー発生時はabortする
     379
     380  #
     381  #  値取得シンボルをグローバル変数として定義する
    402382  #
    403383  DefineSymbolValue()
    404384
    405385  #
    406   #  生成スクリプト(trbファイル)を実行する
     386  #  生成スクリプト(trbファイル)を実行する
    407387  #
    408388  $trbFileNames.each do |trbFileName|
     
    415395
    416396  #
    417   #  ID番号出力ファイルの生成
     397  #  ID番号出力ファイルの生成
    418398  #
    419399  if !$idOutputFileName.nil?
     
    422402
    423403  #
    424   #  パス3に引き渡すæƒ
    425 å ±ã‚’ファイルに生成
     404  #  パス3に引き渡す情報をファイルに生成
    426405  #
    427406  if $omitOutputDb.nil?
Note: See TracChangeset for help on using the changeset viewer.