Ignore:
Timestamp:
Aug 23, 2017, 9:27:43 AM (7 years ago)
Author:
coas-nagasima
Message:

文字コードを設定

Location:
EcnlProtoTool/trunk/mrbgems/mruby-ecnl
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/mrbgem.rake

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r270 r321  
    44 *  Copyright (C) 2014-2016 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
     6 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     7 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     8 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     9 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     10 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     11 *      スコード中に含まれていること.
     12 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     13 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     14 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     15 *      の無保証規定を掲載すること.
     16 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     17 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     18 *      と.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     20 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     22 *        報告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     26 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     27 *      免責すること.
    4228 *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    4934 *
    5035 */
     
    6247
    6348/*
    64  * ECHONET Liteサービス処理開始
     49 * ECHONET Liteサービス処理開始
    6550 */
    6651ER ecn_sta_svc(ecnl_svc_task_t *svc)
     
    7257
    7358/*
    74  * ECHONETオブジェクト参ç
    75 §
    76  * 引数
    77  * ID           fa_eobjid       ECHONETオブジェクトID
    78  * T_REOBJ      *fp_eobj        ECHONETオブジェクトの設定å†
    79 å®¹ã‚³ãƒ”ーå
    80 ˆ
     59 * ECHONETオブジェクト参照
     60 * 引数
     61 * ID           fa_eobjid       ECHONETオブジェクトID
     62 * T_REOBJ      *fp_eobj        ECHONETオブジェクトの設定内容コピー先
    8163 *
    82  * eobjidで指定したECHONETオブジェクトの設定å†
    83 å®¹ã‚’参ç
    84 §ã™ã‚‹ã€‚
    85  * 参ç
    86 §ã—た設定å†
    87 å®¹ã¯pk_eobjに指定したメモリに返される。
     64 * eobjidで指定したECHONETオブジェクトの設定内容を参照する。
     65 * 参照した設定内容はpk_eobjに指定したメモリに返される。
    8866 */
    8967ER ecn_ref_eobj(ecnl_svc_task_t *svc, ID fa_eobjid, T_REOBJ *fp_eobj)
     
    9270
    9371        if (!fp_eobj)
    94                 return E_PAR;   /* パラメータエラー */
     72                return E_PAR;   /* パラメータエラー */
    9573
    9674        if ((fa_eobjid <= 0) || (fa_eobjid > svc->tmax_eobjid))
    97                 return E_OBJ;   /* オブジェクト未登録 */
     75                return E_OBJ;   /* オブジェクト未登録 */
    9876
    9977        p_obj = echonet_svctask_get_eobjinib(svc, fa_eobjid);
     
    10583
    10684/*
    107  * ECHONETプロパティ参ç
    108 §
    109  * 引数
    110  * ID                   fa_eobjid       ECHONETオブジェクトID
    111  * uint8_t              fa_epc          プロパティコード
    112  * T_RPRP               *fp_eprp        ECHONETオブジェクトのプロパティ設定å†
    113 å®¹ã‚³ãƒ”ーå
    114 ˆ
     85 * ECHONETプロパティ参照
     86 * 引数
     87 * ID                   fa_eobjid       ECHONETオブジェクトID
     88 * uint8_t              fa_epc          プロパティコード
     89 * T_RPRP               *fp_eprp        ECHONETオブジェクトのプロパティ設定内容コピー先
    11590 *
    116  * eobjidで指定したECHONETオブジェクトの、epcで指定したプロパティの設定å†
    117 å®¹ã‚’参ç
    118 §ã™ã‚‹ã€‚
    119  * 参ç
    120 §ã—た設定å†
    121 å®¹ã¯pk_eprpに指定したメモリに返される。
     91 * eobjidで指定したECHONETオブジェクトの、epcで指定したプロパティの設定内容を参照する。
     92 * 参照した設定内容はpk_eprpに指定したメモリに返される。
    12293 */
    12394ER ecn_ref_eprp(ecnl_svc_task_t *svc, ID fa_eobjid, uint8_t fa_epc, T_RPRP *fp_eprp)
     
    12899
    129100        if (!fp_eprp)
    130                 return E_PAR;   /* パラメータエラー */
     101                return E_PAR;   /* パラメータエラー */
    131102
    132103        if ((fa_eobjid <= 0) || (fa_eobjid > svc->tmax_eobjid))
    133                 return E_OBJ;   /* オブジェクト未登録 */
     104                return E_OBJ;   /* オブジェクト未登録 */
    134105
    135106        p_obj = svc->eobjinib_table[fa_eobjid - 1];
    136107
    137         /* eojの持つプロパティ初期化定義é
    138 åˆ—から検索 */
     108        /* eojの持つプロパティ初期化定義配列から検索 */
    139109        p = p_obj->eprp;
    140110        for (i = 0; i < p_obj->eprpcnt; i++, p++) {
     
    145115        }
    146116
    147         return E_PAR;   /* パラメータエラー */
    148 }
    149 
    150 /*
    151  * プロパティ値書き込み要求(応答不要)電文作成
    152  * 引数
    153  * T_EDATA                      **ppk_esv       å–得した電文の格納å
    154 ˆ
    155  * ID                           fa_deoj         å®›å
    156 ˆã®ECHONETオブジェクトID
    157  * uint8_t                      fa_epc          プロパティコード
    158  * uint8_t                      fa_pdc          プロパティ値データサイズ
    159  * const void           *p_edt          プロパティ値データ
     117        return E_PAR;   /* パラメータエラー */
     118}
     119
     120/*
     121 * プロパティ値書き込み要求(応答不要)電文作成
     122 * 引数
     123 * T_EDATA                      **ppk_esv       取得した電文の格納先
     124 * ID                           fa_deoj         宛先のECHONETオブジェクトID
     125 * uint8_t                      fa_epc          プロパティコード
     126 * uint8_t                      fa_pdc          プロパティ値データサイズ
     127 * const void           *p_edt          プロパティ値データ
    160128 *
    161  *      プロパティ値書き込み要求(応答不要)電文を作成する。
    162  *      電文はdeojで指定したECHONETオブジェクトを宛å
    163 ˆã¨ã—、
    164  *      電文の初めのプロパティ値として、epcとpdc、p_edtで指定された
    165  *      プロパティコード、データサイズ、データを電文に設定する。
    166  *      作成した電文のå
    167 ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ãƒã‚¤ãƒ³ã‚¿çµŒç”±ã§è¿”される。
     129 *      プロパティ値書き込み要求(応答不要)電文を作成する。
     130 *      電文はdeojで指定したECHONETオブジェクトを宛先とし、
     131 *      電文の初めのプロパティ値として、epcとpdc、p_edtで指定された
     132 *      プロパティコード、データサイズ、データを電文に設定する。
     133 *      作成した電文の先頭アドレスはポインタ経由で返される。
    168134 */
    169135ER ecn_esv_seti(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc,
     
    174140
    175141/*
    176  * プロパティ値書き込み要求(応答要)電文作成
    177  * 引数
    178  * T_EDATA                      **ppk_esv       å–得した電文の格納å
    179 ˆ
    180  * ID                           fa_deoj         å®›å
    181 ˆã®ECHONETオブジェクトID
    182  * uint8_t                      fa_epc          プロパティコード
    183  * uint8_t                      fa_pdc          プロパティ値データサイズ
    184  * const void           *p_edt          プロパティ値データ
     142 * プロパティ値書き込み要求(応答要)電文作成
     143 * 引数
     144 * T_EDATA                      **ppk_esv       取得した電文の格納先
     145 * ID                           fa_deoj         宛先のECHONETオブジェクトID
     146 * uint8_t                      fa_epc          プロパティコード
     147 * uint8_t                      fa_pdc          プロパティ値データサイズ
     148 * const void           *p_edt          プロパティ値データ
    185149 *
    186  *      プロパティ値書き込み要求(応答要)電文を作成する。
    187  *      電文はdeojで指定したECHONETオブジェクトを宛å
    188 ˆã¨ã—、
    189  *      電文の初めのプロパティ値として、epcとpdc、p_edtで指定された
    190  *      プロパティコード、データサイズ、データを電文に設定する。
    191  *      作成した電文のå
    192 ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ãƒã‚¤ãƒ³ã‚¿çµŒç”±ã§è¿”される。
     150 *      プロパティ値書き込み要求(応答要)電文を作成する。
     151 *      電文はdeojで指定したECHONETオブジェクトを宛先とし、
     152 *      電文の初めのプロパティ値として、epcとpdc、p_edtで指定された
     153 *      プロパティコード、データサイズ、データを電文に設定する。
     154 *      作成した電文の先頭アドレスはポインタ経由で返される。
    193155 */
    194156ER ecn_esv_setc(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc,
     
    199161
    200162/*
    201  * プロパティ値読み出し要求電文作成
    202  * 引数
    203  * T_EDATA                      **ppk_esv       å–得した電文の格納å
    204 ˆ
    205  * ID                           fa_deoj         å®›å
    206 ˆã®ECHONETオブジェクトID
    207  * uint8_t                      fa_epc          プロパティコード
     163 * プロパティ値読み出し要求電文作成
     164 * 引数
     165 * T_EDATA                      **ppk_esv       取得した電文の格納先
     166 * ID                           fa_deoj         宛先のECHONETオブジェクトID
     167 * uint8_t                      fa_epc          プロパティコード
    208168 *
    209  * プロパティ値読み出し要求電文を作成する。
    210  * 電文はdeojで指定したECHONETオブジェクトを宛å
    211 ˆã¨ã—、
    212  * 電文の初めのプロパティ値として、epcで指定された
    213  * プロパティコードを電文に設定する。
    214  * 作成した電文のå
    215 ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ãƒã‚¤ãƒ³ã‚¿çµŒç”±ã§è¿”される。
     169 * プロパティ値読み出し要求電文を作成する。
     170 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、
     171 * 電文の初めのプロパティ値として、epcで指定された
     172 * プロパティコードを電文に設定する。
     173 * 作成した電文の先頭アドレスはポインタ経由で返される。
    216174 */
    217175ER ecn_esv_get(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc)
     
    221179
    222180/*
    223  * プロパティ値通知要求電文作成
    224  * 引数
    225  * T_EDATA                      **ppk_esv       å–得した電文の格納å
    226 ˆ
    227  * ID                           fa_deoj         å®›å
    228 ˆã®ECHONETオブジェクトID
    229  * uint8_t                      fa_epc          プロパティコード
     181 * プロパティ値通知要求電文作成
     182 * 引数
     183 * T_EDATA                      **ppk_esv       取得した電文の格納先
     184 * ID                           fa_deoj         宛先のECHONETオブジェクトID
     185 * uint8_t                      fa_epc          プロパティコード
    230186 *
    231  * プロパティ値通知要求電文を作成する。
    232  * 電文はdeojで指定したECHONETオブジェクトを宛å
    233 ˆã¨ã—、
    234  * 電文の初めのプロパティ値として、epcで指定された
    235  * プロパティコードを電文に設定する。
    236  * 作成した電文のå
    237 ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ãƒã‚¤ãƒ³ã‚¿çµŒç”±ã§è¿”される。
     187 * プロパティ値通知要求電文を作成する。
     188 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、
     189 * 電文の初めのプロパティ値として、epcで指定された
     190 * プロパティコードを電文に設定する。
     191 * 作成した電文の先頭アドレスはポインタ経由で返される。
    238192 */
    239193ER ecn_esv_inf_req(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc)
     
    243197
    244198/*
    245  * プロパティ値書き込み・読み出し要求電文作成
    246  * 引数
    247  * T_EDATA                      **ppk_esv       å–得した電文の格納å
    248 ˆ
    249  * ID                           fa_deoj         å®›å
    250 ˆã®ECHONETオブジェクトID
    251  * uint8_t                      fa_epc          プロパティコード
    252  * uint8_t                      fa_pdc          プロパティ値データサイズ
    253  * const void           *p_edt          プロパティ値データ
     199 * プロパティ値書き込み・読み出し要求電文作成
     200 * 引数
     201 * T_EDATA                      **ppk_esv       取得した電文の格納先
     202 * ID                           fa_deoj         宛先のECHONETオブジェクトID
     203 * uint8_t                      fa_epc          プロパティコード
     204 * uint8_t                      fa_pdc          プロパティ値データサイズ
     205 * const void           *p_edt          プロパティ値データ
    254206 *
    255  * プロパティ値書き込み・読み出し要求電文を作成する。
    256  * 電文はdeojで指定したECHONETオブジェクトを宛å
    257 ˆã¨ã—、
    258  * 電文の初めのプロパティ値として、epcとpdc、p_edtで指定された
    259  * プロパティコード、データサイズ、データを電文に設定する。
    260  * 作成した電文のå
    261 ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ãƒã‚¤ãƒ³ã‚¿çµŒç”±ã§è¿”される。
     207 * プロパティ値書き込み・読み出し要求電文を作成する。
     208 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、
     209 * 電文の初めのプロパティ値として、epcとpdc、p_edtで指定された
     210 * プロパティコード、データサイズ、データを電文に設定する。
     211 * 作成した電文の先頭アドレスはポインタ経由で返される。
    262212 */
    263213ER ecn_esv_set_get(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc,
     
    268218
    269219/*
    270  * プロパティ値書き込み・読み出し要求電文作成:折り返し指定
    271  * プロパティ値書き込み・読み出し要求電文作成中の、書き込みプロパティé
    272 åˆ—を終えて
    273  * 読み出しプロパティé
    274 åˆ—に移る時に用いる。
     220 * プロパティ値書き込み・読み出し要求電文作成:折り返し指定
     221 * プロパティ値書き込み・読み出し要求電文作成中の、書き込みプロパティ配列を終えて
     222 * 読み出しプロパティ配列に移る時に用いる。
    275223 */
    276224ER ecn_trn_set_get(mrb_state *mrb, T_EDATA *ppk_esv, int *p_trn_pos)
     
    283231                return E_PAR;
    284232
    285         /* プロパティ読み込み件数書き込み時のヘッドæƒ
    286 å ±ã‚’記録 */
     233        /* プロパティ読み込み件数書き込み時のヘッド情報を記録 */
    287234        *p_trn_pos = _ecn_fbs_get_datalen(*(ECN_FBS_ID *)&ppk_esv);
    288235
    289         /* 応答電文用メモリにデータ追加・この時点での応答電文中プロパティ件数を記録 */
     236        /* 応答電文用メモリにデータ追加・この時点での応答電文中プロパティ件数を記録 */
    290237        a_ret = _ecn_fbs_add_data_ex(mrb, *(ECN_FBS_ID *)&ppk_esv, &ppk_esv->hdr.edata.opc, 1);
    291238        if (a_ret) {
     
    294241        }
    295242
    296         /* 応答電文中プロパティ件数を 0 に戻す(今後、終了指定するまでは読み出しプロパティ件数になる) */
     243        /* 応答電文中プロパティ件数を 0 に戻す(今後、終了指定するまでは読み出しプロパティ件数になる) */
    297244        ppk_esv->hdr.edata.opc = 0;
    298245
     
    301248
    302249/*
    303  * プロパティ値書き込み・読み出し要求電文作成:終了指定
    304  * プロパティ値書き込み・読み出し要求電文作成中の、読み出しプロパティé
    305 åˆ—を終える時に用いる。
     250 * プロパティ値書き込み・読み出し要求電文作成:終了指定
     251 * プロパティ値書き込み・読み出し要求電文作成中の、読み出しプロパティ配列を終える時に用いる。
    306252 */
    307253ER ecn_end_set_get(mrb_state *mrb, T_EDATA *ppk_esv, int fa_trn_pos)
     
    314260                return E_PAR;
    315261
    316         /* この時点での応答電文中プロパティ件数(読み出しプロパティ件数)を保持 */
     262        /* この時点での応答電文中プロパティ件数(読み出しプロパティ件数)を保持 */
    317263        a_rd_opc = ppk_esv->hdr.edata.opc;
    318264
    319         /* 応答電文中プロパティ件数(書き込みプロパティ件数)を保存位置から読み取り */
     265        /* 応答電文中プロパティ件数(書き込みプロパティ件数)を保存位置から読み取り */
    320266        a_wr_opc = _ecn_fbs_peek(mrb, *(ECN_FBS_ID *)&ppk_esv, fa_trn_pos);
    321267        if (a_wr_opc < 0) {
     
    324270        }
    325271
    326         /* 応答電文中プロパティ件数(書き込みプロパティ件数)を復å
    327 ƒ */
     272        /* 応答電文中プロパティ件数(書き込みプロパティ件数)を復元 */
    328273        ppk_esv->hdr.edata.opc = (uint8_t)a_wr_opc;
    329274
    330         /* 応答電文中プロパティ件数(読み出しプロパティ件数)を保存位置に書き込み */
     275        /* 応答電文中プロパティ件数(読み出しプロパティ件数)を保存位置に書き込み */
    331276        a_ret = _ecn_fbs_poke(mrb, *(ECN_FBS_ID *)&ppk_esv, fa_trn_pos, a_rd_opc);
    332277        if (a_ret) {
     
    339284
    340285/*
    341  * プロパティ値通知(応答要)電文作成
    342  * 引数
    343  * T_EDATA                      **ppk_esv       å–得した電文の格納å
    344 ˆ
    345  * ID                           fa_deoj         å®›å
    346 ˆã®ECHONETオブジェクトID
    347  * ID                           fa_seoj         é€ä¿¡å
    348 ƒã®ECHONETオブジェクトID
    349  * uint8_t                      fa_sepc         é€ä¿¡å
    350 ƒã®ãƒ—ロパティコード
     286 * プロパティ値通知(応答要)電文作成
     287 * 引数
     288 * T_EDATA                      **ppk_esv       取得した電文の格納先
     289 * ID                           fa_deoj         宛先のECHONETオブジェクトID
     290 * ID                           fa_seoj         送信元のECHONETオブジェクトID
     291 * uint8_t                      fa_sepc         送信元のプロパティコード
    351292 */
    352293ER ecn_esv_infc(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID fa_deoj, ID fa_seoj, uint8_t fa_sepc)
     
    356297
    357298/*
    358  * 要求電文へのプロパティ指定追加 (プロパティデータが付随しない場合に用いる)
     299 * 要求電文へのプロパティ指定追加 (プロパティデータが付随しない場合に用いる)
    359300 */
    360301ER ecn_add_epc(mrb_state *mrb, T_EDATA *pk_esv, uint8_t epc)
     
    364305
    365306/*
    366  * 要求電文へのプロパティデータ追加 (プロパティおよび付随データを追加する)
     307 * 要求電文へのプロパティデータ追加 (プロパティおよび付随データを追加する)
    367308 */
    368309ER ecn_add_edt(mrb_state *mrb, T_EDATA *pk_esv, uint8_t fa_epc, uint8_t fa_pdc, const void *p_edt)
     
    373314
    374315        if (!pk_esv)
    375                 return E_PAR; /* 取得したFBS_IDの格納å
    376 ˆãŒNULL */
     316                return E_PAR; /* 取得したFBS_IDの格納先がNULL */
    377317        if (ECHONET_MEMPOOL_BLOCK_SIZE <= fa_pdc)
    378                 return E_PAR; /* プロパティ値サイズが大きすぎる */
     318                return E_PAR; /* プロパティ値サイズが大きすぎる */
    379319        if (!p_edt && 0 < fa_pdc)
    380                 return E_PAR; /* プロパティ値サイズが1以上なのにデータポインタがNULL */
     320                return E_PAR; /* プロパティ値サイズが1以上なのにデータポインタがNULL */
    381321
    382322        a_fbs_id.ptr = (T_ECN_FST_BLK *)pk_esv;
    383323        if (((T_EDATA *)a_fbs_id.ptr)->hdr.edata.opc == 0xFF)
    384                 return E_PAR; /* プロパティが多すぎる */
    385 
    386         /* 要求電文用メモリにデータ追加 */
     324                return E_PAR; /* プロパティが多すぎる */
     325
     326        /* 要求電文用メモリにデータ追加 */
    387327        memset(&a_ecn_prp, 0, sizeof(a_ecn_prp));
    388328        a_ecn_prp.epc = fa_epc;
     
    395335        }
    396336        if (0 < fa_pdc) {
    397                 /* 付随データ追加 */
     337                /* 付随データ追加 */
    398338                a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_id, p_edt, fa_pdc);
    399339                if (a_ret) {
     
    403343                }
    404344        }
    405         /* プロパティ数インクリメント */
     345        /* プロパティ数インクリメント */
    406346        ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.opc++;
    407347
     
    411351
    412352/*
    413  * 要求電文の送信
    414  * esvで指定された要求電文を送信する。
    415  * 電文に指定された宛å
    416 ˆã‹ã‚‰é€šä¿¡ãƒ¬ã‚¤ãƒ¤ãƒ¼ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’特定し、UDPパケットとして送信する。
     353 * 要求電文の送信
     354 * esvで指定された要求電文を送信する。
     355 * 電文に指定された宛先から通信レイヤーアドレスを特定し、UDPパケットとして送信する。
    417356 */
    418357ER ecn_snd_esv(ecnl_svc_task_t *svc, T_EDATA *pk_esv)
     
    424363
    425364/*
    426  * 応答電文の受信ポーリング
    427  * 応答電文を受信するのをå¾
    428 ã¤ã€‚
    429  * 受信した応答電文はppk_esvで指定したポインターにå
    430 ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒè¿”される。
    431  * 応答電文の受信の有無にかかわらず、å¾
    432 ãŸãšã«é–¢æ•°ã‚’抜ける。
     365 * 応答電文の受信ポーリング
     366 * 応答電文を受信するのを待つ。
     367 * 受信した応答電文はppk_esvで指定したポインターに先頭アドレスが返される。
     368 * 応答電文の受信の有無にかかわらず、待たずに関数を抜ける。
    433369 */
    434370ER ecn_prcv_esv(ecnl_svc_task_t *svc, T_EDATA **ppk_esv)
     
    451387
    452388/*
    453  * 応答電文の破棄
     389 * 応答電文の破棄
    454390 */
    455391ER ecn_rel_esv(mrb_state *mrb, T_EDATA *pk_esv)
     
    464400
    465401/*
    466  * 応答電文の送信å
    467 ƒãƒŽãƒ¼ãƒ‰ã‚’取得する
     402 * 応答電文の送信元ノードを取得する
    468403 */
    469404ID ecn_get_enod(ecnl_svc_task_t *svc, T_EDATA *pk_esv)
     
    487422
    488423/*
    489  * 応答電文の送信å
    490 ƒæ©Ÿå™¨ã‚ªãƒ–ジェクトを取得する
     424 * 応答電文の送信元機器オブジェクトを取得する
    491425 */
    492426ID ecn_get_eobj(ecnl_svc_task_t *svc, T_EDATA *pk_esv)
     
    499433        p_snod = _ecn_eno_fnd(svc, ((T_ECN_FST_BLK *)pk_esv)->hdr.sender.id);
    500434        if (p_snod != NULL) {
    501                 /* ノードプロファイルの場合 */
     435                /* ノードプロファイルの場合 */
    502436                if ((p_esv->edata.seoj.eojx1 == EOJ_X1_PROFILE)
    503437                        && (p_esv->edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) {
    504438                        p_sobj = p_snod->profile;
    505439                }
    506                 /* 機器オブジェクトの場合 */
     440                /* 機器オブジェクトの場合 */
    507441                else {
    508442                        p_sobj = _ecn_eoj_fnd(p_snod, &p_esv->edata.seoj);
     
    520454
    521455/*
    522  * 応答電文解析イテレーター初期化
     456 * 応答電文解析イテレーター初期化
    523457 */
    524458ER ecn_itr_ini(T_ENUM_EPC *pk_itr, T_EDATA *pk_esv)
     
    532466        pk_itr->pk_esv = pk_esv;
    533467        pk_itr->count = pk_esv->hdr.edata.opc;
    534                                                                 /* 今のブロックでのプロパティ総数 */
    535         pk_itr->got_ct = 0;                     /* 今のブロックで、読み取った数 */
    536         pk_itr->next_blk_ct = 0;        /* 後続ブロック数 */
    537         pk_itr->is_eof = 0;                     /* 終端に達した時、非0 */
     468                                                                /* 今のブロックでのプロパティ総数 */
     469        pk_itr->got_ct = 0;                     /* 今のブロックで、読み取った数 */
     470        pk_itr->next_blk_ct = 0;        /* 後続ブロック数 */
     471        pk_itr->is_eof = 0;                     /* 終端に達した時、非0 */
    538472        pk_itr->cur = offsetof(T_ECN_EDT_HDR, ecn_prp);
    539473
    540474        switch (pk_esv->hdr.edata.esv) {
    541         case ESV_SET_GET:               /* 0x6E プロパティ値書き込み・読み出し要求             */
    542         case ESV_SET_GET_RES:   /* 0x7E プロパティ値書き込み・読み出し応答             */
    543         case ESV_SET_GET_SNA:   /* 0x5E プロパティ値書き込み・読み出し不可応答       */
     475        case ESV_SET_GET:               /* 0x6E プロパティ値書き込み・読み出し要求               */
     476        case ESV_SET_GET_RES:   /* 0x7E プロパティ値書き込み・読み出し応答               */
     477        case ESV_SET_GET_SNA:   /* 0x5E プロパティ値書き込み・読み出し不可応答     */
    544478                pk_itr->next_blk_ct ++;
    545479        default:
     
    551485
    552486/*
    553  * 応答電文解析イテレーターインクリメント
     487 * 応答電文解析イテレーターインクリメント
    554488 */
    555489ER ecn_itr_nxt(mrb_state *mrb, T_ENUM_EPC *pk_itr, uint8_t *p_epc, uint8_t *p_pdc, void *p_edt)
     
    571505
    572506        if (pk_itr->is_eof)
    573                 return E_BOVR; /* データ終了 */
     507                return E_BOVR; /* データ終了 */
    574508        if (pk_itr->count <= pk_itr->got_ct && pk_itr->next_blk_ct < 1) {
    575                 pk_itr->is_eof = 1;                     /* 終端に達した時、非0 */
    576                 return E_BOVR; /* データ終了 */
     509                pk_itr->is_eof = 1;                     /* 終端に達した時、非0 */
     510                return E_BOVR; /* データ終了 */
    577511        }
    578512
    579513        a_fbs_id.ptr = (T_ECN_FST_BLK *)pk_itr->pk_esv;
    580514
    581         /* å
    582 ƒã®ã‚«ãƒ¼ã‚½ãƒ«ä½ç½®ã‚’保存し、イテレータのカーソル位置にする */
     515        /* 元のカーソル位置を保存し、イテレータのカーソル位置にする */
    583516        a_rd_bak = a_fbs_id.ptr->hdr.rd;
    584517        a_fbs_id.ptr->hdr.rd = pk_itr->cur;
     
    588521#endif
    589522        if (pk_itr->count <= pk_itr->got_ct && 0 < pk_itr->next_blk_ct) {
    590                 /* 次ブロックに移動 */
     523                /* 次ブロックに移動 */
    591524                pk_itr->next_blk_ct --;
    592                 pk_itr->count = 0;              /* 今のブロックでのプロパティ総数 */
    593                 pk_itr->got_ct = 0;             /* 今のブロックで、読み取った数 */
    594 
    595                 /* 次ブロックのプロパティ数を読み取る */
     525                pk_itr->count = 0;              /* 今のブロックでのプロパティ総数 */
     526                pk_itr->got_ct = 0;             /* 今のブロックで、読み取った数 */
     527
     528                /* 次ブロックのプロパティ数を読み取る */
    596529                a_rd_len = 0;
    597530                a_ret = _ecn_fbs_get_data(mrb, a_fbs_id, &a_ecn_prp.pdc, 1, &a_rd_len);
     
    599532                        goto lb_except;
    600533                if (0 < a_rd_len) {
    601                         pk_itr->count = a_ecn_prp.pdc;  /* 今のブロックでのプロパティ総数 */
     534                        pk_itr->count = a_ecn_prp.pdc;  /* 今のブロックでのプロパティ総数 */
    602535                }
    603                 a_ret = E_BOVR; /* データ終了 */
     536                a_ret = E_BOVR; /* データ終了 */
    604537                goto lb_finally;
    605538        }
    606539
    607         /* プロパティコードとデータサイズを読み取る */
     540        /* プロパティコードとデータサイズを読み取る */
    608541        memset(&a_ecn_prp, 0, sizeof(a_ecn_prp));
    609542        a_rd_len = 0;
     
    613546        if (a_rd_len < sizeof(a_ecn_prp)) {
    614547                ECN_DBG_PUT_1("ecn_itr_nxt() ecn_prp read fault. rd.cur=%d", pk_itr->cur);
    615                 pk_itr->is_eof = 1;                     /* 終端に達した時、非0 */
    616                 a_ret = E_BOVR; /* データ終了 */
     548                pk_itr->is_eof = 1;                     /* 終端に達した時、非0 */
     549                a_ret = E_BOVR; /* データ終了 */
    617550                goto lb_finally;
    618551        }
     
    627560                }
    628561                else {
    629                         /* 付随データを読み取る */
     562                        /* 付随データを読み取る */
    630563                        a_rd_len = 0;
    631564                        a_ret = _ecn_fbs_get_data(mrb, a_fbs_id, p_edt, a_ecn_prp.pdc, &a_rd_len);
     
    635568                                ECN_DBG_PUT_3("ecn_itr_nxt() edt read fault. rd.cur=%d,epc=0x%02X,pdc=%u",
    636569                                        pk_itr->cur, a_ecn_prp.epc , a_ecn_prp.pdc);
    637                                 pk_itr->is_eof = 1;                     /* 終端に達した時、非0 */
    638                                 a_ret = E_BOVR; /* データ終了 */
     570                                pk_itr->is_eof = 1;                     /* 終端に達した時、非0 */
     571                                a_ret = E_BOVR; /* データ終了 */
    639572                                goto lb_finally;
    640573                        }
     
    648581
    649582lb_finally:
    650         /* イテレータのカーソル位置を更新 */
     583        /* イテレータのカーソル位置を更新 */
    651584        pk_itr->cur = a_fbs_id.ptr->hdr.rd;
    652585
    653586lb_except:
    654         /* å
    655 ƒã®ã‚«ãƒ¼ã‚½ãƒ«ä½ç½®ã«æˆ»ã™ */
     587        /* 元のカーソル位置に戻す */
    656588        a_fbs_id.ptr->hdr.rd = a_rd_bak;
    657589        return a_ret;
     
    659591
    660592/*
    661  * 応答電文å¾
    662 ã¡ã®å‰²ã‚Šè¾¼ã¿é€ä¿¡
     593 * 応答電文待ちの割り込み送信
    663594 */
    664595ER ecn_brk_wai(ecnl_svc_task_t *svc, const void *p_dat, int fa_datsz)
    665596{
    666597        ER                              a_ret;
    667         ECN_FBS_ID              a_fbs_id = { 0 };       /* 要求電文用メモリ     */
    668 
    669         /* 応答電文å¾
    670 ã¡ã®å‰²ã‚Šè¾¼ã¿é›»æ–‡ä½œæˆ */
     598        ECN_FBS_ID              a_fbs_id = { 0 };       /* 要求電文用メモリ     */
     599
     600        /* 応答電文待ちの割り込み電文作成 */
    671601        a_ret = _ecn_mk_brk_wai(svc, &a_fbs_id, p_dat, fa_datsz);
    672602        if (a_ret)
    673603                return a_ret;
    674604
    675         /* 割り込み送信 */
     605        /* 割り込み送信 */
    676606        a_ret = _ecn_tsk_snd_mbx(svc, a_fbs_id, true);
    677607        if (a_ret) {
     
    681611        }
    682612
    683         /* 正常終了 */
     613        /* 正常終了 */
    684614        return a_ret;
    685615
    686616lb_except:
    687         /* データ作成失敗したら領域解放 */
     617        /* データ作成失敗したら領域解放 */
    688618        if (a_fbs_id.ptr)
    689619                _ecn_fbs_del(svc->mrb, a_fbs_id);
     
    693623
    694624/*
    695  * 割り込みデータの取得
     625 * 割り込みデータの取得
    696626 */
    697627ER ecn_get_brk_dat(mrb_state *mrb, T_EDATA *pk_esv, void *p_buf, int fa_bufsz, int *p_datsz)
     
    713643        }
    714644
    715         /* 読み取り位置をå
    716 ˆé ­ã«æˆ»ã™ */
     645        /* 読み取り位置を先頭に戻す */
    717646        a_ret = _ecn_fbs_set_rpos(a_fbs, 0);
    718647        if (a_ret) {
     
    722651        }
    723652
    724         /* 付随データを読み込む */
     653        /* 付随データを読み込む */
    725654        if (p_buf && 0 < fa_bufsz) {
    726655                a_len = 0;
     
    739668#ifndef ECN_USER_DATA_PROP_SET
    740669/*
    741  * データ設定関数
     670 * データ設定関数
    742671 */
    743672int ecn_data_prop_set(ecnl_svc_task_t *svc, const EPRPINIB *item, const void *src, int size, bool_t *anno)
     
    757686#ifndef ECN_USER_DATA_PROP_GET
    758687/*
    759  * データ取得関数
     688 * データ取得関数
    760689 */
    761690int ecn_data_prop_get(ecnl_svc_task_t *svc, const EPRPINIB *item, void *dst, int size)
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    44 *  Copyright (C) 2014-2016 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
     6 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     7 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     8 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     9 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     10 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     11 *      スコード中に含まれていること.
     12 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     13 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     14 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     15 *      の無保証規定を掲載すること.
     16 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     17 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     18 *      と.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     20 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     22 *        報告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     26 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     27 *      免責すること.
    4228 *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    4934 *
    5035 */
     
    6449
    6550#ifndef TOPPERS_T_STDDEF_H
    66 typedef char                    bool_t;         /* 真偽値 */
    67 
    68 typedef signed int              int_t;          /* 自然なサイズの符号付き整数 */
    69 typedef unsigned int    uint_t;         /* 自然なサイズの符号無し整数 */
    70 
    71 typedef int_t                   ER;                     /* エラーコード */
    72 typedef int_t                   ID;                     /* オブジェクトのID番号 */
    73 typedef uint_t                  ATR;            /* オブジェクトの属性 */
    74 typedef int_t                   TMO;            /* タイムアウト指定 */
     51typedef char                    bool_t;         /* 真偽値 */
     52
     53typedef signed int              int_t;          /* 自然なサイズの符号付き整数 */
     54typedef unsigned int    uint_t;         /* 自然なサイズの符号無し整数 */
     55
     56typedef int_t                   ER;                     /* エラーコード */
     57typedef int_t                   ID;                     /* オブジェクトのID番号 */
     58typedef uint_t                  ATR;            /* オブジェクトの属性 */
     59typedef int_t                   TMO;            /* タイムアウト指定 */
    7560
    7661#ifndef NULL
    77 #define NULL            0                       /* 無効ポインタ */
     62#define NULL            0                       /* 無効ポインタ */
    7863#endif /* NULL */
    7964
    8065#ifndef true
    81 #define true            1                       /* 真 */
     66#define true            1                       /* */
    8267#endif /* true */
    8368
    8469#ifndef false
    85 #define false           0                       /* 偽 */
     70#define false           0                       /* */
    8671#endif /* false */
    8772
    88 #define E_OK            0                       /* 正常終了 */
    89 
    90 #define E_SYS           (-5)            /* システムエラー */
    91 #define E_PAR           (-17)           /* パラメータエラー */
    92 #define E_NOMEM         (-33)           /* メモリ不足 */
    93 #define E_OBJ           (-41)           /* オブジェクト状æ
    94 ‹ã‚¨ãƒ©ãƒ¼ */
    95 #define E_NOEXS         (-42)           /* オブジェクト未生成 */
    96 #define E_TMOUT         (-50)           /* ポーリング失敗またはタイムアウト */
    97 #define E_BOVR          (-58)           /* バッファオーバーフロー */
    98 #define E_BRK           (-100)          /* ユーザーによる中断 */
    99 
    100 #define TMO_FEVR        (-1)            /* æ°¸ä¹
    101 å¾
    102 ã¡ */
     73#define E_OK            0                       /* 正常終了 */
     74
     75#define E_SYS           (-5)            /* システムエラー */
     76#define E_PAR           (-17)           /* パラメータエラー */
     77#define E_NOMEM         (-33)           /* メモリ不足 */
     78#define E_OBJ           (-41)           /* オブジェクト状態エラー */
     79#define E_NOEXS         (-42)           /* オブジェクト未生成 */
     80#define E_TMOUT         (-50)           /* ポーリング失敗またはタイムアウト */
     81#define E_BOVR          (-58)           /* バッファオーバーフロー */
     82#define E_BRK           (-100)          /* ユーザーによる中断 */
     83
     84#define TMO_FEVR        (-1)            /* 永久待ち */
    10385#endif
    10486
    10587#define EOBJ_NULL 0x00
    106 #define EOBJ_LOCAL_NODE 0x01                    /* 自ノード */
    107 #define EOBJ_SYNC_REMOTE_NODE 0x02              /* 他ノード */
    108 #define EOBJ_ASYNC_REMOTE_NODE 0x04             /* 他ノード(非同期) */
    109 #define EOBJ_DEVICE 0x08                                /* 機器オブジェクト */
     88#define EOBJ_LOCAL_NODE 0x01                    /* 自ノード */
     89#define EOBJ_SYNC_REMOTE_NODE 0x02              /* 他ノード */
     90#define EOBJ_ASYNC_REMOTE_NODE 0x04             /* 他ノード(非同期) */
     91#define EOBJ_DEVICE 0x08                                /* 機器オブジェクト */
    11092
    11193#define EPC_NONE 0x00
    112 #define EPC_RULE_SET 0x01                               /* アクセスルール Set */
    113 #define EPC_RULE_GET 0x02                               /* アクセスルール Get */
    114 #define EPC_RULE_ANNO 0x04                              /* アクセスルール Anno */
    115 #define EPC_ANNOUNCE 0x40                               /* 状æ
    116 ‹å¤‰åŒ–時通知 */
    117 #define EPC_VARIABLE 0x80                               /* 可変長データ */
     94#define EPC_RULE_SET 0x01                               /* アクセスルール Set */
     95#define EPC_RULE_GET 0x02                               /* アクセスルール Get */
     96#define EPC_RULE_ANNO 0x04                              /* アクセスルール Anno */
     97#define EPC_ANNOUNCE 0x40                               /* 状態変化時通知 */
     98#define EPC_VARIABLE 0x80                               /* 可変長データ */
    11899
    119100typedef enum _echonet_enod_id
    120101{
    121         ENOD_NOT_MATCH_ID       = -1,                   /* アドレスID登録なし */
    122         ENOD_MULTICAST_ID       = 0,                    /* マルチキャストアドレスID */
    123         ENOD_LOCAL_ID           = 1,                    /* 自ノードアドレスID */
    124         ENOD_API_ID                     = 2,                    /* APIアドレスID */
    125         ENOD_REMOTE_ID          = 3,                    /* 他ノードアドレスID */
     102        ENOD_NOT_MATCH_ID       = -1,                   /* アドレスID登録なし */
     103        ENOD_MULTICAST_ID       = 0,                    /* マルチキャストアドレスID */
     104        ENOD_LOCAL_ID           = 1,                    /* 自ノードアドレスID */
     105        ENOD_API_ID                     = 2,                    /* APIアドレスID */
     106        ENOD_REMOTE_ID          = 3,                    /* 他ノードアドレスID */
    126107} ECN_ENOD_ID;
    127108
    128 /* ECHONET Lite規格 */
     109/* ECHONET Lite規格 */
    129110typedef enum
    130111{
     
    132113} ECN_EHD1_ECL_VERSION;
    133114
    134 /* 電文形式1/2 */
     115/* 電文形式1/2 */
    135116typedef enum
    136117{
    137         ECN_EDH2_FORMAT_1 = 0x81,       /* 電文形式1 */
    138         ECN_EDH2_FORMAT_2 = 0x82        /* 電文形式2 */
     118        ECN_EDH2_FORMAT_1 = 0x81,       /* 電文形式1 */
     119        ECN_EDH2_FORMAT_2 = 0x82        /* 電文形式2 */
    139120} ECN_EHD2_FORMAT;
    140121
    141 /* ECHONET Liteサービスコード */
     122/* ECHONET Liteサービスコード */
    142123typedef enum _echonet_service_code
    143124{
    144         ESV_NOP                         =       0,              /* (機能指定なし)                                                 */
    145         ESV_SET_I                       =       0x60,   /* プロパティ値書き込み要求(応答不要)               */
    146         ESV_SET_C                       =       0x61,   /* プロパティ値書き込み要求(応答要)          */
    147         ESV_GET                         =       0x62,   /* プロパティ値読み出し要求                                 */
    148         ESV_INF_REQ                     =       0x63,   /* プロパティ値通知要求                                               */
    149         ESV_SET_GET                     =       0x6E,   /* プロパティ値書き込み・読み出し要求          */
    150         ESV_SET_RES                     =       0x71,   /* プロパティ値書き込み応答                                 */
    151         ESV_GET_RES                     =       0x72,   /* プロパティ値読み出し応答                                 */
    152         ESV_INF                         =       0x73,   /* プロパティ値通知                                                     */
    153         ESV_INFC                        =       0x74,   /* プロパティ値通知(応答要)                              */
    154         ESV_INFC_RES            =       0x7A,   /* プロパティ値通知応答                                               */
    155         ESV_SET_GET_RES         =       0x7E,   /* プロパティ値書き込み・読み出し応答          */
    156         ESV_SET_I_SNA           =       0x50,   /* プロパティ値書き込み要求不可応答                     */
    157         ESV_SET_C_SNA           =       0x51,   /* プロパティ値書き込み要求不可応答                     */
    158         ESV_GET_SNA                     =       0x52,   /* プロパティ値読み出し不可応答                           */
    159         ESV_INF_SNA                     =       0x53,   /* プロパティ値通知不可応答                                 */
    160         ESV_SET_GET_SNA         =       0x5E    /* プロパティ値書き込み・読み出し不可応答    */
     125        ESV_NOP                         =       0,              /* (機能指定なし)                                                     */
     126        ESV_SET_I                       =       0x60,   /* プロパティ値書き込み要求(応答不要)           */
     127        ESV_SET_C                       =       0x61,   /* プロパティ値書き込み要求(応答要)            */
     128        ESV_GET                         =       0x62,   /* プロパティ値読み出し要求                                 */
     129        ESV_INF_REQ                     =       0x63,   /* プロパティ値通知要求                                           */
     130        ESV_SET_GET                     =       0x6E,   /* プロパティ値書き込み・読み出し要求            */
     131        ESV_SET_RES                     =       0x71,   /* プロパティ値書き込み応答                                 */
     132        ESV_GET_RES                     =       0x72,   /* プロパティ値読み出し応答                                 */
     133        ESV_INF                         =       0x73,   /* プロパティ値通知                                                     */
     134        ESV_INFC                        =       0x74,   /* プロパティ値通知(応答要)                                */
     135        ESV_INFC_RES            =       0x7A,   /* プロパティ値通知応答                                           */
     136        ESV_SET_GET_RES         =       0x7E,   /* プロパティ値書き込み・読み出し応答            */
     137        ESV_SET_I_SNA           =       0x50,   /* プロパティ値書き込み要求不可応答                     */
     138        ESV_SET_C_SNA           =       0x51,   /* プロパティ値書き込み要求不可応答                     */
     139        ESV_GET_SNA                     =       0x52,   /* プロパティ値読み出し不可応答                               */
     140        ESV_INF_SNA                     =       0x53,   /* プロパティ値通知不可応答                                 */
     141        ESV_SET_GET_SNA         =       0x5E    /* プロパティ値書き込み・読み出し不可応答  */
    161142} ECN_SRV_CODE;
    162143
     
    173154
    174155/*
    175  *  ECHONET Lite電文ヘッダー
     156 *  ECHONET Lite電文ヘッダー
    176157 */
    177158typedef struct
    178159{
    179         uint8_t ehd1;           /* ECHONET Lite電文ヘッダー1 ECN_EHD1_ECL_VERSION */
    180         uint8_t ehd2;           /* ECHONET Lite電文ヘッダー2 ECN_EHD2_FORMAT */
    181         uint16_t        tid;    /* トランザクションID */
     160        uint8_t ehd1;           /* ECHONET Lite電文ヘッダー1 ECN_EHD1_ECL_VERSION */
     161        uint8_t ehd2;           /* ECHONET Lite電文ヘッダー2 ECN_EHD2_FORMAT */
     162        uint16_t        tid;    /* トランザクションID */
    182163} __attribute__((packed)) T_ECN_HDR;
    183164
    184165/*
    185  *  ECHONET Liteオブジェクトコード
     166 *  ECHONET Liteオブジェクトコード
    186167 */
    187168typedef struct
    188169{
    189         uint8_t eojx1;          /* クラスグループコード */
    190         uint8_t eojx2;          /* クラスコード */
    191         uint8_t eojx3;          /* インスタンスコード */
     170        uint8_t eojx1;          /* クラスグループコード */
     171        uint8_t eojx2;          /* クラスコード */
     172        uint8_t eojx3;          /* インスタンスコード */
    192173} __attribute__((packed)) T_ECN_EOJ;
    193174
    194175/*
    195  *  ECHONET Liteデータヘッダー
     176 *  ECHONET Liteデータヘッダー
    196177 */
    197178typedef struct
    198179{
    199         T_ECN_EOJ       seoj;   /* 送信å
    200 ƒECHONET Liteオブジェクト指定 */
    201         T_ECN_EOJ       deoj;   /* 相手å
    202 ˆECHONET Liteオブジェクト指定 */
    203         uint8_t esv;            /* ECHONET Liteサービス (ECN_SRV_CODE) */
    204         uint8_t opc;            /* 処理プロパティ数 */
     180        T_ECN_EOJ       seoj;   /* 送信元ECHONET Liteオブジェクト指定 */
     181        T_ECN_EOJ       deoj;   /* 相手先ECHONET Liteオブジェクト指定 */
     182        uint8_t esv;            /* ECHONET Liteサービス (ECN_SRV_CODE) */
     183        uint8_t opc;            /* 処理プロパティ数 */
    205184} __attribute__((packed)) T_ECN_EDATA_BODY;
    206185
    207186/*
    208  *  ECHONET Liteプロパティ
     187 *  ECHONET Liteプロパティ
    209188 */
    210189typedef struct
    211190{
    212         uint8_t epc;            /* ECHONET Liteプロパティコード */
    213         uint8_t pdc;            /* EDTのバイト数 */
    214         /*void  *p_edt;*/       /* プロパティ値データ */
     191        uint8_t epc;            /* ECHONET Liteプロパティコード */
     192        uint8_t pdc;            /* EDTのバイト数 */
     193        /*void  *p_edt;*/       /* プロパティ値データ */
    215194} __attribute__((packed)) T_ECN_PRP;
    216195
    217196/*
    218  *  ECHONET Liteデータ
     197 *  ECHONET Liteデータ
    219198 */
    220199typedef struct
     
    226205
    227206/*
    228  *  ECHONET Lite 電文
     207 *  ECHONET Lite 電文
    229208 */
    230209typedef struct echonet_object_data
     
    246225
    247226/*
    248  *  応答電文解析イテレーター
     227 *  応答電文解析イテレーター
    249228 */
    250229typedef struct echonet_epc_enumerator
    251230{
    252231        T_EDATA *pk_esv;
    253         uint8_t count;                  /* 今読み取り中のブロックにあるプロパティ総数 */
    254         uint8_t got_ct;                 /* 今読み取り中のブロックで、読み取った数 */
    255         uint8_t next_blk_ct;    /* 後続ブロック数 */
    256         uint8_t is_eof;                 /* 終端に達した時、非0 */
     232        uint8_t count;                  /* 今読み取り中のブロックにあるプロパティ総数 */
     233        uint8_t got_ct;                 /* 今読み取り中のブロックで、読み取った数 */
     234        uint8_t next_blk_ct;    /* 後続ブロック数 */
     235        uint8_t is_eof;                 /* 終端に達した時、非0 */
    257236        int cur;
    258237} T_ENUM_EPC;
     
    263242
    264243/*
    265  * ECHONET Lite プロパティの設定関数
     244 * ECHONET Lite プロパティの設定関数
    266245 */
    267246typedef int (EPRP_SETTER)(ecnl_svc_task_t *svc, const EPRPINIB *item, const void *src, int size, bool_t *anno);
    268247
    269248/*
    270  * ECHONET Lite プロパティの取得関数
     249 * ECHONET Lite プロパティの取得関数
    271250 */
    272251typedef int (EPRP_GETTER)(ecnl_svc_task_t *svc, const EPRPINIB *item, void *dst, int size);
    273252
    274253/*
    275  *  ECHONET Lite プロパティ初期化ブロック
     254 *  ECHONET Lite プロパティ初期化ブロック
    276255 */
    277256struct echonet_property_initialization_block
    278257{
    279         uint8_t         eprpcd;                 /* ECHONET Lite プロパティコード */
    280         ATR                     eprpatr;                /* ECHONET Lite プロパティ属性 */
    281         uint8_t         eprpsz;                 /* ECHONET Lite プロパティのサイズ */
    282         intptr_t        exinf;                  /* ECHONET Lite プロパティの拡張æƒ
    283 å ± */
    284         EPRP_SETTER     *eprpset;               /* ECHONET Lite プロパティの設定関数 */
    285         EPRP_GETTER     *eprpget;               /* ECHONET Lite プロパティの取得関数 */
     258        uint8_t         eprpcd;                 /* ECHONET Lite プロパティコード */
     259        ATR                     eprpatr;                /* ECHONET Lite プロパティ属性 */
     260        uint8_t         eprpsz;                 /* ECHONET Lite プロパティのサイズ */
     261        intptr_t        exinf;                  /* ECHONET Lite プロパティの拡張情報 */
     262        EPRP_SETTER     *eprpset;               /* ECHONET Lite プロパティの設定関数 */
     263        EPRP_GETTER     *eprpget;               /* ECHONET Lite プロパティの取得関数 */
    286264};
    287265
    288 #define TMIN_EOBJID             1               /* ECHONET Lite オブジェクトIDの最小値 */
    289 
    290 /*
    291  *  ECHONET Lite オブジェクト初期化ブロック
     266#define TMIN_EOBJID             1               /* ECHONET Lite オブジェクトIDの最小値 */
     267
     268/*
     269 *  ECHONET Lite オブジェクト初期化ブロック
    292270 */
    293271typedef struct echonet_object_initialization_block
    294272{
    295         ATR                     eobjatr;                /* ECHONET Lite オブジェクト属性 */
    296         ID                      enodid;                 /* ECHONET Lite ノードプロファイルオブジェクトID */
    297         intptr_t        exinf;                  /* ECHONET Lite オブジェクトの拡張æƒ
    298 å ± */
    299         uint8_t         eojx1;                  /* ECHONET Lite オブジェクトのクラスグループコード */
    300         uint8_t         eojx2;                  /* ECHONET Lite オブジェクトのクラスコード */
    301         uint8_t         eojx3;                  /* ECHONET Lite オブジェクトのインスタンスコード */
    302         const EPRPINIB **eprp;          /* ECHONET Lite プロパティ初期化ブロック */
    303         uint_t          eprpcnt;                /* ECHONET Lite プロパティ初期化ブロック数 */
     273        ATR                     eobjatr;                /* ECHONET Lite オブジェクト属性 */
     274        ID                      enodid;                 /* ECHONET Lite ノードプロファイルオブジェクトID */
     275        intptr_t        exinf;                  /* ECHONET Lite オブジェクトの拡張情報 */
     276        uint8_t         eojx1;                  /* ECHONET Lite オブジェクトのクラスグループコード */
     277        uint8_t         eojx2;                  /* ECHONET Lite オブジェクトのクラスコード */
     278        uint8_t         eojx3;                  /* ECHONET Lite オブジェクトのインスタンスコード */
     279        const EPRPINIB **eprp;          /* ECHONET Lite プロパティ初期化ブロック */
     280        uint_t          eprpcnt;                /* ECHONET Lite プロパティ初期化ブロック数 */
    304281} EOBJINIB;
    305282
    306283/*
    307  *  ECHONET Lite ノード管理ブロック
     284 *  ECHONET Lite ノード管理ブロック
    308285 */
    309286typedef struct echonet_object_control_block
    310287{
    311         const EOBJINIB *profile;        /* ECHONET Lite ノードプロファイルへのポインタ */
    312         const EOBJINIB **eobjs;         /* ECHONET Lite オブジェクトリストへのポインタ */
    313         uint_t          eobjcnt;                /* ECHONET Lite オブジェクト数 */
     288        const EOBJINIB *profile;        /* ECHONET Lite ノードプロファイルへのポインタ */
     289        const EOBJINIB **eobjs;         /* ECHONET Lite オブジェクトリストへのポインタ */
     290        uint_t          eobjcnt;                /* ECHONET Lite オブジェクト数 */
    314291} EOBJCB;
    315292
    316293/*
    317  *  ECHONET Lite オブジェクト機能の初期化
     294 *  ECHONET Lite オブジェクト機能の初期化
    318295 */
    319296extern void initialize_echonet_object(void);
     
    324301
    325302/*
    326  * ECHONET Liteサービス処理開始
     303 * ECHONET Liteサービス処理開始
    327304 */
    328305ER ecn_sta_svc(ecnl_svc_task_t *svc);
    329306
    330307/*
    331  * ECHONETオブジェクト参ç
    332 §
     308 * ECHONETオブジェクト参照
    333309 */
    334310ER ecn_ref_eobj(ecnl_svc_task_t *svc, ID eobjid, T_REOBJ *pk_eobj);
    335311
    336312/*
    337  * ECHONETプロパティ参ç
    338 §
     313 * ECHONETプロパティ参照
    339314 */
    340315ER ecn_ref_eprp(ecnl_svc_task_t *svc, ID eobjid, uint8_t epc, T_RPRP *pk_eprp);
    341316
    342317/*
    343  * プロパティ値書き込み要求(応答不要)電文作成
     318 * プロパティ値書き込み要求(応答不要)電文作成
    344319 */
    345320ER ecn_esv_seti(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt);
    346321
    347322/*
    348  * プロパティ値書き込み要求(応答要)電文作成
     323 * プロパティ値書き込み要求(応答要)電文作成
    349324 */
    350325ER ecn_esv_setc(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt);
    351326
    352327/*
    353  * プロパティ値読み出し要求電文作成
     328 * プロパティ値読み出し要求電文作成
    354329 */
    355330ER ecn_esv_get(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, uint8_t epc);
    356331
    357332/*
    358  * プロパティ値通知要求電文作成
     333 * プロパティ値通知要求電文作成
    359334 */
    360335ER ecn_esv_inf_req(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, uint8_t epc);
    361336
    362337/*
    363  * プロパティ値書き込み・読み出し要求電文作成
     338 * プロパティ値書き込み・読み出し要求電文作成
    364339 */
    365340ER ecn_esv_set_get(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt);
    366341
    367342/*
    368  * プロパティ値書き込み・読み出し要求電文折り返し指定
     343 * プロパティ値書き込み・読み出し要求電文折り返し指定
    369344 */
    370345ER ecn_trn_set_get(mrb_state *mrb, T_EDATA *pk_esv, int *p_trn_pos);
    371346
    372347/*
    373  * プロパティ値書き込み・読み出し要求電文終了指定
     348 * プロパティ値書き込み・読み出し要求電文終了指定
    374349 */
    375350ER ecn_end_set_get(mrb_state *mrb, T_EDATA *pk_esv, int trn_pos);
    376351
    377352/*
    378  * プロパティ値通知(応答要)電文作成
     353 * プロパティ値通知(応答要)電文作成
    379354 */
    380355ER ecn_esv_infc(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, ID seobjid, uint8_t sepc);
    381356
    382357/*
    383  * 要求電文へのプロパティ指定追加
     358 * 要求電文へのプロパティ指定追加
    384359 */
    385360ER ecn_add_epc(mrb_state *mrb, T_EDATA *pk_esv, uint8_t epc);
    386361
    387362/*
    388  * 要求電文へのプロパティデータ追加
     363 * 要求電文へのプロパティデータ追加
    389364 */
    390365ER ecn_add_edt(mrb_state *mrb, T_EDATA *pk_esv, uint8_t epc, uint8_t pdc, const void *p_edt);
    391366
    392367/*
    393  * 要求電文の送信
     368 * 要求電文の送信
    394369 */
    395370ER ecn_snd_esv(ecnl_svc_task_t *svc, T_EDATA *pk_esv);
    396371
    397372/*
    398  * 応答電文の受信ポーリング
     373 * 応答電文の受信ポーリング
    399374 */
    400375ER ecn_prcv_esv(ecnl_svc_task_t *svc, T_EDATA **ppk_esv);
    401376
    402377/*
    403  * 応答電文の破棄
     378 * 応答電文の破棄
    404379 */
    405380ER ecn_rel_esv(mrb_state *mrb, T_EDATA *pk_esv);
    406381
    407382/*
    408  * 応答電文の送信å
    409 ƒãƒŽãƒ¼ãƒ‰ã‚’取得する
     383 * 応答電文の送信元ノードを取得する
    410384 */
    411385ID ecn_get_enod(ecnl_svc_task_t *svc, T_EDATA *pk_esv);
    412386
    413387/*
    414  * 応答電文の送信å
    415 ƒæ©Ÿå™¨ã‚ªãƒ–ジェクトを取得する
     388 * 応答電文の送信元機器オブジェクトを取得する
    416389 */
    417390ID ecn_get_eobj(ecnl_svc_task_t *svc, T_EDATA *pk_esv);
    418391
    419392/*
    420  * 応答電文解析イテレーター初期化
     393 * 応答電文解析イテレーター初期化
    421394 */
    422395ER ecn_itr_ini(T_ENUM_EPC *pk_itr, T_EDATA *pk_esv);
    423396
    424397/*
    425  * 応答電文解析イテレーターインクリメント
     398 * 応答電文解析イテレーターインクリメント
    426399 */
    427400ER ecn_itr_nxt(mrb_state *mrb, T_ENUM_EPC *pk_itr, uint8_t *p_epc, uint8_t *p_pdc, void *p_edt);
    428401
    429402/*
    430  * 応答電文å¾
    431 ã¡ã®å‰²ã‚Šè¾¼ã¿é€ä¿¡
     403 * 応答電文待ちの割り込み送信
    432404 */
    433405ER ecn_brk_wai(ecnl_svc_task_t *svc, const void *p_dat, int datsz);
    434406
    435407/*
    436  * 割り込みデータの取得
     408 * 割り込みデータの取得
    437409 */
    438410ER ecn_get_brk_dat(mrb_state *mrb, T_EDATA *pk_esv, void *p_buf, int bufsz, int *p_datsz);
    439411
    440412/*
    441  * データ設定関数
     413 * データ設定関数
    442414 */
    443415int ecn_data_prop_set(ecnl_svc_task_t *svc, const EPRPINIB *item, const void *src, int size, bool_t *anno);
    444416
    445417/*
    446  * データ取得関数
     418 * データ取得関数
    447419 */
    448420int ecn_data_prop_get(ecnl_svc_task_t *svc, const EPRPINIB *item, void *dst, int size);
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_agent.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r270 r321  
    44 *  Copyright (C) 2015-2016 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
     6 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     7 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     8 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     9 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     10 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     11 *      スコード中に含まれていること.
     12 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     13 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     14 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     15 *      の無保証規定を掲載すること.
     16 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     17 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     18 *      と.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     20 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     22 *        報告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     26 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     27 *      免責すること.
    4228 *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    4934 *
    5035 *  @(#) $Id$
     
    5237
    5338/*
    54  *              ECHONET Lite 動的生成ノード
     39 *              ECHONET Lite 動的生成ノード
    5540 */
    5641
     
    158143
    159144/*
    160  *  キューの初期化
     145 *  キューの初期化
    161146 *
    162  *  p_queueにはキューヘッダを指定する.
     147 *  p_queueにはキューヘッダを指定する.
    163148 */
    164149static void
     
    173158
    174159/*
    175  *  キューの前エントリへの挿å
    176 ¥
     160 *  キューの前エントリへの挿入
    177161 *
    178  *  p_queueの前にp_entryを挿å
    179 ¥ã™ã‚‹ï¼Žp_queueにキューヘッダを指定した場
    180  *  合には,キューの末尾にp_entryを挿å
    181 ¥ã™ã‚‹ã“とになる.
     162 *  p_queueの前にp_entryを挿入する.p_queueにキューヘッダを指定した場
     163 *  合には,キューの末尾にp_entryを挿入することになる.
    182164 */
    183165static void
     
    195177
    196178/*
    197  *  エントリの削除
     179 *  エントリの削除
    198180 *
    199  *  p_entryをキューから削除する.
     181 *  p_entryをキューから削除する.
    200182 */
    201183static void
     
    310292        int i = eobjid;
    311293
    312         /* オブジェクトIDから実体を取得 */
     294        /* オブジェクトIDから実体を取得 */
    313295        i -= (svc->tmax_eobjid + 1);
    314296        if ((i < 0)
     
    321303                return false;
    322304
    323         /* オブジェクトのEOJをコピー */
     305        /* オブジェクトのEOJをコピー */
    324306        memcpy(eoj, &buf->cnt.obj.inib.eojx1, sizeof(*eoj));
    325307
    326         /* 所属するノードのオブジェクトIDを取得 */
     308        /* 所属するノードのオブジェクトIDを取得 */
    327309        if(buf->cnt.obj.inib.enodid == 0)
    328310                i = buf->cnt.obj.eobjId;
     
    336318        }
    337319
    338         /* ノードIDを取得 */
     320        /* ノードIDを取得 */
    339321        buf = &agent->blockes[i];
    340322        *enodid = buf->cnt.node.node.enodId;
     
    365347void ecn_agent_init(ecnl_svc_task_t *svc)
    366348{
    367         svc->agent.eprpinib.eprpcd = 0x00;                                      /* プロパティコード */
    368         svc->agent.eprpinib.eprpatr = EPC_RULE_SET | EPC_RULE_GET;              /* プロパティ属性 */
    369         svc->agent.eprpinib.eprpsz = 255;                                       /* プロパティのサイズ */
    370         svc->agent.eprpinib.exinf = (intptr_t)&svc->agent;      /* プロパティの拡張æƒ
    371 å ± */
    372         svc->agent.eprpinib.eprpset = ecn_agent_eprpset;        /* プロパティの設定関数 */
    373         svc->agent.eprpinib.eprpget = ecn_agent_eprpget;        /* プロパティの取得関数 */
     349        svc->agent.eprpinib.eprpcd = 0x00;                                      /* プロパティコード */
     350        svc->agent.eprpinib.eprpatr = EPC_RULE_SET | EPC_RULE_GET;              /* プロパティ属性 */
     351        svc->agent.eprpinib.eprpsz = 255;                                       /* プロパティのサイズ */
     352        svc->agent.eprpinib.exinf = (intptr_t)&svc->agent;      /* プロパティの拡張情報 */
     353        svc->agent.eprpinib.eprpset = ecn_agent_eprpset;        /* プロパティの設定関数 */
     354        svc->agent.eprpinib.eprpget = ecn_agent_eprpget;        /* プロパティの取得関数 */
    374355
    375356        svc->agent.peprpinib = &svc->agent.eprpinib;
     
    390371        T_ECN_EOJ *eoj, *end;
    391372
    392         // プロパティ通知か取得応答で、
     373        // プロパティ通知か取得応答で、
    393374        switch (esv->hdr.edata.esv) {
    394375        case ESV_GET_RES:
     
    400381        }
    401382
    402         // ノードプロファイル宛の場合
     383        // ノードプロファイル宛の場合
    403384        eoj = &esv->hdr.edata.seoj;
    404385        if ((eoj->eojx1 != EOJ_X1_PROFILE) || (eoj->eojx2 != EOJ_X2_NODE_PROFILE)
     
    413394        while (ecn_itr_nxt(mrb, &enm, &epc, &pdc, &edt) == E_OK) {
    414395                switch (epc) {
    415                 // インスタンスリスト通知の場合
     396                // インスタンスリスト通知の場合
    416397                case 0xD5:
    417                 // 自ノードインスタンスリストS通知の場合
     398                // 自ノードインスタンスリストS通知の場合
    418399                case 0xD6:
    419                         // サイズが合わない場合
     400                        // サイズが合わない場合
    420401                        if (pdc != (1 + edt[0] * sizeof(T_ECN_EOJ)))
    421402                                return NULL;
     
    765746        ecn_obj_t *sobj;
    766747
    767         /* 静的に定義された送信å
    768 ƒã®å ´åˆ */
     748        /* 静的に定義された送信元の場合 */
    769749        if ((*ppk_snod != NULL) && (*ppk_snod)->eobjs != NULL) {
    770                 /* 処理しない */
     750                /* 処理しない */
    771751                return;
    772752        }
     
    774754        snod = ecn_agent_find_node2(svc, *ppk_snod);
    775755
    776         /* 送信å
    777 ƒã‚’知らなかったら */
     756        /* 送信元を知らなかったら */
    778757        if (snod == NULL) {
    779                 /* 送信å
    780 ƒã®ãƒŽãƒ¼ãƒ‰æƒ
    781 å ±ã‚’新規に作成 */
     758                /* 送信元のノード情報を新規に作成 */
    782759                snod = ecn_agent_create_node(svc, agent, esv);
    783760                if (snod == NULL)
     
    787764        sobj = ecn_agent_find_obj2(snod, *ppk_sobj);
    788765
    789         /* ノードプロファイルの場合 */
     766        /* ノードプロファイルの場合 */
    790767        if ((esv->hdr.edata.seoj.eojx1 == EOJ_X1_PROFILE)
    791768                && (esv->hdr.edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) {
    792769                sobj = &snod->node.base;
    793770        }
    794         /* 機器オブジェクトの場合 */
     771        /* 機器オブジェクトの場合 */
    795772        else {
    796773                sobj = ecn_agent_find_eobj(&snod->node.eobj, esv->hdr.edata.seoj);
     
    837814        ecn_obj_t *obj = node->current;
    838815
    839         // プロパティ値読み出し要求
     816        // プロパティ値読み出し要求
    840817        ecn_esv_get(svc, &esv, obj->eobjId, 0x9E);
    841818        ecn_snd_esv(svc, esv);
     
    850827        ecn_obj_t *obj = node->current;
    851828
    852         // プロパティ値読み出し要求
     829        // プロパティ値読み出し要求
    853830        ecn_esv_get(svc, &esv, obj->eobjId, 0x9F);
    854831        ecn_snd_esv(svc, esv);
     
    863840        ecn_obj_t *obj = node->current;
    864841
    865         // プロパティ値読み出し要求
     842        // プロパティ値読み出し要求
    866843        ecn_esv_get(svc, &esv, obj->eobjId, 0x9D);
    867844        ecn_snd_esv(svc, esv);
     
    877854        ecn_device_t *device;
    878855
    879         /* objが指定されていない場合 */
     856        /* objが指定されていない場合 */
    880857        if(obj == NULL){
    881                 /* このノードを返す */
     858                /* このノードを返す */
    882859                node->current = &node->node.base;
    883860                return;
    884861        }
    885         /* ノードの場合 */
     862        /* ノードの場合 */
    886863        else if((obj->inib.eojx1 == EOJ_X1_PROFILE) && (obj->inib.eojx2 == EOJ_X2_NODE_PROFILE)){
    887864                node = (ecn_node_agent_t *)obj;
    888865
    889                 /* é
    890 ä¸‹ã®æ©Ÿå™¨ã‚’返す */
     866                /* 配下の機器を返す */
    891867                queue = node->node.devices.p_next;
    892868                device = (ecn_device_t *)cast_obj(queue);
    893869        }
    894         /* 機器の場合 */
     870        /* 機器の場合 */
    895871        else{
    896                 /* 次の機器を返す */
     872                /* 次の機器を返す */
    897873                node = (ecn_node_agent_t *)((ecn_device_t *)obj)->node;
    898874                queue = cast_queue(obj)->p_next;
     
    900876        }
    901877
    902         /* その機器が末尾だった場合 */
     878        /* その機器が末尾だった場合 */
    903879        if(&node->node.devices == queue){
    904880                node->current = NULL;
     
    10371013        bool_t has = false;
    10381014
    1039         /* ノードの場合はインスタンスリスト通知と自ノードインスタンスリストS通知をå¿
    1040 é ˆã§å—け取る */
     1015        /* ノードの場合はインスタンスリスト通知と自ノードインスタンスリストS通知を必須で受け取る */
    10411016        if ((fp_obj->enodid == 0) && ((fa_epc == 0xD5) || (fa_epc == 0xD6)))
    10421017                has = true;
     
    10721047
    10731048        switch (item->eprpcd) {
    1074         /* インスタンスリスト通知の場合 */
     1049        /* インスタンスリスト通知の場合 */
    10751050        case 0xD5:
    1076         /* 自ノードインスタンスリストS通知の場合 */
     1051        /* 自ノードインスタンスリストS通知の場合 */
    10771052        case 0xD6:
    10781053                if ((node != NULL) && (node->state == ecn_node_state_idle)) {
     
    10921067                }
    10931068                break;
    1094         /* 通知プロパティマップの場合 */
     1069        /* 通知プロパティマップの場合 */
    10951070        case 0x9D:
    10961071                eprpcnt = edt[0];
    10971072
    10981073                if (eprpcnt < 16) {
    1099                         /* サイズチェック */
     1074                        /* サイズチェック */
    11001075                        if (eprpcnt + 1 != size)
    11011076                                return 0;
     
    11051080                }
    11061081                else {
    1107                         /* サイズチェック */
     1082                        /* サイズチェック */
    11081083                        if (size != 17)
    11091084                                return 0;
     
    11141089                sobj->pmapFlag |= PMAP_FLAG_ANNO;
    11151090                break;
    1116         /* SETプロパティマップの場合 */
     1091        /* SETプロパティマップの場合 */
    11171092        case 0x9E:
    11181093                eprpcnt = edt[0];
    11191094
    11201095                if (eprpcnt < 16) {
    1121                         /* サイズチェック */
     1096                        /* サイズチェック */
    11221097                        if (eprpcnt + 1 != size)
    11231098                                return 0;
     
    11271102                }
    11281103                else {
    1129                         /* サイズチェック */
     1104                        /* サイズチェック */
    11301105                        if (size != 17)
    11311106                                return 0;
     
    11361111                sobj->pmapFlag |= PMAP_FLAG_SET;
    11371112                break;
    1138         /* GETプロパティマップの場合 */
     1113        /* GETプロパティマップの場合 */
    11391114        case 0x9F:
    11401115                eprpcnt = edt[0];
    11411116
    11421117                if (eprpcnt < 16) {
    1143                         /* サイズチェック */
     1118                        /* サイズチェック */
    11441119                        if (eprpcnt + 1 != size)
    11451120                                return 0;
     
    11491124                }
    11501125                else {
    1151                         /* サイズチェック */
     1126                        /* サイズチェック */
    11521127                        if (size != 17)
    11531128                                return 0;
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_agent.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    44 *  Copyright (C) 2015-2016 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
    42  *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
     6 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     7 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     8 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     9 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     10 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     11 *      スコード中に含まれていること.
     12 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     13 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     14 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     15 *      の無保証規定を掲載すること.
     16 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     17 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     18 *      と.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     20 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     22 *        報告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     26 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     27 *      免責すること.
     28 *
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    4934 *
    5035 *  @(#) $Id$
     
    5237
    5338/*
    54  *              ECHONET Lite 動的生成ノード
     39 *              ECHONET Lite 動的生成ノード
    5540 */
    5641
     
    6550
    6651/*
    67  *  キューのデータ構造の定義
     52 *  キューのデータ構造の定義
    6853 */
    6954typedef struct ecn_agent_queue {
    7055#ifdef _DEBUG
    71         struct ecn_agent_queue *p_parent;       /* 親キューへのポインタ */
     56        struct ecn_agent_queue *p_parent;       /* 親キューへのポインタ */
    7257#endif
    73         struct ecn_agent_queue *p_next;         /* 次エントリへのポインタ */
    74         struct ecn_agent_queue *p_prev;         /* 前エントリへのポインタ */
     58        struct ecn_agent_queue *p_next;         /* 次エントリへのポインタ */
     59        struct ecn_agent_queue *p_prev;         /* 前エントリへのポインタ */
    7560} ecn_agent_queue_t;
    7661
     
    8469        ID eobjId;
    8570        EOBJINIB inib;
    86         uint8_t pmapSet[16];            /* SETプロパティマップ */
    87         uint8_t pmapGet[16];            /* GETプロパティマップ */
    88         uint8_t pmapAnno[16];           /* 状æ
    89 ‹å¤‰åŒ–時通知プロパティマップ */
     71        uint8_t pmapSet[16];            /* SETプロパティマップ */
     72        uint8_t pmapGet[16];            /* GETプロパティマップ */
     73        uint8_t pmapAnno[16];           /* 状態変化時通知プロパティマップ */
    9074        uint8_t pmapFlag;
    91         uint8_t eprpcnt;                        /* ECHONET Lite プロパティ数 */
    92         uint8_t annocnt;                        /* 通知プロパティの数 */
    93         uint8_t setcnt;                         /* 設定プロパティの数 */
    94         uint8_t getcnt;                         /* 取得プロパティの数 */
     75        uint8_t eprpcnt;                        /* ECHONET Lite プロパティ数 */
     76        uint8_t annocnt;                        /* 通知プロパティの数 */
     77        uint8_t setcnt;                         /* 設定プロパティの数 */
     78        uint8_t getcnt;                         /* 取得プロパティの数 */
    9579} ecn_obj_t;
    9680
     
    158142typedef struct ecn_inm_get_device_item
    159143{
    160         ID                      eobjid;                 /* ECHONET Lite オブジェクトID */
    161         ID                      enodid;                 /* ECHONET Lite ノードプロファイルオブジェクトID */
    162         uint8_t         state;                  /* æƒ
    163 å ±åŽé›†çŠ¶æ
    164 ‹ */
    165         uint8_t         eojx1;                  /* ECHONET Lite オブジェクトのクラスグループコード */
    166         uint8_t         eojx2;                  /* ECHONET Lite オブジェクトのクラスコード */
    167         uint8_t         eojx3;                  /* ECHONET Lite オブジェクトのインスタンスコード */
    168         ECN_ENOD_ID     addrid;                 /* 通信レイヤーアドレス取得用ID */
     144        ID                      eobjid;                 /* ECHONET Lite オブジェクトID */
     145        ID                      enodid;                 /* ECHONET Lite ノードプロファイルオブジェクトID */
     146        uint8_t         state;                  /* 情報収集状態 */
     147        uint8_t         eojx1;                  /* ECHONET Lite オブジェクトのクラスグループコード */
     148        uint8_t         eojx2;                  /* ECHONET Lite オブジェクトのクラスコード */
     149        uint8_t         eojx3;                  /* ECHONET Lite オブジェクトのインスタンスコード */
     150        ECN_ENOD_ID     addrid;                 /* 通信レイヤーアドレス取得用ID */
    169151} ecn_inm_get_device_item_t;
    170152
     
    191173} ecn_inm_get_device_info_res_t;
    192174
    193 /* 初期化 */
     175/* 初期化 */
    194176void ecn_agent_init(ecnl_svc_task_t *svc);
    195 /* ノードを検索 */
     177/* ノードを検索 */
    196178ecn_node_t *ecn_agent_find_node(ecnl_svc_task_t *svc, ECN_ENOD_ID enodid);
    197 /* 機器を検索 */
     179/* 機器を検索 */
    198180ecn_obj_t *ecn_agent_find_eobj(const EOBJCB *pk_nod, T_ECN_EOJ eoj);
    199 /* オブジェクトIDを取得 */
     181/* オブジェクトIDを取得 */
    200182ID ecn_agent_get_eobj(const EOBJINIB *pk_obj);
    201 /* 次の機器を取得 */
     183/* 次の機器を取得 */
    202184const EOBJINIB *ecn_agent_next_eobj(const EOBJCB *pk_nod, const EOBJINIB *pk_obj);
    203 /* オブジェクトIDからEOJとノードIDを取得 */
     185/* オブジェクトIDからEOJとノードIDを取得 */
    204186bool_t ecn_agent_get_eoj_enodid(ecnl_svc_task_t *svc, ID eobjid, T_ECN_EOJ *eoj, ECN_ENOD_ID *enodid);
    205 /* タイムアウト値を返す */
     187/* タイムアウト値を返す */
    206188TMO ecn_agent_get_timer(ecnl_svc_task_t *svc);
    207 /* タイマーの時間を進める */
     189/* タイマーの時間を進める */
    208190void ecn_agent_progress(ecnl_svc_task_t *svc, TMO interval);
    209 /* タイムアウト処理(のための呼び出し) */
     191/* タイムアウト処理(のための呼び出し) */
    210192void ecn_agent_timeout(ecnl_svc_task_t *svc);
    211 /* å†
    212 éƒ¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸å‡¦ç† */
     193/* 内部メッセージ処理 */
    213194bool_t ecn_agent_proc_int_msg(ecnl_svc_task_t *svc, ECN_FBS_ID fbs, uint8_t cmd);
    214 /* ECHONET電文受信処理 */
     195/* ECHONET電文受信処理 */
    215196void ecn_agent_proc_ecn_msg(ecnl_svc_task_t *svc, const EOBJCB **snod, const EOBJINIB **sobj, T_EDATA *esv);
    216 /* ECHONET電文受信処理終了 */
     197/* ECHONET電文受信処理終了 */
    217198void ecn_agent_proc_ecn_msg_end(ecnl_svc_task_t *svc);
    218 /* プロパティを取得 */
     199/* プロパティを取得 */
    219200const EPRPINIB *ecn_agent_get_property(const EOBJINIB *fp_obj, uint8_t fa_epc, const EPRPINIB *item);
    220201
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_class.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    44 *  Copyright (C) 2014-2016 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
     6 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     7 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     8 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     9 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     10 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     11 *      スコード中に含まれていること.
     12 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     13 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     14 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     15 *      の無保証規定を掲載すること.
     16 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     17 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     18 *      と.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     20 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     22 *        報告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     26 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     27 *      免責すること.
    4228 *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    4934 *
    5035 */
     
    5338#define ECHONET_CLASS_H
    5439
    55 /* センサー関連機器 */
     40/* センサー関連機器 */
    5641#define EOJ_X1_SENSOR 0x00
    5742
    58 /* 空調関連機器 */
     43/* 空調関連機器 */
    5944#define EOJ_X1_AIR_CONDITIONER 0x01
    6045
    61 /* 住å®
    62 ãƒ»è¨­å‚™é–¢é€£æ©Ÿå™¨ */
     46/* 住宅・設備関連機器 */
    6347#define EOJ_X1_AMENITY 0x02
    6448
    65 /* 調理・家事関連機器 */
     49/* 調理・家事関連機器 */
    6650#define EOJ_X1_HOUSEWORK 0x03
    6751
    68 /* 健康関連機器 */
     52/* 健康関連機器 */
    6953#define EOJ_X1_WELLNESS 0x04
    7054
    71 /* 管理・操作関連機器 */
     55/* 管理・操作関連機器 */
    7256#define EOJ_X1_CONTROLLER 0x05
    7357
    74 /* AV関連機器 */
     58/* AV関連機器 */
    7559#define EOJ_X1_AUDIO_VISUAL 0x06
    7660
    77 /* プロファイル */
     61/* プロファイル */
    7862#define EOJ_X1_PROFILE 0x0E
    7963
    80 /* ユーザー定義 */
     64/* ユーザー定義 */
    8165#define EOJ_X1_USER_DEFINED 0x0F
    8266
    8367/*
    84  * センサ関連機器クラスグループ *
    85  */
    86 /* ガス漏れセンサ */
     68 * センサ関連機器クラスグループ *
     69 */
     70/* ガス漏れセンサ */
    8771#define EOJ_X2_GAS_LEAK_SENSOR 0x01
    8872
    89 /* 防犯センサ */
     73/* 防犯センサ */
    9074#define EOJ_X2_CRIME_PREVENTION_SENSOR 0x02
    9175
    92 /* 非常ボタン */
     76/* 非常ボタン */
    9377#define EOJ_X2_EMERGENCY_BUTTON 0x03
    9478
    95 /* 救急用センサ */
     79/* 救急用センサ */
    9680#define EOJ_X2_FIRST_AID_SENSOR 0x04
    9781
    98 /* 地震センサ */
     82/* 地震センサ */
    9983#define EOJ_X2_EARTHQUAKE_SENSOR 0x05
    10084
    101 /* 漏電センサ */
     85/* 漏電センサ */
    10286#define EOJ_X2_ELECTRIC_LEAK_SENSOR 0x06
    10387
    104 /* 人体検知センサ */
     88/* 人体検知センサ */
    10589#define EOJ_X2_HUMAN_DETECTION_SENSOR 0x07
    10690
    107 /* 来客センサ */
     91/* 来客センサ */
    10892#define EOJ_X2_VISITOR_SENSOR 0x08
    10993
    110 /* 呼び出しセンサ */
     94/* 呼び出しセンサ */
    11195#define EOJ_X2_CALL_SENSOR 0x09
    11296
    113 /* 結露センサ */
     97/* 結露センサ */
    11498#define EOJ_X2_CONDENSATION_SENSOR 0x0A
    11599
    116 /* 空気汚染センサ */
     100/* 空気汚染センサ */
    117101#define EOJ_X2_AIR_POLLUTION_SENSOR 0x0B
    118102
    119 /* é
    120 ¸ç´ ã‚»ãƒ³ã‚µ */
     103/* 酸素センサ */
    121104#define EOJ_X2_OXYGEN_SENSOR 0x0C
    122105
    123 /* ç
    124 §åº¦ã‚»ãƒ³ã‚µ */
     106/* 照度センサ */
    125107#define EOJ_X2_ILLUMINANCE_SENSOR 0x0D
    126108
    127 /* 音センサ */
     109/* 音センサ */
    128110#define EOJ_X2_SOUND_SENSOR 0x0E
    129111
    130 /* 投函センサ */
     112/* 投函センサ */
    131113#define EOJ_X2_MAILING_SENSOR 0x0F
    132114
    133 /* 重荷センサ */
     115/* 重荷センサ */
    134116#define EOJ_X2_WEIGHT_SENSOR 0x10
    135117
    136 /* 温度センサ */
     118/* 温度センサ */
    137119#define EOJ_X2_TEMPERATURE_SENSOR 0x11
    138120
    139 /* 湿度センサ */
     121/* 湿度センサ */
    140122#define EOJ_X2_HUMIDITY_SENSOR 0x12
    141123
    142 /* 雨センサ */
     124/* 雨センサ */
    143125#define EOJ_X2_RAIN_SENSOR 0x13
    144126
    145 /* 水位センサ */
     127/* 水位センサ */
    146128#define EOJ_X2_WATER_LEVEL_SENSOR 0x14
    147129
    148 /* 風呂水位センサ */
     130/* 風呂水位センサ */
    149131#define EOJ_X2_BATH_WATER_LEVEL_SENSOR 0x15
    150132
    151 /* 風呂沸き上がりセンサ */
     133/* 風呂沸き上がりセンサ */
    152134#define EOJ_X2_BATH_HEATING_STATUS_SENSOR 0x16
    153135
    154 /* 水漏れセンサ */
     136/* 水漏れセンサ */
    155137#define EOJ_X2_WATER_LEAK_SENSOR 0x17
    156138
    157 /* 水あふれセンサ */
     139/* 水あふれセンサ */
    158140#define EOJ_X2_WATER_OVERFLOW_SENSOR 0x18
    159141
    160 /* 火災センサ */
     142/* 火災センサ */
    161143#define EOJ_X2_FIRE_SENSOR 0x19
    162144
    163 /* タバコç
    164 ™ã‚»ãƒ³ã‚µ */
     145/* タバコ煙センサ */
    165146#define EOJ_X2_CIGARETTE_SMOKE_SENSOR 0x1A
    166147
    167 /* CO2センサ */
     148/* CO2センサ */
    168149#define EOJ_X2_CO2_SENSOR 0x1B
    169150
    170 /* ガスセンサ */
     151/* ガスセンサ */
    171152#define EOJ_X2_GAS_SENSOR 0x1C
    172153
    173 /* VOCセンサ */
     154/* VOCセンサ */
    174155#define EOJ_X2_VOC_SENSOR 0x1D
    175156
    176 /* 差圧センサ */
     157/* 差圧センサ */
    177158#define EOJ_X2_DIFFERENTIAL_PRESSURE_SENSOR 0x1E
    178159
    179 /* 風速センサ */
     160/* 風速センサ */
    180161#define EOJ_X2_AIR_SPEED_SENSOR 0x1F
    181162
    182 /* 臭いセンサ */
     163/* 臭いセンサ */
    183164#define EOJ_X2_ODOR_SENSOR 0x20
    184165
    185 /* 炎センサ */
     166/* 炎センサ */
    186167#define EOJ_X2_FLAME_SENSOR 0x21
    187168
    188 /* 電力量センサ */
     169/* 電力量センサ */
    189170#define EOJ_X2_ELECTRIC_ENERGY_SENSOR 0x22
    190171
    191 /* 電流量センサ */
     172/* 電流量センサ */
    192173#define EOJ_X2_CURRENT_VALUE_SENSOR 0x23
    193174
    194 /* 昼å
    195 ‰ã‚»ãƒ³ã‚µ */
     175/* 昼光センサ */
    196176#define EOJ_X2_DAYLIGHT_SENSOR 0x24
    197177
    198 /* 水流量センサ */
     178/* 水流量センサ */
    199179#define EOJ_X2_WATER_FLOW_RATE_SENSOR 0x25
    200180
    201 /* 微動センサ */
     181/* 微動センサ */
    202182#define EOJ_X2_MICROMOTION_SENSOR 0x26
    203183
    204 /* 通過センサ */
     184/* 通過センサ */
    205185#define EOJ_X2_PASSAGE_SENSOR 0x27
    206186
    207 /* 在床センサ */
     187/* 在床センサ */
    208188#define EOJ_X2_BED_PRESENCE_SENSOR 0x28
    209189
    210 /* 開閉センサ */
     190/* 開閉センサ */
    211191#define EOJ_X2_OPEN_CLOSE_SENSOR 0x29
    212192
    213 /* 活動量センサ */
     193/* 活動量センサ */
    214194#define EOJ_X2_ACTIVITY_AMOUNT_SENSOR 0x2A
    215195
    216 /* 人体位置センサ */
     196/* 人体位置センサ */
    217197#define EOJ_X2_HUMAN_BODY_LOCATION_SENSOR 0x2B
    218198
    219 /* 雪センサ */
     199/* 雪センサ */
    220200#define EOJ_X2_SNOW_SENSOR 0x2C
    221201
    222202/*
    223  * 空調関連機器クラスグループ *
    224  */
    225 /* 家庭用エアコン */
     203 * 空調関連機器クラスグループ *
     204 */
     205/* 家庭用エアコン */
    226206#define EOJ_X2_HOME_AIR_CONDITIONER 0x30
    227207
    228 /* 冷風機 */
     208/* 冷風機 */
    229209#define EOJ_X2_COLD_BLASTER 0x31
    230210
    231 /* 扇風機 */
     211/* 扇風機 */
    232212#define EOJ_X2_ELECTRIC_FAN 0x32
    233213
    234 /* 換気扇 */
     214/* 換気扇 */
    235215#define EOJ_X2_VENTILATION_FAN 0x33
    236216
    237 /* 空調換気扇 */
     217/* 空調換気扇 */
    238218#define EOJ_X2_AIR_CONDITIONING_VENTILATION_FAN 0x34
    239219
    240 /* 空気æ¸
    241 æµ„器 */
     220/* 空気清浄器 */
    242221#define EOJ_X2_AIR_CLEANER 0x35
    243222
    244 /* 冷風扇 */
     223/* 冷風扇 */
    245224#define EOJ_X2_COLD_BLAST_FAN 0x36
    246225
    247 /* サーキュレータ */
     226/* サーキュレータ */
    248227#define EOJ_X2_CIRCULATOR 0x37
    249228
    250 /* 除湿機 */
     229/* 除湿機 */
    251230#define EOJ_X2_DEHUMIDIFIER 0x38
    252231
    253 /* 加湿器 */
     232/* 加湿器 */
    254233#define EOJ_X2_HUMIDIFIER 0x39
    255234
    256 /* 天井扇 */
     235/* 天井扇 */
    257236#define EOJ_X2_CEILING_FAN 0x3A
    258237
    259 /* 電気こたつ */
     238/* 電気こたつ */
    260239#define EOJ_X2_ELECTRIC_KOTATSU 0x3B
    261240
    262 /* 電気あんか */
     241/* 電気あんか */
    263242#define EOJ_X2_ELECTRIC_HEATING_PAD 0x3C
    264243
    265 /* 電気毛布 */
     244/* 電気毛布 */
    266245#define EOJ_X2_ELECTRIC_BLANKET 0x3D
    267246
    268 /* ストーブ */
     247/* ストーブ */
    269248#define EOJ_X2_SPACE_HEATER 0x3E
    270249
    271 /* パネルヒータ */
     250/* パネルヒータ */
    272251#define EOJ_X2_PANEL_HEATER 0x3F
    273252
    274 /* 電気カーペット */
     253/* 電気カーペット */
    275254#define EOJ_X2_ELECTRIC_CARPET 0x40
    276255
    277 /* フロアヒータ */
     256/* フロアヒータ */
    278257#define EOJ_X2_FLOOR_HEATER 0x41
    279258
    280 /* 電気暖房器 */
     259/* 電気暖房器 */
    281260#define EOJ_X2_ELECTRIC_HEATER 0x42
    282261
    283 /* ファンヒータ */
     262/* ファンヒータ */
    284263#define EOJ_X2_FAN_HEATER 0x43
    285264
    286 /* å
    287 
    288 é›»å™¨ */
     265/* 充電器 */
    289266#define EOJ_X2_BATTERY_CHARGER 0x44
    290267
    291 /* 業務用パッケージエアコン室å†
    292 æ©Ÿ */
     268/* 業務用パッケージエアコン室内機 */
    293269#define EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_INDOOR_UNIT 0x45
    294270
    295 /* 業務用パッケージエアコン室外機 */
     271/* 業務用パッケージエアコン室外機 */
    296272#define EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_OUTDOOR_UNIT 0x46
    297273
    298 /* 業務用パッケージエアコン蓄熱ユニット */
     274/* 業務用パッケージエアコン蓄熱ユニット */
    299275#define EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_THERMAL_STORAGE_UNIT 0x47
    300276
    301 /* 業務用ファンコイルユニット */
     277/* 業務用ファンコイルユニット */
    302278#define EOJ_X2_COMMERCIAL_FAN_COIL_UNIT 0x48
    303279
    304 /* 業務用空調冷熱源(チラー) */
     280/* 業務用空調冷熱源(チラー) */
    305281#define EOJ_X2_COMMERCIAL_AIR_CONDITIONING_COLD_SOURCE_CHILLER 0x49
    306282
    307 /* 業務用空調温熱源(ボイラー) */
     283/* 業務用空調温熱源(ボイラー) */
    308284#define EOJ_X2_COMMERCIAL_AIR_CONDITIONING_HEAT_SOURCE_BOILER 0x50
    309285
    310 /* 業務用空調VAV */
     286/* 業務用空調VAV */
    311287#define EOJ_X2_AIR_CONDITIONING_VAV_FOR_COMMERCIAL_APPLICATION 0x51
    312288
    313 /* 業務用空調エアハンドリングユニット */
     289/* 業務用空調エアハンドリングユニット */
    314290#define EOJ_X2_AIR_HANDLING_UNIT_AIR_CONDITIONING_FOR_COMMERCIAL_APPLICATION 0x52
    315291
    316 /* ユニットクーラー */
     292/* ユニットクーラー */
    317293#define EOJ_X2_UNIT_COOLER 0x53
    318294
    319 /* 業務用コンデンシングユニット */
     295/* 業務用コンデンシングユニット */
    320296#define EOJ_X2_CONDENSING_UNIT_FOR_COMMERCIAL_APPLICATION 0x54
    321297
    322298/*
    323  * 住å®
    324 ãƒ»è¨­å‚™é–¢é€£æ©Ÿå™¨ã‚¯ãƒ©ã‚¹ã‚°ãƒ«ãƒ¼ãƒ— *
    325  */
    326 /* 電動ブラインド */
     299 * 住宅・設備関連機器クラスグループ *
     300 */
     301/* 電動ブラインド */
    327302#define EOJ_X2_ELECTRICALLY_OPERATED_SHADE 0x60
    328303
    329 /* 電動シャッター */
     304/* 電動シャッター */
    330305#define EOJ_X2_ELECTRICALLY_OPERATED_SHUTTER 0x61
    331306
    332 /* 電動カーテン */
     307/* 電動カーテン */
    333308#define EOJ_X2_ELECTRICALLY_OPERATED_CURTAIN 0x62
    334309
    335 /* 電動雨戸 */
     310/* 電動雨戸 */
    336311#define EOJ_X2_ELECTRICALLY_OPERATED_STORM_WINDOW 0x63
    337312
    338 /* 電動ガレージ */
     313/* 電動ガレージ */
    339314#define EOJ_X2_ELECTRICALLY_OPERATED_DOOR 0x64
    340315
    341 /* 電動天窓 */
     316/* 電動天窓 */
    342317#define EOJ_X2_ELECTRICALLY_OPERATED_SKYLIGHT 0x65
    343318
    344 /* オーニング(日よけ) */
     319/* オーニング(日よけ) */
    345320#define EOJ_X2_AWNING 0x66
    346321
    347 /* 散水器(庭用) */
     322/* 散水器(庭用) */
    348323#define EOJ_X2_GARDEN_SPRINKLER 0x67
    349324
    350 /* 散水器(火災用) */
     325/* 散水器(火災用) */
    351326#define EOJ_X2_FIRE_SPRINKLER 0x68
    352327
    353 /* 噴水 */
     328/* 噴水 */
    354329#define EOJ_X2_FOUNTAIN 0x69
    355330
    356 /* 瞬間湯沸器 */
     331/* 瞬間湯沸器 */
    357332#define EOJ_X2_INSTANTANEOUS_WATER_HEATERS 0x6A
    358333
    359 /* 電気温水器 */
     334/* 電気温水器 */
    360335#define EOJ_X2_ELECTRIC_WATER_HEATER 0x6B
    361336
    362 /* 太陽熱温水器 */
     337/* 太陽熱温水器 */
    363338#define EOJ_X2_SOLAR_WATER_HEATER 0x6C
    364339
    365 /* 循環ポンプ */
     340/* 循環ポンプ */
    366341#define EOJ_X2_CIRCULATION_PUMP 0x6D
    367342
    368 /* 電気便座(温水洗浄便座、暖房便座など) */
     343/* 電気便座(温水洗浄便座、暖房便座など) */
    369344#define EOJ_X2_BIDET_EQUIPPED_TOILET 0x6E
    370345
    371 /* 電気錠 */
     346/* 電気錠 */
    372347#define EOJ_X2_ELECTRIC_KEY 0x6F
    373348
    374 /* ガスå
    375 ƒå¼ */
     349/* ガス元弁 */
    376350#define EOJ_X2_GAS_LINE_VALVE 0x70
    377351
    378 /* ホームサウナ */
     352/* ホームサウナ */
    379353#define EOJ_X2_HOME_SAUNA 0x71
    380354
    381 /* 瞬間式給湯器 */
     355/* 瞬間式給湯器 */
    382356#define EOJ_X2_HOT_WATER_GENERATOR 0x72
    383357
    384 /* 浴室暖房乾燥機 */
     358/* 浴室暖房乾燥機 */
    385359#define EOJ_X2_BATHROOM_DRYER 0x73
    386360
    387 /* ホームエレベータ */
     361/* ホームエレベータ */
    388362#define EOJ_X2_HOME_ELEVATOR 0x74
    389363
    390 /* 電動間仕切り */
     364/* 電動間仕切り */
    391365#define EOJ_X2_ELECTRICALLY_OPERATED_ROOM_DIVIDER 0x75
    392366
    393 /* 水平トランスファ */
     367/* 水平トランスファ */
    394368#define EOJ_X2_HORIZONTAL_TRANSFER 0x76
    395369
    396 /* 電動物干し */
     370/* 電動物干し */
    397371#define EOJ_X2_ELECTRICALLY_OPERATED_CLOTHES_DRYING_POLE 0x77
    398372
    399 /* 浄化槽 */
     373/* 浄化槽 */
    400374#define EOJ_X2_SEPTIC_TANK 0x78
    401375
    402 /* 住å®
    403 ç”¨å¤ªé™½å
    404 ‰ç™ºé›» */
     376/* 住宅用太陽光発電 */
    405377#define EOJ_X2_HOME_SOLAR_POWER_GENERATION 0x79
    406378
    407 /* 冷温水熱源機 */
     379/* 冷温水熱源機 */
    408380#define EOJ_X2_COLD_AND_HOT_WATER_HEAT_SOURCE_EQUIPMENT 0x7A
    409381
    410 /* 床暖房 */
     382/* 床暖房 */
    411383#define EOJ_X2_FLOOR_HEATING 0x7B
    412384
    413 /* 燃料電池 */
     385/* 燃料電池 */
    414386#define EOJ_X2_FUEL_CELL 0x7C
    415387
    416 /* 蓄電池 */
     388/* 蓄電池 */
    417389#define EOJ_X2_STORAGE_BATTERY 0x7D
    418390
    419 /* 電気自動車å
    420 
    421 æ”¾é›»ã‚·ã‚¹ãƒ†ãƒ  */
     391/* 電気自動車充放電システム */
    422392#define EOJ_X2_ELECTRIC_VEHICLE 0x7E
    423393
    424 /* 電力量メータ */
     394/* 電力量メータ */
    425395#define EOJ_X2_ELECTRIC_ENERGY_METER 0x80
    426396
    427 /* 水流量メータ */
     397/* 水流量メータ */
    428398#define EOJ_X2_WATER_FLOW_METER 0x81
    429399
    430 /* ガスメータ */
     400/* ガスメータ */
    431401#define EOJ_X2_GAS_METER 0x82
    432402
    433 /* LPガスメータ */
     403/* LPガスメータ */
    434404#define EOJ_X2_LP_GAS_METERS 0x83
    435405
    436 /* 時計 */
     406/* 時計 */
    437407#define EOJ_X2_CLOCK 0x84
    438408
    439 /* 自動ドア */
     409/* 自動ドア */
    440410#define EOJ_X2_AUTOMATIC_DOOR 0x85
    441411
    442 /* 業務用エレベータ */
     412/* 業務用エレベータ */
    443413#define EOJ_X2_COMMERCIAL_ELEVATOR 0x86
    444414
    445 /* 分電盤メータリング */
     415/* 分電盤メータリング */
    446416#define EOJ_X2_DISTRIBUTION_PANEL_METERING 0x87
    447417
    448 /* スマート電力量メータ */
     418/* スマート電力量メータ */
    449419#define EOJ_X2_SMART_ELECTRIC_ENERGY_METER 0x88
    450420
    451 /* スマートガスメータ */
     421/* スマートガスメータ */
    452422#define EOJ_X2_SMART_GAS_METER 0x89
    453423
    454 /* 一般ç
    455 §æ˜Ž */
     424/* 一般照明 */
    456425#define EOJ_X2_GENERAL_LIGHTING_CLASS 0x90
    457426
    458 /* 非常ç
    459 §æ˜Ž */
     427/* 非常照明 */
    460428#define EOJ_X2_EMERGENCY_LIGHTING 0x99
    461429
    462 /* 設備ç
    463 §æ˜Ž */
     430/* 設備照明 */
    464431#define EOJ_X2_EQUIPMENT_LIGHT 0x9D
    465432
    466 /* ブザー */
     433/* ブザー */
    467434#define EOJ_X2_BUZZER 0xA0
    468435
    469436/*
    470  * 調理・家事関連機器クラスグループ *
    471  */
    472 /* コーヒーメーカ */
     437 * 調理・家事関連機器クラスグループ *
     438 */
     439/* コーヒーメーカ */
    473440#define EOJ_X2_COFFEE_MACHINE 0xB0
    474441
    475 /* コーヒーミル */
     442/* コーヒーミル */
    476443#define EOJ_X2_COFFEE_MILL 0xB1
    477444
    478 /* 電気ポット */
     445/* 電気ポット */
    479446#define EOJ_X2_ELECTRIC_HOT_WATER_POT 0xB2
    480447
    481 /* 電気こんろ */
     448/* 電気こんろ */
    482449#define EOJ_X2_ELECTRIC_STOVE 0xB3
    483450
    484 /* トースタ */
     451/* トースタ */
    485452#define EOJ_X2_TOASTER 0xB4
    486453
    487 /* ジューサ・ミキサ */
     454/* ジューサ・ミキサ */
    488455#define EOJ_X2_JUICER_FOOD_MIXER 0xB5
    489456
    490 /* フードプロセッサ */
     457/* フードプロセッサ */
    491458#define EOJ_X2_FOOD_PROCESSOR 0xB6
    492459
    493 /* 冷凍冷蔵庫 */
     460/* 冷凍冷蔵庫 */
    494461#define EOJ_X2_REFRIGERATOR_FREEZER 0xB7
    495462
    496 /* オーブンレンジ */
     463/* オーブンレンジ */
    497464#define EOJ_X2_COMBINATION_MICROWAVE_OVEN 0xB8
    498465
    499 /* クッキングヒータ */
     466/* クッキングヒータ */
    500467#define EOJ_X2_COOKING_HEATER 0xB9
    501468
    502 /* オーブン */
     469/* オーブン */
    503470#define EOJ_X2_OVEN 0xBA
    504471
    505 /* 炊飯器 */
     472/* 炊飯器 */
    506473#define EOJ_X2_RICE_COOKER 0xBB
    507474
    508 /* 電子ジャー */
     475/* 電子ジャー */
    509476#define EOJ_X2_ELECTRONIC_JAR 0xBC
    510477
    511 /* 食器洗い機 */
     478/* 食器洗い機 */
    512479#define EOJ_X2_DISH_WASHER 0xBD
    513480
    514 /* 食器乾燥機 */
     481/* 食器乾燥機 */
    515482#define EOJ_X2_DISH_DRYER 0xBE
    516483
    517 /* 電気もちつき機 */
     484/* 電気もちつき機 */
    518485#define EOJ_X2_ELECTRIC_RICE_CAKE_COOKER 0xBF
    519486
    520 /* 保温機 */
     487/* 保温機 */
    521488#define EOJ_X2_KEEP_WARM_MACHINE 0xC0
    522489
    523 /* 精米機 */
     490/* 精米機 */
    524491#define EOJ_X2_RICE_MILL 0xC1
    525492
    526 /* 自動製パン機 */
     493/* 自動製パン機 */
    527494#define EOJ_X2_AUTOMATIC_BREAD_COOKER 0xC2
    528495
    529 /* スロークッカー */
     496/* スロークッカー */
    530497#define EOJ_X2_SLOW_COOKER 0xC3
    531498
    532 /* 電気漬物機 */
     499/* 電気漬物機 */
    533500#define EOJ_X2_ELECTRIC_PICKLES_COOKER 0xC4
    534501
    535 /* 洗濯機 */
     502/* 洗濯機 */
    536503#define EOJ_X2_WASHING_MACHINE 0xC5
    537504
    538 /* 衣類乾燥機 */
     505/* 衣類乾燥機 */
    539506#define EOJ_X2_CLOTH_DRYER 0xC6
    540507
    541 /* 電気アイロン */
     508/* 電気アイロン */
    542509#define EOJ_X2_ELECTRIC_IRON 0xC7
    543510
    544 /* ズボンプレッサ */
     511/* ズボンプレッサ */
    545512#define EOJ_X2_TROUSER_PRESS 0xC8
    546513
    547 /* ふとん乾燥機 */
     514/* ふとん乾燥機 */
    548515#define EOJ_X2_FUTON_DRYER 0xC9
    549516
    550 /* 小物・くつ乾燥機 */
     517/* 小物・くつ乾燥機 */
    551518#define EOJ_X2_SMALL_ARTICLE_SHOES_DRYER 0xCA
    552519
    553 /* 電気掃除機(セントラルクリーナ含む) */
     520/* 電気掃除機(セントラルクリーナ含む) */
    554521#define EOJ_X2_ELECTRIC_VACUUM_CLEANER 0xCB
    555522
    556 /* ディスポーザ */
     523/* ディスポーザ */
    557524#define EOJ_X2_DISPOSER 0xCC
    558525
    559 /* 電気蚊取り機 */
     526/* 電気蚊取り機 */
    560527#define EOJ_X2_ELECTRIC_MOSQUITO_CATCHER 0xCD
    561528
    562 /* 業務用ショーケース */
     529/* 業務用ショーケース */
    563530#define EOJ_X2_COMMERCIAL_SHOW_CASE 0xCE
    564531
    565 /* 業務用冷蔵庫 */
     532/* 業務用冷蔵庫 */
    566533#define EOJ_X2_COMMERCIAL_REFRIGERATOR 0xCF
    567534
    568 /* 業務用ホットケース */
     535/* 業務用ホットケース */
    569536#define EOJ_X2_COMMERCIAL_HOT_CASE 0xD0
    570537
    571 /* 業務用フライヤー */
     538/* 業務用フライヤー */
    572539#define EOJ_X2_COMMERCIAL_FRYER 0xD1
    573540
    574 /* 業務用電子レンジ */
     541/* 業務用電子レンジ */
    575542#define EOJ_X2_COMMERCIAL_MICROWAVE_OVEN 0xD2
    576543
    577 /* 洗濯乾燥機 */
     544/* 洗濯乾燥機 */
    578545#define EOJ_X2_WASHER_AND_DRYER 0xD3
    579546
    580547/*
    581  * 健康関連機器クラスグループ *
    582  */
    583 /* 体重計 */
     548 * 健康関連機器クラスグループ *
     549 */
     550/* 体重計 */
    584551#define EOJ_X2_WEIGHING_MACHINE 0x01
    585552
    586 /* 体温計 */
     553/* 体温計 */
    587554#define EOJ_X2_CLINICAL_THERMOMETER 0x02
    588555
    589 /* 血圧計 */
     556/* 血圧計 */
    590557#define EOJ_X2_BLOOD_PRESSURE_METER 0x03
    591558
    592 /* 血糖値計 */
     559/* 血糖値計 */
    593560#define EOJ_X2_BLOOD_SUGAR_METER 0x04
    594561
    595 /* 体脂肪計 */
     562/* 体脂肪計 */
    596563#define EOJ_X2_BODY_FAT_METER 0x05
    597564
    598565/*
    599  * 管理・操作関連機器クラスグループ *
    600  */
    601 /* セキュア通信用å
    602 ±æœ‰éµè¨­å®šãƒŽãƒ¼ãƒ‰ */
     566 * 管理・操作関連機器クラスグループ *
     567 */
     568/* セキュア通信用共有鍵設定ノード */
    603569#define EOJ_X2_SECURE_COMMUNICATION_SHARED_KEY_SETUP_NODE 0xFC
    604570
    605 /* スイッチ(JEMA/HA端子対応) */
     571/* スイッチ(JEMA/HA端子対応) */
    606572#define EOJ_X2_SWITCH 0xFD
    607573
    608 /* 携帯端末 */
     574/* 携帯端末 */
    609575#define EOJ_X2_PORTABLE_TERMINAL 0xFE
    610576
    611 /* コントローラ */
     577/* コントローラ */
    612578#define EOJ_X2_CONTROLLER 0xFF
    613579
    614580/*
    615  * AV関連機器クラスグループ *
    616  */
    617 /* ディスプレー */
     581 * AV関連機器クラスグループ *
     582 */
     583/* ディスプレー */
    618584#define EOJ_X2_DISPLAY 0x01
    619585
    620 /* テレビ */
     586/* テレビ */
    621587#define EOJ_X2_TELEVISION 0x02
    622588
    623589/*
    624  * プロファイルクラスグループ *
    625  */
    626 /* ノードプロファイル */
     590 * プロファイルクラスグループ *
     591 */
     592/* ノードプロファイル */
    627593#define EOJ_X2_NODE_PROFILE 0xF0
    628594
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_dbg.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r270 r321  
    44 *  Copyright (C) 2014-2016 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
     6 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     7 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     8 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     9 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     10 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     11 *      スコード中に含まれていること.
     12 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     13 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     14 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     15 *      の無保証規定を掲載すること.
     16 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     17 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     18 *      と.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     20 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     22 *        報告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     26 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     27 *      免責すること.
    4228 *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    4934 *
    5035 */
    5136
    5237/*
    53  *              ECHONET Lite タスク デバッグ出力
     38 *              ECHONET Lite タスク デバッグ出力
    5439 */
    5540
     
    7661static ER _ecn_dbg_wai_syslog(void);
    7762/*
    78  *  syslog()バッファに余裕ができるまでå¾
    79 ã¤
     63 *  syslog()バッファに余裕ができるまで待つ
    8064 */
    8165static ER _ecn_dbg_wai_syslog(void)
     
    118102
    119103/*
    120  * デバッグ出力
    121  * 例:               ECN_DBG_PUT_2("task start");
     104 * デバッグ出力
     105 * 例:           ECN_DBG_PUT_2("task start");
    122106 */
    123107int _ecn_dbg_dbgput(ecnl_svc_task_t *svc, const char *fp_srcloc, const char *fp_form, ...)
     
    127111#ifdef ECN_DBG_PUT_USE_STATIC
    128112 #ifndef SEM_ECN_DBG_PUT
    129         /* 256byteバッファ8本ローテーション */
     113        /* 256byteバッファ8本ローテーション */
    130114        static char                             a_buf[8][256];
    131115        static volatile uint_t  a_buf_idx = 0;
    132116        uint_t                                  a_buf_idx_a;
    133117 #else
    134         /* セマフォを用いて、1本のバッファ上に文字列を並べて使う */
     118        /* セマフォを用いて、1本のバッファ上に文字列を並べて使う */
    135119        static char                             a_buf[1024];
    136120        static volatile uint_t  a_buf_pos = 0;
     
    155139        p_buf = a_buf[a_buf_idx_a & 0x07];
    156140 #else
    157         if (sizeof(a_buf) - a_buf_pos < 80)     /* 残りが80byte未満になったら、å
    158 ˆé ­ã«æˆ»ã‚‹ */
     141        if (sizeof(a_buf) - a_buf_pos < 80)     /* 残りが80byte未満になったら、先頭に戻る */
    159142                a_buf_pos = 0;
    160143        p_buf = a_buf + a_buf_pos;
    161144        a_buf_len = sizeof(a_buf) - a_buf_pos - 1;
    162         if (80 * 2 <= a_buf_len)        /* 80byte*2以上の余白があるうちは、末尾80byteを残す */
     145        if (80 * 2 <= a_buf_len)        /* 80byte*2以上の余白があるうちは、末尾80byteを残す */
    163146                a_buf_len -= 80;
    164147 #endif /* #ifdef SEM_ECN_DBG_PUT */
     
    184167 #ifdef SEM_ECN_DBG_PUT
    185168        a_buf_len = strlen(p_buf) + 1;
    186         /* 残りが80byte未満になったら */
     169        /* 残りが80byte未満になったら */
    187170        if (sizeof(a_buf) - a_buf_pos - a_buf_len < 80) {
    188                 /* å
    189 ˆé ­ã«æˆ»ã‚‹ */
     171                /* 先頭に戻る */
    190172                a_buf_pos = 0;
    191173        } else {
     
    195177#endif
    196178
    197         _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまでå¾
    198 ã¤ */
     179        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    199180
    200181#ifdef SEM_ECN_DBG_PUT
     
    212193}
    213194
    214 /* ECN_ENOD_IDの文字列変換 */
     195/* ECN_ENOD_IDの文字列変換 */
    215196const char *_ecn_dbg_enod2str(ECN_ENOD_ID fa_enod_id)
    216197{
     
    260241
    261242/*
    262  * バイナリダンプ出力
     243 * バイナリダンプ出力
    263244 */
    264245void _ecn_dbg_bindmp(const uint8_t *buffer, size_t len)
    265246{
    266         /* static領域のバッファを切り替える個数(2^n) */
     247        /* static領域のバッファを切り替える個数(2^n) */
    267248        #define _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT (4)
    268249/*      */
     
    270251 #ifdef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT
    271252  #undef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT
    272   /* セマフォ(SEM_ECN_DBG_BINDMP)が定義されている場合、バッファ切り替えは不要なのでundef */
     253  /* セマフォ(SEM_ECN_DBG_BINDMP)が定義されている場合、バッファ切り替えは不要なのでundef */
    273254 #endif
    274255#endif
    275256#ifndef _ECN_FBS_DBG_BINDMP_BUFLEN
    276  /* バッファサイズ(bindmp中の1行が収まるサイズ) */
     257 /* バッファサイズ(bindmp中の1行が収まるサイズ) */
    277258 #define _ECN_FBS_DBG_BINDMP_BUFLEN (80)
    278259#endif
    279260#ifdef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT
    280         /* static領域のバッファを切り替えるための管理用変数 */
     261        /* static領域のバッファを切り替えるための管理用変数 */
    281262        static volatile uint8_t a_idx_vol = 0;
    282         /* static領域のバッファ切り替え領域 */
     263        /* static領域のバッファ切り替え領域 */
    283264        static char a_buf_area[1 << _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT][_ECN_FBS_DBG_BINDMP_BUFLEN];
    284265        uint8_t a_idx;
    285266        char *a_buf;
    286267#else
    287         /* static領域のバッファ領域 */
     268        /* static領域のバッファ領域 */
    288269        static char a_buf[_ECN_FBS_DBG_BINDMP_BUFLEN];
    289270#endif
    290         const uint8_t *p = buffer;                      /* 読み取りポインタ */
     271        const uint8_t *p = buffer;                      /* 読み取りポインタ */
    291272        int i, a_blk, a_blk_max, a_pos = 0;
    292273        const T_ECN_EDT_HDR *p_req_esv;
     
    305286        }
    306287        #ifndef ECN_DBG_BINDMP_MAXLEN
    307          /* bindmp出力の最大サイズ */
     288         /* bindmp出力の最大サイズ */
    308289         #define ECN_DBG_BINDMP_MAXLEN 1600
    309290        #endif
     
    320301        for (a_blk = 0; p && a_blk < a_blk_max; p = ((T_ECN_FST_BLK *)buffer)->lnk.p_sub[a_blk++]->payload) {
    321302                if (0 < a_blk) {
    322                         _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまでå¾
    323 ã¤ */
     303                        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    324304                        printf("p_sub[%d] (0x%p)", a_blk - 1, p);
    325305                }
     
    328308                        if (i % 16 == 0) {
    329309                                if (a_buf[0]) {
    330                                         _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまでå¾
    331 ã¤ */
     310                                        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    332311                                        printf("%s", a_buf);
    333312                                }
     
    349328                }
    350329                if (a_buf[0]) {
    351                         _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまでå¾
    352 ã¤ */
     330                        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    353331                        printf("%s", a_buf);
    354332                }
     
    361339                case ECN_MSG_ECHONET:
    362340                        p_req_esv = (T_ECN_EDT_HDR *)&((const T_ECN_FST_BLK *)buffer)->payload;
    363                         _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまでå¾
    364 ã¤ */
     341                        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    365342                        printf(" sender: %d %s, target: %d %s",
    366343                                ((T_ECN_FST_BLK *)buffer)->hdr.sender.id, _ecn_dbg_enod2str(((T_ECN_FST_BLK *)buffer)->hdr.sender.id),
    367344                                ((T_ECN_FST_BLK *)buffer)->hdr.target.id, _ecn_dbg_enod2str(((T_ECN_FST_BLK *)buffer)->hdr.target.id));
    368                         _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまでå¾
    369 ã¤ */
     345                        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    370346                        printf(" ecn_hdr: 0x%02X 0x%02X 0x%04X", p_req_esv->ecn_hdr.ehd1, p_req_esv->ecn_hdr.ehd2, p_req_esv->ecn_hdr.tid);
    371                         _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまでå¾
    372 ã¤ */
     347                        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    373348                        printf(" edata: 0x%06X 0x%06X 0x%02X 0x%02X (%s)",
    374349                                p_req_esv->edata.seoj.eojx1 << 16 | p_req_esv->edata.seoj.eojx2 << 8 | p_req_esv->edata.seoj.eojx3,
    375350                                p_req_esv->edata.deoj.eojx1 << 16 | p_req_esv->edata.deoj.eojx2 << 8 | p_req_esv->edata.deoj.eojx3,
    376351                                p_req_esv->edata.esv, p_req_esv->edata.opc, _ecn_dbg_esv2str(p_req_esv->edata.esv));
    377                         _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまでå¾
    378 ã¤ */
     352                        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    379353                        printf(" ecn_prp: 0x%02X 0x%02X", p_req_esv->ecn_prp.epc, p_req_esv->ecn_prp.pdc);
    380                         _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまでå¾
    381 ã¤ */
     354                        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    382355                        printf(" cur(blk/pos): wr %d, rd %d",
    383356                                (int)((T_ECN_FST_BLK *)buffer)->hdr.wr,
     
    419392        && ((const T_ECN_FST_BLK *)buffer)->payload[1] == 0x81) {
    420393                p_req_esv = (const T_ECN_EDT_HDR *)&((const T_ECN_FST_BLK *)buffer)->payload[0];
    421                 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまでå¾
    422 ã¤ */
     394                _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    423395                printf(" ecn_hdr: 0x%02X 0x%02X 0x%04X", p_req_esv->ecn_hdr.ehd1, p_req_esv->ecn_hdr.ehd2, p_req_esv->ecn_hdr.tid);
    424                 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまでå¾
    425 ã¤ */
     396                _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    426397                printf(" edata: 0x%06X 0x%06X 0x%02X 0x%02X (%s)",
    427398                        p_req_esv->edata.seoj.eojx1 << 16 | p_req_esv->edata.seoj.eojx2 << 8 | p_req_esv->edata.seoj.eojx3,
    428399                        p_req_esv->edata.deoj.eojx1 << 16 | p_req_esv->edata.deoj.eojx2 << 8 | p_req_esv->edata.deoj.eojx3,
    429400                        p_req_esv->edata.esv, p_req_esv->edata.opc, _ecn_dbg_esv2str(p_req_esv->edata.esv));
    430                 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまでå¾
    431 ã¤ */
     401                _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    432402                printf(" ecn_prp: 0x%02X 0x%02X", p_req_esv->ecn_prp.epc, p_req_esv->ecn_prp.pdc);
    433403        }
     
    438408
    439409/*
    440  * ECHONET Liteサービスコード文字列変換
     410 * ECHONET Liteサービスコード文字列変換
    441411 */
    442412const char *_ecn_dbg_esv2str(uint8_t fa_esv)
    443413{
    444414        switch (fa_esv) {
    445         case ESV_SET_I_SNA:             return "プロパティ値書き込み要求不可応答";                      /* 0x50 */
    446         case ESV_SET_C_SNA:             return "プロパティ値書き込み要求不可応答";                      /* 0x51 */
    447         case ESV_GET_SNA:               return "プロパティ値読み出し不可応答";                            /* 0x52 */
    448         case ESV_INF_SNA:               return "プロパティ値通知不可応答";                                  /* 0x53 */
    449         case ESV_SET_GET_SNA:   return "プロパティ値書き込み・読み出し不可応答";     /* 0x5E */
    450         case ESV_SET_I:                 return "プロパティ値書き込み要求(応答不要)";                /* 0x60 */
    451         case ESV_SET_C:                 return "プロパティ値書き込み要求(応答要)";           /* 0x61 */
    452         case ESV_GET:                   return "プロパティ値読み出し要求";                                  /* 0x62 */
    453         case ESV_INF_REQ:               return "プロパティ値通知要求";                                                /* 0x63 */
    454         case ESV_SET_GET:               return "プロパティ値書き込み・読み出し要求";           /* 0x6E */
    455         case ESV_SET_RES:               return "プロパティ値書き込み応答";                                  /* 0x71 */
    456         case ESV_GET_RES:               return "プロパティ値読み出し応答";                                  /* 0x72 */
    457         case ESV_INF:                   return "プロパティ値通知";                                                      /* 0x73 */
    458         case ESV_INFC:                  return "プロパティ値通知(応答要)";                               /* 0x74 */
    459         case ESV_SET_GET_RES:   return "プロパティ値書き込み・読み出し応答";           /* 0x7E */
    460         case ESV_INFC_RES:              return "プロパティ値通知応答";                                                /* 0x7A */
     415        case ESV_SET_I_SNA:             return "プロパティ値書き込み要求不可応答";                      /* 0x50 */
     416        case ESV_SET_C_SNA:             return "プロパティ値書き込み要求不可応答";                      /* 0x51 */
     417        case ESV_GET_SNA:               return "プロパティ値読み出し不可応答";                                /* 0x52 */
     418        case ESV_INF_SNA:               return "プロパティ値通知不可応答";                                  /* 0x53 */
     419        case ESV_SET_GET_SNA:   return "プロパティ値書き込み・読み出し不可応答";   /* 0x5E */
     420        case ESV_SET_I:                 return "プロパティ値書き込み要求(応答不要)";            /* 0x60 */
     421        case ESV_SET_C:                 return "プロパティ値書き込み要求(応答要)";             /* 0x61 */
     422        case ESV_GET:                   return "プロパティ値読み出し要求";                                  /* 0x62 */
     423        case ESV_INF_REQ:               return "プロパティ値通知要求";                                            /* 0x63 */
     424        case ESV_SET_GET:               return "プロパティ値書き込み・読み出し要求";             /* 0x6E */
     425        case ESV_SET_RES:               return "プロパティ値書き込み応答";                                  /* 0x71 */
     426        case ESV_GET_RES:               return "プロパティ値読み出し応答";                                  /* 0x72 */
     427        case ESV_INF:                   return "プロパティ値通知";                                                      /* 0x73 */
     428        case ESV_INFC:                  return "プロパティ値通知(応答要)";                         /* 0x74 */
     429        case ESV_SET_GET_RES:   return "プロパティ値書き込み・読み出し応答";             /* 0x7E */
     430        case ESV_INFC_RES:              return "プロパティ値通知応答";                                            /* 0x7A */
    461431        default:
    462432                return "(unknown)";
     
    467437{
    468438        switch (errorno) {
    469         case E_SYS:             return "システムエラー";
    470         case E_PAR:             return "パラメータエラー";
    471         case E_NOMEM:   return "メモリ不足";
    472         case E_OBJ:             return "オブジェクト状æ
    473 ‹ã‚¨ãƒ©ãƒ¼";
    474         case E_NOEXS:   return "オブジェクト未生成";
    475         case E_TMOUT:   return "ポーリング失敗またはタイムアウト";
    476         case E_BOVR:    return "バッファオーバーフロー";
    477         case E_BRK:             return "ユーザーによる中断";
     439        case E_SYS:             return "システムエラー";
     440        case E_PAR:             return "パラメータエラー";
     441        case E_NOMEM:   return "メモリ不足";
     442        case E_OBJ:             return "オブジェクト状態エラー";
     443        case E_NOEXS:   return "オブジェクト未生成";
     444        case E_TMOUT:   return "ポーリング失敗またはタイムアウト";
     445        case E_BOVR:    return "バッファオーバーフロー";
     446        case E_BRK:             return "ユーザーによる中断";
    478447        default:
    479448                return "(unknown)";
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_dbg.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    44 *  Copyright (C) 2014-2016 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
     6 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     7 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     8 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     9 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     10 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     11 *      スコード中に含まれていること.
     12 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     13 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     14 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     15 *      の無保証規定を掲載すること.
     16 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     17 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     18 *      と.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     20 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     22 *        報告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     26 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     27 *      免責すること.
    4228 *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    4934 *
    5035 */
    5136
    5237/*
    53  *              ECHONET Lite タスク デバッグ出力
     38 *              ECHONET Lite タスク デバッグ出力
    5439 */
    5540
     
    7964#endif
    8065
    81 /* デバッグ出力(CARP) */
     66/* デバッグ出力(CARP) */
    8267#ifdef ECN_CAP_PUT_ENA
    8368#define ECN_CAP_PUT(a)                                  printf(a)
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_fbs.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r270 r321  
    44 *  Copyright (C) 2014-2016 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
     6 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     7 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     8 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     9 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     10 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     11 *      スコード中に含まれていること.
     12 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     13 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     14 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     15 *      の無保証規定を掲載すること.
     16 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     17 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     18 *      と.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     20 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     22 *        報告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     26 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     27 *      免責すること.
    4228 *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    4934 *
    5035 */
    5136
    5237/*
    53  * 固定長バッファ可変長ストリーム
     38 * 固定長バッファ可変長ストリーム
    5439 */
    5540
     
    264249}
    265250
    266 /* メモリブロック取得 ok:ポインタ NG:NULL */
     251/* メモリブロック取得 ok:ポインタ NG:NULL */
    267252void *_ecn_fbs_mbx_get(mrb_state *mrb, ECN_FBS_SIZE_T fa_req_size)
    268253{
     
    281266}
    282267
    283 /* メモリブロック解放 */
     268/* メモリブロック解放 */
    284269ER _ecn_fbs_mbx_rel(mrb_state *mrb, void *p)
    285270{
     
    289274}
    290275
    291 /* 領域確保 */
     276/* 領域確保 */
    292277ER _ecn_fbs_cre(mrb_state *mrb, ECN_FBS_SIZE_T fa_req_size, ECN_FBS_ID *fp_id)
    293278{
     
    295280}
    296281
    297 /* 領域解放 */
     282/* 領域解放 */
    298283ER _ecn_fbs_del(mrb_state *mrb, ECN_FBS_ID fa_id)
    299284{
     
    301286}
    302287
    303 /* 保持データの有無 */
     288/* 保持データの有無 */
    304289bool_t _ecn_fbs_exist_data(ECN_FBS_ID fa_id)
    305290{
     
    307292}
    308293
    309 /* 保持データ長の取得 */
     294/* 保持データ長の取得 */
    310295ECN_FBS_SSIZE_T _ecn_fbs_get_datalen(ECN_FBS_ID fa_id)
    311296{
     
    313298}
    314299
    315 /* 読み取りカーソルの位置取得 */
     300/* 読み取りカーソルの位置取得 */
    316301ECN_FBS_SSIZE_T _ecn_fbs_get_rpos(ECN_FBS_ID fa_id)
    317302{
     
    319304}
    320305
    321 /* 読み取りカーソルの位置設定 */
     306/* 読み取りカーソルの位置設定 */
    322307ER _ecn_fbs_set_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_pos)
    323308{
    324         if (fa_id.ptr->hdr.length <= (unsigned int)fa_pos)      /* 位置指定が大きすぎる */
     309        if (fa_id.ptr->hdr.length <= (unsigned int)fa_pos)      /* 位置指定が大きすぎる */
    325310                return E_PAR;
    326311
     
    330315}
    331316
    332 /* 読み取りカーソルの位置移動 */
     317/* 読み取りカーソルの位置移動 */
    333318ER _ecn_fbs_seek_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek)
    334319{
     
    340325}
    341326
    342 /* 任意指定位置の1byte読み取り */
     327/* 任意指定位置の1byte読み取り */
    343328int _ecn_fbs_peek(mrb_state *mrb, ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek)
    344329{
     
    351336}
    352337
    353 /* 任意指定位置の1byte書き込み */
     338/* 任意指定位置の1byte書き込み */
    354339ER _ecn_fbs_poke(mrb_state *mrb, ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek, int fa_val)
    355340{
     
    362347}
    363348
    364 /* データ追加 */
     349/* データ追加 */
    365350ER _ecn_fbs_add_data(mrb_state *mrb, ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len)
    366351{
     
    372357}
    373358
    374 /* データ追加(領域を自動的に拡張する) */
     359/* データ追加(領域を自動的に拡張する) */
    375360ER _ecn_fbs_add_data_ex(mrb_state *mrb, ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len)
    376361{
     
    379364}
    380365
    381 /* データ取得 */
     366/* データ取得 */
    382367ER _ecn_fbs_get_data(mrb_state *mrb, ECN_FBS_ID fa_id, void *fa_buf, ECN_FBS_SSIZE_T fa_maxlen, ECN_FBS_SSIZE_T *p_len)
    383368{
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_fbs.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    44 *  Copyright (C) 2014-2016 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
    42  *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
    49  *
    50  */
    51 
    52 /*
    53  * 固定長バッファ可変長ストリーム
     6 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     7 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     8 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     9 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     10 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     11 *      スコード中に含まれていること.
     12 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     13 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     14 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     15 *      の無保証規定を掲載すること.
     16 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     17 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     18 *      と.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     20 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     22 *        報告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     26 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     27 *      免責すること.
     28 *
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
     34 *
     35 */
     36
     37/*
     38 * 固定長バッファ可変長ストリーム
    5439 */
    5540
     
    6651
    6752#ifndef NUM_ECHONET_MEMPOOL_BLOCK
    68 #define NUM_ECHONET_MEMPOOL_BLOCK (60)          /* 電文用メモリブロックの数 */
     53#define NUM_ECHONET_MEMPOOL_BLOCK (60)          /* 電文用メモリブロックの数 */
    6954#endif /* NUM_ECHONET_MEMPOOL_BLOCK */
    7055
    7156#ifndef ECHONET_MEMPOOL_BLOCK_SIZE
    72 #define ECHONET_MEMPOOL_BLOCK_SIZE (256)        /* 電文用メモリブロックのサイズ */
     57#define ECHONET_MEMPOOL_BLOCK_SIZE (256)        /* 電文用メモリブロックのサイズ */
    7358#endif /* ECHONET_MEMPOOL_BLOCK_SIZE */
    7459
    75 typedef unsigned int ECN_FBS_SIZE_T;    /* size_t相当  */
    76 typedef int ECN_FBS_SSIZE_T;                    /* ssize_t相当 */
    77 
    78 /* T_EDATA管理領域サイズ */
     60typedef unsigned int ECN_FBS_SIZE_T;    /* size_t相当  */
     61typedef int ECN_FBS_SSIZE_T;                    /* ssize_t相当 */
     62
     63/* T_EDATA管理領域サイズ */
    7964#define DEF_ECN_EDT_HDR_LEN (sizeof(intptr_t))
    8065
    81 /* 管理領域サイズ(64byte - sizeof(T_MSG)) */
     66/* 管理領域サイズ(64byte - sizeof(T_MSG)) */
    8267/* #define DEF_ECN_FBS_LIB_HDR_LEN ((ECHONET_MEMPOOL_BLOCK_SIZE + sizeof(int) - 1)>> 2) // */
    8368#define DEF_ECN_FBS_LIB_HDR_LEN (64 - DEF_ECN_EDT_HDR_LEN)
    8469
    85 /* 管理領域を含むブロックに保持するデータサイズ */
     70/* 管理領域を含むブロックに保持するデータサイズ */
    8671#define DEF_ECN_FBS_FST_DAT_LEN (64)
    8772
    88 /* リンクポインタé
    89 åˆ—のサイズ(byte) */
     73/* リンクポインタ配列のサイズ(byte) */
    9074#define DEF_ECN_FBS_LNK_LEN (ECHONET_MEMPOOL_BLOCK_SIZE - DEF_ECN_EDT_HDR_LEN - DEF_ECN_FBS_LIB_HDR_LEN - DEF_ECN_FBS_FST_DAT_LEN)
    9175
    92 /* 固定長バッファ最大サイズ */
     76/* 固定長バッファ最大サイズ */
    9377#define DEF_ECN_FBS_BUF_MAXLEN ((DEF_ECN_FBS_LNK_LEN / sizeof(void *)) * ECHONET_MEMPOOL_BLOCK_SIZE + DEF_ECN_FBS_FST_DAT_LEN)
    9478
    95 /* 子要素バッファのサイズ */
     79/* 子要素バッファのサイズ */
    9680#define DEF_ECN_FBS_SUB_BUF_LEN ECHONET_MEMPOOL_BLOCK_SIZE
    9781
    98 /* 電文の種別(å†
    99 å®¹ã¯ä»®) */
     82/* 電文の種別(内容は仮) */
    10083typedef enum
    10184{
    102         ECN_FBS_TYPE_BLANK              =       0,              /* 未使用ストリーム */
    103         ECN_FBS_TYPE_INTERNAL   =       1,              /* å†
    104 éƒ¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ */
    105         ECN_FBS_TYPE_ECHONET    =       2               /* ECHONET電文 */
     85        ECN_FBS_TYPE_BLANK              =       0,              /* 未使用ストリーム */
     86        ECN_FBS_TYPE_INTERNAL   =       1,              /* 内部メッセージ */
     87        ECN_FBS_TYPE_ECHONET    =       2               /* ECHONET電文 */
    10688} TA_ECN_MSG_TYPE;
    10789
    108 /* リンクポインタé
    109 åˆ—に列挙される、子要素バッファ */
     90/* リンクポインタ配列に列挙される、子要素バッファ */
    11091typedef struct
    11192{
     
    11394} T_ECN_SUB_BLK;
    11495
    115 /* リンクポインタé
    116 åˆ— */
     96/* リンクポインタ配列 */
    11797typedef union
    11898{
     
    121101} T_ECN_FBS_LNK;
    122102
    123 /* 管理領域(64byte - sizeof(T_MSG)) */
     103/* 管理領域(64byte - sizeof(T_MSG)) */
    124104typedef struct
    125105{
    126         uint16_t        length;                 /* メッセージ長 */
    127         uint16_t        type;                   /* メッセージタイプ */
     106        uint16_t        length;                 /* メッセージ長 */
     107        uint16_t        type;                   /* メッセージタイプ */
    128108        union{
    129                 ECN_ENOD_ID id;                 /* 送信å
    130 ƒãƒŽãƒ¼ãƒ‰ID(ECHONET電文) */
    131                 struct ecn_fbs_queue *mbxid;    /* 送信å
    132 ƒãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ID(å†
    133 éƒ¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼‰ */
     109                ECN_ENOD_ID id;                 /* 送信元ノードID(ECHONET電文) */
     110                struct ecn_fbs_queue *mbxid;    /* 送信元メールボックスID(内部メッセージ) */
    134111        }sender;
    135112        union{
    136                 ECN_ENOD_ID id;                 /* 送信å
    137 ˆãƒŽãƒ¼ãƒ‰ID(ECHONET電文) */
    138                 struct ecn_fbs_queue *mbxid;    /* 送信å
    139 ˆãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ID(å†
    140 éƒ¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼‰ */
     113                ECN_ENOD_ID id;                 /* 送信先ノードID(ECHONET電文) */
     114                struct ecn_fbs_queue *mbxid;    /* 送信先メールボックスID(内部メッセージ) */
    141115        }target;
    142116        union{
    143                 ECN_ENOD_ID id;                 /* 返信å
    144 ˆãƒŽãƒ¼ãƒ‰ID(ECHONET電文) */
    145                 struct ecn_fbs_queue *mbxid;    /* 返信å
    146 ˆãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ID(å†
    147 éƒ¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼‰ */
     117                ECN_ENOD_ID id;                 /* 返信先ノードID(ECHONET電文) */
     118                struct ecn_fbs_queue *mbxid;    /* 返信先メールボックスID(内部メッセージ) */
    148119        }reply;
    149120
    150         int                     rd;                             /*      読み取りヘッドæƒ
    151 å ±     */
    152         int                     wr;                             /*      書き込みヘッドæƒ
    153 å ±     */
     121        int                     rd;                             /*      読み取りヘッド情報       */
     122        int                     wr;                             /*      書き込みヘッド情報       */
    154123} T_ECN_FBS_HDR;
    155124
    156 /* 管理領域を含むブロックの構造 */
     125/* 管理領域を含むブロックの構造 */
    157126typedef struct
    158127{
    159128        uint8_t _msg[DEF_ECN_EDT_HDR_LEN];      /* T_MSG */
    160         T_ECN_FBS_HDR   hdr;    /*      管理領域  64byte  - sizeof(T_MSG)   */
     129        T_ECN_FBS_HDR   hdr;    /*      管理領域  64byte  - sizeof(T_MSG)   */
    161130        uint8_t                 _gap[DEF_ECN_FBS_LIB_HDR_LEN - sizeof(T_ECN_FBS_HDR)];
    162         T_ECN_FBS_LNK   lnk;    /*      リンクポインタé
    163 åˆ—    128byte                 */
     131        T_ECN_FBS_LNK   lnk;    /*      リンクポインタ配列       128byte                 */
    164132        uint8_t                 payload[DEF_ECN_FBS_FST_DAT_LEN];
    165133} T_ECN_FST_BLK;
     
    171139} ECN_FBS_ID;
    172140
    173 /* メッセージキュー */
     141/* メッセージキュー */
    174142typedef struct ecn_fbs_queue
    175143{
    176         T_ECN_FST_BLK   *pk_head;               /* å
    177 ˆé ­ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ */
    178         T_ECN_FST_BLK   *pk_last;               /* 末尾のメッセージ */
     144        T_ECN_FST_BLK   *pk_head;               /* 先頭のメッセージ */
     145        T_ECN_FST_BLK   *pk_last;               /* 末尾のメッセージ */
    179146} T_ECN_FBS_QUEUE;
    180147
    181 /* メモリブロック取得 ok:ポインタ NG:NULL */
     148/* メモリブロック取得 ok:ポインタ NG:NULL */
    182149void *_ecn_fbs_mbx_get(mrb_state *mrb, ECN_FBS_SIZE_T fa_req_size);
    183150
    184 /* メモリブロック解放 ok:0 NG:非0 */
     151/* メモリブロック解放 ok:0 NG:非0 */
    185152ER _ecn_fbs_mbx_rel(mrb_state *mrb, void *p);
    186153
    187154/*
    188  * 領域確保
    189  *      引数
    190  *              ECN_FBS_SIZE_T  fa_req_size             è¦æ±‚バッファサイズ(byte)
     155 * 領域確保
     156 *      引数
     157 *              ECN_FBS_SIZE_T  fa_req_size             要求バッファサイズ(byte)
    191158 *                                                                              max: DEF_ECN_FBS_BUF_MAXLEN
    192  *              ECN_FBS_ID              *fp_id                  確保したFBS-IDの格納å
    193 ˆ
    194  *      戻り値
    195  *              ER                              0:ok 非0:NG
     159 *              ECN_FBS_ID              *fp_id                  確保したFBS-IDの格納先
     160 *      戻り値
     161 *              ER                              0:ok 非0:NG
    196162 */
    197163ER _ecn_fbs_cre(mrb_state *mrb, ECN_FBS_SIZE_T fa_req_size, ECN_FBS_ID *fp_id);
    198164
    199165/*
    200  * 領域解放
    201  *      引数
    202  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    203  *      戻り値
    204  *              ER                              0:ok, 非0:NG
     166 * 領域解放
     167 *      引数
     168 *              ecn_fbs_id型     確保したFBS-ID
     169 *      戻り値
     170 *              ER                              0:ok, 0:NG
    205171 */
    206172ER _ecn_fbs_del(mrb_state *mrb, ECN_FBS_ID fa_id);
    207173
    208174/*
    209  * 保持データの有無
    210  *      引数
    211  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    212  *      戻り値
    213  *              bool_t                  0:無し, 1:あり
     175 * 保持データの有無
     176 *      引数
     177 *              ecn_fbs_id型     確保したFBS-ID
     178 *      戻り値
     179 *              bool_t                  0:無し, 1:あり
    214180 */
    215181bool_t _ecn_fbs_exist_data(ECN_FBS_ID fa_id);
    216182
    217183/*
    218  * 保持データ長の取得
    219  *      引数
    220  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    221  *      戻り値
    222  *              ECN_FBS_SSIZE_T 保持しているデータの長さ(byte) -1:NG
     184 * 保持データ長の取得
     185 *      引数
     186 *              ecn_fbs_id型     確保したFBS-ID
     187 *      戻り値
     188 *              ECN_FBS_SSIZE_T 保持しているデータの長さ(byte) -1:NG
    223189 */
    224190ECN_FBS_SSIZE_T _ecn_fbs_get_datalen(ECN_FBS_ID fa_id);
    225191
    226192/*
    227  * 読み取りカーソルの位置取得
    228  *      引数
    229  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    230  *      戻り値
    231  *              ECN_FBS_SIZE_T  å
    232 ˆé ­ã‹ã‚‰ã®çµ¶å¯¾ä½ç½® -1:NG
     193 * 読み取りカーソルの位置取得
     194 *      引数
     195 *              ecn_fbs_id型     確保したFBS-ID
     196 *      戻り値
     197 *              ECN_FBS_SIZE_T  先頭からの絶対位置 -1:NG
    233198 */
    234199ECN_FBS_SSIZE_T _ecn_fbs_get_rpos(ECN_FBS_ID fa_id);
    235200
    236201/*
    237  * 読み取りカーソルの位置設定
    238  *      引数
    239  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    240  *              ECN_FBS_SIZE_T  fa_pos  設定する位置(å
    241 ˆé ­ã‹ã‚‰ã®çµ¶å¯¾ä½ç½®)
    242  *      戻り値
    243  *              ER                              0:ok, 非0:NG
     202 * 読み取りカーソルの位置設定
     203 *      引数
     204 *              ecn_fbs_id型     確保したFBS-ID
     205 *              ECN_FBS_SIZE_T  fa_pos  設定する位置(先頭からの絶対位置)
     206 *      戻り値
     207 *              ER                              0:ok, 非0:NG
    244208 */
    245209ER _ecn_fbs_set_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_pos);
    246210
    247211/*
    248  * 読み取りカーソルの位置移動
    249  *      引数
    250  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    251  *              ECN_FBS_SIZE_T  fa_seek 移動量(現状、前進のみ)
    252  *      戻り値
    253  *              ER                              0:ok, 非0:NG
     212 * 読み取りカーソルの位置移動
     213 *      引数
     214 *              ecn_fbs_id型     確保したFBS-ID
     215 *              ECN_FBS_SIZE_T  fa_seek 移動量(現状、前進のみ)
     216 *      戻り値
     217 *              ER                              0:ok, 0:NG
    254218 */
    255219ER _ecn_fbs_seek_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek);
    256220
    257221/*
    258  * 任意指定位置の1byte読み取り
     222 * 任意指定位置の1byte読み取り
    259223 */
    260224int _ecn_fbs_peek(mrb_state *mrb, ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek);
    261225
    262226/*
    263  * 任意指定位置の1byte書き込み
     227 * 任意指定位置の1byte書き込み
    264228 */
    265229ER _ecn_fbs_poke(mrb_state *mrb, ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek, int fa_val);
    266230
    267231/*
    268  * データ追加
    269  *      引数
    270  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    271  *              const void *    fa_dat  追加するデータ
    272  *              ECN_FBS_SSIZE_T fa_len  追加する長さ(byte)
    273  *      戻り値
    274  *              ER                              0:ok, 非0:NG
     232 * データ追加
     233 *      引数
     234 *              ecn_fbs_id型     確保したFBS-ID
     235 *              const void *    fa_dat  追加するデータ
     236 *              ECN_FBS_SSIZE_T fa_len  追加する長さ(byte)
     237 *      戻り値
     238 *              ER                              0:ok, 0:NG
    275239 */
    276240ER _ecn_fbs_add_data(mrb_state *mrb, ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len);
    277241
    278242/*
    279  * データ追加(領域を自動的に拡張する)
    280  *      引数
    281  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    282  *              const void *    fa_dat  追加するデータ
    283  *              ECN_FBS_SSIZE_T fa_len  追加する長さ(byte)
    284  *      戻り値
    285  *              ER                              0:ok, 非0:NG
     243 * データ追加(領域を自動的に拡張する)
     244 *      引数
     245 *              ecn_fbs_id型     確保したFBS-ID
     246 *              const void *    fa_dat  追加するデータ
     247 *              ECN_FBS_SSIZE_T fa_len  追加する長さ(byte)
     248 *      戻り値
     249 *              ER                              0:ok, 0:NG
    286250 */
    287251ER _ecn_fbs_add_data_ex(mrb_state *mrb, ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len);
    288252
    289253/*
    290  * データ取得
    291  *      引数
    292  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    293  *              void *                  fa_buf          取得するバッファ
    294  *              ECN_FBS_SSIZE_T fa_maxlen       å–得する長さ(byte)
    295  *              ECN_FBS_SSIZE_T *p_len          取得した長さ(byte)
    296  *      戻り値
    297  *              ER                              0:ok, 非0:NG
     254 * データ取得
     255 *      引数
     256 *              ecn_fbs_id型     確保したFBS-ID
     257 *              void *                  fa_buf          取得するバッファ
     258 *              ECN_FBS_SSIZE_T fa_maxlen       取得する長さ(byte)
     259 *              ECN_FBS_SSIZE_T *p_len          取得した長さ(byte)
     260 *      戻り値
     261 *              ER                              0:ok, 0:NG
    298262 */
    299263ER _ecn_fbs_get_data(mrb_state *mrb, ECN_FBS_ID fa_id, void *fa_buf, ECN_FBS_SSIZE_T fa_maxlen,
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_lcl_task.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r270 r321  
    44 *  Copyright (C) 2014-2016 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
     6 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     7 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     8 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     9 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     10 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     11 *      スコード中に含まれていること.
     12 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     13 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     14 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     15 *      の無保証規定を掲載すること.
     16 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     17 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     18 *      と.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     20 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     22 *        報告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     26 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     27 *      免責すること.
    4228 *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    4934 *
    5035 */
    5136
    5237/*
    53  *              ECHONET Lite LCL通信処理タスク
     38 *              ECHONET Lite LCL通信処理タスク
    5439 */
    5540
     
    9075
    9176/*
    92  * 受信したLCLデータをMAILBOXに送る
     77 * 受信したLCLデータをMAILBOXに送る
    9378 */
    9479ER _ecn_lcl2mbx(ecnl_svc_task_t *svc, const uint8_t *buffer, size_t fa_len, const mrb_value dst);
     
    10691
    10792        a_rcv_pkt.buffer = buffer;
    108         if (    a_rcv_pkt.t_esv->ecn_hdr.ehd1 != ECN_EDH1_ECHONET_LITE  /* ECHONET Lite規格   */
    109         ||      a_rcv_pkt.t_esv->ecn_hdr.ehd2 != ECN_EDH2_FORMAT_1                      /* 電文形式1                */) {
     93        if (    a_rcv_pkt.t_esv->ecn_hdr.ehd1 != ECN_EDH1_ECHONET_LITE  /* ECHONET Lite規格       */
     94        ||      a_rcv_pkt.t_esv->ecn_hdr.ehd2 != ECN_EDH2_FORMAT_1                      /* 電文形式1                */) {
    11095                ECN_DBG_PUT_2("[LCL ECHO SRV] illegal type (0x%02X,0x%02X)", a_rcv_pkt.t_esv->ecn_hdr.ehd1, a_rcv_pkt.t_esv->ecn_hdr.ehd2);
    11196                return E_PAR;
     
    130115        a_fbs_id.ptr->hdr.sender.id = ENOD_NOT_MATCH_ID;
    131116
    132         /* 通信レイヤーアドレスからリモートECHONETノードへ変換 */
     117        /* 通信レイヤーアドレスからリモートECHONETノードへ変換 */
    133118        a_enod_id = lcl_get_id(svc, (T_EDATA *)a_fbs_id.ptr, dst);
    134119        if (!lcl_is_valid_addrid(svc, a_enod_id)) {
     
    136121                        ip2str(NULL, &dst->lcladdr));
    137122        } else {
    138                 /* 送信å
    139 ƒECHONETノードを記録 */
     123                /* 送信元ECHONETノードを記録 */
    140124                a_fbs_id.ptr->hdr.sender.id = a_enod_id;
    141125        }
    142126        a_fbs_id.ptr->hdr.reply.id = a_fbs_id.ptr->hdr.sender.id;
    143127
    144         /* echonet_taskに送る */
     128        /* echonet_taskに送る */
    145129        a_ret = ecn_fbs_enqueue(&svc->svc_mbxid, a_fbs_id.ptr);
    146130        if (a_ret != E_OK) {
     
    155139
    156140/*
    157 * ECHONET Lite 通信レイヤータスク タイマー値取得
     141* ECHONET Lite 通信レイヤータスク タイマー値取得
    158142*/
    159143TMO echonet_lcltask_get_timer(ecnl_svc_task_t *svc)
     
    168152
    169153/*
    170 * ECHONET Lite 通信レイヤータスク 時間経過処理
     154* ECHONET Lite 通信レイヤータスク 時間経過処理
    171155*/
    172156void echonet_lcltask_progress(ecnl_svc_task_t *svc, TMO a_timer)
     
    176160
    177161/*
    178 * ECHONET Lite 通信レイヤータスク メッセージ受信処理
     162* ECHONET Lite 通信レイヤータスク メッセージ受信処理
    179163*/
    180164void echonet_lcltask_recv_msg(ecnl_svc_task_t *svc, T_ECN_FST_BLK *p_msg)
     
    185169        a_fbs_id.ptr = p_msg;
    186170
    187         /* 送信データ長を取得 */
     171        /* 送信データ長を取得 */
    188172        a_snd_len = _ecn_fbs_get_datalen(a_fbs_id);
    189173
     
    191175
    192176        switch (a_fbs_id.ptr->hdr.type) {
    193                 /* å†
    194 éƒ¨ä½¿ç”¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ */
     177                /* 内部使用メッセージ */
    195178        case ECN_MSG_INTERNAL:
    196179                _ecn_int_msg(svc, a_fbs_id, a_snd_len);
    197180                break;
    198181
    199                 /* ECHONET用メッセージ */
     182                /* ECHONET用メッセージ */
    200183        case ECN_MSG_ECHONET:
    201184                _ecn_esv_msg(svc, a_fbs_id);
     
    206189        }
    207190
    208         /* 領域解放 */
     191        /* 領域解放 */
    209192        _ecn_fbs_del(svc->mrb, a_fbs_id);
    210193}
    211194
    212195/*
    213 * ECHONET Lite 通信レイヤータスク タイムアウト処理
     196* ECHONET Lite 通信レイヤータスク タイムアウト処理
    214197*/
    215198void echonet_lcltask_timeout(ecnl_svc_task_t *svc)
     
    218201}
    219202
    220 /* 応答電文用fbs設定(sender/targetの設定) */
     203/* 応答電文用fbs設定(sender/targetの設定) */
    221204static ER _ecn_lcl_cre_req_fbs(ecnl_svc_task_t *svc, T_ECN_FBS_QUEUE *sender, uint8_t cmd, ECN_FBS_ID *pk_req)
    222205{
     
    248231}
    249232
    250 /* 応答電文用fbs設定(sender/targetの設定) */
     233/* 応答電文用fbs設定(sender/targetの設定) */
    251234static ER _ecn_lcl_cre_res_fbs(ecnl_svc_task_t *svc, ECN_FBS_ID req, uint8_t cmd, ECN_FBS_ID *pk_res)
    252235{
     
    279262
    280263/*
    281  *  å†
    282 éƒ¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸å—信処理
     264 *  内部メッセージ受信処理
    283265 */
    284266void _ecn_int_msg(ecnl_svc_task_t *svc, ECN_FBS_ID fbs_id, ECN_FBS_SSIZE_T a_snd_len)
     
    300282
    301283        switch(cmd){
    302         // 通信レイヤーアドレスを返信
     284        // 通信レイヤーアドレスを返信
    303285        case ECN_LCL_MSG_GET_LCLADDR_REQ:
    304286                if (a_snd_len < sizeof(msg)) {
     
    370352
    371353/*
    372  *  ECHONET 電文受信処理
     354 *  ECHONET 電文受信処理
    373355 */
    374356void _ecn_esv_msg(ecnl_svc_task_t *svc, ECN_FBS_ID fbs_id)
     
    381363        ECN_FBS_SSIZE_T a_snd_len;
    382364
    383         /* 送信å
    384 ˆé€šä¿¡ãƒ¬ã‚¤ãƒ¤ãƒ¼ã‚¢ãƒ‰ãƒ¬ã‚¹ */
     365        /* 送信先通信レイヤーアドレス */
    385366        a_dst = lcl_get_addr(svc, fbs_id.ptr->hdr.target.id);
    386367        if (mrb_type(a_dst) != MRB_TT_FALSE/*nil*/) {
    387                 ECN_DBG_PUT_4("[LCL TSK] echonet-node 0x%02X-0x%02X-0x%02X → lcl dest(%s)",
     368                ECN_DBG_PUT_4("[LCL TSK] echonet-node 0x%02X-0x%02X-0x%02X lcl dest(%s)",
    388369                        ((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx1,
    389370                        ((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx2,
     
    393374                a_msg = mrb_str_buf_new(mrb, a_len);
    394375
    395                 /* fbsから出力領域にデータを抽出 */
     376                /* fbsから出力領域にデータを抽出 */
    396377                a_snd_len = 0;
    397378                a_ret = _ecn_fbs_get_data(mrb, fbs_id, RSTRING_PTR(a_msg), a_len, &a_snd_len);
     
    402383                        RSTR_SET_LEN(RSTRING(a_msg), a_snd_len);
    403384
    404                         /* 送信å
    405 ˆãŒ127.0.0.1 → mbxに転送 */
    406                         ECN_DBG_PUT_1("redirect svc->lcl_mbxid → svc->svc_mbxid (esv:0x%02X)",
     385                        /* 送信先が127.0.0.1 → mbxに転送 */
     386                        ECN_DBG_PUT_1("redirect svc->lcl_mbxid → svc->svc_mbxid (esv:0x%02X)",
    407387                                ((T_EDATA *)fbs_id.ptr)->hdr.edata.esv);
    408388
     
    420400                        _ecn_dbg_bindmp(RSTRING_PTR(a_msg), a_snd_len);
    421401#endif
    422                         /* 通信レイヤーへ送信 */
     402                        /* 通信レイヤーへ送信 */
    423403                        a_ret = lcl_snd_msg(svc, a_dst, a_msg);
    424404                        if (a_ret < 0) {
     
    427407                }
    428408
    429                 /* データが長すぎて1パケットに収まらなかった場合 */
     409                /* データが長すぎて1パケットに収まらなかった場合 */
    430410                if (_ecn_fbs_exist_data(fbs_id)) {
    431411                        ECN_DBG_PUT_1("[LCL TSK] send, data so long: %dbyte(s)", _ecn_fbs_get_datalen(fbs_id));
     
    440420
    441421/*
    442  *  ノンブロッキングコールのコールバック関数
     422 *  ノンブロッキングコールのコールバック関数
    443423 */
    444424ER echonet_lcl_input_msg(ecnl_svc_task_t *svc, mrb_value ep, mrb_value data)
     
    452432
    453433/*
    454  *  リモートECHONETノードの適合確認
     434 *  リモートECHONETノードの適合確認
    455435 */
    456436bool_t ecn_is_match(ecnl_svc_task_t *svc, const EOBJCB *enodcb, T_EDATA *edata, mrb_value ep)
     
    470450                return false;
    471451
    472         /* ノードスタート時インスタンスリスト通知以外は除外 */
     452        /* ノードスタート時インスタンスリスト通知以外は除外 */
    473453        if (    edata->hdr.edata.esv != ESV_INF
    474454                ||      edata->hdr.edata.deoj.eojx1 != EOJ_X1_PROFILE
     
    492472                }
    493473                ECN_DBG_PUT_2("ecn_is_match(): ecn_itr_nxt() result: epc=0x%02X, pdc=%d", epc, pdc);
    494                 /* インスタンスリスト通知または自ノードインスタンスリストS以外は除外 */
     474                /* インスタンスリスト通知または自ノードインスタンスリストS以外は除外 */
    495475                if ((epc != 0xD5) && (epc != 0xD6)) {
    496476                        continue;
    497477                }
    498478
    499                 /* 2バイト目以降にeojが列挙されている */
     479                /* 2バイト目以降にeojが列挙されている */
    500480                count = (pdc - 1) / sizeof(T_ECN_EOJ);
    501481
    502                 /* ノードå†
    503 ã®æ©Ÿå™¨ã‚ªãƒ–ジェクトを検索 */
     482                /* ノード内の機器オブジェクトを検索 */
    504483                for (k = 0; k < enodcb->eobjcnt; k++) {
    505484                        p_eobj = enodcb->eobjs[k];
    506485
    507                         /* インスタンスリストを確認 */
     486                        /* インスタンスリストを確認 */
    508487                        match = false;
    509488                        for (i = 0, j = 1; i < count; i++, j += sizeof(T_ECN_EOJ)) {
     
    523502                }
    524503
    525                 /* すべて揃っていたら適合(インスタンスリストの方が多くてもいいこととする) */
     504                /* すべて揃っていたら適合(インスタンスリストの方が多くてもいいこととする) */
    526505                return true;
    527506        }
     
    531510
    532511/*
    533  *  通信レイヤーアドレスからリモートECHONETノードへ変換
     512 *  通信レイヤーアドレスからリモートECHONETノードへ変換
    534513 */
    535514ECN_ENOD_ID lcl_get_id(ecnl_svc_task_t *svc, T_EDATA *edata, const mrb_value ep)
     
    542521                return ENOD_MULTICAST_ID;
    543522
    544         /* 通信レイヤーアドレスの同じものを検索 */
     523        /* 通信レイヤーアドレスの同じものを検索 */
    545524        if ((id = lcl_get_remote_id(svc, ep)) != ENOD_NOT_MATCH_ID) {
    546525                ECN_CAP_PUT_2("lcl_get_id(): ip-found remote(%d) = %s",
     
    549528        }
    550529
    551         /* 対応するリモートノードがあれば通信レイヤーアドレスを設定 */
     530        /* 対応するリモートノードがあれば通信レイヤーアドレスを設定 */
    552531        if ((id = lcl_set_remote_addr(svc, edata, ep)) != ENOD_NOT_MATCH_ID) {
    553532                ECN_CAP_PUT_2("lcl_get_id(): enod-found remote(%d) = %s",
     
    556535        }
    557536
    558         /* 空き領域を探して自動登録 */
     537        /* 空き領域を探して自動登録 */
    559538        if ((id = lcl_add_remote_addr(svc, edata, ep)) != ENOD_NOT_MATCH_ID) {
    560539                ECN_CAP_PUT_2("lcl_get_id(): empty-found remote(%d) = %s",
     
    567546
    568547/*
    569  *  リモートECHONETノードから通信レイヤーアドレスへ変換
     548 *  リモートECHONETノードから通信レイヤーアドレスへ変換
    570549 */
    571550mrb_value lcl_get_addr(ecnl_svc_task_t *svc, ECN_ENOD_ID fa_enodid)
    572551{
    573552        if (fa_enodid == ENOD_MULTICAST_ID) {
    574                 /* targetがENOD_MULTICAST_IDの場合、マルチキャストを行う */
     553                /* targetがENOD_MULTICAST_IDの場合、マルチキャストを行う */
    575554                return lcl_get_multicast_addr(svc);
    576555        }
    577556
    578557        if (fa_enodid < ENOD_REMOTE_ID) {
    579                 /* targetが未定義・LOCAL・APIの場合、ローカルé
    580 é€ã‚’行う */
     558                /* targetが未定義・LOCAL・APIの場合、ローカル配送を行う */
    581559                return lcl_get_local_addr(svc);
    582560        }
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_lcl_task.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    44 *  Copyright (C) 2014-2016 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
     6 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     7 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     8 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     9 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     10 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     11 *      スコード中に含まれていること.
     12 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     13 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     14 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     15 *      の無保証規定を掲載すること.
     16 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     17 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     18 *      と.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     20 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     22 *        報告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     26 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     27 *      免責すること.
    4228 *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    4934 *
    5035 */
    5136
    5237/*
    53  *              ECHONET Lite タスク
     38 *              ECHONET Lite タスク
    5439 */
    5540
     
    6651
    6752/*
    68  *  ECHONET Lite 一斉同報アドレス
     53 *  ECHONET Lite 一斉同報アドレス
    6954 */
    7055#ifdef SIL_ENDIAN_LITTLE
     
    7560
    7661/*
    77  *  ECHONET Lite タスク関連の定数のデフォルト値の定義
     62 *  ECHONET Lite タスク関連の定数のデフォルト値の定義
    7863 */
    7964#ifndef ECHONET_LCL_TASK_PRIORITY
    80 #define ECHONET_LCL_TASK_PRIORITY       3               /* 初期優å
    81 ˆåº¦ */
     65#define ECHONET_LCL_TASK_PRIORITY       3               /* 初期優先度 */
    8266#endif /* ECHONET_LCL_TASK_PRIORITY */
    8367
    8468#ifndef ECHONET_LCL_TASK_STACK_SIZE
    85 #define ECHONET_LCL_TASK_STACK_SIZE     1024    /* スタック領域のサイズ */
     69#define ECHONET_LCL_TASK_STACK_SIZE     1024    /* スタック領域のサイズ */
    8670#endif /* ECHONET_LCL_TASK_STACK_SIZE */
    8771
     
    9074#endif /* NUM_ECHONET_LCL_MAILBOX */
    9175
    92  /* ECHONET Lite 通信レイヤータスク タイマー値取得 */
     76 /* ECHONET Lite 通信レイヤータスク タイマー値取得 */
    9377TMO echonet_lcltask_get_timer(ecnl_svc_task_t *svc);
    9478
    95 /* ECHONET Lite 通信レイヤータスク 時間経過処理 */
     79/* ECHONET Lite 通信レイヤータスク 時間経過処理 */
    9680void echonet_lcltask_progress(ecnl_svc_task_t *svc, TMO a_timer);
    9781
    98 /* ECHONET Lite 通信レイヤータスク メッセージ受信処理 */
     82/* ECHONET Lite 通信レイヤータスク メッセージ受信処理 */
    9983void echonet_lcltask_recv_msg(ecnl_svc_task_t *svc, T_ECN_FST_BLK *p_msg);
    10084
    101 /* ECHONET Lite 通信レイヤータスク タイムアウト処理 */
     85/* ECHONET Lite 通信レイヤータスク タイムアウト処理 */
    10286void echonet_lcltask_timeout(ecnl_svc_task_t *svc);
    10387
    104 /* ECHONET Lite 通信レイヤーメッセージå
    105 ¥åŠ› */
     88/* ECHONET Lite 通信レイヤーメッセージ入力 */
    10689ER echonet_lcl_input_msg(ecnl_svc_task_t *svc, mrb_value ep, mrb_value data);
    10790
    10891/*
    109  *  リモートECHONETノードの適合確認
     92 *  リモートECHONETノードの適合確認
    11093 */
    11194bool_t ecn_is_match(ecnl_svc_task_t *svc, const EOBJCB *eobjcb, T_EDATA *edata, mrb_value ep);
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_task.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r270 r321  
    44 *  Copyright (C) 2014-2016 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
     6 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     7 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     8 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     9 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     10 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     11 *      スコード中に含まれていること.
     12 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     13 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     14 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     15 *      の無保証規定を掲載すること.
     16 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     17 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     18 *      と.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     20 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     22 *        報告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     26 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     27 *      免責すること.
    4228 *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    4934 *
    5035 */
    5136
    5237/*
    53  *              ECHONET Lite タスク
     38 *              ECHONET Lite タスク
    5439 */
    5540
     
    120105                        i += - ENOD_REMOTE_ID + 1;
    121106                        if (from_app && (i < svc->tnum_enodid)) {
    122                                 /* 非同期のリモートノードはサービス処理タスクで処理する */
     107                                /* 非同期のリモートノードはサービス処理タスクで処理する */
    123108                                switch (svc->eobjcb_table[i].profile->eobjatr) {
    124109                                case EOBJ_SYNC_REMOTE_NODE:
     
    168153
    169154/*
    170  *  ECHONET Lite タスクの初期化(コンストラクタ相当)
     155 *  ECHONET Lite タスクの初期化(コンストラクタ相当)
    171156 */
    172157void echonet_task_init(ecnl_svc_task_t *svc, intptr_t exinf)
     
    176161
    177162/*
    178  * モジュール初期化
     163 * モジュール初期化
    179164 */
    180165static void _ecn_tsk_int_module_init(ecnl_svc_task_t *svc)
     
    193178
    194179/*
    195  * ECHONET Lite タスク タイマー値取得
     180 * ECHONET Lite タスク タイマー値取得
    196181 */
    197182TMO echonet_svctask_get_timer(ecnl_svc_task_t *svc)
     
    217202
    218203/*
    219  * ECHONET Lite タスク 時間経過処理
     204 * ECHONET Lite タスク 時間経過処理
    220205 */
    221206void echonet_svctask_progress(ecnl_svc_task_t *svc, TMO a_timer)
     
    228213
    229214/*
    230  * ECHONET Lite タスク メッセージ受信処理
     215 * ECHONET Lite タスク メッセージ受信処理
    231216 */
    232217void echonet_svctask_recv_msg(ecnl_svc_task_t *svc, T_ECN_FST_BLK *p_msg)
     
    239224
    240225        switch (fbs_id.ptr->hdr.type) {
    241         /* å†
    242 éƒ¨ä½¿ç”¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ */
     226        /* 内部使用メッセージ */
    243227        case ECN_MSG_INTERNAL:
    244228                _ecn_tsk_int_msg(svc, svc->exinf, fbs_id);
    245229                break;
    246230
    247         /* ECHONET用メッセージ */
     231        /* ECHONET用メッセージ */
    248232        case ECN_MSG_ECHONET:
    249233                _ecn_tsk_ecn_msg(svc, svc->exinf, fbs_id);
     
    254238        }
    255239
    256         /* 領域解放 */
     240        /* 領域解放 */
    257241        if (svc->release_esv)
    258242                _ecn_fbs_del(svc->mrb, fbs_id);
     
    260244
    261245/*
    262  * ECHONET Lite タスク タイムアウト処理
     246 * ECHONET Lite タスク タイムアウト処理
    263247 */
    264248void echonet_svctask_timeout(ecnl_svc_task_t *svc)
     
    271255
    272256/*
    273  * シーケンス番号生成
     257 * シーケンス番号生成
    274258 */
    275259static uint16_t _ecn_tsk_new_tid(ecnl_svc_task_t *svc)
     
    279263
    280264/*
    281  * 要求電文作成
    282  * 引数
    283  * ECN_FBS_ID           *fp_fbs_id              取得したFBS_IDの格納å
    284 ˆ
    285  * ID                           fa_seoj                 é€ä¿¡å
    286 ƒã®ECHONETオブジェクトID
    287  * ID                           fa_deoj                 å®›å
    288 ˆã®ECHONETオブジェクトID
    289  * uint8_t                      fa_epc                  プロパティコード
    290  * uint8_t                      fa_pdc                  プロパティ値データサイズ
    291  * const void           *p_edt                  プロパティ値データ
    292  * ECN_SRV_CODE         fa_esv                  ECHONET Light サービスコード
     265 * 要求電文作成
     266 * 引数
     267 * ECN_FBS_ID           *fp_fbs_id              取得したFBS_IDの格納先
     268 * ID                           fa_seoj                 送信元のECHONETオブジェクトID
     269 * ID                           fa_deoj                 宛先のECHONETオブジェクトID
     270 * uint8_t                      fa_epc                  プロパティコード
     271 * uint8_t                      fa_pdc                  プロパティ値データサイズ
     272 * const void           *p_edt                  プロパティ値データ
     273 * ECN_SRV_CODE         fa_esv                  ECHONET Light サービスコード
    293274 */
    294275ER _ecn_tsk_mk_esv(ecnl_svc_task_t *svc, ECN_FBS_ID *fp_fbs_id, ID fa_seoj, ID fa_deoj,
     
    298279        ER                              a_ret;
    299280        int                             a_size, i;
    300         ECN_FBS_ID              a_fbs_id = { 0 };       /* 要求電文用メモリ                             */
     281        ECN_FBS_ID              a_fbs_id = { 0 };       /* 要求電文用メモリ                             */
    301282        T_ECN_EDT_HDR   a_ecn_hdp;                      /* ecn_hdr+edata+ecn_prp 14byte */
    302283        ID                              a_enodid;
     
    305286
    306287        if (!fp_fbs_id)
    307                 return E_PAR; /* 取得したFBS_IDの格納å
    308 ˆãŒNULL */
     288                return E_PAR; /* 取得したFBS_IDの格納先がNULL */
    309289        if (ECHONET_MEMPOOL_BLOCK_SIZE <= fa_pdc)
    310                 return E_PAR; /* プロパティ値サイズが大きすぎる */
     290                return E_PAR; /* プロパティ値サイズが大きすぎる */
    311291        if (!p_edt && 0 < fa_pdc)
    312                 return E_PAR; /* プロパティ値サイズが1以上なのにデータポインタがNULL */
     292                return E_PAR; /* プロパティ値サイズが1以上なのにデータポインタがNULL */
    313293
    314294        if (fa_seoj <= EOBJ_NULL || svc->tmax_eobjid < fa_seoj)
    315                 return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */
     295                return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */
    316296#ifndef ECHONET_CONTROLLER_EXTENTION
    317297        if (fa_deoj < EOBJ_NULL || svc->tmax_eobjid < fa_deoj)
    318                 return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */
     298                return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */
    319299#else
    320300        if (fa_deoj < EOBJ_NULL || (svc->tmax_eobjid + TNUM_AEOBJID) < fa_deoj)
    321                 return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */
     301                return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */
    322302#endif
    323303        if (fa_deoj == EOBJ_NULL && fa_esv == ESV_INFC)
    324                 return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */
    325 
    326         /* 要求最小サイズの取得 */
     304                return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */
     305
     306        /* 要求最小サイズの取得 */
    327307        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    328308
    329         /* 要求電文用メモリの取得 */
     309        /* 要求電文用メモリの取得 */
    330310        a_ret = _ecn_fbs_cre(mrb, a_size, &a_fbs_id);
    331         if (a_ret != E_OK || !a_fbs_id.ptr) { /* 確保失敗 */
     311        if (a_ret != E_OK || !a_fbs_id.ptr) { /* 確保失敗 */
    332312                ECN_DBG_PUT_3("_ecn_fbs_cre(%d) result = %d:%s",
    333313                        a_size,
     
    336316        }
    337317
    338         /* 要求電文設定                                           */
     318        /* 要求電文設定                                               */
    339319        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
    340320        a_ecn_hdp.ecn_hdr.ehd1 = ECN_EDH1_ECHONET_LITE;
     
    343323        memcpy(&a_ecn_hdp.edata.seoj, &echonet_svctask_get_eobjinib(svc, fa_seoj)->eojx1, sizeof(a_ecn_hdp.edata.seoj));
    344324        a_ecn_hdp.edata.esv = fa_esv;
    345         a_ecn_hdp.edata.opc = 1;                /* 処理プロパティ数 */
    346         a_ecn_hdp.ecn_prp.epc = fa_epc; /* プロパティコード */
    347         a_ecn_hdp.ecn_prp.pdc = fa_pdc; /* 付随データサイズ */
    348 
    349         /* 要求電文用メモリにデータ追加 */
     325        a_ecn_hdp.edata.opc = 1;                /* 処理プロパティ数 */
     326        a_ecn_hdp.ecn_prp.epc = fa_epc; /* プロパティコード */
     327        a_ecn_hdp.ecn_prp.pdc = fa_pdc; /* 付随データサイズ */
     328
     329        /* 要求電文用メモリにデータ追加 */
    350330        a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_id, &a_ecn_hdp, a_size);
    351331        if (a_ret) {
     
    356336        }
    357337        if (0 < fa_pdc) {
    358                 /* 付随データ追加 */
     338                /* 付随データ追加 */
    359339                a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_id, p_edt, fa_pdc);
    360340                if (a_ret) {
     
    366346        }
    367347        if (fa_deoj == 0) {
    368                 ECN_DBG_PUT("マルチキャスト");
    369                 /* fa_deoj == 0 : マルチキャスト */
     348                ECN_DBG_PUT("マルチキャスト");
     349                /* fa_deoj == 0 : マルチキャスト */
    370350                ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1 = EOJ_X1_PROFILE;
    371351                ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx2 = EOJ_X2_NODE_PROFILE;
     
    375355        else if (fa_deoj <= svc->tmax_eobjid) {
    376356                ECN_DBG_PUT_1("fa_deoj = %d", fa_deoj);
    377                 /* if (fa_deoj < 1 || svc->tmax_eobjid < fa_deoj) …の異常系は関数冒頭で除外済みとする */
     357                /* if (fa_deoj < 1 || svc->tmax_eobjid < fa_deoj) …の異常系は関数冒頭で除外済みとする */
    378358                a_eobj = echonet_svctask_get_eobjinib(svc, fa_deoj);
    379359                memcpy(&((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj, &a_eobj->eojx1,
    380360                        sizeof(((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj));
    381361
    382                 /* テーブルから検索 */
     362                /* テーブルから検索 */
    383363                a_fbs_id.ptr->hdr.target.id = ENOD_NOT_MATCH_ID;
    384364                a_enodid = (a_eobj->enodid == 0) ? fa_deoj : a_eobj->enodid;
     
    420400                ECN_ENOD_ID enodid;
    421401                ECN_DBG_PUT_1("fa_deoj = %d", fa_deoj);
    422                 /* オブジェクトIDからEOJとノードIDを取得 */
     402                /* オブジェクトIDからEOJとノードIDを取得 */
    423403                if(ecn_agent_get_eoj_enodid(svc, fa_deoj, &eoj, &enodid)){
    424404                        memcpy(&((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj, &eoj,
     
    452432
    453433        ((T_EDATA *)a_fbs_id.ptr)->trn_pos = -1;
    454         /* 正常終了 */
     434        /* 正常終了 */
    455435        *fp_fbs_id = a_fbs_id;
    456436        return E_OK;
    457437
    458438lb_except:
    459         /* データ作成失敗したら領域解放 */
     439        /* データ作成失敗したら領域解放 */
    460440        if (a_fbs_id.ptr)
    461441                _ecn_fbs_del(mrb, a_fbs_id);
     
    465445
    466446/*
    467  * å†
    468 éƒ¨ä½¿ç”¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸
     447 * 内部使用メッセージ
    469448 */
    470449static void _ecn_tsk_int_msg(ecnl_svc_task_t *svc, intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id)
     
    497476
    498477/*
    499  * タスク初期化
     478 * タスク初期化
    500479 */
    501480void _ecn_tsk_int_startup(ecnl_svc_task_t *svc)
     
    505484
    506485/*
    507  * インスタンスリスト通知の送信
    508  * ECHONET-Lite_Ver.1.10_02.pdf p.43 図4-1-4
     486 * インスタンスリスト通知の送信
     487 * ECHONET-Lite_Ver.1.10_02.pdf p.43 4-1-4
    509488 */
    510489ER _ecn_tsk_ntf_inl(ecnl_svc_task_t *svc)
    511490{
    512491        mrb_state *mrb = svc->mrb;
    513         const T_ECN_EOJ a_seoj =        /* 0x01 : 一般ノード、0x02:送信専用ノード */
     492        const T_ECN_EOJ a_seoj =        /* 0x01 : 一般ノード、0x02:送信専用ノード */
    514493                { EOJ_X1_PROFILE, EOJ_X2_NODE_PROFILE, 0x01 };
    515494        const T_ECN_EOJ a_deoj =
     
    521500        int                     i;
    522501        uint8_t         a_count;
    523         const EOBJCB    *enod = &svc->eobjcb_table[0];  /* ローカルノード */
     502        const EOBJCB    *enod = &svc->eobjcb_table[0];  /* ローカルノード */
    524503        const EOBJINIB *eobj;
    525504
     
    539518
    540519                if (!a_eoj_ct) {
    541                         /* メモリ確保・ヘッダ格納 */
    542                         a_hdr.ecn_hdr.tid = (uint8_t)_ecn_tsk_new_tid(svc); /* シーケンス番号生成 */
     520                        /* メモリ確保・ヘッダ格納 */
     521                        a_hdr.ecn_hdr.tid = (uint8_t)_ecn_tsk_new_tid(svc); /* シーケンス番号生成 */
    543522                        a_ret = _ecn_fbs_cre(mrb, sizeof(a_hdr), &a_fbs);
    544                         if (a_ret != E_OK) /* 確保失敗 */
     523                        if (a_ret != E_OK) /* 確保失敗 */
    545524                                goto lb_except;
    546525                        a_ret = _ecn_fbs_add_data(mrb, a_fbs, &a_hdr, sizeof(a_hdr));
    547                         if (a_ret != E_OK) /* データ追加失敗 */
     526                        if (a_ret != E_OK) /* データ追加失敗 */
    548527                                goto lb_except;
    549528
     
    552531                        a_fbs.ptr->hdr.target.id = ENOD_MULTICAST_ID;
    553532                        a_fbs.ptr->hdr.reply.id = ENOD_LOCAL_ID;
    554                         ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc = 1;    /* 件数 */
    555                         /* 件数を格納 */
     533                        ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc = 1;    /* 件数 */
     534                        /* 件数を格納 */
    556535                        a_count = (uint8_t)(enod->eobjcnt - i);
    557536                        if (a_count >= ECN_IST_LST_EOJ_MAX_CT)
    558537                                a_count = ECN_IST_LST_EOJ_MAX_CT;
    559538                        a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs, &a_count, sizeof(a_count));
    560                         if (a_ret != E_OK) /* データ追加失敗 */
     539                        if (a_ret != E_OK) /* データ追加失敗 */
    561540                                goto lb_except;
    562541                }
    563                 /* ECHONETオブジェクトID(3byte)を格納 */
     542                /* ECHONETオブジェクトID(3byte)を格納 */
    564543                a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs, &eobj->eojx1, sizeof(T_ECN_EOJ));
    565                 if (a_ret != E_OK) /* データ追加失敗 */
     544                if (a_ret != E_OK) /* データ追加失敗 */
    566545                        goto lb_except;
    567546
    568                 /* 件数・edtサイズ加算 */
     547                /* 件数・edtサイズ加算 */
    569548                ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc += sizeof(T_ECN_EOJ);
    570549                if (++a_eoj_ct < ECN_IST_LST_EOJ_MAX_CT)
    571550                        continue;
    572551
    573                 /* 1アナウンスでの上限に達したら、一旦送信 */
     552                /* 1アナウンスでの上限に達したら、一旦送信 */
    574553                a_ret = _ecn_tsk_snd_mbx(svc, a_fbs, false);
    575                 if (a_ret != E_OK) /* データ送信失敗 */
     554                if (a_ret != E_OK) /* データ送信失敗 */
    576555                        goto lb_except;
    577556                a_eoj_ct = 0;
     
    579558        }
    580559        if (a_eoj_ct) {
    581                 /* 未送信データがあったら、送信 */
     560                /* 未送信データがあったら、送信 */
    582561                a_ret = _ecn_tsk_snd_mbx(svc, a_fbs, false);
    583                 if (a_ret != E_OK) /* データ送信失敗 */
     562                if (a_ret != E_OK) /* データ送信失敗 */
    584563                        goto lb_except;
    585564                a_fbs.ptr = 0;
     
    625604
    626605/*
    627  * 3byteのeobjidでé
    628 åˆ—中を検索する
     606 * 3byteのeobjidで配列中を検索する
    629607 */
    630608const EOBJINIB *_ecn_eoj_fnd(const EOBJCB *fp_nod, const T_ECN_EOJ *fp_eoj)
     
    659637
    660638/*
    661  * 電文の構成要素数とサイズのチェックを行う
     639 * 電文の構成要素数とサイズのチェックを行う
    662640 */
    663641static bool_t _ecn_tsk_check_format(ecnl_svc_task_t *svc, T_EDATA *edata, int len)
     
    702680
    703681/*
    704  * ECHONET用メッセージ
     682 * ECHONET用メッセージ
    705683 */
    706684static void _ecn_tsk_ecn_msg(ecnl_svc_task_t *svc, intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id)
     
    752730        }
    753731
    754         /* 電文の構成要素数とサイズのチェックを行う */
     732        /* 電文の構成要素数とサイズのチェックを行う */
    755733        if (!_ecn_tsk_check_format(svc, (T_EDATA *)fa_fbs_id.ptr, fa_fbs_id.ptr->hdr.length)) {
    756734                ECN_DBG_PUT("_ecn_tsk_ecn_msg() format fault");
     
    758736        }
    759737
    760         /* 送信宛からノードを検索 */
     738        /* 送信宛からノードを検索 */
    761739        p_nod = _ecn_eno_fnd(svc, fa_fbs_id.ptr->hdr.target.id);
    762         /* 送信å
    763 ƒã‹ã‚‰ãƒŽãƒ¼ãƒ‰ã‚’検索 */
     740        /* 送信元からノードを検索 */
    764741        p_snod = _ecn_eno_fnd(svc, fa_fbs_id.ptr->hdr.sender.id);
    765742        if (p_snod != NULL) {
    766743                sobjatr = p_snod->profile->eobjatr;
    767                 /* ノードプロファイルの場合 */
     744                /* ノードプロファイルの場合 */
    768745                if ((p_esv->edata.seoj.eojx1 == EOJ_X1_PROFILE)
    769746                        && (p_esv->edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) {
    770747                        p_sobj = p_snod->profile;
    771748                }
    772                 /* 機器オブジェクトの場合 */
     749                /* 機器オブジェクトの場合 */
    773750                else {
    774751                        p_sobj = _ecn_eoj_fnd(p_snod, &p_esv->edata.seoj);
     
    780757#endif
    781758
    782         /* ノードå†
    783 ã®æ©Ÿå™¨ã‚ªãƒ–ジェクトを検索 */
     759        /* ノード内の機器オブジェクトを検索 */
    784760        a_prc = false;
    785761        a_fwd = false;
     
    788764                eobjatr = p_nod->profile->eobjatr;
    789765                p_eoj = &p_esv->edata.deoj;
    790                 /* ノードプロファイルの場合 */
     766                /* ノードプロファイルの場合 */
    791767                if ((p_eoj->eojx1 == EOJ_X1_PROFILE)
    792768                        && (p_eoj->eojx2 == EOJ_X2_NODE_PROFILE)) {
    793769                        if ((p_eoj->eojx3 == p_nod->profile->eojx3)
    794770                                || (p_eoj->eojx3 == 0)) {
    795                                 /* 電文処理実行 */
     771                                /* 電文処理実行 */
    796772                                if (_ecn_tsk_ecn_msg_main(svc, fa_fbs_id, p_nod->profile, eobjatr, p_sobj, sobjatr) == 1)
    797773                                        a_fwd = true;
    798774                                a_prc = true;
    799775                        }
    800                         /* 0x74 プロパティ値通知(応答要)の場合の場合は電文破棄 */
     776                        /* 0x74 プロパティ値通知(応答要)の場合の場合は電文破棄 */
    801777                        else if (p_esv->edata.esv == ESV_INFC) {
    802778                                a_prc = true;
    803779                        }
    804780                }
    805                 /* 機器オブジェクトの場合 */
     781                /* 機器オブジェクトの場合 */
    806782                else {
    807783                        count = p_nod->eobjcnt;
     
    822798                                if (p_obj->eojx2 != p_eoj->eojx2)
    823799                                        continue;
    824                                 /* インスタンスコードが0の場合、同じクラスのå
    825 ¨ã¦ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å®› */
     800                                /* インスタンスコードが0の場合、同じクラスの全てのインスタンス宛 */
    826801                                if ((p_obj->eojx3 != p_eoj->eojx3) && (p_eoj->eojx3 != 0))
    827802                                        continue;
    828803
    829                                 /* 電文処理実行 */
     804                                /* 電文処理実行 */
    830805                                if (_ecn_tsk_ecn_msg_main(svc, fa_fbs_id, p_obj, eobjatr, p_sobj, sobjatr) == 1)
    831806                                        a_fwd = true;
     
    833808                        }
    834809
    835                         /* 機器オブジェクトが見つからず、0x74 プロパティ値通知(応答要)の場合は電文破棄 */
     810                        /* 機器オブジェクトが見つからず、0x74 プロパティ値通知(応答要)の場合は電文破棄 */
    836811                        if (!a_prc && (p_esv->edata.esv == ESV_INFC)) {
    837812                                a_prc = true;
     
    839814                }
    840815        }
    841         /* 機器オブジェクトが見つからない場合でも */
     816        /* 機器オブジェクトが見つからない場合でも */
    842817        if (!a_prc) {
    843                 /* 電文処理実行(応答受信用) */
     818                /* 電文処理実行(応答受信用) */
    844819                if (_ecn_tsk_ecn_msg_main(svc, fa_fbs_id, NULL, EPC_NONE, p_sobj, sobjatr) == 1)
    845820                        a_fwd = true;
    846821        }
    847822
    848         /* 応答の場合アプリケーションに転送する */
     823        /* 応答の場合アプリケーションに転送する */
    849824        if (a_fwd && ((p_esv->ecn_hdr.tid == svc->api_tid)
    850825                || svc->forward_esv))
     
    852827                svc->release_esv = false;
    853828
    854                 ECN_CAP_PUT_1("redirect svc->svc_mbxid → svc->api_mbxid (esv:0x%02X)",
     829                ECN_CAP_PUT_1("redirect svc->svc_mbxid svc->api_mbxid (esv:0x%02X)",
    855830                        p_esv->edata.esv);
    856831                fa_fbs_id.ptr->hdr.target.id = ENOD_API_ID;
     
    878853
    879854        switch (p_esv->edata.esv) {
    880         /* 0x60 プロパティ値書き込み要求(応答不要) */
     855        /* 0x60 プロパティ値書き込み要求(応答不要) */
    881856        case ESV_SET_I:
    882857                if (!p_obj) {
     
    890865                break;
    891866
    892         /* 0x61 プロパティ値書き込み要求(応答要) */
     867        /* 0x61 プロパティ値書き込み要求(応答要) */
    893868        case ESV_SET_C:
    894869                if (!p_obj) {
     
    902877                break;
    903878
    904         /* 0x62 プロパティ値読み出し要求 */
     879        /* 0x62 プロパティ値読み出し要求 */
    905880        case ESV_GET:
    906881                if (!p_obj) {
     
    914889                break;
    915890
    916         /* 0x63 プロパティ値通知要求 */
     891        /* 0x63 プロパティ値通知要求 */
    917892        case ESV_INF_REQ:
    918893                if (!p_obj) {
     
    927902                break;
    928903
    929         /* 0x6E プロパティ値書き込み・読み出し要求 */
     904        /* 0x6E プロパティ値書き込み・読み出し要求 */
    930905        case ESV_SET_GET:
    931906                if (!p_obj) {
     
    939914                break;
    940915
    941         /* 0x74 プロパティ値通知(応答要) */
     916        /* 0x74 プロパティ値通知(応答要) */
    942917        case ESV_INFC:
    943918                if (!p_sobj)
    944                         /* 送信å
    945 ƒãŒæœªçŸ¥ã®ä»–ノードであった場合、応答を返す */
     919                        /* 送信元が未知の他ノードであった場合、応答を返す */
    946920                        _ecn_tsk_eoj_res(svc, fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES); /* 0x7A; 0x7A */
    947921                else if (fromapp)
    948                         /* アプリケーションからの要求の場合、プロパティ値通知(応答要)を送信する */
     922                        /* アプリケーションからの要求の場合、プロパティ値通知(応答要)を送信する */
    949923                        _ecn_tsk_eoj_get(svc, p_sobj, sobjatr, true, (EPC_RULE_GET|EPC_RULE_ANNO), fa_fbs_id, ESV_INFC, ESV_NOP); /* 0x74; 0 */
    950924                else
    951                         /* 送信å
    952 ƒãŒæ—¢çŸ¥ã®ä»–ノードであった場合、プロパティ値を更新し応答を返す */
     925                        /* 送信元が既知の他ノードであった場合、プロパティ値を更新し応答を返す */
    953926                        _ecn_tsk_eoj_set(svc, p_sobj, sobjatr, fromapp, true, fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES, &a_fbs_anno); /* 0x7A; 0x7A */
    954927                result = 0;
    955928                break;
    956929
    957         /* 0x60 プロパティ値書き込み要求(応答不要) */
    958         case ESV_SET_I_SNA:             /* 0x50 プロパティ値書き込み要求不可応答 */
     930        /* 0x60 プロパティ値書き込み要求(応答不要) */
     931        case ESV_SET_I_SNA:             /* 0x50 プロパティ値書き込み要求不可応答 */
    959932                result = 1;
    960933                break;
    961934
    962         /* 0x61 プロパティ値書き込み要求(応答要) */
    963         case ESV_SET_RES:               /* 0x71 プロパティ値書き込み応答 */
    964         case ESV_SET_C_SNA:             /* 0x51 プロパティ値書き込み要求不可応答 */
     935        /* 0x61 プロパティ値書き込み要求(応答要) */
     936        case ESV_SET_RES:               /* 0x71 プロパティ値書き込み応答 */
     937        case ESV_SET_C_SNA:             /* 0x51 プロパティ値書き込み要求不可応答 */
    965938                result = 1;
    966939                break;
    967940
    968         /* 0x62 プロパティ値読み出し要求 */
    969         case ESV_GET_RES:               /* 0x72 プロパティ値読み出し応答 */
    970         case ESV_GET_SNA:               /* 0x52 プロパティ値読み出し不可応答 */
     941        /* 0x62 プロパティ値読み出し要求 */
     942        case ESV_GET_RES:               /* 0x72 プロパティ値読み出し応答 */
     943        case ESV_GET_SNA:               /* 0x52 プロパティ値読み出し不可応答 */
    971944                if (!p_sobj) {
    972945                        ECN_DBG_PUT_1("_ecn_tsk_ecn_msg_main() eoj %06X not found.",
     
    979952                break;
    980953
    981         /* 0x63 プロパティ値通知要求 */
    982         case ESV_INF:                   /* 0x73 プロパティ値通知 */
    983         case ESV_INF_SNA:               /* 0x53 プロパティ値通知不可応答 */
     954        /* 0x63 プロパティ値通知要求 */
     955        case ESV_INF:                   /* 0x73 プロパティ値通知 */
     956        case ESV_INF_SNA:               /* 0x53 プロパティ値通知不可応答 */
    984957                if (!p_sobj) {
    985958                        ECN_DBG_PUT_1("_ecn_tsk_ecn_msg_main() eoj %06X not found.",
     
    992965                break;
    993966
    994         /* 0x6E プロパティ値書き込み・読み出し要求 */
    995         case ESV_SET_GET_RES:   /* 0x7E プロパティ値書き込み・読み出し応答 */
    996         case ESV_SET_GET_SNA:   /* 0x5E プロパティ値書き込み・読み出し不可応答 */
     967        /* 0x6E プロパティ値書き込み・読み出し要求 */
     968        case ESV_SET_GET_RES:   /* 0x7E プロパティ値書き込み・読み出し応答 */
     969        case ESV_SET_GET_SNA:   /* 0x5E プロパティ値書き込み・読み出し不可応答 */
    997970                if (!p_sobj) {
    998971                        ECN_DBG_PUT_1("_ecn_tsk_ecn_msg_main() eoj %06X not found.",
     
    1005978                break;
    1006979
    1007         /* 0x74 プロパティ値通知(応答要) */
    1008         case ESV_INFC_RES:              /* 0x7A プロパティ値通知応答 */
     980        /* 0x74 プロパティ値通知(応答要) */
     981        case ESV_INFC_RES:              /* 0x7A プロパティ値通知応答 */
    1009982                result = 1;
    1010983                break;
     
    1016989        }
    1017990
    1018         /* プロパティ通知要求を送信 */
     991        /* プロパティ通知要求を送信 */
    1019992        if (a_fbs_anno.ptr != NULL) {
    1020993                ER a_ret = _ecn_tsk_snd_mbx(svc, a_fbs_anno, true);
     
    10931066
    10941067/*
    1095  * ECN_FBS_IDからT_ECN_PRP1件とその付随データ(edt)を抽出し、edtのポインタを返す
    1096  * 引数
    1097  * ECN_FBS_ID fa_fbs_id                                 èª­ã¿å–ã‚‹FBS
    1098  * T_ECN_PRP *fp_prp                                    epc+pdcの格納å
    1099 ˆ
    1100  * T_ECN_SUB_BLK * const fp_prev_blk    前回使ったメモリのポインタ(無ければ0)
    1101  * 正常:ポインタ NG:0
    1102  * ポインタは_ecn_fbs_mbx_rel()で解放するå¿
    1103 è¦ãŒã‚ã‚‹
     1068 * ECN_FBS_IDからT_ECN_PRP1件とその付随データ(edt)を抽出し、edtのポインタを返す
     1069 * 引数
     1070 * ECN_FBS_ID fa_fbs_id                                 読み取るFBS
     1071 * T_ECN_PRP *fp_prp                                    epc+pdcの格納先
     1072 * T_ECN_SUB_BLK * const fp_prev_blk    前回使ったメモリのポインタ(無ければ0)
     1073 * 正常:ポインタ NG:0
     1074 * ポインタは_ecn_fbs_mbx_rel()で解放する必要がある
    11041075 */
    11051076static T_ECN_SUB_BLK *_ecn_tsk_get_prp_pce(ecnl_svc_task_t *svc, ECN_FBS_ID fa_fbs_id, T_ECN_PRP *fp_prp,
     
    11111082        ER              a_ret;
    11121083
    1113         /* プロパティ用メモリの取得 */
     1084        /* プロパティ用メモリの取得 */
    11141085        if (fp_prev_blk) {
    1115                 p_blk = fp_prev_blk; /* 前回使ったメモリがあるなら、再利用する */
     1086                p_blk = fp_prev_blk; /* 前回使ったメモリがあるなら、再利用する */
    11161087        }
    11171088        else {
     
    11191090                if (!p_blk) {
    11201091                        ECN_DBG_PUT("_ecn_fbs_mbx_get() fault.");
    1121                         return 0;       /* メモリ不足 */
     1092                        return 0;       /* メモリ不足 */
    11221093                }
    11231094        }
    11241095        memset(p_blk, 0, sizeof(*p_blk));
    11251096
    1126         /* T_ECN_PRP部分(epc,pdc)を読み取る */
     1097        /* T_ECN_PRP部分(epc,pdc)を読み取る */
    11271098        a_size = 0;
    11281099        a_ret = _ecn_fbs_get_data(mrb, fa_fbs_id, fp_prp, sizeof(*fp_prp), &a_size);
     
    11331104
    11341105        if (0 < fp_prp->pdc) {
    1135                 /* 付随データ部分(edt)を読み取る */
     1106                /* 付随データ部分(edt)を読み取る */
    11361107                a_size = 0;
    11371108                a_ret = _ecn_fbs_get_data(mrb, fa_fbs_id, p_blk, fp_prp->pdc, &a_size);
     
    11451116
    11461117lb_except:
    1147         /* プロパティ用メモリ解放 */
     1118        /* プロパティ用メモリ解放 */
    11481119        if (p_blk && !fp_prev_blk)
    11491120                _ecn_fbs_mbx_rel(mrb, p_blk);
     
    11551126        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count,
    11561127        int *p_sw_ok);
    1157 /* プロパティ値書き込み実行 */
     1128/* プロパティ値書き込み実行 */
    11581129static ER _ecn_tsk_eoj_set_main(ecnl_svc_task_t *svc, const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update,
    11591130        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count,
     
    11721143
    11731144        for (i = 0; i < a_count; i++) {
    1174                 /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出し、そのポインタを返す */
     1145                /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出し、そのポインタを返す */
    11751146                p_edt = _ecn_tsk_get_prp_pce(svc, fa_fbs_id, &a_prp, p_edt);
    11761147                if (!p_edt) {
     
    11791150                }
    11801151
    1181                 /* プロパティの設定 set_prp(obj, reqp, resp) */
     1152                /* プロパティの設定 set_prp(obj, reqp, resp) */
    11821153                a_size = a_prp.pdc;
    1183                 /* obj,epcに対応するset関数を呼ぶ */
     1154                /* obj,epcに対応するset関数を呼ぶ */
    11841155                a_eprp = _ecn_tsk_eoj_get_property(fp_obj, a_prp.epc);
    11851156                if ((a_eprp != NULL)
     
    12031174                                fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3,
    12041175                                a_prp.epc, p_edt->payload[0], a_size);
    1205                         *p_sw_ok = 0;   /* プロパティ設定失敗 */
    1206                         /* 応答処理の場合EDTは設定しない */
     1176                        *p_sw_ok = 0;   /* プロパティ設定失敗 */
     1177                        /* 応答処理の場合EDTは設定しない */
    12071178                        if (fa_update)
    12081179                                a_prp.pdc = 0;
    12091180                }
    12101181
    1211                 /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */
     1182                /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */
    12121183                a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, &a_prp, sizeof(a_prp));
    12131184                if (a_ret) {
     
    12171188
    12181189                if (0 < a_prp.pdc) {
    1219                         /* 応答電文用メモリにデータ追加(edt n-byte) */
     1190                        /* 応答電文用メモリにデータ追加(edt n-byte) */
    12201191                        a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, p_edt->payload, a_prp.pdc);
    12211192                        if (a_ret) {
     
    12261197                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc ++;
    12271198
    1228                 /* プロパティ通知ありの場合 */
     1199                /* プロパティ通知ありの場合 */
    12291200                if (a_anno && (a_ans == a_size)) {
    12301201                        if (fa_fbs_anno->ptr == NULL) {
     
    12441215
    12451216lb_finally:
    1246         /* プロパティ用メモリ解放 */
     1217        /* プロパティ用メモリ解放 */
    12471218        if (p_edt)
    12481219                _ecn_fbs_mbx_rel(mrb, p_edt);
     
    12531224static ER _ecn_tsk_eoj_get_main(ecnl_svc_task_t *svc, const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access,
    12541225        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok);
    1255 /* プロパティ値読み出し実行 */
     1226/* プロパティ値読み出し実行 */
    12561227static ER _ecn_tsk_eoj_get_main(ecnl_svc_task_t *svc, const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access,
    12571228        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok)
     
    12591230        mrb_state *mrb = svc->mrb;
    12601231        T_ECN_SUB_BLK   *p_edt          =       0;
    1261         void                            *p_prp_buf      =       0;      /* 作業領域 */
     1232        void                            *p_prp_buf      =       0;      /* 作業領域 */
    12621233        const EPRPINIB          *a_eprp;
    12631234        ER                                      a_ret           =       E_SYS;
     
    12671238        ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0;
    12681239
    1269         /* 作業領域確保 */
     1240        /* 作業領域確保 */
    12701241        p_prp_buf = _ecn_fbs_mbx_get(mrb, ECHONET_MEMPOOL_BLOCK_SIZE);
    12711242        if (!p_prp_buf) {
    12721243                ECN_DBG_PUT_2("_ecn_fbs_mbx_get() result = %d:%s", a_ret, itron_strerror(a_ret));
    1273                 goto lb_except; /* メモリ不足 */
     1244                goto lb_except; /* メモリ不足 */
    12741245        }
    12751246
    12761247        for (i = 0; i < a_count; i++) {
    1277                 /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出 */
     1248                /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出 */
    12781249                p_edt = _ecn_tsk_get_prp_pce(svc, fa_fbs_id, &a_prp, p_edt);
    12791250                if (!p_edt) {
     
    12821253                }
    12831254
    1284                 /* プロパティの取得 get_eprp(obj, reqp, resp, size) */
     1255                /* プロパティの取得 get_eprp(obj, reqp, resp, size) */
    12851256                memset(p_prp_buf, 0, ECHONET_MEMPOOL_BLOCK_SIZE);
    1286                 /* obj,epcに対応するget関数を呼ぶ */
     1257                /* obj,epcに対応するget関数を呼ぶ */
    12871258                a_eprp = _ecn_tsk_eoj_get_property(fp_obj, a_prp.epc);
    12881259                if ((a_eprp != NULL) && (((a_eprp->eprpatr & fa_access) != 0) && (fa_eobjatr == EOBJ_LOCAL_NODE) || fa_forward)) {
     
    12951266                        a_prp.pdc = (uint8_t)a_ans;
    12961267                } else {
    1297                         *p_sw_ok = 0;   /* プロパティ取得失敗 */
     1268                        *p_sw_ok = 0;   /* プロパティ取得失敗 */
    12981269                        a_ans = 0;
    12991270                        a_prp.pdc = 0;
    13001271                }
    13011272
    1302                 /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */
     1273                /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */
    13031274                a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, &a_prp, sizeof(a_prp));
    13041275                if (a_ret) {
     
    13071278                }
    13081279                if (0 < a_ans) {
    1309                         /* 付随データ追加 */
     1280                        /* 付随データ追加 */
    13101281                        a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, p_prp_buf, a_ans);
    13111282                        if (a_ret) {
     
    13231294
    13241295lb_finally:
    1325         /* 作業領域解放 */
     1296        /* 作業領域解放 */
    13261297        if (p_prp_buf)
    13271298                _ecn_fbs_mbx_rel(mrb, p_prp_buf);
    13281299
    1329         /* プロパティ用メモリ解放 */
     1300        /* プロパティ用メモリ解放 */
    13301301        if (p_edt)
    13311302                _ecn_fbs_mbx_rel(mrb, p_edt);
     
    13351306
    13361307static ER _ecn_tsk_eoj_res_main(ecnl_svc_task_t *svc, ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok);
    1337 /* プロパティ値読み出し実行 */
     1308/* プロパティ値読み出し実行 */
    13381309static ER _ecn_tsk_eoj_res_main(ecnl_svc_task_t *svc, ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok)
    13391310{
    13401311        mrb_state *mrb = svc->mrb;
    13411312        T_ECN_SUB_BLK   *p_edt          =       0;
    1342         void                            *p_prp_buf      =       0;      /* 作業領域 */
     1313        void                            *p_prp_buf      =       0;      /* 作業領域 */
    13431314        ER                                      a_ret           =       E_SYS;
    13441315        T_ECN_PRP                       a_prp;                  /* epc+pdc */
     
    13471318        ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0;
    13481319
    1349         /* 作業領域確保 */
     1320        /* 作業領域確保 */
    13501321        p_prp_buf = _ecn_fbs_mbx_get(mrb, ECHONET_MEMPOOL_BLOCK_SIZE);
    13511322        if (!p_prp_buf) {
    13521323                ECN_DBG_PUT_2("_ecn_fbs_mbx_get() result = %d:%s", a_ret, itron_strerror(a_ret));
    1353                 goto lb_except; /* メモリ不足 */
     1324                goto lb_except; /* メモリ不足 */
    13541325        }
    13551326
    13561327        for (i = 0; i < a_count; i++) {
    1357                 /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出 */
     1328                /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出 */
    13581329                p_edt = _ecn_tsk_get_prp_pce(svc, fa_fbs_id, &a_prp, p_edt);
    13591330                if (!p_edt) {
     
    13641335                a_prp.pdc = 0;
    13651336
    1366                 /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */
     1337                /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */
    13671338                a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, &a_prp, sizeof(a_prp));
    13681339                if (a_ret) {
     
    13791350
    13801351lb_finally:
    1381         /* 作業領域解放 */
     1352        /* 作業領域解放 */
    13821353        if (p_prp_buf)
    13831354                _ecn_fbs_mbx_rel(mrb, p_prp_buf);
    13841355
    1385         /* プロパティ用メモリ解放 */
     1356        /* プロパティ用メモリ解放 */
    13861357        if (p_edt)
    13871358                _ecn_fbs_mbx_rel(mrb, p_edt);
     
    13901361}
    13911362
    1392 /* プロパティ値読み飛ばし実行 */
     1363/* プロパティ値読み飛ばし実行 */
    13931364static ER _ecn_tsk_eoj_skip_main(ecnl_svc_task_t *svc, const EOBJINIB *fp_obj, ECN_FBS_ID fa_fbs_id,
    13941365        int a_count);
     
    14021373
    14031374        for (i = 0; i < a_count; i++) {
    1404                 /* T_ECN_PRP部分(epc,pdc)を読み取る */
     1375                /* T_ECN_PRP部分(epc,pdc)を読み取る */
    14051376                a_size = 0;
    14061377                a_ret = _ecn_fbs_get_data(mrb, fa_fbs_id, &a_prp, sizeof(a_prp), &a_size);
     
    14101381                }
    14111382
    1412                 /* pdc分読み飛ばし */
     1383                /* pdc分読み飛ばし */
    14131384                a_ret = _ecn_fbs_seek_rpos(fa_fbs_id, a_prp.pdc);
    14141385                if (a_ret) {
     
    14291400static void _ecn_tsk_mk_rsp_hdr(const EOBJINIB *fp_obj, T_ECN_EDT_HDR *fp_rsp_esv,
    14301401        T_ECN_EDT_HDR const *fp_req_esv);
    1431 /* 応答電文設定 */
     1402/* 応答電文設定 */
    14321403static void _ecn_tsk_mk_rsp_hdr(const EOBJINIB *fp_obj, T_ECN_EDT_HDR *fp_rsp_esv,
    14331404        T_ECN_EDT_HDR const *fp_req_esv)
     
    14541425}
    14551426
    1456 /* 応答電文用fbs設定 */
     1427/* 応答電文用fbs設定 */
    14571428static void _ecn_tsk_set_rsp_fbs(ECN_FBS_ID fa_rsp_fbs, T_ECN_FST_BLK const *fp_req_ptr);
    1458 /* 応答電文用fbs設定(sender/targetの設定) */
     1429/* 応答電文用fbs設定(sender/targetの設定) */
    14591430static void _ecn_tsk_set_rsp_fbs(ECN_FBS_ID fa_rsp_fbs, T_ECN_FST_BLK const *fp_req_ptr)
    14601431{
     
    14651436}
    14661437
    1467 /* プロパティ値書き込み要求 */
     1438/* プロパティ値書き込み要求 */
    14681439static void _ecn_tsk_eoj_set(ecnl_svc_task_t *svc, const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update,
    14691440        ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
     
    14811452        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
    14821453
    1483         /* 応答最大サイズの取得 */
     1454        /* 応答最大サイズの取得 */
    14841455        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    14851456
    1486         /* 応答電文用メモリの取得 */
     1457        /* 応答電文用メモリの取得 */
    14871458        a_ret = _ecn_fbs_cre(mrb, a_size, &a_fbs_res);
    1488         if (a_ret != E_OK || !a_fbs_res.ptr) /* 確保失敗 */
     1459        if (a_ret != E_OK || !a_fbs_res.ptr) /* 確保失敗 */
    14891460                return;
    14901461
    1491         /* 応答電文設定 */
     1462        /* 応答電文設定 */
    14921463        if(p_req_esv->edata.deoj.eojx3 != 0)
    14931464                _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
     
    14951466                _ecn_tsk_mk_rsp_hdr(fp_obj, &a_ecn_hdp, p_req_esv);
    14961467
    1497         /* 正常時の応答電文がプロパティ値通知応答の場合 */
     1468        /* 正常時の応答電文がプロパティ値通知応答の場合 */
    14981469        if (fa_res_esv == ESV_INFC_RES) {
    1499                 /* 送信å
    1500 ƒã¨å®›å
    1501 ˆã‚’å
    1502 ¥ã‚Œæ›¿ãˆ */
     1470                /* 送信元と宛先を入れ替え */
    15031471                eoj = a_ecn_hdp.edata.seoj;
    15041472                a_ecn_hdp.edata.seoj = a_ecn_hdp.edata.deoj;
     
    15061474        }
    15071475
    1508         f_put_fbs_eoj("_ecn_tsk_eoj_set", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */
    1509 
    1510         /* 応答電文用メモリにデータ追加 */
     1476        f_put_fbs_eoj("_ecn_tsk_eoj_set", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */
     1477
     1478        /* 応答電文用メモリにデータ追加 */
    15111479        a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, &a_ecn_hdp,
    15121480                                sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata));
     
    15141482                goto lb_except;
    15151483
    1516         /* payloadå
    1517 ˆé ­ã®T_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
     1484        /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
    15181485        a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
    15191486        if (a_ret)
    15201487                goto lb_except;
    15211488
    1522         /* 応答電文用fbs設定 */
     1489        /* 応答電文用fbs設定 */
    15231490        _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr);
    15241491
    1525         /* プロパティ値書き込み実行 */
     1492        /* プロパティ値書き込み実行 */
    15261493        a_ret = _ecn_tsk_eoj_set_main(svc, fp_obj, fa_eobjatr, fa_fromapp, fa_update, fa_fbs_id, a_fbs_res,
    15271494                fa_fbs_anno, p_req_esv->edata.opc, &a_sw_ok);
     
    15291496                goto lb_except;
    15301497
    1531         /* 応答要の場合 */
     1498        /* 応答要の場合 */
    15321499        if (a_sw_ok) {
    15331500                if (!fa_res_esv) {
    1534                         /* 応答不要の場合 */
     1501                        /* 応答不要の場合 */
    15351502                        _ecn_fbs_del(mrb, a_fbs_res);
    15361503                        goto lb_finally;
    15371504                }
    1538                 /* 設定処理成功 */
     1505                /* 設定処理成功 */
    15391506                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv;
    15401507        } else {
    15411508                if (!fa_sna_esv) {
    1542                         /* 応答不要の場合 */
     1509                        /* 応答不要の場合 */
    15431510                        _ecn_fbs_del(mrb, a_fbs_res);
    15441511                        goto lb_finally;
    15451512                }
    1546                 /* 設定処理失敗 */
     1513                /* 設定処理失敗 */
    15471514                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
    15481515        }
    1549         /* 応答送信 */
     1516        /* 応答送信 */
    15501517        a_ret = _ecn_tsk_snd_mbx(svc, a_fbs_res, false);
    15511518        if (a_ret == E_OK)
     
    15531520
    15541521lb_except:
    1555         /* データ送信失敗したら領域解放 */
     1522        /* データ送信失敗したら領域解放 */
    15561523        if (a_fbs_res.ptr)
    15571524                _ecn_fbs_del(mrb, a_fbs_res);
     
    15611528}
    15621529
    1563 /* プロパティ値読み出し要求 */
     1530/* プロパティ値読み出し要求 */
    15641531static void _ecn_tsk_eoj_get(ecnl_svc_task_t *svc, const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access,
    15651532        ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv)
     
    15751542        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
    15761543
    1577         /* 初期取得サイズ */
     1544        /* 初期取得サイズ */
    15781545        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    15791546
    1580         /* 応答電文用メモリの取得 */
     1547        /* 応答電文用メモリの取得 */
    15811548        a_ret = _ecn_fbs_cre(mrb, a_size, &a_fbs_res);
    1582         if (a_ret != E_OK || !a_fbs_res.ptr) { /* 確保失敗 */
     1549        if (a_ret != E_OK || !a_fbs_res.ptr) { /* 確保失敗 */
    15831550                ECN_DBG_PUT_2("_ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret));
    15841551                goto lb_finally;
    15851552        }
    15861553
    1587         /* 応答電文設定 */
     1554        /* 応答電文設定 */
    15881555        if(p_req_esv->edata.deoj.eojx3 != 0)
    15891556                _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
     
    15911558                _ecn_tsk_mk_rsp_hdr(fp_obj, &a_ecn_hdp, p_req_esv);
    15921559
    1593         f_put_fbs_eoj("_ecn_tsk_eoj_get", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */
    1594 
    1595         /* 応答電文用メモリにデータ追加 */
     1560        f_put_fbs_eoj("_ecn_tsk_eoj_get", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */
     1561
     1562        /* 応答電文用メモリにデータ追加 */
    15961563        a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, &a_ecn_hdp,
    15971564                        sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata));
     
    16011568        }
    16021569
    1603         /* payloadå
    1604 ˆé ­ã®T_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
     1570        /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
    16051571        a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
    16061572        if (a_ret) {
     
    16091575        }
    16101576
    1611         /* 応答電文用fbs設定 */
     1577        /* 応答電文用fbs設定 */
    16121578        _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr);
    16131579
    1614         /* プロパティ値読み込み実行 */
     1580        /* プロパティ値読み込み実行 */
    16151581        a_ret = _ecn_tsk_eoj_get_main(svc, fp_obj, fa_eobjatr, fa_forward, fa_access, fa_fbs_id, a_fbs_res,
    16161582                ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc, &a_sw_ok);
     
    16221588        if (a_sw_ok) {
    16231589                if (!fa_res_esv) {
    1624                         /* 応答不要の場合 */
     1590                        /* 応答不要の場合 */
    16251591                        _ecn_fbs_del(mrb, a_fbs_res);
    16261592                        goto lb_finally;
    16271593                }
    1628                 /* 設定処理成功 */
     1594                /* 設定処理成功 */
    16291595                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv;
    16301596        } else {
    16311597                if (!fa_sna_esv) {
    1632                         /* 応答不要の場合 */
     1598                        /* 応答不要の場合 */
    16331599                        _ecn_fbs_del(mrb, a_fbs_res);
    16341600                        goto lb_finally;
    16351601                }
    1636                 /* 設定処理失敗 */
     1602                /* 設定処理失敗 */
    16371603                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
    16381604
    1639                 /* 不可応答の場合は個別送信する */
     1605                /* 不可応答の場合は個別送信する */
    16401606                if (a_fbs_res.ptr->hdr.target.id == ENOD_MULTICAST_ID) {
    16411607                        a_fbs_res.ptr->hdr.target.id = fa_fbs_id.ptr->hdr.sender.id;
    16421608                }
    16431609        }
    1644         /* 応答送信 */
     1610        /* 応答送信 */
    16451611        a_ret = _ecn_tsk_snd_mbx(svc, a_fbs_res, false);
    16461612        if (a_ret != E_OK) {
     
    16511617
    16521618lb_except:
    1653         /* データ送信失敗したら領域解放 */
     1619        /* データ送信失敗したら領域解放 */
    16541620        if (a_fbs_res.ptr)
    16551621                _ecn_fbs_del(mrb, a_fbs_res);
     
    16591625}
    16601626
    1661 /* プロパティ値読み出し要求 */
     1627/* プロパティ値読み出し要求 */
    16621628static void _ecn_tsk_eoj_res(ecnl_svc_task_t *svc, ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv,
    16631629        ECN_SRV_CODE fa_sna_esv)
     
    16731639        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
    16741640
    1675         /* 初期取得サイズ */
     1641        /* 初期取得サイズ */
    16761642        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    16771643
    1678         /* 応答電文用メモリの取得 */
     1644        /* 応答電文用メモリの取得 */
    16791645        a_ret = _ecn_fbs_cre(mrb, a_size, &a_fbs_res);
    1680         if (a_ret != E_OK || !a_fbs_res.ptr) { /* 確保失敗 */
     1646        if (a_ret != E_OK || !a_fbs_res.ptr) { /* 確保失敗 */
    16811647                ECN_DBG_PUT_2("_ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret));
    16821648                goto lb_finally;
    16831649        }
    16841650
    1685         /* 応答電文設定                                           */
     1651        /* 応答電文設定                                               */
    16861652        _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
    16871653
    1688         f_put_fbs_eoj("_ecn_tsk_eoj_res", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */
    1689 
    1690         /* 応答電文用メモリにデータ追加 */
     1654        f_put_fbs_eoj("_ecn_tsk_eoj_res", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */
     1655
     1656        /* 応答電文用メモリにデータ追加 */
    16911657        a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, &a_ecn_hdp,
    16921658                        sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata));
     
    16961662        }
    16971663
    1698         /* payloadå
    1699 ˆé ­ã®T_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
     1664        /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
    17001665        a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
    17011666        if (a_ret) {
     
    17041669        }
    17051670
    1706         /* 応答電文用fbs設定 */
     1671        /* 応答電文用fbs設定 */
    17071672        _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr);
    17081673
    1709         /* プロパティ値読み込み実行 */
     1674        /* プロパティ値読み込み実行 */
    17101675        a_ret = _ecn_tsk_eoj_res_main(svc, fa_fbs_id, a_fbs_res,
    17111676                ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc, &a_sw_ok);
     
    17171682        if (a_sw_ok) {
    17181683                if (!fa_res_esv) {
    1719                         /* 応答不要の場合 */
     1684                        /* 応答不要の場合 */
    17201685                        _ecn_fbs_del(mrb, a_fbs_res);
    17211686                        goto lb_finally;
    17221687                }
    1723                 /* 設定処理成功 */
     1688                /* 設定処理成功 */
    17241689                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv;
    17251690        } else {
    17261691                if (!fa_sna_esv) {
    1727                         /* 応答不要の場合 */
     1692                        /* 応答不要の場合 */
    17281693                        _ecn_fbs_del(mrb, a_fbs_res);
    17291694                        goto lb_finally;
    17301695                }
    1731                 /* 設定処理失敗 */
     1696                /* 設定処理失敗 */
    17321697                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
    17331698        }
    1734         /* 応答送信 */
     1699        /* 応答送信 */
    17351700        a_ret = _ecn_tsk_snd_mbx(svc, a_fbs_res, false);
    17361701        if (a_ret != E_OK) {
     
    17411706
    17421707lb_except:
    1743         /* データ送信失敗したら領域解放 */
     1708        /* データ送信失敗したら領域解放 */
    17441709        if (a_fbs_res.ptr)
    17451710                _ecn_fbs_del(mrb, a_fbs_res);
     
    17571722        T_ECN_EDT_HDR   a_ecn_hdp;
    17581723        ECN_FBS_ID              a_fbs_res       = { 0 };
    1759         int                             a_rdprp_wrpos;  /*      プロパティ読み込み件数書き込み時のヘッド位置      */
     1724        int                             a_rdprp_wrpos;  /*      プロパティ読み込み件数書き込み時のヘッド位置  */
    17601725        ER              a_ret;
    17611726        int             i, a_size, a_rdlen;
    17621727        int             a_sw_ok = 1;
    1763         int             a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc;    /* 処理プロパティ数 */
     1728        int             a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc;    /* 処理プロパティ数 */
    17641729
    17651730        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
     
    17681733                fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3);
    17691734
    1770         /* 初期取得サイズ */
     1735        /* 初期取得サイズ */
    17711736        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    17721737
    1773         /* 応答電文用メモリの取得 */
     1738        /* 応答電文用メモリの取得 */
    17741739        a_ret = _ecn_fbs_cre(mrb, a_size, &a_fbs_res);
    1775         if (a_ret != E_OK || !a_fbs_res.ptr) /* 確保失敗 */
     1740        if (a_ret != E_OK || !a_fbs_res.ptr) /* 確保失敗 */
    17761741                goto lb_finally;
    17771742
    1778         /* 応答電文設定 */
     1743        /* 応答電文設定 */
    17791744        if(p_req_esv->edata.deoj.eojx3 != 0)
    17801745                _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
     
    17831748        a_size -= sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY);
    17841749
    1785         f_put_fbs_eoj("_ecn_tsk_eoj_set_get", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */
    1786 
    1787         /* 応答電文用メモリにデータ追加 */
     1750        f_put_fbs_eoj("_ecn_tsk_eoj_set_get", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */
     1751
     1752        /* 応答電文用メモリにデータ追加 */
    17881753        a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, &a_ecn_hdp,
    17891754                                sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata));
     
    17911756                goto lb_except;
    17921757
    1793         /* payloadå
    1794 ˆé ­ã®T_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
     1758        /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
    17951759        a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
    17961760        if (a_ret)
    17971761                goto lb_except;
    17981762
    1799         /* 応答電文用fbs設定 */
     1763        /* 応答電文用fbs設定 */
    18001764        _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr);
    18011765
    1802         /* プロパティ値書き込み実行 */
     1766        /* プロパティ値書き込み実行 */
    18031767        a_ret = _ecn_tsk_eoj_set_main(svc, fp_obj, fa_eobjatr, fa_fromapp, false, fa_fbs_id, a_fbs_res,
    18041768                fa_fbs_anno, a_count, &a_sw_ok);
     
    18131777                (a_sw_ok ? "true" : "false"));
    18141778
    1815         /* 次の件数を読み取る(1byte)                                           */
    1816         /* → ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet]       */
     1779        /* 次の件数を読み取る(1byte)                                             */
     1780        /* ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet] */
    18171781        a_rdlen = i = 0;
    18181782        a_ret = _ecn_fbs_get_data(mrb, fa_fbs_id, &i, 1, &a_rdlen);
     
    18211785        a_count = *(uint8_t *)&i;
    18221786
    1823         /* プロパティ読み込み件数書き込み時のヘッドæƒ
    1824 å ±ã‚’記録 */
     1787        /* プロパティ読み込み件数書き込み時のヘッド情報を記録 */
    18251788        a_rdprp_wrpos = _ecn_fbs_get_datalen(a_fbs_res);
    18261789
    1827         /* 応答電文用メモリにデータ追加 (OPCGet 1byte) */
     1790        /* 応答電文用メモリにデータ追加 (OPCGet 1byte) */
    18281791        a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, &i, 1);
    18291792        if (a_ret)
    18301793                goto lb_except;
    18311794
    1832         /* この時点での応答電文中プロパティ件数を記録 */
     1795        /* この時点での応答電文中プロパティ件数を記録 */
    18331796        i = ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc;
    18341797        ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0;
    18351798
    1836         /* プロパティ値読み込み実行 */
     1799        /* プロパティ値読み込み実行 */
    18371800        a_ret = _ecn_tsk_eoj_get_main(svc, fp_obj, fa_eobjatr, false, EPC_RULE_GET, fa_fbs_id, a_fbs_res,
    18381801                a_count, &a_sw_ok);
     
    18471810                (a_sw_ok ? "true" : "false"));
    18481811
    1849         /* プロパティ読み込み件数書き込み時のヘッドæƒ
    1850 å ±ã§ã€èª­ã¿å‡ºã—件数を記録 */
     1812        /* プロパティ読み込み件数書き込み時のヘッド情報で、読み出し件数を記録 */
    18511813        _ecn_fbs_poke(mrb, a_fbs_res, a_rdprp_wrpos, ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc);
    18521814
    1853         /* 記録しておいたプロパティ件数(書き込み件数)を書き戻す */
     1815        /* 記録しておいたプロパティ件数(書き込み件数)を書き戻す */
    18541816        ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = (uint8_t)i;
    18551817
    1856         /* 応答要の場合 */
     1818        /* 応答要の場合 */
    18571819        if (a_sw_ok) {
    1858                 /* 設定処理成功 */
     1820                /* 設定処理成功 */
    18591821                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv;
    18601822        } else {
    1861                 /* 設定処理失敗 */
     1823                /* 設定処理失敗 */
    18621824                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
    18631825        }
    1864         /* 応答送信 */
     1826        /* 応答送信 */
    18651827        a_ret = _ecn_tsk_snd_mbx(svc, a_fbs_res, false);
    18661828        if (a_ret == E_OK)
     
    18681830
    18691831lb_except:
    1870         /* データ送信失敗したら領域解放 */
     1832        /* データ送信失敗したら領域解放 */
    18711833        if (a_fbs_res.ptr)
    18721834                _ecn_fbs_del(mrb, a_fbs_res);
     
    18861848        int             i, a_size, a_rdlen;
    18871849        int             a_sw_ok = 1;
    1888         int             a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc;    /* 処理プロパティ数 */
     1850        int             a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc;    /* 処理プロパティ数 */
    18891851
    18901852        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
     
    18931855                fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3);
    18941856
    1895         /* 初期取得サイズ */
     1857        /* 初期取得サイズ */
    18961858        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    18971859
    1898         /* 応答電文用メモリ(ダミー)の取得 */
     1860        /* 応答電文用メモリ(ダミー)の取得 */
    18991861        a_ret = _ecn_fbs_cre(mrb, a_size, &a_fbs_dmy);
    1900         if (a_ret != E_OK || !a_fbs_dmy.ptr) /* 確保失敗 */
     1862        if (a_ret != E_OK || !a_fbs_dmy.ptr) /* 確保失敗 */
    19011863                goto lb_finally;
    19021864
    1903         /* 応答電文設定                                           */
     1865        /* 応答電文設定                                               */
    19041866        _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
    19051867        a_size -= sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY);
    19061868
    1907         /* payloadå
    1908 ˆé ­ã®T_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
     1869        /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
    19091870        a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
    19101871        if (a_ret)
    19111872                goto lb_except;
    19121873
    1913         /* プロパティ値書き込み応答読み飛ばし実行 */
     1874        /* プロパティ値書き込み応答読み飛ばし実行 */
    19141875        a_ret = _ecn_tsk_eoj_skip_main(svc, fp_obj, fa_fbs_id, a_count);
    19151876        if (a_ret) {
     
    19231884                (a_sw_ok ? "true" : "false"));
    19241885
    1925         /* 次の件数を読み取る(1byte)                                           */
    1926         /* → ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet]       */
     1886        /* 次の件数を読み取る(1byte)                                             */
     1887        /* ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet] */
    19271888        a_rdlen = i = 0;
    19281889        a_ret = _ecn_fbs_get_data(mrb, fa_fbs_id, &i, 1, &a_rdlen);
     
    19311892        a_count = *(uint8_t *)&i;
    19321893
    1933         /* プロパティ値読み出し応答の書き込み実行 */
     1894        /* プロパティ値読み出し応答の書き込み実行 */
    19341895        a_ret = _ecn_tsk_eoj_set_main(svc, fp_obj, fa_eobjatr, fa_fromapp, true, fa_fbs_id, a_fbs_dmy,
    19351896                                                                  fa_fbs_anno, a_count, &a_sw_ok);
     
    19471908
    19481909lb_except:
    1949         /* データ送信失敗したら領域解放 */
     1910        /* データ送信失敗したら領域解放 */
    19501911        if (a_fbs_dmy.ptr)
    19511912                _ecn_fbs_del(mrb, a_fbs_dmy);
     
    19561917
    19571918/*
    1958  * 応答電文å¾
    1959 ã¡ã®å‰²ã‚Šè¾¼ã¿é›»æ–‡ä½œæˆ
     1919 * 応答電文待ちの割り込み電文作成
    19601920 */
    19611921ER _ecn_mk_brk_wai(ecnl_svc_task_t *svc, ECN_FBS_ID *pk_fbs_id, const void *p_dat, size_t fa_size)
     
    19631923        mrb_state *mrb = svc->mrb;
    19641924        ER                              a_ret;
    1965         ECN_FBS_ID              a_fbs_id = { 0 };       /* 要求電文用メモリ     */
     1925        ECN_FBS_ID              a_fbs_id = { 0 };       /* 要求電文用メモリ     */
    19661926
    19671927        if (!pk_fbs_id)
     
    19691929        *pk_fbs_id = a_fbs_id;
    19701930        if (sizeof(a_fbs_id.ptr->payload) <= fa_size)
    1971                 return E_PAR; /* 付随データが大きすぎる */
     1931                return E_PAR; /* 付随データが大きすぎる */
    19721932        if (!p_dat && 0 < fa_size)
    1973                 return E_PAR; /* 付随データサイズが1以上なのにデータポインタがNULL */
    1974 
    1975         /* 要求電文用メモリの取得 */
     1933                return E_PAR; /* 付随データサイズが1以上なのにデータポインタがNULL */
     1934
     1935        /* 要求電文用メモリの取得 */
    19761936        a_ret = _ecn_fbs_cre(mrb, (0 < fa_size ? fa_size : 1), &a_fbs_id);
    1977         if (a_ret != E_OK || !a_fbs_id.ptr) { /* 確保失敗 */
     1937        if (a_ret != E_OK || !a_fbs_id.ptr) { /* 確保失敗 */
    19781938                ECN_DBG_PUT_3("_ecn_fbs_cre(%d) result = %d:%s", fa_size, a_ret, itron_strerror(a_ret));
    19791939                return a_ret;
    19801940        }
    19811941
    1982         /* 要求電文設定 */
     1942        /* 要求電文設定 */
    19831943        a_fbs_id.ptr->hdr.type = ECN_MSG_USER_BREAK;
    19841944        a_fbs_id.ptr->hdr.sender.id = ENOD_API_ID;
     
    19871947
    19881948        if (0 < fa_size && p_dat) {
    1989                 /* 付随データ追加 */
     1949                /* 付随データ追加 */
    19901950                a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_id, p_dat, fa_size);
    19911951                if (a_ret) {
     
    19991959        *pk_fbs_id = a_fbs_id;
    20001960
    2001         /* 正常終了 */
     1961        /* 正常終了 */
    20021962        return a_ret;
    20031963
    20041964lb_except:
    2005         /* データ作成失敗したら領域解放 */
     1965        /* データ作成失敗したら領域解放 */
    20061966        if (a_fbs_id.ptr)
    20071967                _ecn_fbs_del(mrb, a_fbs_id);
     
    20101970}
    20111971
    2012 /* 応答電文用fbs設定(sender/targetの設定) */
     1972/* 応答電文用fbs設定(sender/targetの設定) */
    20131973ER _ecn_tsk_cre_req_fbs(ecnl_svc_task_t *svc, T_ECN_FBS_QUEUE *sender, uint8_t cmd, ECN_FBS_ID *pk_req)
    20141974{
     
    20402000}
    20412001
    2042 /* 応答電文用fbs設定(sender/targetの設定) */
     2002/* 応答電文用fbs設定(sender/targetの設定) */
    20432003ER _ecn_tsk_cre_res_fbs(ecnl_svc_task_t *svc, ECN_FBS_ID req, uint8_t cmd, ECN_FBS_ID *pk_res)
    20442004{
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_task.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    44 *  Copyright (C) 2014-2016 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
     6 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     7 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     8 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     9 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     10 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     11 *      スコード中に含まれていること.
     12 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     13 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     14 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     15 *      の無保証規定を掲載すること.
     16 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     17 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     18 *      と.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     20 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     22 *        報告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     26 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     27 *      免責すること.
    4228 *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    4934 *
    5035 *  @(#) $Id$
     
    5237
    5338/*
    54  *              ECHONET Lite タスク
     39 *              ECHONET Lite タスク
    5540 */
    5641
     
    6954
    7055/*
    71  *  ECHONET Lite タスク関連の定数のデフォルト値の定義
     56 *  ECHONET Lite タスク関連の定数のデフォルト値の定義
    7257 */
    7358#ifndef ECHONET_TASK_PRIORITY
    74 #define ECHONET_TASK_PRIORITY   6               /* 初期優å
    75 ˆåº¦ */
     59#define ECHONET_TASK_PRIORITY   6               /* 初期優先度 */
    7660#endif /* ECHONET_TASK_PRIORITY */
    7761
    7862#ifndef ECHONET_TASK_STACK_SIZE
    79 #define ECHONET_TASK_STACK_SIZE 1024    /* スタック領域のサイズ */
     63#define ECHONET_TASK_STACK_SIZE 1024    /* スタック領域のサイズ */
    8064#endif /* ECHONET_TASK_STACK_SIZE */
    8165
     
    9377        intptr_t exinf;
    9478        TMO api_timer;
    95         /* アプリケーションが要求した電文のシーケンス番号 */
     79        /* アプリケーションが要求した電文のシーケンス番号 */
    9680        uint16_t api_tid;
    97         /* 受信メッセージを開放するか否か */
     81        /* 受信メッセージを開放するか否か */
    9882        bool_t release_esv;
    99         /* 受信メッセージを転送するか否か */
     83        /* 受信メッセージを転送するか否か */
    10084        bool_t forward_esv;
    101         /* コントローラー向け */
     85        /* コントローラー向け */
    10286        ecn_agent_t agent;
    103         /* ECHONET Lite オブジェクトIDの最大値 */
     87        /* ECHONET Lite オブジェクトIDの最大値 */
    10488        ID tmax_eobjid;
    105         /* ECHONET Lite オブジェクト初期化ブロックのエリア */
     89        /* ECHONET Lite オブジェクト初期化ブロックのエリア */
    10690        const EOBJINIB **eobjinib_table;
    107         /* ECHONET Liteノード管理ブロックの数 */
     91        /* ECHONET Liteノード管理ブロックの数 */
    10892        int tnum_enodid;
    109         /* ECHONET Lite オブジェクト管理ブロックのエリア */
     93        /* ECHONET Lite オブジェクト管理ブロックのエリア */
    11094        EOBJCB eobjcb_table[1];
    111         /* クラス数 */
     95        /* クラス数 */
    11296        uint_t eclscnt;
    113         /* クラスリスト */
     97        /* クラスリスト */
    11498        uint8_t *eclslst;
    115         /* メールボックス */
     99        /* メールボックス */
    116100        T_ECN_FBS_QUEUE api_mbxid;
    117101        T_ECN_FBS_QUEUE svc_mbxid;
    118102        T_ECN_FBS_QUEUE lcl_mbxid;
    119         /* モジュール初期化フラグ */
     103        /* モジュール初期化フラグ */
    120104        uint8_t eobjlist_need_init;
    121         /* シーケンス番号 */
     105        /* シーケンス番号 */
    122106        uint16_t current_tid;
    123         /* インスタンスリスト通知位置 */
     107        /* インスタンスリスト通知位置 */
    124108        int inst_list_pos;
    125109};
     
    133117ID echonet_svctask_get_eobjid(ecnl_svc_task_t *svc, const EOBJINIB *eobjinib);
    134118
    135 /* ECHONET Lite インスタンスリストの1アナウンス当たり最大ノード数 */
     119/* ECHONET Lite インスタンスリストの1アナウンス当たり最大ノード数 */
    136120#define ECN_IST_LST_EOJ_MAX_CT (84)
    137121
    138 /* ECHONET Liteオブジェクトコード x1,x2,x3(T_ECN_EOJ)を24bit整数に変換 */
     122/* ECHONET Liteオブジェクトコード x1,x2,x3(T_ECN_EOJ)を24bit整数に変換 */
    139123#define _ECN_EOJ2VALUE(s) (((s).eojx1 << 16) | ((s).eojx2 << 8) | (s).eojx3)
    140124
    141125enum ecn_epc_code
    142126{
    143         ECN_EPC_INL_BCS         =       0xD5    /* インスタンスリスト通知プロパティ */
     127        ECN_EPC_INL_BCS         =       0xD5    /* インスタンスリスト通知プロパティ */
    144128};
    145129
     
    170154} T_ECN_INTERNAL_MSG;
    171155
    172 /* タスク初期化 */
     156/* タスク初期化 */
    173157void _ecn_tsk_int_startup(ecnl_svc_task_t *svc);
    174 /* インスタンスリスト通知の送信 */
     158/* インスタンスリスト通知の送信 */
    175159ER _ecn_tsk_ntf_inl(ecnl_svc_task_t *svc);
    176160
    177161/*
    178  * 要求電文作成
     162 * 要求電文作成
    179163 */
    180164ER _ecn_tsk_mk_esv(ecnl_svc_task_t *svc, ECN_FBS_ID *fp_fbs_id, ID fa_seoj, ID fa_deoj,
     
    184168
    185169/*
    186  * 応答電文å¾
    187 ã¡ã®å‰²ã‚Šè¾¼ã¿é›»æ–‡ä½œæˆ
     170 * 応答電文待ちの割り込み電文作成
    188171 */
    189172ER _ecn_mk_brk_wai(ecnl_svc_task_t *svc, ECN_FBS_ID *pk_fbs_id, const void *p_dat, size_t fa_size);
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/mrb_ecnl.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r270 r321  
    44 *  Copyright (C) 2016 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
     6 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     7 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     8 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     9 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     10 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     11 *      スコード中に含まれていること.
     12 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     13 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     14 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     15 *      の無保証規定を掲載すること.
     16 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     17 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     18 *      と.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     20 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     22 *        報告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     26 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     27 *      免責すること.
    4228 *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    4934 *
    5035 */
     
    136121        rprop = RARRAY_PTR(props);
    137122        icnt = RARRAY_LEN(props);
    138         count = icnt + 3; /* プロパティマップ分 */
     123        count = icnt + 3; /* プロパティマップ分 */
    139124
    140125        for (i = 0; i < icnt; i++) {
     
    148133                prop = (T_MRB_ECNL_EPROPERTY *)DATA_PTR(rprop[i]);
    149134
    150                 /* プロパティマップの場合は減算 */
     135                /* プロパティマップの場合は減算 */
    151136                switch (prop->inib.eprpcd) {
    152137                case 0x9D: case 0x9E: case 0x9F:
     
    181166                prop = (T_MRB_ECNL_EPROPERTY *)DATA_PTR(rprop[i]);
    182167
    183                 /* プロパティマップの場合は無視 */
     168                /* プロパティマップの場合は無視 */
    184169                switch (prop->inib.eprpcd) {
    185170                case 0x9D: case 0x9E: case 0x9F:
     
    208193        T_MRB_ECNL_EPROPERTY *prop;
    209194
    210         /* 機器オブジェクトの設定として取り込まれた場合は破棄しない */
     195        /* 機器オブジェクトの設定として取り込まれた場合は破棄しない */
    211196        if (obj->base.svc != NULL)
    212197                return;
     
    293278        rprop = RARRAY_PTR(props);
    294279        icnt = RARRAY_LEN(props);
    295         count = icnt + 8; /* インスタンスリストなどの分 */
     280        count = icnt + 8; /* インスタンスリストなどの分 */
    296281
    297282        for (i = 0; i < icnt; i++) {
     
    305290                prop = (T_MRB_ECNL_EPROPERTY *)DATA_PTR(rprop[i]);
    306291
    307                 /* インスタンスリストなどの場合は減算 */
     292                /* インスタンスリストなどの場合は減算 */
    308293                switch (prop->inib.eprpcd) {
    309294                case 0xD3: case 0xD4: case 0xD5: case 0xD6: case 0xD7:
     
    315300
    316301        nod = (ecn_node_t *)mrb_calloc(mrb, 1, sizeof(ecn_node_t) + count * sizeof(EPRPINIB *)
    317                 + (sizeof(EPRPINIB) * 8)/* インスタンスリストなどの分 */);
     302                + (sizeof(EPRPINIB) * 8)/* インスタンスリストなどの分 */);
    318303        DATA_TYPE(self) = &mrb_ecnl_enode_type;
    319304        DATA_PTR(self) = nod;
     
    337322                prop = (T_MRB_ECNL_EPROPERTY *)DATA_PTR(rprop[i]);
    338323
    339                 /* インスタンスリストなどの場合は無視 */
     324                /* インスタンスリストなどの場合は無視 */
    340325                switch (prop->inib.eprpcd) {
    341326                case 0xD3: case 0xD4: case 0xD5: case 0xD6: case 0xD7:
     
    365350        T_MRB_ECNL_EPROPERTY *prop;
    366351
    367         /* ノードの設定として取り込まれた場合は破棄しない */
     352        /* ノードの設定として取り込まれた場合は破棄しない */
    368353        if (nod->base.svc != NULL)
    369354                return;
     
    476461        int count = 0;
    477462
    478         /* 通知数の位置を空けておく */
     463        /* 通知数の位置を空けておく */
    479464        pos++;
    480465        for (int i = inst_list_pos; (i < eobjcnt) && (count < 84); i++) {
     
    489474
    490475        inst_list_pos += count;
    491         /* 最後まで送信し終わっていたら初めから */
     476        /* 最後まで送信し終わっていたら初めから */
    492477        if (inst_list_pos >= eobjcnt)
    493478                inst_list_pos = 0;
     
    509494                *pos++ = eobjcnt;
    510495        else
    511                 *pos++ = 255; /*オーバーフロー*/
     496                *pos++ = 255; /*オーバーフロー*/
    512497
    513498        for (int i = 0; (i < eobjcnt) && (i < 84); i++) {
     
    530515                *pos++ = eclscnt;
    531516        else
    532                 *pos++ = 255; /*オーバーフロー*/
     517                *pos++ = 255; /*オーバーフロー*/
    533518
    534519        len = 2 * eclscnt;
     
    617602                eobj = (ecn_obj_t *)DATA_PTR(prop->eobj);
    618603
    619                 /* プロパティの設定として取り込まれた場合は破棄しない */
     604                /* プロパティの設定として取り込まれた場合は破棄しない */
    620605                if (eobj != NULL)
    621606                        return;
     
    625610}
    626611
    627 /* ECHONET Lite プロパティコード */
     612/* ECHONET Lite プロパティコード */
    628613static mrb_value mrb_ecnl_eproperty_get_pcd(mrb_state *mrb, mrb_value self)
    629614{
     
    635620}
    636621
    637 /* ECHONET Lite プロパティ属性 */
     622/* ECHONET Lite プロパティ属性 */
    638623static mrb_value mrb_ecnl_eproperty_get_atr(mrb_state *mrb, mrb_value self)
    639624{
     
    645630}
    646631
    647 /* ECHONET Lite プロパティのサイズ */
     632/* ECHONET Lite プロパティのサイズ */
    648633static mrb_value mrb_ecnl_eproperty_get_sz(mrb_state *mrb, mrb_value self)
    649634{
     
    655640}
    656641
    657 /* ECHONET Lite プロパティの拡張æƒ
    658 å ± */
     642/* ECHONET Lite プロパティの拡張情報 */
    659643static mrb_value mrb_ecnl_eproperty_get_exinf(mrb_state *mrb, mrb_value self)
    660644{
     
    666650}
    667651
    668 /* ECHONET Lite プロパティの拡張æƒ
    669 å ±è¨­å®š */
     652/* ECHONET Lite プロパティの拡張情報設定 */
    670653static mrb_value mrb_ecnl_eproperty_set_exinf(mrb_state *mrb, mrb_value self)
    671654{
     
    682665}
    683666
    684 /* ECHONET Lite プロパティの設定関数 */
     667/* ECHONET Lite プロパティの設定関数 */
    685668static mrb_value mrb_ecnl_eproperty_get_setcb(mrb_state *mrb, mrb_value self)
    686669{
     
    695678}
    696679
    697 /* ECHONET Lite プロパティの取得関数 */
     680/* ECHONET Lite プロパティの取得関数 */
    698681static mrb_value mrb_ecnl_eproperty_get_getcb(mrb_state *mrb, mrb_value self)
    699682{
     
    708691}
    709692
    710 /* ECHONET Lite プロパティの通知有無 */
     693/* ECHONET Lite プロパティの通知有無 */
    711694static mrb_value mrb_ecnl_eproperty_get_anno(mrb_state *mrb, mrb_value self)
    712695{
     
    721704}
    722705
    723 /* ECHONET Lite プロパティの通知有無設定 */
     706/* ECHONET Lite プロパティの通知有無設定 */
    724707static mrb_value mrb_ecnl_eproperty_set_anno(mrb_state *mrb, mrb_value self)
    725708{
     
    737720
    738721/*
    739  * データ設定関数
     722 * データ設定関数
    740723 */
    741724static int mrb_ecnl_prop_set(ecnl_svc_task_t *svc, const EPRPINIB *item, const void *src, int size, bool_t *anno)
     
    771754
    772755/*
    773  * データ取得関数
     756 * データ取得関数
    774757 */
    775758static int mrb_ecnl_prop_get(ecnl_svc_task_t *svc, const EPRPINIB *item, void *dst, int size)
     
    835818}
    836819
    837 /* プロパティ値書き込み・読み出し要求電文折り返し指定 */
     820/* プロパティ値書き込み・読み出し要求電文折り返し指定 */
    838821static mrb_value mrb_ecnl_trn_set_get(mrb_state *mrb, mrb_value self)
    839822{
     
    851834}
    852835
    853 /* 要求電文へのプロパティ指定追加 */
     836/* 要求電文へのプロパティ指定追加 */
    854837static mrb_value mrb_ecnl_add_epc(mrb_state *mrb, mrb_value self)
    855838{
     
    870853}
    871854
    872 /* 要求電文へのプロパティデータ追加 */
     855/* 要求電文へのプロパティデータ追加 */
    873856static mrb_value mrb_ecnl_add_edt(mrb_state *mrb, mrb_value self)
    874857{
     
    919902
    920903
    921 /* 応答電文解析イテレーター初期化 */
     904/* 応答電文解析イテレーター初期化 */
    922905static mrb_value mrb_ecnl_itr_ini(mrb_state *mrb, mrb_value self)
    923906{
     
    942925}
    943926
    944 /* 応答電文解析イテレーターインクリメント */
     927/* 応答電文解析イテレーターインクリメント */
    945928static mrb_value mrb_ecnl_itr_nxt(mrb_state *mrb, mrb_value self)
    946929{
     
    10921075        svc = (ecnl_svc_task_t *)mrb_calloc(mrb, 1, sizeof(ecnl_svc_task_t)
    10931076                + (1 + eobjcnt) * sizeof(EOBJINIB *)
    1094                 + (2 * eobjcnt)/*クラスリスト用*/);
     1077                + (2 * eobjcnt)/*クラスリスト用*/);
    10951078        DATA_TYPE(self) = &mrb_ecnl_svctask_type;
    10961079        DATA_PTR(self) = svc;
     
    11011084        svc->mrb = mrb;
    11021085        svc->self = self;
    1103         svc->tnum_enodid = 1; /* この版ではローカルノード1つ */
     1086        svc->tnum_enodid = 1; /* この版ではローカルノード1つ */
    11041087        svc->tmax_eobjid = 1 + 1 + eobjcnt;
    11051088        svc->eobjinib_table = (const EOBJINIB **)&svc[1];
     
    11291112        }
    11301113
    1131         /* クラスリストの作成 */
     1114        /* クラスリストの作成 */
    11321115        svc->eclslst = (uint8_t *)&svc->eobjinib_table[1 + eobjcnt];
    11331116        uint8_t *pos = svc->eclslst;
     
    11541137        svc->eclscnt = eclscnt;
    11551138
    1156         /* ECHONETミドルウェアを起動 */
     1139        /* ECHONETミドルウェアを起動 */
    11571140        ret = ecn_sta_svc(svc);
    11581141        if (ret != E_OK) {
     
    11771160{
    11781161        ecnl_svc_task_t *svc = (ecnl_svc_task_t *)ptr;
    1179 #if 0 /* どこかで解放しているらしい・・・ */
     1162#if 0 /* どこかで解放しているらしい・・・ */
    11801163        const EOBJINIB **table = svc->eobjinib_table;
    11811164        const EOBJINIB **end = &table[svc->tmax_eobjid];
     
    12061189}
    12071190
    1208 /* プロパティ値書き込み要求(応答不要)電文作成 */
     1191/* プロパティ値書き込み要求(応答不要)電文作成 */
    12091192static mrb_value mrb_ecnl_esv_set_i(mrb_state *mrb, mrb_value self)
    12101193{
     
    12451228}
    12461229
    1247 /* プロパティ値書き込み要求(応答要)電文作成 */
     1230/* プロパティ値書き込み要求(応答要)電文作成 */
    12481231static mrb_value mrb_ecnl_esv_set_c(mrb_state *mrb, mrb_value self)
    12491232{
     
    12851268}
    12861269
    1287 /* プロパティ値読み出し要求電文作成 */
     1270/* プロパティ値読み出し要求電文作成 */
    12881271static mrb_value mrb_ecnl_esv_get(mrb_state *mrb, mrb_value self)
    12891272{
     
    13231306}
    13241307
    1325 /* プロパティ値通知要求電文作成 */
     1308/* プロパティ値通知要求電文作成 */
    13261309static mrb_value mrb_ecnl_esv_inf_req(mrb_state *mrb, mrb_value self)
    13271310{
     
    13611344}
    13621345
    1363 /* プロパティ値書き込み・読み出し要求電文作成 */
     1346/* プロパティ値書き込み・読み出し要求電文作成 */
    13641347static mrb_value mrb_ecnl_esv_set_get(mrb_state *mrb, mrb_value self)
    13651348{
     
    14001383}
    14011384
    1402 /* プロパティ値通知(応答要)電文作成 */
     1385/* プロパティ値通知(応答要)電文作成 */
    14031386static mrb_value mrb_ecnl_esv_infc(mrb_state *mrb, mrb_value self)
    14041387{
     
    14481431}
    14491432
    1450 /* 要求電文の送信 */
     1433/* 要求電文の送信 */
    14511434static mrb_value mrb_ecnl_snd_esv(mrb_state *mrb, mrb_value self)
    14521435{
     
    14861469}
    14871470
    1488 /* 電文の破棄 */
     1471/* 電文の破棄 */
    14891472static mrb_value mrb_ecnl_rel_esv(mrb_state *mrb, mrb_value self)
    14901473{
     
    15241507        svc->mrb = mrb;
    15251508
    1526         /* インスタンスリスト通知の送信 */
     1509        /* インスタンスリスト通知の送信 */
    15271510        ret = _ecn_tsk_ntf_inl(svc);
    15281511        if (ret != E_OK) {
     
    15901573
    15911574/*
    1592  * Echonet電文受信処理
     1575 * Echonet電文受信処理
    15931576 */
    15941577static void main_recv_esv(ecnl_svc_task_t *svc, T_EDATA *esv)
     
    16031586
    16041587/*
    1605  * 応答電文å¾
    1606 ã¡ã®å‰²ã‚Šè¾¼ã¿å‡¦ç†
     1588 * 応答電文待ちの割り込み処理
    16071589 */
    16081590static void main_break_wait(ecnl_svc_task_t *svc, uint8_t *brkdat, int32_t len)
     
    16231605        ER ret;
    16241606
    1625         /* Echonet電文受信の場合 */
     1607        /* Echonet電文受信の場合 */
    16261608        if ((p_msg)->hdr.type == ECN_MSG_ECHONET) {
    1627                 /* Echonet電文受信処理 */
     1609                /* Echonet電文受信処理 */
    16281610                main_recv_esv(svc, (T_EDATA *)p_msg);
    16291611
    1630                 /* 領域解放はGCに任せる
     1612                /* 領域解放はGCに任せる
    16311613                ret = ecn_rel_esv(mrb, (T_EDATA *)p_msg);
    16321614                if (ret != E_OK) {
     
    16351617                } */
    16361618        }
    1637         /* 応答電文å¾
    1638 ã¡ã®å‰²ã‚Šè¾¼ã¿ã®å ´åˆ */
     1619        /* 応答電文待ちの割り込みの場合 */
    16391620        else if ((p_msg)->hdr.type == ECN_MSG_INTERNAL) {
    1640                 /* 応答電文å¾
    1641 ã¡ã®å‰²ã‚Šè¾¼ã¿ãƒ‡ãƒ¼ã‚¿å–å¾— */
     1621                /* 応答電文待ちの割り込みデータ取得 */
    16421622                ret = ecn_get_brk_dat(mrb, (T_EDATA *)p_msg, brkdat, sizeof(brkdat), &len);
    16431623                if (ret != E_OK) {
     
    16461626                }
    16471627
    1648                 /* 応答電文å¾
    1649 ã¡ã®å‰²ã‚Šè¾¼ã¿å‡¦ç† */
     1628                /* 応答電文待ちの割り込み処理 */
    16501629                main_break_wait(svc, brkdat, len);
    16511630
    1652                 /* 領域解放 */
     1631                /* 領域解放 */
    16531632                ret = ecn_rel_esv(mrb, (T_EDATA *)p_msg);
    16541633                if (ret != E_OK) {
     
    16881667}
    16891668
    1690 /* 通信レイヤーからのå
    1691 ¥åŠ› */
     1669/* 通信レイヤーからの入力 */
    16921670static mrb_value mrb_ecnl_svctask_recv_msg(mrb_state *mrb, mrb_value self)
    16931671{
     
    18791857        _module_ecnl = mrb_define_module(mrb, "ECNL");
    18801858
    1881         /* 未設定 */
     1859        /* 未設定 */
    18821860        mrb_define_const(mrb, _module_ecnl, "EPC_NONE", mrb_fixnum_value(EPC_NONE));
    1883         /* アクセスルール Set */
     1861        /* アクセスルール Set */
    18841862        mrb_define_const(mrb, _module_ecnl, "EPC_RULE_SET", mrb_fixnum_value(EPC_RULE_SET));
    1885         /* アクセスルール Get */
     1863        /* アクセスルール Get */
    18861864        mrb_define_const(mrb, _module_ecnl, "EPC_RULE_GET", mrb_fixnum_value(EPC_RULE_GET));
    1887         /* アクセスルール Anno */
     1865        /* アクセスルール Anno */
    18881866        mrb_define_const(mrb, _module_ecnl, "EPC_RULE_ANNO", mrb_fixnum_value(EPC_RULE_ANNO));
    1889         /* 状æ
    1890 ‹å¤‰åŒ–時通知 */
     1867        /* 状態変化時通知 */
    18911868        mrb_define_const(mrb, _module_ecnl, "EPC_ANNOUNCE", mrb_fixnum_value(EPC_ANNOUNCE));
    1892         /* 可変長データ */
     1869        /* 可変長データ */
    18931870        mrb_define_const(mrb, _module_ecnl, "EPC_VARIABLE", mrb_fixnum_value(EPC_VARIABLE));
    18941871
    1895         /* プロパティ値書き込み要求(応答不要)               */
     1872        /* プロパティ値書き込み要求(応答不要)           */
    18961873        mrb_define_const(mrb, _module_ecnl, "ESV_SET_I", mrb_fixnum_value(ESV_SET_I));
    1897         /* プロパティ値書き込み要求(応答要)          */
     1874        /* プロパティ値書き込み要求(応答要)            */
    18981875        mrb_define_const(mrb, _module_ecnl, "ESV_SET_C", mrb_fixnum_value(ESV_SET_C));
    1899         /* プロパティ値読み出し要求                                 */
     1876        /* プロパティ値読み出し要求                                 */
    19001877        mrb_define_const(mrb, _module_ecnl, "ESV_GET", mrb_fixnum_value(ESV_GET));
    1901         /* プロパティ値通知要求                                               */
     1878        /* プロパティ値通知要求                                           */
    19021879        mrb_define_const(mrb, _module_ecnl, "ESV_INF_REQ", mrb_fixnum_value(ESV_INF_REQ));
    1903         /* プロパティ値書き込み・読み出し要求          */
     1880        /* プロパティ値書き込み・読み出し要求            */
    19041881        mrb_define_const(mrb, _module_ecnl, "ESV_SET_GET", mrb_fixnum_value(ESV_SET_GET));
    1905         /* プロパティ値書き込み応答                                 */
     1882        /* プロパティ値書き込み応答                                 */
    19061883        mrb_define_const(mrb, _module_ecnl, "ESV_SET_RES", mrb_fixnum_value(ESV_SET_RES));
    1907         /* プロパティ値読み出し応答                                 */
     1884        /* プロパティ値読み出し応答                                 */
    19081885        mrb_define_const(mrb, _module_ecnl, "ESV_GET_RES", mrb_fixnum_value(ESV_GET_RES));
    1909         /* プロパティ値通知                                                     */
     1886        /* プロパティ値通知                                                     */
    19101887        mrb_define_const(mrb, _module_ecnl, "ESV_INF", mrb_fixnum_value(ESV_INF));
    1911         /* プロパティ値通知(応答要)                              */
     1888        /* プロパティ値通知(応答要)                                */
    19121889        mrb_define_const(mrb, _module_ecnl, "ESV_INFC", mrb_fixnum_value(ESV_INFC));
    1913         /* プロパティ値通知応答                                               */
     1890        /* プロパティ値通知応答                                           */
    19141891        mrb_define_const(mrb, _module_ecnl, "ESV_INFC_RES", mrb_fixnum_value(ESV_INFC_RES));
    1915         /* プロパティ値書き込み・読み出し応答          */
     1892        /* プロパティ値書き込み・読み出し応答            */
    19161893        mrb_define_const(mrb, _module_ecnl, "ESV_SET_GET_RES", mrb_fixnum_value(ESV_SET_GET_RES));
    1917         /* プロパティ値書き込み要求不可応答                     */
     1894        /* プロパティ値書き込み要求不可応答                     */
    19181895        mrb_define_const(mrb, _module_ecnl, "ESV_SET_I_SNA", mrb_fixnum_value(ESV_SET_I_SNA));
    1919         /* プロパティ値書き込み要求不可応答                     */
     1896        /* プロパティ値書き込み要求不可応答                     */
    19201897        mrb_define_const(mrb, _module_ecnl, "ESV_SET_C_SNA", mrb_fixnum_value(ESV_SET_C_SNA));
    1921         /* プロパティ値読み出し不可応答                           */
     1898        /* プロパティ値読み出し不可応答                               */
    19221899        mrb_define_const(mrb, _module_ecnl, "ESV_GET_SNA", mrb_fixnum_value(ESV_GET_SNA));
    1923         /* プロパティ値通知不可応答                                 */
     1900        /* プロパティ値通知不可応答                                 */
    19241901        mrb_define_const(mrb, _module_ecnl, "ESV_INF_SNA", mrb_fixnum_value(ESV_INF_SNA));
    1925         /* プロパティ値書き込み・読み出し不可応答    */
     1902        /* プロパティ値書き込み・読み出し不可応答  */
    19261903        mrb_define_const(mrb, _module_ecnl, "ESV_SET_GET_SNA", mrb_fixnum_value(ESV_SET_GET_SNA));
    19271904
    1928         /* アドレスID登録なし */
     1905        /* アドレスID登録なし */
    19291906        mrb_define_const(mrb, _module_ecnl, "ENOD_NOT_MATCH_ID", mrb_fixnum_value(ENOD_NOT_MATCH_ID));
    1930         /* マルチキャストアドレスID */
     1907        /* マルチキャストアドレスID */
    19311908        mrb_define_const(mrb, _module_ecnl, "ENOD_MULTICAST_ID", mrb_fixnum_value(ENOD_MULTICAST_ID));
    1932         /* 自ノードアドレスID */
     1909        /* 自ノードアドレスID */
    19331910        mrb_define_const(mrb, _module_ecnl, "ENOD_LOCAL_ID", mrb_fixnum_value(ENOD_LOCAL_ID));
    1934         /* APIアドレスID */
     1911        /* APIアドレスID */
    19351912        mrb_define_const(mrb, _module_ecnl, "ENOD_API_ID", mrb_fixnum_value(ENOD_API_ID));
    1936         /* 他ノードID */
     1913        /* 他ノードID */
    19371914        mrb_define_const(mrb, _module_ecnl, "ENOD_REMOTE_ID", mrb_fixnum_value(ENOD_REMOTE_ID));
    19381915
     
    19411918        mrb_define_method(mrb, _class_object, "initialize", mrb_ecnl_eobject_initialize, MRB_ARGS_REQ(5));
    19421919
    1943         /* プロパティ値書き込み */
     1920        /* プロパティ値書き込み */
    19441921        mrb_define_method(mrb, _class_object, "data_prop_set", mrb_ecnl_eobject_data_prop_set, MRB_ARGS_REQ(4));
    19451922
    1946         /* プロパティ値読み出し */
     1923        /* プロパティ値読み出し */
    19471924        mrb_define_method(mrb, _class_object, "data_prop_get", mrb_ecnl_eobject_data_prop_get, MRB_ARGS_REQ(3));
    19481925
     
    19511928        mrb_define_method(mrb, _class_node, "initialize", mrb_ecnl_enode_initialize, MRB_ARGS_REQ(2));
    19521929
    1953         /* プロパティ値書き込み */
     1930        /* プロパティ値書き込み */
    19541931        mrb_define_method(mrb, _class_node, "data_prop_set", mrb_ecnl_eobject_data_prop_set, MRB_ARGS_REQ(4));
    19551932
    1956         /* プロパティ値読み出し */
     1933        /* プロパティ値読み出し */
    19571934        mrb_define_method(mrb, _class_node, "data_prop_get", mrb_ecnl_eobject_data_prop_get, MRB_ARGS_REQ(3));
    19581935
     
    19611938        mrb_define_method(mrb, _class_property, "initialize", mrb_ecnl_eproperty_initialize, MRB_ARGS_REQ(6));
    19621939
    1963         /* ECHONET Lite プロパティコード */
     1940        /* ECHONET Lite プロパティコード */
    19641941        mrb_define_method(mrb, _class_property, "pcd", mrb_ecnl_eproperty_get_pcd, MRB_ARGS_NONE());
    1965         /* ECHONET Lite プロパティ属性 */
     1942        /* ECHONET Lite プロパティ属性 */
    19661943        mrb_define_method(mrb, _class_property, "atr", mrb_ecnl_eproperty_get_atr, MRB_ARGS_NONE());
    1967         /* ECHONET Lite プロパティのサイズ */
     1944        /* ECHONET Lite プロパティのサイズ */
    19681945        mrb_define_method(mrb, _class_property, "sz", mrb_ecnl_eproperty_get_sz, MRB_ARGS_NONE());
    1969         /* ECHONET Lite プロパティの拡張æƒ
    1970 å ± */
     1946        /* ECHONET Lite プロパティの拡張情報 */
    19711947        mrb_define_method(mrb, _class_property, "exinf", mrb_ecnl_eproperty_get_exinf, MRB_ARGS_NONE());
    19721948        mrb_define_method(mrb, _class_property, "set_exinf", mrb_ecnl_eproperty_set_exinf, MRB_ARGS_REQ(1));
    1973         /* ECHONET Lite プロパティの設定関数 */
     1949        /* ECHONET Lite プロパティの設定関数 */
    19741950        mrb_define_method(mrb, _class_property, "setcb", mrb_ecnl_eproperty_get_setcb, MRB_ARGS_NONE());
    1975         /* ECHONET Lite プロパティの取得関数 */
     1951        /* ECHONET Lite プロパティの取得関数 */
    19761952        mrb_define_method(mrb, _class_property, "getcb", mrb_ecnl_eproperty_get_getcb, MRB_ARGS_NONE());
    1977         /* ECHONET Lite プロパティの通知有無 */
     1953        /* ECHONET Lite プロパティの通知有無 */
    19781954        mrb_define_method(mrb, _class_property, "anno", mrb_ecnl_eproperty_get_anno, MRB_ARGS_NONE());
    19791955        mrb_define_method(mrb, _class_property, "set_anno", mrb_ecnl_eproperty_set_anno, MRB_ARGS_REQ(1));
     
    19831959        mrb_define_method(mrb, _class_data, "initialize", mrb_ecnl_edata_initialize, MRB_ARGS_NONE());
    19841960
    1985         /* プロパティ値書き込み・読み出し要求電文折り返し指定 */
     1961        /* プロパティ値書き込み・読み出し要求電文折り返し指定 */
    19861962        mrb_define_method(mrb, _class_data, "trn_set_get", mrb_ecnl_trn_set_get, MRB_ARGS_NONE());
    19871963
    1988         /* 要求電文へのプロパティ指定追加 */
     1964        /* 要求電文へのプロパティ指定追加 */
    19891965        mrb_define_method(mrb, _class_data, "add_epc", mrb_ecnl_add_epc, MRB_ARGS_REQ(1));
    19901966
    1991         /* 要求電文へのプロパティデータ追加 */
     1967        /* 要求電文へのプロパティデータ追加 */
    19921968        mrb_define_method(mrb, _class_data, "add_edt", mrb_ecnl_add_edt, MRB_ARGS_REQ(2));
    19931969
    1994         /* 応答電文サービスコード取得 */
     1970        /* 応答電文サービスコード取得 */
    19951971        mrb_define_method(mrb, _class_data, "esv", mrb_ecnl_get_esv, MRB_ARGS_NONE());
    19961972
    1997         /* 応答電文解析イテレーター初期化 */
     1973        /* 応答電文解析イテレーター初期化 */
    19981974        mrb_define_method(mrb, _class_data, "itr_ini", mrb_ecnl_itr_ini, MRB_ARGS_NONE());
    19991975
     
    20021978        mrb_define_method(mrb, _class_iterator, "initialize", mrb_ecnl_eiterator_initialize, MRB_ARGS_NONE());
    20031979
    2004         /* 応答電文解析イテレーターインクリメント */
     1980        /* 応答電文解析イテレーターインクリメント */
    20051981        mrb_define_method(mrb, _class_iterator, "itr_nxt", mrb_ecnl_itr_nxt, MRB_ARGS_NONE());
    20061982
     
    20141990        mrb_define_method(mrb, _class_svctask, "initialize", mrb_ecnl_svctask_initialize, MRB_ARGS_NONE());
    20151991
    2016         /* プロパティ値書き込み要求(応答不要)電文作成 */
     1992        /* プロパティ値書き込み要求(応答不要)電文作成 */
    20171993        mrb_define_method(mrb, _class_svctask, "esv_set_i", mrb_ecnl_esv_set_i, MRB_ARGS_REQ(3));
    20181994
    2019         /* プロパティ値書き込み要求(応答要)電文作成 */
     1995        /* プロパティ値書き込み要求(応答要)電文作成 */
    20201996        mrb_define_method(mrb, _class_svctask, "esv_set_c", mrb_ecnl_esv_set_c, MRB_ARGS_REQ(3));
    20211997
    2022         /* プロパティ値読み出し要求電文作成 */
     1998        /* プロパティ値読み出し要求電文作成 */
    20231999        mrb_define_method(mrb, _class_svctask, "esv_get", mrb_ecnl_esv_get, MRB_ARGS_REQ(2));
    20242000
    2025         /* プロパティ値通知要求電文作成 */
     2001        /* プロパティ値通知要求電文作成 */
    20262002        mrb_define_method(mrb, _class_svctask, "esv_inf_req", mrb_ecnl_esv_inf_req, MRB_ARGS_REQ(2));
    20272003
    2028         /* プロパティ値書き込み・読み出し要求電文作成 */
     2004        /* プロパティ値書き込み・読み出し要求電文作成 */
    20292005        mrb_define_method(mrb, _class_svctask, "esv_set_get", mrb_ecnl_esv_set_get, MRB_ARGS_REQ(3));
    20302006
    2031         /* プロパティ値通知(応答要)電文作成 */
     2007        /* プロパティ値通知(応答要)電文作成 */
    20322008        mrb_define_method(mrb, _class_svctask, "esv_infc", mrb_ecnl_esv_infc, MRB_ARGS_REQ(3));
    20332009
    2034         /* 要求電文の送信 */
     2010        /* 要求電文の送信 */
    20352011        mrb_define_method(mrb, _class_svctask, "snd_esv", mrb_ecnl_snd_esv, MRB_ARGS_REQ(1));
    20362012
    2037         /* 電文の破棄 */
     2013        /* 電文の破棄 */
    20382014        mrb_define_method(mrb, _class_svctask, "rel_esv", mrb_ecnl_rel_esv, MRB_ARGS_REQ(1));
    20392015
    2040         /* インスタンスリスト通知の送信 */
     2016        /* インスタンスリスト通知の送信 */
    20412017        mrb_define_method(mrb, _class_svctask, "ntf_inl", mrb_ecnl_svctask_ntf_inl, MRB_ARGS_NONE());
    20422018
    2043         /* メッセージ処理ループ */
     2019        /* メッセージ処理ループ */
    20442020        mrb_define_method(mrb, _class_svctask, "set_timer", mrb_ecnl_svctask_set_timer, MRB_ARGS_REQ(1));
    20452021        mrb_define_method(mrb, _class_svctask, "timer", mrb_ecnl_svctask_get_timer, MRB_ARGS_NONE());
     
    20482024        mrb_define_method(mrb, _class_svctask, "call_timeout", mrb_ecnl_svctask_call_timeout, MRB_ARGS_NONE());
    20492025
    2050         /* リモートECHONETノードの適合確認 */
     2026        /* リモートECHONETノードの適合確認 */
    20512027        mrb_define_method(mrb, _class_svctask, "is_match", mrb_ecnl_svctask_is_match, MRB_ARGS_REQ(3));
    20522028}
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/mrb_ecnl.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    44 *  Copyright (C) 2016 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
     6 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     7 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     8 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     9 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     10 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     11 *      スコード中に含まれていること.
     12 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     13 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     14 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     15 *      の無保証規定を掲載すること.
     16 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     17 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     18 *      と.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     20 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     22 *        報告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     24 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     25 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     26 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     27 *      免責すること.
    4228 *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    4934 *
    5035 */
Note: See TracChangeset for help on using the changeset viewer.