Ignore:
Timestamp:
Jun 10, 2015, 8:40:31 PM (9 years ago)
Author:
coas-nagasima
Message:

SHIFT_JISのコードにcharsetプロパティを付けた

Location:
uKadecot/trunk/ecnl_ssp
Files:
21 edited

Legend:

Unmodified
Added
Removed
  • uKadecot/trunk/ecnl_ssp/echonet.c

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
     
    5147
    5248/*
    53  * ECHONET LiteƒT[ƒrƒXˆ—ŠJŽn
     49 * ECHONET Liteサービス処理開始
    5450 */
    5551ER ecn_sta_svc()
     
    5955
    6056/*
    61  * ECHONETƒIƒuƒWƒFƒNƒgŽQÆ
    62  * ˆø”
    63  * ID           fa_eobjid       ECHONETƒIƒuƒWƒFƒNƒgID
    64  * T_REOBJ      *fp_eobj        ECHONETƒIƒuƒWƒFƒNƒg‚̐ݒè“à—eƒRƒs[æ
     57 * ECHONETオブジェクト参照
     58 * 引数
     59 * ID           fa_eobjid       ECHONETオブジェクトID
     60 * T_REOBJ      *fp_eobj        ECHONETオブジェクトの設定内容コピー先
    6561 *
    66  * eobjid‚ÅŽw’肵‚½ECHONETƒIƒuƒWƒFƒNƒg‚̐ݒè“à—e‚ðŽQÆ‚·‚éB
    67  * ŽQÆ‚µ‚½Ý’è“à—e‚Ípk_eobj‚ÉŽw’肵‚½ƒƒ‚ƒŠ‚É•Ô‚³‚ê‚éB
     62 * eobjidで指定したECHONETオブジェクトの設定内容を参照する。
     63 * 参照した設定内容はpk_eobjに指定したメモリに返される。
    6864 */
    6965ER ecn_ref_eobj(ID fa_eobjid, T_REOBJ *fp_eobj)
     
    7268
    7369        if (!fp_eobj)
    74                 return E_PAR;   /* ƒpƒ‰ƒ[ƒ^ƒGƒ‰[ */
     70                return E_PAR;   /* パラメータエラー */
    7571
    7672        if ((fa_eobjid <= 0) || (fa_eobjid > tmax_eobjid))
    77                 return E_OBJ;   /* ƒIƒuƒWƒFƒNƒg–¢“o˜^ */
     73                return E_OBJ;   /* オブジェクト未登録 */
    7874
    7975        p_obj = &eobjinib_table[fa_eobjid - 1];
     
    8581
    8682/*
    87  * ECHONETƒvƒƒpƒeƒBŽQÆ
    88  * ˆø”
    89  * ID                   fa_eobjid       ECHONETƒIƒuƒWƒFƒNƒgID
    90  * uint8_t              fa_epc          ƒvƒƒpƒeƒBƒR[ƒh
    91  * T_RPRP               *fp_eprp        ECHONETƒIƒuƒWƒFƒNƒg‚̃vƒƒpƒeƒBÝ’è“à—eƒRƒs[æ
     83 * ECHONETプロパティ参照
     84 * 引数
     85 * ID                   fa_eobjid       ECHONETオブジェクトID
     86 * uint8_t              fa_epc          プロパティコード
     87 * T_RPRP               *fp_eprp        ECHONETオブジェクトのプロパティ設定内容コピー先
    9288 *
    93  * eobjid‚ÅŽw’肵‚½ECHONETƒIƒuƒWƒFƒNƒg‚́Aepc‚ÅŽw’肵‚½ƒvƒƒpƒeƒB‚̐ݒè“à—e‚ðŽQÆ‚·‚éB
    94  * ŽQÆ‚µ‚½Ý’è“à—e‚Ípk_eprp‚ÉŽw’肵‚½ƒƒ‚ƒŠ‚É•Ô‚³‚ê‚éB
     89 * eobjidで指定したECHONETオブジェクトの、epcで指定したプロパティの設定内容を参照する。
     90 * 参照した設定内容はpk_eprpに指定したメモリに返される。
    9591 */
    9692ER ecn_ref_eprp(ID fa_eobjid, uint8_t fa_epc, T_RPRP *fp_eprp)
     
    10197
    10298        if (!fp_eprp)
    103                 return E_PAR;   /* ƒpƒ‰ƒ[ƒ^ƒGƒ‰[ */
     99                return E_PAR;   /* パラメータエラー */
    104100
    105101        if ((fa_eobjid <= 0) || (fa_eobjid > tmax_eobjid))
    106                 return E_OBJ;   /* ƒIƒuƒWƒFƒNƒg–¢“o˜^ */
     102                return E_OBJ;   /* オブジェクト未登録 */
    107103
    108104        p_obj = &eobjinib_table[fa_eobjid - 1];
    109105
    110         /* eoj‚ÌŽ‚ƒvƒƒpƒeƒB‰Šú‰»’è‹`”z—ñ‚©‚猟õ */
     106        /* eojの持つプロパティ初期化定義配列から検索 */
    111107        p = p_obj->eprp;
    112108        for (i = 0; i < p_obj->eprpcnt; i++, p++) {
     
    117113        }
    118114
    119         return E_PAR;   /* ƒpƒ‰ƒ[ƒ^ƒGƒ‰[ */
    120 }
    121 
    122 /*
    123  * ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š•s—vj“d•¶ì¬
    124  * ˆø”
    125  * T_EDATA                      **ppk_esv       Žæ“¾‚µ‚½“d•¶‚ÌŠi”[æ
    126  * ID                           fa_deoj         ˆ¶æ‚ÌECHONETƒIƒuƒWƒFƒNƒgID
    127  * uint8_t                      fa_epc          ƒvƒƒpƒeƒBƒR[ƒh
    128  * uint8_t                      fa_pdc          ƒvƒƒpƒeƒB’lƒf[ƒ^ƒTƒCƒY
    129  * const void           *p_edt          ƒvƒƒpƒeƒB’lƒf[ƒ^
     115        return E_PAR;   /* パラメータエラー */
     116}
     117
     118/*
     119 * プロパティ値書き込み要求(応答不要)電文作成
     120 * 引数
     121 * T_EDATA                      **ppk_esv       取得した電文の格納先
     122 * ID                           fa_deoj         宛先のECHONETオブジェクトID
     123 * uint8_t                      fa_epc          プロパティコード
     124 * uint8_t                      fa_pdc          プロパティ値データサイズ
     125 * const void           *p_edt          プロパティ値データ
    130126 *
    131  *      ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š•s—vj“d•¶‚ðì¬‚·‚éB
    132  *      “d•¶‚Ídeoj‚ÅŽw’肵‚½ECHONETƒIƒuƒWƒFƒNƒg‚ðˆ¶æ‚Æ‚µA
    133  *      “d•¶‚̏‰‚߂̃vƒƒpƒeƒB’l‚Æ‚µ‚āAepc‚ÆpdcAp_edt‚ÅŽw’肳‚ꂽ
    134  *      ƒvƒƒpƒeƒBƒR[ƒhAƒf[ƒ^ƒTƒCƒYAƒf[ƒ^‚ð“d•¶‚ɐݒ肷‚éB
    135  *      ì¬‚µ‚½“d•¶‚̐擪ƒAƒhƒŒƒX‚̓|ƒCƒ“ƒ^Œo—R‚Å•Ô‚³‚ê‚éB
     127 *      プロパティ値書き込み要求(応答不要)電文を作成する。
     128 *      電文はdeojで指定したECHONETオブジェクトを宛先とし、
     129 *      電文の初めのプロパティ値として、epcとpdc、p_edtで指定された
     130 *      プロパティコード、データサイズ、データを電文に設定する。
     131 *      作成した電文の先頭アドレスはポインタ経由で返される。
    136132 */
    137133ER ecn_esv_seti(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc,
     
    142138
    143139/*
    144  * ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š—vj“d•¶ì¬
    145  * ˆø”
    146  * T_EDATA                      **ppk_esv       Žæ“¾‚µ‚½“d•¶‚ÌŠi”[æ
    147  * ID                           fa_deoj         ˆ¶æ‚ÌECHONETƒIƒuƒWƒFƒNƒgID
    148  * uint8_t                      fa_epc          ƒvƒƒpƒeƒBƒR[ƒh
    149  * uint8_t                      fa_pdc          ƒvƒƒpƒeƒB’lƒf[ƒ^ƒTƒCƒY
    150  * const void           *p_edt          ƒvƒƒpƒeƒB’lƒf[ƒ^
     140 * プロパティ値書き込み要求(応答要)電文作成
     141 * 引数
     142 * T_EDATA                      **ppk_esv       取得した電文の格納先
     143 * ID                           fa_deoj         宛先のECHONETオブジェクトID
     144 * uint8_t                      fa_epc          プロパティコード
     145 * uint8_t                      fa_pdc          プロパティ値データサイズ
     146 * const void           *p_edt          プロパティ値データ
    151147 *
    152  *      ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š—vj“d•¶‚ðì¬‚·‚éB
    153  *      “d•¶‚Ídeoj‚ÅŽw’肵‚½ECHONETƒIƒuƒWƒFƒNƒg‚ðˆ¶æ‚Æ‚µA
    154  *      “d•¶‚̏‰‚߂̃vƒƒpƒeƒB’l‚Æ‚µ‚āAepc‚ÆpdcAp_edt‚ÅŽw’肳‚ꂽ
    155  *      ƒvƒƒpƒeƒBƒR[ƒhAƒf[ƒ^ƒTƒCƒYAƒf[ƒ^‚ð“d•¶‚ɐݒ肷‚éB
    156  *      ì¬‚µ‚½“d•¶‚̐擪ƒAƒhƒŒƒX‚̓|ƒCƒ“ƒ^Œo—R‚Å•Ô‚³‚ê‚éB
     148 *      プロパティ値書き込み要求(応答要)電文を作成する。
     149 *      電文はdeojで指定したECHONETオブジェクトを宛先とし、
     150 *      電文の初めのプロパティ値として、epcとpdc、p_edtで指定された
     151 *      プロパティコード、データサイズ、データを電文に設定する。
     152 *      作成した電文の先頭アドレスはポインタ経由で返される。
    157153 */
    158154ER ecn_esv_setc(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc,
     
    163159
    164160/*
    165  * ƒvƒƒpƒeƒB’l“ǂݏo‚µ—v‹“d•¶ì¬
    166  * ˆø”
    167  * T_EDATA                      **ppk_esv       Žæ“¾‚µ‚½“d•¶‚ÌŠi”[æ
    168  * ID                           fa_deoj         ˆ¶æ‚ÌECHONETƒIƒuƒWƒFƒNƒgID
    169  * uint8_t                      fa_epc          ƒvƒƒpƒeƒBƒR[ƒh
     161 * プロパティ値読み出し要求電文作成
     162 * 引数
     163 * T_EDATA                      **ppk_esv       取得した電文の格納先
     164 * ID                           fa_deoj         宛先のECHONETオブジェクトID
     165 * uint8_t                      fa_epc          プロパティコード
    170166 *
    171  * ƒvƒƒpƒeƒB’l“ǂݏo‚µ—v‹“d•¶‚ðì¬‚·‚éB
    172  * “d•¶‚Ídeoj‚ÅŽw’肵‚½ECHONETƒIƒuƒWƒFƒNƒg‚ðˆ¶æ‚Æ‚µA
    173  * “d•¶‚̏‰‚߂̃vƒƒpƒeƒB’l‚Æ‚µ‚āAepc‚ÅŽw’肳‚ꂽ
    174  * ƒvƒƒpƒeƒBƒR[ƒh‚ð“d•¶‚ɐݒ肷‚éB
    175  * ì¬‚µ‚½“d•¶‚̐擪ƒAƒhƒŒƒX‚̓|ƒCƒ“ƒ^Œo—R‚Å•Ô‚³‚ê‚éB
     167 * プロパティ値読み出し要求電文を作成する。
     168 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、
     169 * 電文の初めのプロパティ値として、epcで指定された
     170 * プロパティコードを電文に設定する。
     171 * 作成した電文の先頭アドレスはポインタ経由で返される。
    176172 */
    177173ER ecn_esv_get(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc)
     
    181177
    182178/*
    183  * ƒvƒƒpƒeƒB’l’Ê’m—v‹“d•¶ì¬
    184  * ˆø”
    185  * T_EDATA                      **ppk_esv       Žæ“¾‚µ‚½“d•¶‚ÌŠi”[æ
    186  * ID                           fa_deoj         ˆ¶æ‚ÌECHONETƒIƒuƒWƒFƒNƒgID
    187  * uint8_t                      fa_epc          ƒvƒƒpƒeƒBƒR[ƒh
     179 * プロパティ値通知要求電文作成
     180 * 引数
     181 * T_EDATA                      **ppk_esv       取得した電文の格納先
     182 * ID                           fa_deoj         宛先のECHONETオブジェクトID
     183 * uint8_t                      fa_epc          プロパティコード
    188184 *
    189  * ƒvƒƒpƒeƒB’l’Ê’m—v‹“d•¶‚ðì¬‚·‚éB
    190  * “d•¶‚Ídeoj‚ÅŽw’肵‚½ECHONETƒIƒuƒWƒFƒNƒg‚ðˆ¶æ‚Æ‚µA
    191  * “d•¶‚̏‰‚߂̃vƒƒpƒeƒB’l‚Æ‚µ‚āAepc‚ÅŽw’肳‚ꂽ
    192  * ƒvƒƒpƒeƒBƒR[ƒh‚ð“d•¶‚ɐݒ肷‚éB
    193  * ì¬‚µ‚½“d•¶‚̐擪ƒAƒhƒŒƒX‚̓|ƒCƒ“ƒ^Œo—R‚Å•Ô‚³‚ê‚éB
     185 * プロパティ値通知要求電文を作成する。
     186 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、
     187 * 電文の初めのプロパティ値として、epcで指定された
     188 * プロパティコードを電文に設定する。
     189 * 作成した電文の先頭アドレスはポインタ経由で返される。
    194190 */
    195191ER ecn_esv_inf_req(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc)
     
    199195
    200196/*
    201  * ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ—v‹“d•¶ì¬
    202  * ˆø”
    203  * T_EDATA                      **ppk_esv       Žæ“¾‚µ‚½“d•¶‚ÌŠi”[æ
    204  * ID                           fa_deoj         ˆ¶æ‚ÌECHONETƒIƒuƒWƒFƒNƒgID
    205  * uint8_t                      fa_epc          ƒvƒƒpƒeƒBƒR[ƒh
    206  * uint8_t                      fa_pdc          ƒvƒƒpƒeƒB’lƒf[ƒ^ƒTƒCƒY
    207  * const void           *p_edt          ƒvƒƒpƒeƒB’lƒf[ƒ^
     197 * プロパティ値書き込み・読み出し要求電文作成
     198 * 引数
     199 * T_EDATA                      **ppk_esv       取得した電文の格納先
     200 * ID                           fa_deoj         宛先のECHONETオブジェクトID
     201 * uint8_t                      fa_epc          プロパティコード
     202 * uint8_t                      fa_pdc          プロパティ値データサイズ
     203 * const void           *p_edt          プロパティ値データ
    208204 *
    209  * ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ—v‹“d•¶‚ðì¬‚·‚éB
    210  * “d•¶‚Ídeoj‚ÅŽw’肵‚½ECHONETƒIƒuƒWƒFƒNƒg‚ðˆ¶æ‚Æ‚µA
    211  * “d•¶‚̏‰‚߂̃vƒƒpƒeƒB’l‚Æ‚µ‚āAepc‚ÆpdcAp_edt‚ÅŽw’肳‚ꂽ
    212  * ƒvƒƒpƒeƒBƒR[ƒhAƒf[ƒ^ƒTƒCƒYAƒf[ƒ^‚ð“d•¶‚ɐݒ肷‚éB
    213  * ì¬‚µ‚½“d•¶‚̐擪ƒAƒhƒŒƒX‚̓|ƒCƒ“ƒ^Œo—R‚Å•Ô‚³‚ê‚éB
     205 * プロパティ値書き込み・読み出し要求電文を作成する。
     206 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、
     207 * 電文の初めのプロパティ値として、epcとpdc、p_edtで指定された
     208 * プロパティコード、データサイズ、データを電文に設定する。
     209 * 作成した電文の先頭アドレスはポインタ経由で返される。
    214210 */
    215211ER ecn_esv_set_get(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc,
     
    220216
    221217/*
    222  * ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ—v‹“d•¶ì¬FÜ‚è•Ô‚µŽw’è
    223  * ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ—v‹“d•¶ì¬’†‚́A‘‚«ž‚݃vƒƒpƒeƒB”z—ñ‚ðI‚¦‚Ä
    224  * “ǂݏo‚µƒvƒƒpƒeƒB”z—ñ‚Ɉڂ鎞‚É—p‚¢‚éB
     218 * プロパティ値書き込み・読み出し要求電文作成:折り返し指定
     219 * プロパティ値書き込み・読み出し要求電文作成中の、書き込みプロパティ配列を終えて
     220 * 読み出しプロパティ配列に移る時に用いる。
    225221 */
    226222ER ecn_trn_set_get(T_EDATA *ppk_esv, int *p_trn_pos)
     
    233229                return E_PAR;
    234230
    235         /* ƒvƒƒpƒeƒB“ǂݍž‚ÝŒ”‘‚«ž‚ÝŽž‚̃wƒbƒhî•ñ‚ð‹L˜^ */
     231        /* プロパティ読み込み件数書き込み時のヘッド情報を記録 */
    236232        *p_trn_pos = _ecn_fbs_get_datalen(*(ECN_FBS_ID *)&ppk_esv);
    237233
    238         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁE‚±‚ÌŽž“_‚ł̉ž“š“d•¶’†ƒvƒƒpƒeƒBŒ”‚ð‹L˜^ */
     234        /* 応答電文用メモリにデータ追加・この時点での応答電文中プロパティ件数を記録 */
    239235        a_ret = _ecn_fbs_add_data_ex(*(ECN_FBS_ID *)&ppk_esv, &ppk_esv->hdr.edata.opc, 1);
    240236        if (a_ret) {
     
    243239        }
    244240
    245         /* ‰ž“š“d•¶’†ƒvƒƒpƒeƒBŒ”‚ð 0 ‚É–ß‚·i¡ŒãAI—¹Žw’è‚·‚é‚܂ł͓ǂݏo‚µƒvƒƒpƒeƒBŒ”‚É‚È‚éj */
     241        /* 応答電文中プロパティ件数を 0 に戻す(今後、終了指定するまでは読み出しプロパティ件数になる) */
    246242        ppk_esv->hdr.edata.opc = 0;
    247243
     
    250246
    251247/*
    252  * ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ—v‹“d•¶ì¬FI—¹Žw’è
    253  * ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ—v‹“d•¶ì¬’†‚́A“ǂݏo‚µƒvƒƒpƒeƒB”z—ñ‚ðI‚¦‚鎞‚É—p‚¢‚éB
     248 * プロパティ値書き込み・読み出し要求電文作成:終了指定
     249 * プロパティ値書き込み・読み出し要求電文作成中の、読み出しプロパティ配列を終える時に用いる。
    254250 */
    255251ER ecn_end_set_get(T_EDATA *ppk_esv, int fa_trn_pos)
     
    262258                return E_PAR;
    263259
    264         /* ‚±‚ÌŽž“_‚ł̉ž“š“d•¶’†ƒvƒƒpƒeƒBŒ”(“ǂݏo‚µƒvƒƒpƒeƒBŒ”)‚ð•ÛŽ */
     260        /* この時点での応答電文中プロパティ件数(読み出しプロパティ件数)を保持 */
    265261        a_rd_opc = ppk_esv->hdr.edata.opc;
    266262
    267         /* ‰ž“š“d•¶’†ƒvƒƒpƒeƒBŒ”(‘‚«ž‚݃vƒƒpƒeƒBŒ”)‚ð•Û‘¶ˆÊ’u‚©‚ç“Ç‚ÝŽæ‚è */
     263        /* 応答電文中プロパティ件数(書き込みプロパティ件数)を保存位置から読み取り */
    268264        a_wr_opc = _ecn_fbs_peek(*(ECN_FBS_ID *)&ppk_esv, fa_trn_pos);
    269265        if (a_wr_opc < 0) {
     
    272268        }
    273269
    274         /* ‰ž“š“d•¶’†ƒvƒƒpƒeƒBŒ”(‘‚«ž‚݃vƒƒpƒeƒBŒ”)‚𕜌³ */
     270        /* 応答電文中プロパティ件数(書き込みプロパティ件数)を復元 */
    275271        ppk_esv->hdr.edata.opc = (uint8_t)a_wr_opc;
    276272
    277         /* ‰ž“š“d•¶’†ƒvƒƒpƒeƒBŒ”(“ǂݏo‚µƒvƒƒpƒeƒBŒ”)‚ð•Û‘¶ˆÊ’u‚ɏ‘‚«ž‚Ý */
     273        /* 応答電文中プロパティ件数(読み出しプロパティ件数)を保存位置に書き込み */
    278274        a_ret = _ecn_fbs_poke(*(ECN_FBS_ID *)&ppk_esv, fa_trn_pos, a_rd_opc);
    279275        if (a_ret) {
     
    286282
    287283/*
    288  * ƒvƒƒpƒeƒB’l’Ê’mi‰ž“š—vj“d•¶ì¬
    289  * ˆø”
    290  * T_EDATA                      **ppk_esv       Žæ“¾‚µ‚½“d•¶‚ÌŠi”[æ
    291  * ID                           fa_deoj         ˆ¶æ‚ÌECHONETƒIƒuƒWƒFƒNƒgID
    292  * ID                           fa_seoj         ‘—MŒ³‚ÌECHONETƒIƒuƒWƒFƒNƒgID
    293  * uint8_t                      fa_sepc         ‘—MŒ³‚̃vƒƒpƒeƒBƒR[ƒh
     284 * プロパティ値通知(応答要)電文作成
     285 * 引数
     286 * T_EDATA                      **ppk_esv       取得した電文の格納先
     287 * ID                           fa_deoj         宛先のECHONETオブジェクトID
     288 * ID                           fa_seoj         送信元のECHONETオブジェクトID
     289 * uint8_t                      fa_sepc         送信元のプロパティコード
    294290 */
    295291ER ecn_esv_infc(T_EDATA **ppk_esv, ID fa_deoj, ID fa_seoj, uint8_t fa_sepc)
     
    299295
    300296/*
    301  * —v‹“d•¶‚ւ̃vƒƒpƒeƒBŽw’è’ljÁ (ƒvƒƒpƒeƒBƒf[ƒ^‚ª•t‚µ‚È‚¢ê‡‚É—p‚¢‚é)
     297 * 要求電文へのプロパティ指定追加 (プロパティデータが付随しない場合に用いる)
    302298 */
    303299ER ecn_add_epc(T_EDATA *pk_esv, uint8_t epc)
     
    307303
    308304/*
    309  * —v‹“d•¶‚ւ̃vƒƒpƒeƒBƒf[ƒ^’ljÁ (ƒvƒƒpƒeƒB‚¨‚æ‚Ñ•tƒf[ƒ^‚ð’ljÁ‚·‚é)
     305 * 要求電文へのプロパティデータ追加 (プロパティおよび付随データを追加する)
    310306 */
    311307ER ecn_add_edt(T_EDATA *pk_esv, uint8_t fa_epc, uint8_t fa_pdc, const void *p_edt)
     
    316312
    317313        if (!pk_esv)
    318                 return E_PAR; /* Žæ“¾‚µ‚½FBS_ID‚ÌŠi”[æ‚ªNULL */
     314                return E_PAR; /* 取得したFBS_IDの格納先がNULL */
    319315        if (ECHONET_MEMPOOL_BLOCK_SIZE <= fa_pdc)
    320                 return E_PAR; /* ƒvƒƒpƒeƒB’lƒTƒCƒY‚ª‘å‚«‚·‚¬‚é */
     316                return E_PAR; /* プロパティ値サイズが大きすぎる */
    321317        if (!p_edt && 0 < fa_pdc)
    322                 return E_PAR; /* ƒvƒƒpƒeƒB’lƒTƒCƒY‚ª1ˆÈã‚Ȃ̂Ƀf[ƒ^ƒ|ƒCƒ“ƒ^‚ªNULL */
     318                return E_PAR; /* プロパティ値サイズが1以上なのにデータポインタがNULL */
    323319
    324320        a_fbs_id.ptr = (T_ECN_FST_BLK *)pk_esv;
    325321        if (((T_EDATA *)a_fbs_id.ptr)->hdr.edata.opc == 0xFF)
    326                 return E_PAR; /* ƒvƒƒpƒeƒB‚ª‘½‚·‚¬‚é */
    327 
    328         /* —v‹“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ */
     322                return E_PAR; /* プロパティが多すぎる */
     323
     324        /* 要求電文用メモリにデータ追加 */
    329325        memset(&a_ecn_prp, 0, sizeof(a_ecn_prp));
    330326        a_ecn_prp.epc = fa_epc;
     
    338334        }
    339335        if (0 < fa_pdc) {
    340                 /* •tƒf[ƒ^’ljÁ */
     336                /* 付随データ追加 */
    341337                a_ret = _ecn_fbs_add_data_ex(a_fbs_id, p_edt, fa_pdc);
    342338                if (a_ret) {
     
    347343                }
    348344        }
    349         /* ƒvƒƒpƒeƒB”ƒCƒ“ƒNƒŠƒƒ“ƒg */
     345        /* プロパティ数インクリメント */
    350346        ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.opc++;
    351347
     
    355351
    356352/*
    357  * —v‹“d•¶‚Ì‘—M
    358  * esv‚ÅŽw’肳‚ꂽ—v‹“d•¶‚𑗐M‚·‚éB
    359  * “d•¶‚ÉŽw’肳‚ꂽˆ¶æ‚©‚çIPƒAƒhƒŒƒX‚ð“Á’肵AUDPƒpƒPƒbƒg‚Æ‚µ‚Ä‘—M‚·‚éB
     353 * 要求電文の送信
     354 * esvで指定された要求電文を送信する。
     355 * 電文に指定された宛先からIPアドレスを特定し、UDPパケットとして送信する。
    360356 */
    361357ER ecn_snd_esv(T_EDATA *pk_esv)
     
    367363
    368364/*
    369  * ‰ž“š“d•¶‚ÌŽóMƒ|[ƒŠƒ“ƒO
    370  * ‰ž“š“d•¶‚ðŽóM‚·‚é‚Ì‚ð‘҂B
    371  * ŽóM‚µ‚½‰ž“š“d•¶‚Íppk_esv‚ÅŽw’肵‚½ƒ|ƒCƒ“ƒ^[‚ɐ擪ƒAƒhƒŒƒX‚ª•Ô‚³‚ê‚éB
    372  * ‰ž“š“d•¶‚ÌŽóM‚Ì—L–³‚É‚©‚©‚í‚炸A‘Ò‚½‚¸‚Ɋ֐”‚𔲂¯‚éB
     365 * 応答電文の受信ポーリング
     366 * 応答電文を受信するのを待つ。
     367 * 受信した応答電文はppk_esvで指定したポインターに先頭アドレスが返される。
     368 * 応答電文の受信の有無にかかわらず、待たずに関数を抜ける。
    373369 */
    374370ER ecn_prcv_esv(T_EDATA **ppk_esv)
     
    391387
    392388/*
    393  * ‰ž“š“d•¶‚Ì”jŠü
     389 * 応答電文の破棄
    394390 */
    395391ER ecn_rel_esv(T_EDATA *pk_esv)
     
    404400
    405401/*
    406  * ‰ž“š“d•¶‚Ì‘—MŒ³ƒm[ƒh‚ðŽæ“¾‚·‚é
     402 * 応答電文の送信元ノードを取得する
    407403 */
    408404ID ecn_get_enod(T_EDATA *pk_esv)
     
    428424
    429425/*
    430  * ‰ž“š“d•¶‚Ì‘—MŒ³‹@ŠíƒIƒuƒWƒFƒNƒg‚ðŽæ“¾‚·‚é
     426 * 応答電文の送信元機器オブジェクトを取得する
    431427 */
    432428ID ecn_get_eobj(T_EDATA *pk_esv)
     
    439435        p_snod = _ecn_eno_fnd(((T_ECN_FST_BLK *)pk_esv)->hdr.sender);
    440436        if (p_snod != NULL) {
    441                 /* ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹‚̏ꍇ */
     437                /* ノードプロファイルの場合 */
    442438                if ((p_esv->edata.seoj.eojx1 == EOJ_X1_PROFILE)
    443439                        && (p_esv->edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) {
    444440                        p_sobj = p_snod->profile;
    445441                }
    446                 /* ‹@ŠíƒIƒuƒWƒFƒNƒg‚̏ꍇ */
     442                /* 機器オブジェクトの場合 */
    447443                else {
    448444                        p_sobj = _ecn_eoj_fnd(p_snod, &p_esv->edata.seoj);
     
    460456
    461457/*
    462  * ‰ž“š“d•¶‰ðÍƒCƒeƒŒ[ƒ^[‰Šú‰»
     458 * 応答電文解析イテレーター初期化
    463459 */
    464460ER ecn_itr_ini(T_ENUM_EPC *pk_itr, T_EDATA *pk_esv)
     
    472468        pk_itr->pk_esv = pk_esv;
    473469        pk_itr->count = pk_esv->hdr.edata.opc;
    474                                                                 /* ¡‚̃uƒƒbƒN‚ł̃vƒƒpƒeƒB‘” */
    475         pk_itr->got_ct = 0;                     /* ¡‚̃uƒƒbƒN‚ŁA“Ç‚ÝŽæ‚Á‚½” */
    476         pk_itr->next_blk_ct = 0;        /* Œã‘±ƒuƒƒbƒN” */
    477         pk_itr->is_eof = 0;                     /* I’[‚É’B‚µ‚½ŽžA”ñ0 */
     470                                                                /* 今のブロックでのプロパティ総数 */
     471        pk_itr->got_ct = 0;                     /* 今のブロックで、読み取った数 */
     472        pk_itr->next_blk_ct = 0;        /* 後続ブロック数 */
     473        pk_itr->is_eof = 0;                     /* 終端に達した時、非0 */
    478474        pk_itr->cur = offsetof(T_ECN_EDT_HDR, ecn_prp);
    479475
    480476        switch (pk_esv->hdr.edata.esv) {
    481         case ESV_SET_GET:               /* 0x6E ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ—v‹              */
    482         case ESV_SET_GET_RES:   /* 0x7E ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ‰ž“š              */
    483         case ESV_SET_GET_SNA:   /* 0x5E ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ•s‰Â‰ž“š  */
     477        case ESV_SET_GET:               /* 0x6E プロパティ値書き込み・読み出し要求               */
     478        case ESV_SET_GET_RES:   /* 0x7E プロパティ値書き込み・読み出し応答               */
     479        case ESV_SET_GET_SNA:   /* 0x5E プロパティ値書き込み・読み出し不可応答     */
    484480                pk_itr->next_blk_ct ++;
    485481        default:
     
    491487
    492488/*
    493  * ‰ž“š“d•¶‰ðÍƒCƒeƒŒ[ƒ^[ƒCƒ“ƒNƒŠƒƒ“ƒg
     489 * 応答電文解析イテレーターインクリメント
    494490 */
    495491ER ecn_itr_nxt(T_ENUM_EPC *pk_itr, uint8_t *p_epc, uint8_t *p_pdc, void *p_edt)
     
    513509
    514510        if (pk_itr->is_eof)
    515                 return E_BOVR; /* ƒf[ƒ^I—¹ */
     511                return E_BOVR; /* データ終了 */
    516512        if (    pk_itr->count <= pk_itr->got_ct
    517513        &&      pk_itr->next_blk_ct < 1) {
    518                 pk_itr->is_eof = 1;                     /* I’[‚É’B‚µ‚½ŽžA”ñ0 */
    519                 return E_BOVR; /* ƒf[ƒ^I—¹ */
     514                pk_itr->is_eof = 1;                     /* 終端に達した時、非0 */
     515                return E_BOVR; /* データ終了 */
    520516        }
    521517
    522518        a_fbs_id.ptr = (T_ECN_FST_BLK *)pk_itr->pk_esv;
    523519
    524         /* Œ³‚̃J[ƒ\ƒ‹ˆÊ’u‚ð•Û‘¶‚µAƒCƒeƒŒ[ƒ^‚̃J[ƒ\ƒ‹ˆÊ’u‚É‚·‚é */
     520        /* 元のカーソル位置を保存し、イテレータのカーソル位置にする */
    525521        a_rd_bak = a_fbs_id.ptr->hdr.rd;
    526522        a_fbs_id.ptr->hdr.rd = pk_itr->cur;
     
    530526#endif
    531527        if (pk_itr->count <= pk_itr->got_ct && 0 < pk_itr->next_blk_ct) {
    532                 /* ŽŸƒuƒƒbƒN‚Ɉړ® */
     528                /* 次ブロックに移動 */
    533529                pk_itr->next_blk_ct --;
    534                 pk_itr->count = 0;              /* ¡‚̃uƒƒbƒN‚ł̃vƒƒpƒeƒB‘” */
    535                 pk_itr->got_ct = 0;             /* ¡‚̃uƒƒbƒN‚ŁA“Ç‚ÝŽæ‚Á‚½” */
    536 
    537                 /* ŽŸƒuƒƒbƒN‚̃vƒƒpƒeƒB”‚ð“Ç‚ÝŽæ‚é */
     530                pk_itr->count = 0;              /* 今のブロックでのプロパティ総数 */
     531                pk_itr->got_ct = 0;             /* 今のブロックで、読み取った数 */
     532
     533                /* 次ブロックのプロパティ数を読み取る */
    538534                a_rd_len = 0;
    539535                a_ret = _ecn_fbs_get_data(a_fbs_id, &a_ecn_prp.pdc, 1, &a_rd_len);
     
    541537                        goto lb_except;
    542538                if (0 < a_rd_len) {
    543                         pk_itr->count = a_ecn_prp.pdc;  /* ¡‚̃uƒƒbƒN‚ł̃vƒƒpƒeƒB‘” */
     539                        pk_itr->count = a_ecn_prp.pdc;  /* 今のブロックでのプロパティ総数 */
    544540                }
    545                 a_ret = E_BOVR; /* ƒf[ƒ^I—¹ */
     541                a_ret = E_BOVR; /* データ終了 */
    546542                goto lb_finally;
    547543        }
    548544
    549         /* ƒvƒƒpƒeƒBƒR[ƒh‚ƃf[ƒ^ƒTƒCƒY‚ð“Ç‚ÝŽæ‚é */
     545        /* プロパティコードとデータサイズを読み取る */
    550546        memset(&a_ecn_prp, 0, sizeof(a_ecn_prp));
    551547        a_rd_len = 0;
     
    556552                ECN_DBG_PUT "ecn_itr_nxt() ecn_prp read fault."
    557553                        " rd.cur=%d", pk_itr->cur ECN_DBG_END;
    558                 pk_itr->is_eof = 1;                     /* I’[‚É’B‚µ‚½ŽžA”ñ0 */
    559                 a_ret = E_BOVR; /* ƒf[ƒ^I—¹ */
     554                pk_itr->is_eof = 1;                     /* 終端に達した時、非0 */
     555                a_ret = E_BOVR; /* データ終了 */
    560556                goto lb_finally;
    561557        }
     
    564560
    565561        if (0 < a_ecn_prp.pdc) {
    566                 /* •tƒf[ƒ^‚ð“Ç‚ÝŽæ‚é */
     562                /* 付随データを読み取る */
    567563                a_rd_len = 0;
    568564                a_ret = _ecn_fbs_get_data(a_fbs_id, p_edt, a_ecn_prp.pdc, &a_rd_len);
     
    572568                        ECN_DBG_PUT "ecn_itr_nxt() edt read fault."
    573569                                " rd.cur=%d,epc=0x%02X,pdc=%u", pk_itr->cur, a_ecn_prp.epc , a_ecn_prp.pdc ECN_DBG_END;
    574                         pk_itr->is_eof = 1;                     /* I’[‚É’B‚µ‚½ŽžA”ñ0 */
    575                         a_ret = E_BOVR; /* ƒf[ƒ^I—¹ */
     570                        pk_itr->is_eof = 1;                     /* 終端に達した時、非0 */
     571                        a_ret = E_BOVR; /* データ終了 */
    576572                        goto lb_finally;
    577573                }
     
    584580
    585581lb_finally:
    586         /* ƒCƒeƒŒ[ƒ^‚̃J[ƒ\ƒ‹ˆÊ’u‚ðXV */
     582        /* イテレータのカーソル位置を更新 */
    587583        pk_itr->cur = a_fbs_id.ptr->hdr.rd;
    588584
    589585lb_except:
    590         /* Œ³‚̃J[ƒ\ƒ‹ˆÊ’u‚É–ß‚· */
     586        /* 元のカーソル位置に戻す */
    591587        a_fbs_id.ptr->hdr.rd = a_rd_bak;
    592588        return a_ret;
     
    594590
    595591/*
    596  * ‰ž“š“d•¶‘Ò‚¿‚ÌŠ„‚荞‚Ý‘—M
     592 * 応答電文待ちの割り込み送信
    597593 */
    598594ER ecn_brk_wai(const void *p_dat, int fa_datsz)
    599595{
    600596        ER                              a_ret;
    601         ECN_FBS_ID              a_fbs_id = { 0 };       /* —v‹“d•¶—pƒƒ‚ƒŠ     */
    602 
    603         /* ‰ž“š“d•¶‘Ò‚¿‚ÌŠ„‚荞‚Ý“d•¶ì¬ */
     597        ECN_FBS_ID              a_fbs_id = { 0 };       /* 要求電文用メモリ     */
     598
     599        /* 応答電文待ちの割り込み電文作成 */
    604600        a_ret = _ecn_mk_brk_wai(&a_fbs_id, p_dat, fa_datsz);
    605601        if (a_ret)
    606602                return a_ret;
    607603
    608         /* Š„‚荞‚Ý‘—M */
     604        /* 割り込み送信 */
    609605        a_ret = _ecn_tsk_snd_mbx(a_fbs_id, true);
    610606        if (a_ret) {
     
    614610        }
    615611
    616         /* ³íI—¹ */
     612        /* 正常終了 */
    617613        return a_ret;
    618614
    619615lb_except:
    620         /* ƒf[ƒ^ì¬Ž¸”s‚µ‚½‚ç—̈æ‰ð•ú */
     616        /* データ作成失敗したら領域解放 */
    621617        if (a_fbs_id.ptr)
    622618                _ecn_fbs_del(a_fbs_id);
     
    626622
    627623/*
    628  * Š„‚荞‚݃f[ƒ^‚̎擾
     624 * 割り込みデータの取得
    629625 */
    630626ER ecn_get_brk_dat(T_EDATA *pk_esv, void *p_buf, int fa_bufsz, int *p_datsz)
     
    646642        }
    647643
    648         /* “Ç‚ÝŽæ‚èˆÊ’u‚ðæ“ª‚É–ß‚· */
     644        /* 読み取り位置を先頭に戻す */
    649645        a_ret = _ecn_fbs_set_rpos(a_fbs, 0);
    650646        if (a_ret) {
     
    654650        }
    655651
    656         /* •tƒf[ƒ^‚ð“ǂݍž‚Þ */
     652        /* 付随データを読み込む */
    657653        if (p_buf && 0 < fa_bufsz) {
    658654                a_len = 0;
     
    671667#ifndef ECN_USER_DATA_PROP_SET
    672668/*
    673  * ƒf[ƒ^Ý’èŠÖ”
     669 * データ設定関数
    674670 */
    675671int ecn_data_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno)
     
    689685#ifndef ECN_USER_DATA_PROP_GET
    690686/*
    691  * ƒf[ƒ^Žæ“¾ŠÖ”
     687 * データ取得関数
    692688 */
    693689int ecn_data_prop_get(const EPRPINIB *item, void *dst, int size)
  • uKadecot/trunk/ecnl_ssp/echonet.h

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
     
    5753
    5854#define EOBJ_NULL 0x00
    59 #define EOBJ_LOCAL_NODE 0x01                    /* Ž©ƒm[ƒh */
    60 #define EOBJ_SYNC_REMOTE_NODE 0x02              /* ‘¼ƒm[ƒh */
    61 #define EOBJ_ASYNC_REMOTE_NODE 0x04             /* ‘¼ƒm[ƒhi”ñ“¯Šúj */
    62 #define EOBJ_DEVICE 0x08                                /* ‹@ŠíƒIƒuƒWƒFƒNƒg */
     55#define EOBJ_LOCAL_NODE 0x01                    /* 自ノード */
     56#define EOBJ_SYNC_REMOTE_NODE 0x02              /* 他ノード */
     57#define EOBJ_ASYNC_REMOTE_NODE 0x04             /* 他ノード(非同期) */
     58#define EOBJ_DEVICE 0x08                                /* 機器オブジェクト */
    6359
    6460#define EPC_NONE 0x00
    65 #define EPC_RULE_SET 0x01                               /* ƒAƒNƒZƒXƒ‹[ƒ‹ Set */
    66 #define EPC_RULE_GET 0x02                               /* ƒAƒNƒZƒXƒ‹[ƒ‹ Get */
    67 #define EPC_RULE_ANNO 0x04                              /* ƒAƒNƒZƒXƒ‹[ƒ‹ Anno */
    68 #define EPC_ANNOUNCE 0x40                               /* ó‘ԕω»Žž’Ê’m */
    69 #define EPC_VARIABLE 0x80                               /* ‰Â•Ï’·ƒf[ƒ^ */
     61#define EPC_RULE_SET 0x01                               /* アクセスルール Set */
     62#define EPC_RULE_GET 0x02                               /* アクセスルール Get */
     63#define EPC_RULE_ANNO 0x04                              /* アクセスルール Anno */
     64#define EPC_ANNOUNCE 0x40                               /* 状態変化時通知 */
     65#define EPC_VARIABLE 0x80                               /* 可変長データ */
    7066
    7167typedef enum _echonet_enod_id
    7268{
    7369        ENOD_NOT_MATCH_ID       = -1,
    74         ENOD_MULTICAST_ID       = 0,                    /* ƒ}ƒ‹ƒ`ƒLƒƒƒXƒgƒAƒhƒŒƒXID */
    75         ENOD_LOCAL_ID           = 1,                    /* Ž©ƒm[ƒhƒAƒhƒŒƒXID */
    76         ENOD_API_ID                     = 2,                    /* APIƒAƒhƒŒƒXID */
    77         ENOD_REMOTE_ID          = 3,                    /* ‘¼ƒm[ƒhƒAƒhƒŒƒXID */
     70        ENOD_MULTICAST_ID       = 0,                    /* マルチキャストアドレスID */
     71        ENOD_LOCAL_ID           = 1,                    /* 自ノードアドレスID */
     72        ENOD_API_ID                     = 2,                    /* APIアドレスID */
     73        ENOD_REMOTE_ID          = 3,                    /* 他ノードアドレスID */
    7874} ECN_ENOD_ID;
    7975
    80 /* ECHONET Lite‹KŠi */
     76/* ECHONET Lite規格 */
    8177typedef enum
    8278{
     
    8480} ECN_EHD1_ECL_VERSION;
    8581
    86 /* “d•¶Œ`Ž®1/2 */
     82/* 電文形式1/2 */
    8783typedef enum
    8884{
    89         ECN_EDH2_FORMAT_1 = 0x81,       /* “d•¶Œ`Ž®1 */
    90         ECN_EDH2_FORMAT_2 = 0x82        /* “d•¶Œ`Ž®2 */
     85        ECN_EDH2_FORMAT_1 = 0x81,       /* 電文形式1 */
     86        ECN_EDH2_FORMAT_2 = 0x82        /* 電文形式2 */
    9187} ECN_EHD2_FORMAT;
    9288
    93 /* ECHONET LiteƒT[ƒrƒXƒR[ƒh */
     89/* ECHONET Liteサービスコード */
    9490typedef enum _echonet_service_code
    9591{
    96         ESV_NOP                         =       0,              /* (‹@”\Žw’è‚È‚µ)                                                       */
    97         ESV_SET_I                       =       0x60,   /* ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š•s—vj         */
    98         ESV_SET_C                       =       0x61,   /* ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š—vj           */
    99         ESV_GET                         =       0x62,   /* ƒvƒƒpƒeƒB’l“ǂݏo‚µ—v‹                                     */
    100         ESV_INF_REQ                     =       0x63,   /* ƒvƒƒpƒeƒB’l’Ê’m—v‹                                         */
    101         ESV_SET_GET                     =       0x6E,   /* ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ—v‹           */
    102         ESV_SET_RES                     =       0x71,   /* ƒvƒƒpƒeƒB’l‘‚«ž‚݉ž“š                                     */
    103         ESV_GET_RES                     =       0x72,   /* ƒvƒƒpƒeƒB’l“ǂݏo‚µ‰ž“š                                     */
    104         ESV_INF                         =       0x73,   /* ƒvƒƒpƒeƒB’l’Ê’m                                                     */
    105         ESV_INFC                        =       0x74,   /* ƒvƒƒpƒeƒB’l’Ê’mi‰ž“š—vj                           */
    106         ESV_INFC_RES            =       0x7A,   /* ƒvƒƒpƒeƒB’l’Ê’m‰ž“š                                         */
    107         ESV_SET_GET_RES         =       0x7E,   /* ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ‰ž“š           */
    108         ESV_SET_I_SNA           =       0x50,   /* ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹•s‰Â‰ž“š                     */
    109         ESV_SET_C_SNA           =       0x51,   /* ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹•s‰Â‰ž“š                     */
    110         ESV_GET_SNA                     =       0x52,   /* ƒvƒƒpƒeƒB’l“ǂݏo‚µ•s‰Â‰ž“š                         */
    111         ESV_INF_SNA                     =       0x53,   /* ƒvƒƒpƒeƒB’l’Ê’m•s‰Â‰ž“š                                     */
    112         ESV_SET_GET_SNA         =       0x5E    /* ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ•s‰Â‰ž“š       */
     92        ESV_NOP                         =       0,              /* (機能指定なし)                                                     */
     93        ESV_SET_I                       =       0x60,   /* プロパティ値書き込み要求(応答不要)           */
     94        ESV_SET_C                       =       0x61,   /* プロパティ値書き込み要求(応答要)            */
     95        ESV_GET                         =       0x62,   /* プロパティ値読み出し要求                                 */
     96        ESV_INF_REQ                     =       0x63,   /* プロパティ値通知要求                                           */
     97        ESV_SET_GET                     =       0x6E,   /* プロパティ値書き込み・読み出し要求            */
     98        ESV_SET_RES                     =       0x71,   /* プロパティ値書き込み応答                                 */
     99        ESV_GET_RES                     =       0x72,   /* プロパティ値読み出し応答                                 */
     100        ESV_INF                         =       0x73,   /* プロパティ値通知                                                     */
     101        ESV_INFC                        =       0x74,   /* プロパティ値通知(応答要)                                */
     102        ESV_INFC_RES            =       0x7A,   /* プロパティ値通知応答                                           */
     103        ESV_SET_GET_RES         =       0x7E,   /* プロパティ値書き込み・読み出し応答            */
     104        ESV_SET_I_SNA           =       0x50,   /* プロパティ値書き込み要求不可応答                     */
     105        ESV_SET_C_SNA           =       0x51,   /* プロパティ値書き込み要求不可応答                     */
     106        ESV_GET_SNA                     =       0x52,   /* プロパティ値読み出し不可応答                               */
     107        ESV_INF_SNA                     =       0x53,   /* プロパティ値通知不可応答                                 */
     108        ESV_SET_GET_SNA         =       0x5E    /* プロパティ値書き込み・読み出し不可応答  */
    113109} ECN_SRV_CODE;
    114110
     
    122118
    123119/*
    124  *  ECHONET Lite“d•¶ƒwƒbƒ_[
     120 *  ECHONET Lite電文ヘッダー
    125121 */
    126122typedef struct
    127123{
    128         uint8_t ehd1;           /* ECHONET Lite“d•¶ƒwƒbƒ_[1 ECN_EHD1_ECL_VERSION */
    129         uint8_t ehd2;           /* ECHONET Lite“d•¶ƒwƒbƒ_[2 ECN_EHD2_FORMAT */
    130         uint16_t        tid;    /* ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ID */
     124        uint8_t ehd1;           /* ECHONET Lite電文ヘッダー1 ECN_EHD1_ECL_VERSION */
     125        uint8_t ehd2;           /* ECHONET Lite電文ヘッダー2 ECN_EHD2_FORMAT */
     126        uint16_t        tid;    /* トランザクションID */
    131127} T_ECN_HDR;
    132128
    133129/*
    134  *  ECHONET LiteƒIƒuƒWƒFƒNƒgƒR[ƒh
     130 *  ECHONET Liteオブジェクトコード
    135131 */
    136132typedef struct
    137133{
    138         uint8_t eojx1;          /* ƒNƒ‰ƒXƒOƒ‹[ƒvƒR[ƒh */
    139         uint8_t eojx2;          /* ƒNƒ‰ƒXƒR[ƒh */
    140         uint8_t eojx3;          /* ƒCƒ“ƒXƒ^ƒ“ƒXƒR[ƒh */
     134        uint8_t eojx1;          /* クラスグループコード */
     135        uint8_t eojx2;          /* クラスコード */
     136        uint8_t eojx3;          /* インスタンスコード */
    141137} T_ECN_EOJ;
    142138
    143139/*
    144  *  ECHONET Liteƒf[ƒ^ƒwƒbƒ_[
     140 *  ECHONET Liteデータヘッダー
    145141 */
    146142typedef struct
    147143{
    148         T_ECN_EOJ       seoj;   /* ‘—MŒ³ECHONET LiteƒIƒuƒWƒFƒNƒgŽw’è */
    149         T_ECN_EOJ       deoj;   /* ‘ŠŽèæECHONET LiteƒIƒuƒWƒFƒNƒgŽw’è */
    150         uint8_t esv;            /* ECHONET LiteƒT[ƒrƒX (ECN_SRV_CODE) */
    151         uint8_t opc;            /* ˆ—ƒvƒƒpƒeƒB” */
     144        T_ECN_EOJ       seoj;   /* 送信元ECHONET Liteオブジェクト指定 */
     145        T_ECN_EOJ       deoj;   /* 相手先ECHONET Liteオブジェクト指定 */
     146        uint8_t esv;            /* ECHONET Liteサービス (ECN_SRV_CODE) */
     147        uint8_t opc;            /* 処理プロパティ数 */
    152148} T_ECN_EDATA_BODY;
    153149
    154150/*
    155  *  ECHONET LiteƒvƒƒpƒeƒB
     151 *  ECHONET Liteプロパティ
    156152 */
    157153typedef struct
    158154{
    159         uint8_t epc;            /* ECHONET LiteƒvƒƒpƒeƒBƒR[ƒh */
    160         uint8_t pdc;            /* EDT‚̃oƒCƒg” */
    161         /*void  *p_edt;*/       /* ƒvƒƒpƒeƒB’lƒf[ƒ^ */
     155        uint8_t epc;            /* ECHONET Liteプロパティコード */
     156        uint8_t pdc;            /* EDTのバイト数 */
     157        /*void  *p_edt;*/       /* プロパティ値データ */
    162158} T_ECN_PRP;
    163159
    164160/*
    165  *  ECHONET Liteƒf[ƒ^
     161 *  ECHONET Liteデータ
    166162 */
    167163typedef struct
     
    173169
    174170/*
    175  *  ECHONET Lite “d•¶
     171 *  ECHONET Lite 電文
    176172 */
    177173typedef struct echonet_object_data
     
    191187
    192188/*
    193  *  ‰ž“š“d•¶‰ðÍƒCƒeƒŒ[ƒ^[
     189 *  応答電文解析イテレーター
    194190 */
    195191typedef struct echonet_epc_enumerator
    196192{
    197193        T_EDATA *pk_esv;
    198         uint8_t count;                  /* ¡“Ç‚ÝŽæ‚è’†‚̃uƒƒbƒN‚É‚ ‚éƒvƒƒpƒeƒB‘” */
    199         uint8_t got_ct;                 /* ¡“Ç‚ÝŽæ‚è’†‚̃uƒƒbƒN‚ŁA“Ç‚ÝŽæ‚Á‚½” */
    200         uint8_t next_blk_ct;    /* Œã‘±ƒuƒƒbƒN” */
    201         uint8_t is_eof;                 /* I’[‚É’B‚µ‚½ŽžA”ñ0 */
     194        uint8_t count;                  /* 今読み取り中のブロックにあるプロパティ総数 */
     195        uint8_t got_ct;                 /* 今読み取り中のブロックで、読み取った数 */
     196        uint8_t next_blk_ct;    /* 後続ブロック数 */
     197        uint8_t is_eof;                 /* 終端に達した時、非0 */
    202198        int cur;
    203199} T_ENUM_EPC;
     
    206202
    207203/*
    208  * ECHONET Lite ƒvƒƒpƒeƒB‚̐ݒèŠÖ”
     204 * ECHONET Lite プロパティの設定関数
    209205 */
    210206typedef int (EPRP_SETTER)(const EPRPINIB *item, const void *src, int size, bool_t *anno);
    211207
    212208/*
    213  * ECHONET Lite ƒvƒƒpƒeƒB‚̎擾ŠÖ”
     209 * ECHONET Lite プロパティの取得関数
    214210 */
    215211typedef int (EPRP_GETTER)(const EPRPINIB *item, void *dst, int size);
    216212
    217213/*
    218  *  ECHONET Lite ƒvƒƒpƒeƒB‰Šú‰»ƒuƒƒbƒN
     214 *  ECHONET Lite プロパティ初期化ブロック
    219215 */
    220216struct echonet_property_initialization_block
    221217{
    222         uint8_t         eprpcd;                 /* ECHONET Lite ƒvƒƒpƒeƒBƒR[ƒh */
    223         ATR                     eprpatr;                /* ECHONET Lite ƒvƒƒpƒeƒB‘®« */
    224         uint8_t         eprpsz;                 /* ECHONET Lite ƒvƒƒpƒeƒB‚̃TƒCƒY */
    225         intptr_t        exinf;                  /* ECHONET Lite ƒvƒƒpƒeƒB‚ÌŠg’£î•ñ */
    226         EPRP_SETTER     *eprpset;               /* ECHONET Lite ƒvƒƒpƒeƒB‚̐ݒèŠÖ” */
    227         EPRP_GETTER     *eprpget;               /* ECHONET Lite ƒvƒƒpƒeƒB‚̎擾ŠÖ” */
     218        uint8_t         eprpcd;                 /* ECHONET Lite プロパティコード */
     219        ATR                     eprpatr;                /* ECHONET Lite プロパティ属性 */
     220        uint8_t         eprpsz;                 /* ECHONET Lite プロパティのサイズ */
     221        intptr_t        exinf;                  /* ECHONET Lite プロパティの拡張情報 */
     222        EPRP_SETTER     *eprpset;               /* ECHONET Lite プロパティの設定関数 */
     223        EPRP_GETTER     *eprpget;               /* ECHONET Lite プロパティの取得関数 */
    228224};
    229225
    230 #define TMIN_EOBJID             1               /* ECHONET Lite ƒIƒuƒWƒFƒNƒgID‚̍ŏ¬’l */
    231 
    232 /*
    233  *  ECHONET Lite ƒIƒuƒWƒFƒNƒg‰Šú‰»ƒuƒƒbƒN
     226#define TMIN_EOBJID             1               /* ECHONET Lite オブジェクトIDの最小値 */
     227
     228/*
     229 *  ECHONET Lite オブジェクト初期化ブロック
    234230 */
    235231typedef struct echonet_object_initialization_block
    236232{
    237         ATR                     eobjatr;                /* ECHONET Lite ƒIƒuƒWƒFƒNƒg‘®« */
    238         ID                      enodid;                 /* ECHONET Lite ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹ƒIƒuƒWƒFƒNƒgID */
    239         intptr_t        exinf;                  /* ECHONET Lite ƒIƒuƒWƒFƒNƒg‚ÌŠg’£î•ñ */
    240         uint8_t         eojx1;                  /* ECHONET Lite ƒIƒuƒWƒFƒNƒg‚̃Nƒ‰ƒXƒOƒ‹[ƒvƒR[ƒh */
    241         uint8_t         eojx2;                  /* ECHONET Lite ƒIƒuƒWƒFƒNƒg‚̃Nƒ‰ƒXƒR[ƒh */
    242         uint8_t         eojx3;                  /* ECHONET Lite ƒIƒuƒWƒFƒNƒg‚̃Cƒ“ƒXƒ^ƒ“ƒXƒR[ƒh */
    243         const EPRPINIB *eprp;           /* ECHONET Lite ƒvƒƒpƒeƒB‰Šú‰»ƒuƒƒbƒN */
    244         uint_t          eprpcnt;                /* ECHONET Lite ƒvƒƒpƒeƒB‰Šú‰»ƒuƒƒbƒN” */
     233        ATR                     eobjatr;                /* ECHONET Lite オブジェクト属性 */
     234        ID                      enodid;                 /* ECHONET Lite ノードプロファイルオブジェクトID */
     235        intptr_t        exinf;                  /* ECHONET Lite オブジェクトの拡張情報 */
     236        uint8_t         eojx1;                  /* ECHONET Lite オブジェクトのクラスグループコード */
     237        uint8_t         eojx2;                  /* ECHONET Lite オブジェクトのクラスコード */
     238        uint8_t         eojx3;                  /* ECHONET Lite オブジェクトのインスタンスコード */
     239        const EPRPINIB *eprp;           /* ECHONET Lite プロパティ初期化ブロック */
     240        uint_t          eprpcnt;                /* ECHONET Lite プロパティ初期化ブロック数 */
    245241} EOBJINIB;
    246242
    247243/*
    248  *  ECHONET Lite ƒm[ƒhŠÇ—ƒuƒƒbƒN
     244 *  ECHONET Lite ノード管理ブロック
    249245 */
    250246typedef struct echonet_object_control_block
    251247{
    252         const EOBJINIB *profile;        /* ECHONET Lite ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹‚ւ̃|ƒCƒ“ƒ^ */
    253         const EOBJINIB **eobjs;         /* ECHONET Lite ƒIƒuƒWƒFƒNƒgƒŠƒXƒg‚ւ̃|ƒCƒ“ƒ^ */
    254         uint_t          eobjcnt;                /* ECHONET Lite ƒIƒuƒWƒFƒNƒg” */
     248        const EOBJINIB *profile;        /* ECHONET Lite ノードプロファイルへのポインタ */
     249        const EOBJINIB **eobjs;         /* ECHONET Lite オブジェクトリストへのポインタ */
     250        uint_t          eobjcnt;                /* ECHONET Lite オブジェクト数 */
    255251} EOBJCB;
    256252
    257253/*
    258  *  ECHONET Lite ƒm[ƒh‚ÆIPƒAƒhƒŒƒX‚̑Ήžî•ñƒuƒƒbƒN‚Ì’è‹`
     254 *  ECHONET Lite ノードとIPアドレスの対応情報ブロックの定義
    259255 */
    260256typedef struct echonet_node_address_block
    261257{
    262         bool_t          inuse;                  /* Žg—pó‹µ */
    263         uint8_t         ipaddr[16];             /* IPƒAƒhƒŒƒX */
     258        bool_t          inuse;                  /* 使用状況 */
     259        uint8_t         ipaddr[16];             /* IPアドレス */
    264260} ENODADRB;
    265261
    266262/*
    267  *  ECHONET Lite ƒIƒuƒWƒFƒNƒgID‚̍őå’liechonet_cfg.cj
     263 *  ECHONET Lite オブジェクトIDの最大値(echonet_cfg.c)
    268264 */
    269265extern const ID tmax_eobjid;
    270266
    271267/*
    272  *  ECHONET Lite ƒIƒuƒWƒFƒNƒg‰Šú‰»ƒuƒƒbƒN‚̃GƒŠƒAiechonet_cfg.cj
     268 *  ECHONET Lite オブジェクト初期化ブロックのエリア(echonet_cfg.c)
    273269 */
    274270extern const EOBJINIB eobjinib_table[];
    275271
    276272/*
    277  *  ECHONET Liteƒm[ƒhŠÇ—ƒuƒƒbƒN‚̐”
     273 *  ECHONET Liteノード管理ブロックの数
    278274 */
    279275extern const int tnum_enodid;
    280276
    281277/*
    282  *  ECHONET Lite ƒIƒuƒWƒFƒNƒgŠÇ—ƒuƒƒbƒN‚̃GƒŠƒAiechonet_cfg.cj
     278 *  ECHONET Lite オブジェクト管理ブロックのエリア(echonet_cfg.c)
    283279 */
    284280extern EOBJCB eobjcb_table[];
    285281
    286282/*
    287  * ECHONET Liteƒm[ƒh‚ÆIPƒAƒhƒŒƒX‚̑Ήžî•ñ‚̐”
     283 * ECHONET LiteノードとIPアドレスの対応情報の数
    288284 */
    289285extern const int tnum_enodadr;
    290286
    291287/*
    292  *  ECHONET Lite ƒm[ƒh‚ÆIPƒAƒhƒŒƒX‚̑Ήžî•ñƒuƒƒbƒN‚̃GƒŠƒAiechonet_cfg.cj
     288 *  ECHONET Lite ノードとIPアドレスの対応情報ブロックのエリア(echonet_cfg.c)
    293289 */
    294290extern ENODADRB enodadrb_table[];
    295291
    296292/*
    297  * ECHONET Lite ƒJ[ƒlƒ‹ƒIƒuƒWƒFƒNƒgID
     293 * ECHONET Lite カーネルオブジェクトID
    298294 */
    299295extern const ID ecn_svc_taskid;
     
    306302
    307303/*
    308  *  ECHONET Lite ƒIƒuƒWƒFƒNƒgŠÇ—ƒuƒƒbƒN‚©‚çECHONET Lite ƒIƒuƒWƒFƒNƒgID‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
     304 *  ECHONET Lite オブジェクト管理ブロックからECHONET Lite オブジェクトIDを取り出すためのマクロ
    309305 */
    310306#define EOBJID(p_eobjcb)        ((ID)(((p_eobjcb) - eobjcb_table) + TMIN_EOBJID))
    311307
    312308/*
    313  *  ECHONET Lite ƒIƒuƒWƒFƒNƒg‹@”\‚̏‰Šú‰»
     309 *  ECHONET Lite オブジェクト機能の初期化
    314310 */
    315311extern void initialize_echonet_object(void);
     
    322318
    323319/*
    324  * ECHONET LiteƒT[ƒrƒXˆ—ŠJŽn
     320 * ECHONET Liteサービス処理開始
    325321 */
    326322ER ecn_sta_svc();
    327323
    328324/*
    329  * ECHONETƒIƒuƒWƒFƒNƒgŽQÆ
     325 * ECHONETオブジェクト参照
    330326 */
    331327ER ecn_ref_eobj(ID eobjid, T_REOBJ *pk_eobj);
    332328
    333329/*
    334  * ECHONETƒvƒƒpƒeƒBŽQÆ
     330 * ECHONETプロパティ参照
    335331 */
    336332ER ecn_ref_eprp(ID eobjid, uint8_t epc, T_RPRP *pk_eprp);
    337333
    338334/*
    339  * ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š•s—vj“d•¶ì¬
     335 * プロパティ値書き込み要求(応答不要)電文作成
    340336 */
    341337ER ecn_esv_seti(T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt);
    342338
    343339/*
    344  * ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š—vj“d•¶ì¬
     340 * プロパティ値書き込み要求(応答要)電文作成
    345341 */
    346342ER ecn_esv_setc(T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt);
    347343
    348344/*
    349  * ƒvƒƒpƒeƒB’l“ǂݏo‚µ—v‹“d•¶ì¬
     345 * プロパティ値読み出し要求電文作成
    350346 */
    351347ER ecn_esv_get(T_EDATA **ppk_esv, ID eobjid, uint8_t epc);
    352348
    353349/*
    354  * ƒvƒƒpƒeƒB’l’Ê’m—v‹“d•¶ì¬
     350 * プロパティ値通知要求電文作成
    355351 */
    356352ER ecn_esv_inf_req(T_EDATA **ppk_esv, ID eobjid, uint8_t epc);
    357353
    358354/*
    359  * ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ—v‹“d•¶ì¬
     355 * プロパティ値書き込み・読み出し要求電文作成
    360356 */
    361357ER ecn_esv_set_get(T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt);
    362358
    363359/*
    364  * ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ—v‹“d•¶Ü‚è•Ô‚µŽw’è
     360 * プロパティ値書き込み・読み出し要求電文折り返し指定
    365361 */
    366362ER ecn_trn_set_get(T_EDATA *pk_esv, int *p_trn_pos);
    367363
    368364/*
    369  * ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ—v‹“d•¶I—¹Žw’è
     365 * プロパティ値書き込み・読み出し要求電文終了指定
    370366 */
    371367ER ecn_end_set_get(T_EDATA *pk_esv, int trn_pos);
    372368
    373369/*
    374  * ƒvƒƒpƒeƒB’l’Ê’mi‰ž“š—vj“d•¶ì¬
     370 * プロパティ値通知(応答要)電文作成
    375371 */
    376372ER ecn_esv_infc(T_EDATA **ppk_esv, ID eobjid, ID seobjid, uint8_t sepc);
    377373
    378374/*
    379  * —v‹“d•¶‚ւ̃vƒƒpƒeƒBŽw’è’ljÁ
     375 * 要求電文へのプロパティ指定追加
    380376 */
    381377ER ecn_add_epc(T_EDATA *pk_esv, uint8_t epc);
    382378
    383379/*
    384  * —v‹“d•¶‚ւ̃vƒƒpƒeƒBƒf[ƒ^’ljÁ
     380 * 要求電文へのプロパティデータ追加
    385381 */
    386382ER ecn_add_edt(T_EDATA *pk_esv, uint8_t epc, uint8_t pdc, const void *p_edt);
    387383
    388384/*
    389  * —v‹“d•¶‚Ì‘—M
     385 * 要求電文の送信
    390386 */
    391387ER ecn_snd_esv(T_EDATA *pk_esv);
    392388
    393389/*
    394  * ‰ž“š“d•¶‚ÌŽóMƒ|[ƒŠƒ“ƒO
     390 * 応答電文の受信ポーリング
    395391 */
    396392ER ecn_prcv_esv(T_EDATA **ppk_esv);
    397393
    398394/*
    399  * ‰ž“š“d•¶‚Ì”jŠü
     395 * 応答電文の破棄
    400396 */
    401397ER ecn_rel_esv(T_EDATA *pk_esv);
    402398
    403399/*
    404  * ‰ž“š“d•¶‚Ì‘—MŒ³ƒm[ƒh‚ðŽæ“¾‚·‚é
     400 * 応答電文の送信元ノードを取得する
    405401 */
    406402ID ecn_get_enod(T_EDATA *pk_esv);
    407403
    408404/*
    409  * ‰ž“š“d•¶‚Ì‘—MŒ³‹@ŠíƒIƒuƒWƒFƒNƒg‚ðŽæ“¾‚·‚é
     405 * 応答電文の送信元機器オブジェクトを取得する
    410406 */
    411407ID ecn_get_eobj(T_EDATA *pk_esv);
    412408
    413409/*
    414  * ‰ž“š“d•¶‰ðÍƒCƒeƒŒ[ƒ^[‰Šú‰»
     410 * 応答電文解析イテレーター初期化
    415411 */
    416412ER ecn_itr_ini(T_ENUM_EPC *pk_itr, T_EDATA *pk_esv);
    417413
    418414/*
    419  * ‰ž“š“d•¶‰ðÍƒCƒeƒŒ[ƒ^[ƒCƒ“ƒNƒŠƒƒ“ƒg
     415 * 応答電文解析イテレーターインクリメント
    420416 */
    421417ER ecn_itr_nxt(T_ENUM_EPC *pk_itr, uint8_t *p_epc, uint8_t *p_pdc, void *p_edt);
    422418
    423419/*
    424  * ‰ž“š“d•¶‘Ò‚¿‚ÌŠ„‚荞‚Ý‘—M
     420 * 応答電文待ちの割り込み送信
    425421 */
    426422ER ecn_brk_wai(const void *p_dat, int datsz);
    427423
    428424/*
    429  * Š„‚荞‚݃f[ƒ^‚̎擾
     425 * 割り込みデータの取得
    430426 */
    431427ER ecn_get_brk_dat(T_EDATA *pk_esv, void *p_buf, int bufsz, int *p_datsz);
    432428
    433429/*
    434  * ƒf[ƒ^Ý’èŠÖ”
     430 * データ設定関数
    435431 */
    436432int ecn_data_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno);
    437433
    438434/*
    439  * ƒf[ƒ^Žæ“¾ŠÖ”
     435 * データ取得関数
    440436 */
    441437int ecn_data_prop_get(const EPRPINIB *item, void *dst, int size);
  • uKadecot/trunk/ecnl_ssp/echonet.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    55$  Copyright (C) 2014 Cores Co., Ltd. Japan
    66$
    7 $  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    8 $  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    9 $  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    10 $  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    11 $      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    12 $      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    13 $  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    14 $      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    15 ƒƒ“ƒgi—˜—p
    16 $      ŽÒƒ}ƒjƒ
    17 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    18 $      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    19 $  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    20 $      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    21 $      ‚ƁD
    22 $    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    23 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    24 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    25 $        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    26 $    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    27 $        •ñ‚·‚邱‚ƁD
    28 $  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    29 $      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    30 $      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    31 $      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    32 $      –Ɛӂ·‚邱‚ƁD
    33 $
    34 $  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    35 $  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    36 $  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    37 $  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    38 $  ‚̐ӔC‚𕉂í‚È‚¢D
     7$  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     8$  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     9$  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     10$  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     11$      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     12$      スコード中に含まれていること.
     13$  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     14$      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     15$      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     16$      の無保証規定を掲載すること.
     17$  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     18$      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     19$      と.
     20$    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     21$        作権表示,この利用条件および下記の無保証規定を掲載すること.
     22$    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     23$        報告すること.
     24$  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     25$      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     26$      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     27$      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     28$      免責すること.
     29$
     30$  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     31$  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     32$  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     33$  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     34$  の責任を負わない.
    3935$
    4036$  @(#) $Id$
     
    4339
    4440$ =====================================================================
    45 $ echonet_cfg.h‚̐¶¬
     41$ echonet_cfg.hの生成
    4642$ =====================================================================
    4743
     
    5551$NL$
    5652
    57 $ ƒm[ƒhƒŠƒXƒg‚̍쐬
     53$ ノードリストの作成
    5854$ENOD.LIST = {}$
    5955$LOCAL_NODE = {}$
     
    6157
    6258$FOREACH eobjid EOBJ.ORDER_LIST$
    63 $       // ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹ƒIƒuƒWƒFƒNƒg‚̏ꍇ
     59$       // ノードプロファイルオブジェクトの場合
    6460        $IF (EOBJ.EOBJATR[eobjid] & EOBJ_LOCAL_NODE) != 0$
    6561                $LOCAL_NODE = APPEND(LOCAL_NODE, eobjid)$
    66 $       // ‹@ŠíƒIƒuƒWƒFƒNƒg‚̏ꍇ
     62$       // 機器オブジェクトの場合
    6763        $ELIF (EOBJ.EOBJATR[eobjid] & (EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$
    6864                $REMOTE_NODE = APPEND(REMOTE_NODE, eobjid)$
     
    7066$END$
    7167
    72 $       // ƒ[ƒJƒ‹‚̃m[ƒhƒvƒƒtƒ@ƒCƒ‹‚Í‚P‚‚¾‚¯
     68$       // ローカルのノードプロファイルは1つだけ
    7369$IF LENGTH(LOCAL_NODE) != 1$
    7470        $ERROR$Local node must be only one.$END$
     
    9086        $eprp_list = {}$
    9187        $prp_map_cnt = 3$
    92 $       // ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹‚̏ꍇ
     88$       // ノードプロファイルの場合
    9389        $IF (EOBJ.EOBJATR[eobjid] & (EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$
    9490                $prp_map_cnt = prp_map_cnt + 5$
     
    104100                $END$
    105101
    106 $               // ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹‚̏ꍇ
     102$               // ノードプロファイルの場合
    107103                $IF (EOBJ.EOBJATR[eobjid] & (EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$
    108104                        $IF (EPRP.EPRPCD[eprpno] >= 0xD3) && (EPRP.EPRPCD[eprpno] <= 0xD7)$
     
    135131
    136132$ =====================================================================
    137 $ echonet_cfg.c‚̐¶¬
     133$ echonet_cfg.cの生成
    138134$ =====================================================================
    139135
     
    145141
    146142$
    147 ƒCƒ“ƒNƒ‹[ƒhƒfƒBƒŒƒNƒeƒBƒui#includej
     143インクルードディレクティブ(#include)
    148144$
    149145/*$NL$
     
    155151
    156152$
    157 ƒIƒuƒWƒFƒNƒg‚ÌID”ԍ†‚ð•ÛŽ‚·‚é•Ï”
     153オブジェクトのID番号を保持する変数
    158154$
    159155$IF USE_EXTERNAL_ID$
     
    168164
    169165$
    170 $  ECHONET LiteƒvƒƒpƒeƒB
     166$  ECHONET Liteプロパティ
    171167$
    172168/*$NL$
     
    177173$INCLUDE "echonet_chk.tf"$
    178174
    179 $ ECHONET LiteƒvƒƒpƒeƒB‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     175$ ECHONET Liteプロパティ初期化ブロックの生成
    180176$IF LENGTH(EOBJ.ID_LIST) && LENGTH(EPRP.ID_LIST)$
    181177        $FOREACH enodid ENOD.LIST$
     
    200196
    201197                /*$NL$
    202                 $SPC$* ƒCƒ“ƒXƒ^ƒ“ƒX”$NL$
     198                $SPC$* インスタンス数$NL$
    203199                $SPC$*/$NL$
    204200                $inst_list_len = LENGTH(INST_LIST)$
     
    209205
    210206                /*$NL$
    211                 $SPC$* ƒNƒ‰ƒX”$NL$
    212                 $SPC$*/$NL$
    213 $               // ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹‚àŠÜ‚ß‚éi + 1j
     207                $SPC$* クラス数$NL$
     208                $SPC$*/$NL$
     209$               // ノードプロファイルも含める( + 1)
    214210                $class_list_len = LENGTH(CLASS_LIST) + 1$
    215211                const uint8_t _echonet_$EOBJ.EOBJID[enodid]$_class_count[] = {$NL$
     
    219215
    220216                /*$NL$
    221                 $SPC$* ƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg$NL$
     217                $SPC$* インスタンスリスト$NL$
    222218                $SPC$*/$NL$
    223219                $pos = 0$
     
    238234
    239235                /*$NL$
    240                 $SPC$* ƒNƒ‰ƒXƒŠƒXƒg$NL$
     236                $SPC$* クラスリスト$NL$
    241237                $SPC$*/$NL$
    242238                $pos = 0$
     
    268264                        $get_map[i] = 0x00$
    269265                $END$
    270 $               // 0x9DA0x9EA0x9F‚ÍON‚É‚µ‚Ä‚¨‚­
     266$               // 0x9D、0x9E、0x9FはONにしておく
    271267                $FOREACH i { 13 , 14 , 15 }$
    272268                        $anno_map[i] = anno_map[i] | 0x02$
    273269                        $get_map[i] = get_map[i] | 0x02$
    274270                $END$
    275 $               // ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹‚̏ꍇ
     271$               // ノードプロファイルの場合
    276272                $IF (EOBJ.EOBJATR[eobjid] & (EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$
    277273                        $anno_map[5] = anno_map[5] | 0x20$
     
    285281                $FOREACH eprpno EPRP.ID_LIST$
    286282                        $IF EQ(EPRP.EOBJID[eprpno], eobjid)$
    287 $                               // (0x80 <= eprpcd && eprpcd <= 0xFF)‚Å‚È‚¢ê‡iE_PARj
     283$                               // (0x80 <= eprpcd && eprpcd <= 0xFF)でない場合(E_PAR)
    288284                                $IF !(0x80 <= EPRP.EPRPCD[eprpno] && EPRP.EPRPCD[eprpno] <= 0xFF)$
    289285                                        $ERROR EPRP.TEXT_LINE[eprpno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eprpcd", EPRP.EPRPCD[eprpno], eprpno, "ECN_DEF_EPRP")$$END$
    290286                                $END$
    291287
    292 $                               // eprpatr‚ªimEPC_RULE_SET] | [EPC_RULE_GET] | [EPC_RULE_ANNO] | [EPC_ANNOUNCEn| [EPC_VARIABLE]j‚Å‚È‚¢ê‡iE_RSATRj
     288$                               // eprpatrが([EPC_RULE_SET] | [EPC_RULE_GET] | [EPC_RULE_ANNO] | [EPC_ANNOUNCE]| [EPC_VARIABLE])でない場合(E_RSATR)
    293289                                $IF (EPRP.EPRPATR[eprpno] & ~(EPC_RULE_SET|EPC_RULE_GET|EPC_RULE_ANNO|EPC_ANNOUNCE|EPC_VARIABLE)) != 0$
    294290                                        $ERROR EPRP.TEXT_LINE[eprpno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eprpatr", EPRP.EPRPATR[eprpno], eprpno, "ECN_DEF_EPRP")$$END$
    295291                                $END$
    296292
    297 $                               // (0 <= eprpsz && eprpsz <= 255)‚Å‚È‚¢ê‡iE_PARj
     293$                               // (0 <= eprpsz && eprpsz <= 255)でない場合(E_PAR)
    298294                                $IF !(0 <= EPRP.EPRPSZ[eprpno] && EPRP.EPRPSZ[eprpno] <= 255)$
    299295                                        $ERROR EPRP.TEXT_LINE[eprpno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eprpsz", EPRP.EPRPSZ[eprpno], eprpno, "ECN_DEF_EPRP")$$END$
    300296                                $END$
    301297
    302 $                               // ƒvƒƒpƒeƒBƒ}ƒbƒv‚ɐݒè
     298$                               // プロパティマップに設定
    303299                                $pos = EPRP.EPRPCD[eprpno] & 0xF$
    304300                                $bit = (EPRP.EPRPCD[eprpno] >> 4) - 8$
     
    320316                $END$
    321317
    322 $               // •K{ƒAƒiƒEƒ“ƒXƒvƒƒpƒeƒB‚ª‚ ‚é‚©ƒ`ƒFƒbƒN
     318$               // 必須アナウンスプロパティがあるかチェック
    323319                $must_anno_map = GetPropertyInfo(EOBJ.EOJX1[eobjid], EOBJ.EOJX2[eobjid], EPC_ANNOUNCE)$
    324320                $i = 0$
     
    331327                $END$
    332328
    333 $               // •K{SETƒvƒƒpƒeƒB‚ª‚ ‚é‚©ƒ`ƒFƒbƒN
     329$               // 必須SETプロパティがあるかチェック
    334330                $must_set_map = GetPropertyInfo(EOBJ.EOJX1[eobjid], EOBJ.EOJX2[eobjid], EPC_RULE_SET)$
    335331                $i = 0$
     
    342338                $END$
    343339
    344 $               // •K{GETƒvƒƒpƒeƒB‚ª‚ ‚é‚©ƒ`ƒFƒbƒN
     340$               // 必須GETプロパティがあるかチェック
    345341                $must_get_map = GetPropertyInfo(EOBJ.EOJX1[eobjid], EOBJ.EOJX2[eobjid], EPC_RULE_GET)$
    346342                $i = 0$
     
    354350
    355351                /*$NL$
    356                 $SPC$* ƒAƒiƒEƒ“ƒXƒvƒƒpƒeƒBƒ}ƒbƒv$NL$
     352                $SPC$* アナウンスプロパティマップ$NL$
    357353                $SPC$*/$NL$
    358354                $anno_list = LSORT(anno_list, "compare")$
     
    375371
    376372                /*$NL$
    377                 $SPC$* SETƒvƒƒpƒeƒBƒ}ƒbƒv$NL$
     373                $SPC$* SETプロパティマップ$NL$
    378374                $SPC$*/$NL$
    379375                $set_list = LSORT(set_list, "compare")$
     
    396392
    397393                /*$NL$
    398                 $SPC$* GETƒvƒƒpƒeƒBƒ}ƒbƒv$NL$
     394                $SPC$* GETプロパティマップ$NL$
    399395                $SPC$*/$NL$
    400396                $get_list = LSORT(get_list, "compare")$
     
    417413
    418414                /*$NL$
    419                 $SPC$* ƒvƒƒpƒeƒB’è‹`$NL$
     415                $SPC$* プロパティ定義$NL$
    420416                $SPC$*/$NL$
    421417                const EPRPINIB _echonet_$EOBJ.EOBJID[eobjid]$_eprpinib_table[TNUM_$EOBJ.EOBJID[eobjid]$_EPRPNO] = {$NL$
    422418                $FOREACH eprpno eprp_list$
    423 $                       // ECHONET LiteƒvƒƒpƒeƒB‰Šú‰»ƒuƒƒbƒN
     419$                       // ECHONET Liteプロパティ初期化ブロック
    424420                        $TAB${ ($EPRP.EPRPCD[eprpno]$), ($EPRP.EPRPATR[eprpno]$), ($EPRP.EPRPSZ[eprpno]$), ($EPRP.EXINF[eprpno]$), ($EPRP.EPRPSET[eprpno]$), ($EPRP.EPRPGET[eprpno]$) },$NL$
    425421                $END$
    426 $               // ó‘ÔƒAƒiƒEƒ“ƒXƒvƒƒpƒeƒBƒ}ƒbƒv
     422$               // 状態アナウンスプロパティマップ
    427423                $TAB${ (0x9D), (EPC_RULE_GET), $FORMAT("0x%1$x" , +anno_len)$, (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_anno_prpmap, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$
    428 $               // SetƒvƒƒpƒeƒBƒ}ƒbƒv
     424$               // Setプロパティマップ
    429425                $TAB${ (0x9E), (EPC_RULE_GET), $FORMAT("0x%1$x" , +set_len)$, (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_set_prpmap, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$
    430 $               // GetƒvƒƒpƒeƒBƒ}ƒbƒv
     426$               // Getプロパティマップ
    431427                $TAB${ (0x9F), (EPC_RULE_GET), $FORMAT("0x%1$x" , +get_len)$, (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_get_prpmap, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) }
    432 $               // ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹‚̏ꍇ
     428$               // ノードプロファイルの場合
    433429                $IF (EOBJ.EOBJATR[eobjid] & (EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$
    434430                        ,$NL$
    435 $                       // ƒCƒ“ƒXƒ^ƒ“ƒX”
     431$                       // インスタンス数
    436432                        $TAB${ (0xD3), (EPC_RULE_GET), (3), (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_inst_count, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$
    437 $                       // ƒNƒ‰ƒX”
     433$                       // クラス数
    438434                        $TAB${ (0xD4), (EPC_RULE_GET), (2), (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_class_count, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$
    439 $                       // ƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg’Ê’m
     435$                       // インスタンスリスト通知
    440436                        $TAB${ (0xD5), (EPC_RULE_ANNO), sizeof(_echonet_$EOBJ.EOBJID[eobjid]$_inst_list), (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_inst_list, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$
    441 $                       // ƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒgS
     437$                       // インスタンスリストS
    442438                        $TAB${ (0xD6), (EPC_RULE_GET), sizeof(_echonet_$EOBJ.EOBJID[eobjid]$_inst_list), (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_inst_list, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$
    443 $                       // ƒNƒ‰ƒXƒŠƒXƒgS
     439$                       // クラスリストS
    444440                        $TAB${ (0xD7), (EPC_RULE_GET), sizeof(_echonet_$EOBJ.EOBJID[eobjid]$_class_list), (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_class_list, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) }$NL$
    445441                $ELSE$
     
    455451
    456452$
    457 $  ECHONET LiteƒIƒuƒWƒFƒNƒg
     453$  ECHONET Liteオブジェクト
    458454$
    459455/*$NL$
     
    462458$NL$
    463459
    464 $ ECHONET LiteƒIƒuƒWƒFƒNƒgID”ԍ†‚̍őå’l
     460$ ECHONET LiteオブジェクトID番号の最大値
    465461const ID _echonet_tmax_eobjid = (TMIN_EOBJID + TNUM_EOBJID - 1);$NL$
    466462$NL$
    467463
    468 $ ECHONET LiteƒIƒuƒWƒFƒNƒg‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     464$ ECHONET Liteオブジェクト初期化ブロックの生成
    469465$IF LENGTH(EOBJ.ID_LIST)$
    470466        const EOBJINIB _echonet_eobjinib_table[TNUM_EOBJID] = {$NL$
    471467        $JOINEACH eobjid EOBJ.ID_LIST ",\n"$
    472 $               // eobjatr‚ªimEOBJ_LOCAL_NODE] | [EOBJ_SYNC_REMOTE_NODE] | [EOBJ_ASYNC_REMOTE_NODE] | [EOBJ_DEVICEnj‚Å‚È‚¢ê‡iE_RSATRj
     468$               // eobjatrが([EOBJ_LOCAL_NODE] | [EOBJ_SYNC_REMOTE_NODE] | [EOBJ_ASYNC_REMOTE_NODE] | [EOBJ_DEVICE])でない場合(E_RSATR)
    473469                $IF (EOBJ.EOBJATR[eobjid] & ~(EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE|EOBJ_DEVICE)) != 0$
    474470                        $ERROR EOBJ.TEXT_LINE[eobjid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eobjatr", EOBJ.EOBJATR[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
    475471                $END$
    476472
    477 $               // ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹ƒIƒuƒWƒFƒNƒg‚̏ꍇ
     473$               // ノードプロファイルオブジェクトの場合
    478474                $IF (EOBJ.EOBJATR[eobjid] & (EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$
    479 $                       // (enodid == EOBJ_NULL)‚Å‚È‚¢ê‡iE_PARj
     475$                       // (enodid == EOBJ_NULL)でない場合(E_PAR)
    480476                        $IF !EQ(EOBJ.ENODID[eobjid], EOBJ_NULL)$
    481477                                $ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "enodid", EOBJ.ENODID[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
    482478                        $END$
    483479
    484 $                       // (eojx1 == EOJ_X1_PROFILE)‚Å‚È‚¢ê‡iE_PARj
     480$                       // (eojx1 == EOJ_X1_PROFILE)でない場合(E_PAR)
    485481                        $IF EOBJ.EOJX1[eobjid] != EOJ_X1_PROFILE$
    486482                                $ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx1", EOBJ.EOJX1[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
    487483                        $END$
    488484
    489 $                       // (eojx2 == EOJ_X2_NODE_PROFILE)‚Å‚È‚¢ê‡iE_PARj
     485$                       // (eojx2 == EOJ_X2_NODE_PROFILE)でない場合(E_PAR)
    490486                        $IF EOBJ.EOJX2[eobjid] != EOJ_X2_NODE_PROFILE$
    491487                                $ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx2", EOBJ.EOJX2[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
    492488                        $END$
    493489
    494 $                       // (1 <= eojx3 && eojx3 <= 2)‚Å‚È‚¢ê‡iE_PARj
     490$                       // (1 <= eojx3 && eojx3 <= 2)でない場合(E_PAR)
    495491                        $IF !(1 <= EOBJ.EOJX3[eobjid] && EOBJ.EOJX3[eobjid] <= 2)$
    496492                                $ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx3", EOBJ.EOJX3[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
    497493                        $END$
    498 $               // ‹@ŠíƒIƒuƒWƒFƒNƒg‚̏ꍇ
    499                 $ELSE$
    500 $                       // (enodid != EOBJ_NULL)‚Å‚È‚¢ê‡iE_PARj
     494$               // 機器オブジェクトの場合
     495                $ELSE$
     496$                       // (enodid != EOBJ_NULL)でない場合(E_PAR)
    501497                        $IF EQ(EOBJ.ENODID[eobjid], EOBJ_NULL)$
    502498                                $ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "enodid", EOBJ.ENODID[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
    503499                        $END$
    504500
    505 $                       // (0 <= eojx1 && eojx1 <= 255)‚Å‚È‚¢ê‡iE_PARj
     501$                       // (0 <= eojx1 && eojx1 <= 255)でない場合(E_PAR)
    506502                        $IF !(0 <= EOBJ.EOJX1[eobjid] && EOBJ.EOJX1[eobjid] <= 255)$
    507503                                $ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx1", EOBJ.EOJX1[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
    508504                        $END$
    509505
    510 $                       // (0 <= eojx2 && eojx2 <= 255)‚Å‚È‚¢ê‡iE_PARj
     506$                       // (0 <= eojx2 && eojx2 <= 255)でない場合(E_PAR)
    511507                        $IF !(0 <= EOBJ.EOJX2[eobjid] && EOBJ.EOJX2[eobjid] <= 255)$
    512508                                $ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx2", EOBJ.EOJX2[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
    513509                        $END$
    514510
    515 $                       // (0 <= eojx3 && eojx3 <= 255)‚Å‚È‚¢ê‡iE_PARj
     511$                       // (0 <= eojx3 && eojx3 <= 255)でない場合(E_PAR)
    516512                        $IF !(0 <= EOBJ.EOJX3[eobjid] && EOBJ.EOJX3[eobjid] <= 255)$
    517513                                $ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx3", EOBJ.EOJX3[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
     
    519515                $END$
    520516
    521 $               // ECHONET LiteƒIƒuƒWƒFƒNƒg‰Šú‰»ƒuƒƒbƒN
     517$               // ECHONET Liteオブジェクト初期化ブロック
    522518                $TAB${ ($EOBJ.EOBJATR[eobjid]$), ($EOBJ.ENODID[eobjid]$), ($EOBJ.EXINF[eobjid]$), ($EOBJ.EOJX1[eobjid]$), ($EOBJ.EOJX2[eobjid]$), ($EOBJ.EOJX3[eobjid]$), _echonet_$EOBJ.EOBJID[eobjid]$_eprpinib_table, TNUM_$EOBJ.EOBJID[eobjid]$_EPRPNO }
    523519        $END$$NL$
     
    529525$NL$
    530526
    531 $ ECHONET Liteƒm[ƒhŠÇ—ƒuƒƒbƒN‚̐”
     527$ ECHONET Liteノード管理ブロックの数
    532528const int _echonet_tnum_enodid = TNUM_ENODID;$NL$
    533529$NL$
    534530
    535531$
    536 $  ECHONET Liteƒm[ƒhŠÇ—ƒuƒƒbƒN
     532$  ECHONET Liteノード管理ブロック
    537533$
    538534/*$NL$
     
    540536$SPC$*/$NL$
    541537$NL$
    542 $ ECHONET Liteƒm[ƒh‚ÆIPƒAƒhƒŒƒX‚̑Ήžî•ñƒuƒƒbƒN‚̐¶¬
     538$ ECHONET LiteノードとIPアドレスの対応情報ブロックの生成
    543539$FOREACH enodid ENOD.LIST$
    544540        $eobj_list = {}$
     
    549545        $END$
    550546        /*$NL$
    551         $SPC$* ƒm[ƒh‚ɏŠ‘®‚·‚é‹@ŠíƒIƒuƒWƒFƒNƒg‚̈ꗗ$NL$
     547        $SPC$* ノードに所属する機器オブジェクトの一覧$NL$
    552548        $SPC$*/$NL$
    553549        const EOBJINIB *_echonet_$EOBJ.EOBJID[enodid]$_eobjinib_table[TNUM_$EOBJ.EOBJID[enodid]$_EOBJNO] = {$NL$
     
    560556$IF LENGTH(ENOD.LIST)$
    561557        /*$NL$
    562         $SPC$* ECHONET Liteƒm[ƒhŠÇ—ƒuƒƒbƒN$NL$
     558        $SPC$* ECHONET Liteノード管理ブロック$NL$
    563559        $SPC$*/$NL$
    564560        EOBJCB _echonet_eobjcb_table[TNUM_ENODID] = {$NL$
     
    572568$NL$
    573569
    574 $ ECHONET Liteƒm[ƒh‚ÆIPƒAƒhƒŒƒX‚̑Ήžî•ñ‚̐”
     570$ ECHONET LiteノードとIPアドレスの対応情報の数
    575571const int _echonet_tnum_enodadr = TNUM_ENODADR;$NL$
    576572$NL$
    577573
    578574$
    579 $  ECHONET Liteƒm[ƒh‚ÆIPƒAƒhƒŒƒX‚̑Ήžî•ñ
     575$  ECHONET LiteノードとIPアドレスの対応情報
    580576$
    581577/*$NL$
     
    583579$SPC$*/$NL$
    584580$NL$
    585 $ ECHONET Liteƒm[ƒh‚ÆIPƒAƒhƒŒƒX‚̑Ήžî•ñƒuƒƒbƒN‚̐¶¬
     581$ ECHONET LiteノードとIPアドレスの対応情報ブロックの生成
    586582$IF LENGTH(EOBJ.ID_LIST)$
    587583        ENODADRB _echonet_enodadrb_table[TNUM_ENODADR] = {$NL$
     
    601597$NL$
    602598
    603 $ ECHONET Liteƒm[ƒh‚²‚Ƃ̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ª—v‹‚µ‚½“d•¶‚̃V[ƒPƒ“ƒX”ԍ†
     599$ ECHONET Liteノードごとのアプリケーションが要求した電文のシーケンス番号
    604600uint16_t _echonet_apitid_table[TNUM_ENODADR];$NL$
    605601$NL$
     
    610606
    611607$
    612 $ ECHONET Lite ƒJ[ƒlƒ‹ƒIƒuƒWƒFƒNƒgID
     608$ ECHONET Lite カーネルオブジェクトID
    613609$
    614610const ID _echonet_ecn_svc_taskid = ECHONET_SVC_TASK;$NL$
  • uKadecot/trunk/ecnl_ssp/echonet_agent.c

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2015 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
     
    4137
    4238/*
    43  *              ECHONET Lite “®“I¶¬ƒm[ƒh
     39 *              ECHONET Lite 動的生成ノード
    4440 */
    4541
     
    183179
    184180/*
    185  *  ƒLƒ
    186 [‚̏‰Šú‰»
     181 *  キューの初期化
    187182 *
    188  *  p_queue‚ɂ̓Lƒ
    189 [ƒwƒbƒ_‚ðŽw’è‚·‚éD
     183 *  p_queueにはキューヘッダを指定する.
    190184 */
    191185Inline void
     
    200194
    201195/*
    202  *  ƒLƒ
    203 [‚Ì‘OƒGƒ“ƒgƒŠ‚Ö‚Ì‘}“ü
     196 *  キューの前エントリへの挿入
    204197 *
    205  *  p_queue‚Ì‘O‚Ép_entry‚ð‘}“ü‚·‚éDp_queue‚ɃLƒ
    206 [ƒwƒbƒ_‚ðŽw’肵‚½ê
    207  *  ‡‚ɂ́CƒLƒ
    208 [‚Ì––”ö‚Ép_entry‚ð‘}“ü‚·‚邱‚Æ‚É‚È‚éD
     198 *  p_queueの前にp_entryを挿入する.p_queueにキューヘッダを指定した場
     199 *  合には,キューの末尾にp_entryを挿入することになる.
    209200 */
    210201Inline void
     
    222213
    223214/*
    224  *  ƒGƒ“ƒgƒŠ‚̍폜
     215 *  エントリの削除
    225216 *
    226  *  p_entry‚ðƒLƒ
    227 [‚©‚çíœ‚·‚éD
     217 *  p_entryをキューから削除する.
    228218 */
    229219Inline void
     
    338328        int i = eobjid;
    339329
    340         /* ƒIƒuƒWƒFƒNƒgID‚©‚çŽÀ‘Ì‚ðŽæ“¾ */
     330        /* オブジェクトIDから実体を取得 */
    341331        i -= (tmax_eobjid + 1);
    342332        if ((i < 0)
     
    349339                return false;
    350340
    351         /* ƒIƒuƒWƒFƒNƒg‚ÌEOJ‚ðƒRƒs[ */
     341        /* オブジェクトのEOJをコピー */
    352342        memcpy(eoj, &buf->obj.inib.eojx1, sizeof(*eoj));
    353343
    354         /* Š‘®‚·‚éƒm[ƒh‚̃IƒuƒWƒFƒNƒgID‚ðŽæ“¾ */
     344        /* 所属するノードのオブジェクトIDを取得 */
    355345        if(buf->obj.inib.enodid == 0)
    356346                i = buf->obj.eobjId;
     
    364354        }
    365355
    366         /* ƒm[ƒhID‚ðŽæ“¾ */
     356        /* ノードIDを取得 */
    367357        buf = &agent->blockes[i];
    368358        *enodid = buf->node.enodId;
     
    405395        T_ECN_EOJ *eoj, *end;
    406396
    407         // ƒvƒƒpƒeƒB’Ê’m‚©Žæ“¾‰ž“š‚ŁA
     397        // プロパティ通知か取得応答で、
    408398        switch (esv->hdr.edata.esv) {
    409399        case ESV_GET_RES:
     
    415405        }
    416406
    417         // ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹ˆ¶‚̏ꍇ
     407        // ノードプロファイル宛の場合
    418408        eoj = &esv->hdr.edata.seoj;
    419409        if ((eoj->eojx1 != EOJ_X1_PROFILE) || (eoj->eojx2 != EOJ_X2_NODE_PROFILE)
     
    428418        while (ecn_itr_nxt(&enm, &epc, &pdc, &edt) == E_OK) {
    429419                switch (epc) {
    430                 // ƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg’Ê’m‚̏ꍇ
     420                // インスタンスリスト通知の場合
    431421                case 0xD5:
    432                 // Ž©ƒm[ƒhƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg‚r’Ê’m‚̏ꍇ
     422                // 自ノードインスタンスリストS通知の場合
    433423                case 0xD6:
    434                         // ƒTƒCƒY‚ª‡‚í‚È‚¢ê‡
     424                        // サイズが合わない場合
    435425                        if (pdc != (1 + edt[0] * sizeof(T_ECN_EOJ)))
    436426                                return NULL;
     
    773763        ecn_obj_t *sobj;
    774764
    775         /* Ã“I‚É’è‹`‚³‚ꂽ‘—MŒ³‚̏ꍇ */
     765        /* 静的に定義された送信元の場合 */
    776766        if ((*ppk_snod != NULL) && (*ppk_snod)->eobjs != NULL) {
    777                 /* ˆ—‚µ‚È‚¢ */
     767                /* 処理しない */
    778768                return;
    779769        }
     
    781771        snod = ecn_agent_find_node2(*ppk_snod);
    782772
    783         /* ‘—MŒ³‚ð’m‚ç‚È‚©‚Á‚½‚ç */
     773        /* 送信元を知らなかったら */
    784774        if (snod == NULL) {
    785                 /* ‘—MŒ³‚̃m[ƒhî•ñ‚ðV‹K‚ɍ쐬 */
     775                /* 送信元のノード情報を新規に作成 */
    786776                snod = ecn_agent_create_node(agent, esv);
    787777                if (snod == NULL)
     
    791781        sobj = ecn_agent_find_obj2(snod, *ppk_sobj);
    792782
    793         /* ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹‚̏ꍇ */
     783        /* ノードプロファイルの場合 */
    794784        if ((esv->hdr.edata.seoj.eojx1 == EOJ_X1_PROFILE)
    795785                && (esv->hdr.edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) {
    796786                sobj = &snod->base;
    797787        }
    798         /* ‹@ŠíƒIƒuƒWƒFƒNƒg‚̏ꍇ */
     788        /* 機器オブジェクトの場合 */
    799789        else {
    800790                sobj = ecn_agent_find_eobj(&snod->eobj, esv->hdr.edata.seoj);
     
    841831        ecn_obj_t *obj = node->current;
    842832
    843         // ƒvƒƒpƒeƒB’l“ǂݏo‚µ—v‹
     833        // プロパティ値読み出し要求
    844834        ecn_esv_get(&esv, obj->eobjId, 0x9E);
    845835        ecn_snd_esv(esv);
     
    854844        ecn_obj_t *obj = node->current;
    855845
    856         // ƒvƒƒpƒeƒB’l“ǂݏo‚µ—v‹
     846        // プロパティ値読み出し要求
    857847        ecn_esv_get(&esv, obj->eobjId, 0x9F);
    858848        ecn_snd_esv(esv);
     
    867857        ecn_obj_t *obj = node->current;
    868858
    869         // ƒvƒƒpƒeƒB’l“ǂݏo‚µ—v‹
     859        // プロパティ値読み出し要求
    870860        ecn_esv_get(&esv, obj->eobjId, 0x9D);
    871861        ecn_snd_esv(esv);
     
    881871        ecn_device_t *device;
    882872
    883         /* obj‚ªŽw’肳‚ê‚Ä‚¢‚È‚¢ê‡ */
     873        /* objが指定されていない場合 */
    884874        if(obj == NULL){
    885                 /* ‚±‚̃m[ƒh‚ð•Ô‚· */
     875                /* このノードを返す */
    886876                node->current = &node->base;
    887877                return;
    888878        }
    889         /* ƒm[ƒh‚̏ꍇ */
     879        /* ノードの場合 */
    890880        else if((obj->inib.eojx1 == EOJ_X1_PROFILE) && (obj->inib.eojx2 == EOJ_X2_NODE_PROFILE)){
    891881                node = (ecn_node_t *)obj;
    892882
    893                 /* ”z‰º‚Ì‹@Ší‚ð•Ô‚· */
     883                /* 配下の機器を返す */
    894884                queue = node->devices.p_next;
    895885                device = (ecn_device_t *)cast_obj(queue);
    896886        }
    897         /* ‹@Ší‚̏ꍇ */
     887        /* 機器の場合 */
    898888        else{
    899                 /* ŽŸ‚Ì‹@Ší‚ð•Ô‚· */
     889                /* 次の機器を返す */
    900890                node = ((ecn_device_t *)obj)->node;
    901891                queue = cast_queue(obj)->p_next;
     
    903893        }
    904894
    905         /* ‚»‚Ì‹@Ší‚ª––”ö‚¾‚Á‚½ê‡ */
     895        /* その機器が末尾だった場合 */
    906896        if(&node->devices == queue){
    907897                node->current = NULL;
     
    10401030        bool_t has = false;
    10411031
    1042         /* ƒm[ƒh‚̏ꍇ‚̓Cƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg’Ê’m‚ÆŽ©ƒm[ƒhƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg‚r’Ê’m‚ð•K{‚Ŏ󂯎æ‚é */
     1032        /* ノードの場合はインスタンスリスト通知と自ノードインスタンスリストS通知を必須で受け取る */
    10431033        if ((fp_obj->enodid == 0) && ((fa_epc == 0xD5) || (fa_epc == 0xD6)))
    10441034                has = true;
     
    10741064
    10751065        switch (item->eprpcd) {
    1076         /* ƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg’Ê’m‚̏ꍇ */
     1066        /* インスタンスリスト通知の場合 */
    10771067        case 0xD5:
    1078         /* Ž©ƒm[ƒhƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg‚r’Ê’m‚̏ꍇ */
     1068        /* 自ノードインスタンスリストS通知の場合 */
    10791069        case 0xD6:
    10801070                if ((node != NULL) && (node->state == ecn_node_state_idle)) {
     
    10941084                }
    10951085                break;
    1096         /* ’Ê’mƒvƒƒpƒeƒBƒ}ƒbƒv‚̏ꍇ */
     1086        /* 通知プロパティマップの場合 */
    10971087        case 0x9D:
    10981088                eprpcnt = edt[0];
    10991089
    11001090                if (eprpcnt < 16) {
    1101                         /* ƒTƒCƒYƒ`ƒFƒbƒN */
     1091                        /* サイズチェック */
    11021092                        if (eprpcnt + 1 != size)
    11031093                                return 0;
     
    11071097                }
    11081098                else {
    1109                         /* ƒTƒCƒYƒ`ƒFƒbƒN */
     1099                        /* サイズチェック */
    11101100                        if (size != 17)
    11111101                                return 0;
     
    11161106                sobj->pmapFlag |= PMAP_FLAG_ANNO;
    11171107                break;
    1118         /* SETƒvƒƒpƒeƒBƒ}ƒbƒv‚̏ꍇ */
     1108        /* SETプロパティマップの場合 */
    11191109        case 0x9E:
    11201110                eprpcnt = edt[0];
    11211111
    11221112                if (eprpcnt < 16) {
    1123                         /* ƒTƒCƒYƒ`ƒFƒbƒN */
     1113                        /* サイズチェック */
    11241114                        if (eprpcnt + 1 != size)
    11251115                                return 0;
     
    11291119                }
    11301120                else {
    1131                         /* ƒTƒCƒYƒ`ƒFƒbƒN */
     1121                        /* サイズチェック */
    11321122                        if (size != 17)
    11331123                                return 0;
     
    11381128                sobj->pmapFlag |= PMAP_FLAG_SET;
    11391129                break;
    1140         /* GETƒvƒƒpƒeƒBƒ}ƒbƒv‚̏ꍇ */
     1130        /* GETプロパティマップの場合 */
    11411131        case 0x9F:
    11421132                eprpcnt = edt[0];
    11431133
    11441134                if (eprpcnt < 16) {
    1145                         /* ƒTƒCƒYƒ`ƒFƒbƒN */
     1135                        /* サイズチェック */
    11461136                        if (eprpcnt + 1 != size)
    11471137                                return 0;
     
    11511141                }
    11521142                else {
    1153                         /* ƒTƒCƒYƒ`ƒFƒbƒN */
     1143                        /* サイズチェック */
    11541144                        if (size != 17)
    11551145                                return 0;
  • uKadecot/trunk/ecnl_ssp/echonet_agent.h

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2015 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
     
    4137
    4238/*
    43  *              ECHONET Lite “®“I¶¬ƒm[ƒh
     39 *              ECHONET Lite 動的生成ノード
    4440 */
    4541
     
    5652
    5753/*
    58  *  ƒLƒ
    59 [‚̃f[ƒ^\‘¢‚Ì’è‹`
     54 *  キューのデータ構造の定義
    6055 */
    6156typedef struct ecn_agent_queue {
    6257#ifdef _DEBUG
    63         struct ecn_agent_queue *p_parent;       /* eƒLƒ
    64 [‚ւ̃|ƒCƒ“ƒ^ */
     58        struct ecn_agent_queue *p_parent;       /* 親キューへのポインタ */
    6559#endif
    66         struct ecn_agent_queue *p_next;         /* ŽŸƒGƒ“ƒgƒŠ‚ւ̃|ƒCƒ“ƒ^ */
    67         struct ecn_agent_queue *p_prev;         /* ‘OƒGƒ“ƒgƒŠ‚ւ̃|ƒCƒ“ƒ^ */
     60        struct ecn_agent_queue *p_next;         /* 次エントリへのポインタ */
     61        struct ecn_agent_queue *p_prev;         /* 前エントリへのポインタ */
    6862} ecn_agent_queue_t;
    6963
     
    7771        EOBJINIB inib;
    7872        uint8_t pmapFlag;
    79         uint8_t pmapSet[16];            /* SETƒvƒƒpƒeƒBƒ}ƒbƒv */
    80         uint8_t pmapGet[16];            /* GETƒvƒƒpƒeƒBƒ}ƒbƒv */
    81         uint8_t pmapAnno[16];           /* ó‘ԕω»Žž’Ê’mƒvƒƒpƒeƒBƒ}ƒbƒv */
    82         uint_t eprpcnt;                         /* ECHONET Lite ƒvƒƒpƒeƒB” */
     73        uint8_t pmapSet[16];            /* SETプロパティマップ */
     74        uint8_t pmapGet[16];            /* GETプロパティマップ */
     75        uint8_t pmapAnno[16];           /* 状態変化時通知プロパティマップ */
     76        uint_t eprpcnt;                         /* ECHONET Lite プロパティ数 */
    8377} ecn_obj_t;
    8478
     
    118112typedef struct ecn_inm_get_device_item
    119113{
    120         ID                      eobjid;                 /* ECHONET Lite ƒIƒuƒWƒFƒNƒgID */
    121         ID                      enodid;                 /* ECHONET Lite ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹ƒIƒuƒWƒFƒNƒgID */
    122         uint8_t         state;                  /* î•ñŽûWó‘Ô */
    123         uint8_t         eojx1;                  /* ECHONET Lite ƒIƒuƒWƒFƒNƒg‚̃Nƒ‰ƒXƒOƒ‹[ƒvƒR[ƒh */
    124         uint8_t         eojx2;                  /* ECHONET Lite ƒIƒuƒWƒFƒNƒg‚̃Nƒ‰ƒXƒR[ƒh */
    125         uint8_t         eojx3;                  /* ECHONET Lite ƒIƒuƒWƒFƒNƒg‚̃Cƒ“ƒXƒ^ƒ“ƒXƒR[ƒh */
    126         ECN_ENOD_ID     addrid;                 /* IPƒAƒhƒŒƒXŽæ“¾—pID */
     114        ID                      eobjid;                 /* ECHONET Lite オブジェクトID */
     115        ID                      enodid;                 /* ECHONET Lite ノードプロファイルオブジェクトID */
     116        uint8_t         state;                  /* 情報収集状態 */
     117        uint8_t         eojx1;                  /* ECHONET Lite オブジェクトのクラスグループコード */
     118        uint8_t         eojx2;                  /* ECHONET Lite オブジェクトのクラスコード */
     119        uint8_t         eojx3;                  /* ECHONET Lite オブジェクトのインスタンスコード */
     120        ECN_ENOD_ID     addrid;                 /* IPアドレス取得用ID */
    127121} ecn_inm_get_device_item_t;
    128122
     
    149143} ecn_inm_get_device_info_res_t;
    150144
    151 /* ‰Šú‰» */
     145/* 初期化 */
    152146void ecn_agent_init(void);
    153 /* ƒm[ƒh‚ðŒŸõ */
     147/* ノードを検索 */
    154148ecn_node_t *ecn_agent_find_node(ECN_ENOD_ID enodid);
    155 /* ‹@Ší‚ðŒŸõ */
     149/* 機器を検索 */
    156150ecn_obj_t *ecn_agent_find_eobj(const EOBJCB *pk_nod, T_ECN_EOJ eoj);
    157 /* ƒIƒuƒWƒFƒNƒgID‚ðŽæ“¾ */
     151/* オブジェクトIDを取得 */
    158152ID ecn_agent_get_eobj(const EOBJINIB *pk_obj);
    159 /* ŽŸ‚Ì‹@Ší‚ðŽæ“¾ */
     153/* 次の機器を取得 */
    160154const EOBJINIB *ecn_agent_next_eobj(const EOBJCB *pk_nod, const EOBJINIB *pk_obj);
    161 /* ƒIƒuƒWƒFƒNƒgID‚©‚çEOJ‚ƃm[ƒhID‚ðŽæ“¾ */
     155/* オブジェクトIDからEOJとノードIDを取得 */
    162156bool_t ecn_agent_get_eoj_enodid(ID eobjid, T_ECN_EOJ *eoj, ECN_ENOD_ID *enodid);
    163 /* ƒ^ƒCƒ€ƒAƒEƒg’l‚ð•Ô‚· */
     157/* タイムアウト値を返す */
    164158TMO ecn_agent_get_timer();
    165 /* ƒ^ƒCƒ}[‚ÌŽžŠÔ‚ði‚ß‚é */
     159/* タイマーの時間を進める */
    166160void ecn_agent_progress(TMO interval);
    167 /* ƒ^ƒCƒ€ƒAƒEƒgˆ—i‚Ì‚½‚߂̌Ăяo‚µj */
     161/* タイムアウト処理(のための呼び出し) */
    168162void ecn_agent_timeout();
    169 /* “à•”ƒƒbƒZ[ƒWˆ— */
     163/* 内部メッセージ処理 */
    170164bool_t ecn_agent_proc_int_msg(ECN_FBS_ID fbs, uint8_t cmd);
    171 /* ECHONET“d•¶ŽóMˆ— */
     165/* ECHONET電文受信処理 */
    172166void ecn_agent_proc_ecn_msg(const EOBJCB **snod, const EOBJINIB **sobj, T_EDATA *esv);
    173 /* ECHONET“d•¶ŽóMˆ—I—¹ */
     167/* ECHONET電文受信処理終了 */
    174168void ecn_agent_proc_ecn_msg_end();
    175 /* ƒvƒƒpƒeƒB‚ðŽæ“¾ */
     169/* プロパティを取得 */
    176170const EPRPINIB *ecn_agent_get_property(const EOBJINIB *fp_obj, uint8_t fa_epc, const EPRPINIB *item);
    177171
  • uKadecot/trunk/ecnl_ssp/echonet_chk.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    55$  Copyright (C) 2014 Cores Co., Ltd. Japan
    66$
    7 $  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    8 $  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    9 $  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    10 $  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    11 $      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    12 $      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    13 $  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    14 $      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    15 ƒƒ“ƒgi—˜—p
    16 $      ŽÒƒ}ƒjƒ
    17 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    18 $      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    19 $  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    20 $      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    21 $      ‚ƁD
    22 $    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    23 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    24 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    25 $        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    26 $    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    27 $        •ñ‚·‚邱‚ƁD
    28 $  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    29 $      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    30 $      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    31 $      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    32 $      –Ɛӂ·‚邱‚ƁD
     7$  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     8$  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     9$  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     10$  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     11$      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     12$      スコード中に含まれていること.
     13$  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     14$      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     15$      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     16$      の無保証規定を掲載すること.
     17$  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     18$      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     19$      と.
     20$    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     21$        作権表示,この利用条件および下記の無保証規定を掲載すること.
     22$    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     23$        報告すること.
     24$  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     25$      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     26$      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     27$      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     28$      免責すること.
    3329$
    34 –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    35 ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    36 ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    37 ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    38 ‚̐ӔC‚𕉂í‚È‚¢D
     30本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     31よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     32に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     33アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     34の責任を負わない.
    3935$
    4036$  @(#) $Id$
     
    4339
    4440$ =====================================================================
    45 $ •K{ƒvƒƒpƒeƒB‚̃`ƒFƒbƒN
     41$ 必須プロパティのチェック
    4642$ =====================================================================
    4743
     
    5046$END$
    5147
    52 $ ƒvƒƒtƒ@ƒCƒ‹ƒIƒuƒWƒFƒNƒgƒX[ƒp[ƒNƒ‰ƒX
     48$ プロファイルオブジェクトスーパークラス
    5349$ProfileObjectSuperClass.EPC = { 0x88, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x9D, 0x9E, 0x9F }$
    5450$ProfileObjectSuperClass.MUST = { EPC_NONE, EPC_RULE_GET, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_RULE_GET, EPC_RULE_GET, EPC_RULE_GET }$
    5551
    56 $ ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹ƒNƒ‰ƒX
     52$ ノードプロファイルクラス
    5753$NodeProfileClass.EPC = { 0x80, 0x82, 0x83, 0x89, 0xBF, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7 }$
    5854$NodeProfileClass.MUST = { EPC_RULE_GET, EPC_RULE_GET, EPC_RULE_GET, EPC_NONE, EPC_NONE, EPC_RULE_GET, EPC_RULE_GET, EPC_RULE_ANNO, EPC_RULE_GET, EPC_RULE_GET }$
    5955
    60 $ ‹@ŠíƒIƒuƒWƒFƒNƒgƒX[ƒp[ƒNƒ‰ƒX
     56$ 機器オブジェクトスーパークラス
    6157$DeviceSuperClass.EPC = { 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x93, 0x97, 0x98, 0x99, 0x9A, 0x9D, 0x9E, 0x9F }$
    6258$DeviceSuperClass.MUST = { EPC_RULE_GET, EPC_RULE_SET|EPC_RULE_GET, EPC_RULE_GET, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_RULE_GET, EPC_NONE, EPC_RULE_GET, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_RULE_GET, EPC_RULE_GET, EPC_RULE_GET }$
  • uKadecot/trunk/ecnl_ssp/echonet_class.h

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
     
    4339#define ECHONET_CLASS_H
    4440
    45 /* ƒZƒ“ƒT[ŠÖ˜A‹@Ší */
     41/* センサー関連機器 */
    4642#define EOJ_X1_SENSOR 0x00
    4743
    48 /* ‹ó’²ŠÖ˜A‹@Ší */
     44/* 空調関連機器 */
    4945#define EOJ_X1_AIR_CONDITIONER 0x01
    5046
    51 /* Z‘îEÝ”õŠÖ˜A‹@Ší */
     47/* 住宅・設備関連機器 */
    5248#define EOJ_X1_AMENITY 0x02
    5349
    54 /* ’²—E‰ÆŽ–ŠÖ˜A‹@Ší */
     50/* 調理・家事関連機器 */
    5551#define EOJ_X1_HOUSEWORK 0x03
    5652
    57 /* Œ’NŠÖ˜A‹@Ší */
     53/* 健康関連機器 */
    5854#define EOJ_X1_WELLNESS 0x04
    5955
    60 /* ŠÇ—E‘€ìŠÖ˜A‹@Ší */
     56/* 管理・操作関連機器 */
    6157#define EOJ_X1_CONTROLLER 0x05
    6258
    63 /* AVŠÖ˜A‹@Ší */
     59/* AV関連機器 */
    6460#define EOJ_X1_AUDIO_VISUAL 0x06
    6561
    66 /* ƒvƒƒtƒ@ƒCƒ‹ */
     62/* プロファイル */
    6763#define EOJ_X1_PROFILE 0x0E
    6864
    69 /* ƒ†[ƒU[’è‹` */
     65/* ユーザー定義 */
    7066#define EOJ_X1_USER_DEFINED 0x0F
    7167
    7268/*
    73  * ƒZƒ“ƒTŠÖ˜A‹@ŠíƒNƒ‰ƒXƒOƒ‹[ƒv *
    74  */
    75 /* ƒKƒX˜R‚êƒZƒ“ƒT */
     69 * センサ関連機器クラスグループ *
     70 */
     71/* ガス漏れセンサ */
    7672#define EOJ_X2_GAS_LEAK_SENSOR 0x01
    7773
    78 /* –h”ƃZƒ“ƒT */
     74/* 防犯センサ */
    7975#define EOJ_X2_CRIME_PREVENTION_SENSOR 0x02
    8076
    81 /* ”ñíƒ{ƒ^ƒ“ */
     77/* 非常ボタン */
    8278#define EOJ_X2_EMERGENCY_BUTTON 0x03
    8379
    84 /* ‹~‹}—pƒZƒ“ƒT */
     80/* 救急用センサ */
    8581#define EOJ_X2_FIRST_AID_SENSOR 0x04
    8682
    87 /* ’nkƒZƒ“ƒT */
     83/* 地震センサ */
    8884#define EOJ_X2_EARTHQUAKE_SENSOR 0x05
    8985
    90 /* ˜R“dƒZƒ“ƒT */
     86/* 漏電センサ */
    9187#define EOJ_X2_ELECTRIC_LEAK_SENSOR 0x06
    9288
    93 /* l‘ÌŒŸ’mƒZƒ“ƒT */
     89/* 人体検知センサ */
    9490#define EOJ_X2_HUMAN_DETECTION_SENSOR 0x07
    9591
    96 /* —ˆ‹qƒZƒ“ƒT */
     92/* 来客センサ */
    9793#define EOJ_X2_VISITOR_SENSOR 0x08
    9894
    99 /* ŒÄ‚яo‚µƒZƒ“ƒT */
     95/* 呼び出しセンサ */
    10096#define EOJ_X2_CALL_SENSOR 0x09
    10197
    102 /* Œ‹˜IƒZƒ“ƒT */
     98/* 結露センサ */
    10399#define EOJ_X2_CONDENSATION_SENSOR 0x0A
    104100
    105 /* ‹ó‹C‰˜õƒZƒ“ƒT */
     101/* 空気汚染センサ */
    106102#define EOJ_X2_AIR_POLLUTION_SENSOR 0x0B
    107103
    108 /* Ž_‘fƒZƒ“ƒT */
     104/* 酸素センサ */
    109105#define EOJ_X2_OXYGEN_SENSOR 0x0C
    110106
    111 /* Æ“xƒZƒ“ƒT */
     107/* 照度センサ */
    112108#define EOJ_X2_ILLUMINANCE_SENSOR 0x0D
    113109
    114 /* ‰¹ƒZƒ“ƒT */
     110/* 音センサ */
    115111#define EOJ_X2_SOUND_SENSOR 0x0E
    116112
    117 /* “Š”ŸƒZƒ“ƒT */
     113/* 投函センサ */
    118114#define EOJ_X2_MAILING_SENSOR 0x0F
    119115
    120 /* d‰×ƒZƒ“ƒT */
     116/* 重荷センサ */
    121117#define EOJ_X2_WEIGHT_SENSOR 0x10
    122118
    123 /* ‰·“xƒZƒ“ƒT */
     119/* 温度センサ */
    124120#define EOJ_X2_TEMPERATURE_SENSOR 0x11
    125121
    126 /* Ž¼“xƒZƒ“ƒT */
     122/* 湿度センサ */
    127123#define EOJ_X2_HUMIDITY_SENSOR 0x12
    128124
    129 /* ‰JƒZƒ“ƒT */
     125/* 雨センサ */
    130126#define EOJ_X2_RAIN_SENSOR 0x13
    131127
    132 /* 
    133 ˆÊƒZƒ“ƒT */
     128/* 水位センサ */
    134129#define EOJ_X2_WATER_LEVEL_SENSOR 0x14
    135130
    136 /* •—˜C
    137 ˆÊƒZƒ“ƒT */
     131/* 風呂水位センサ */
    138132#define EOJ_X2_BATH_WATER_LEVEL_SENSOR 0x15
    139133
    140 /* •—˜C•¦‚«ã‚ª‚èƒZƒ“ƒT */
     134/* 風呂沸き上がりセンサ */
    141135#define EOJ_X2_BATH_HEATING_STATUS_SENSOR 0x16
    142136
    143 /* 
    144 ˜R‚êƒZƒ“ƒT */
     137/* 水漏れセンサ */
    145138#define EOJ_X2_WATER_LEAK_SENSOR 0x17
    146139
    147 /* 
    148 ‚ ‚Ó‚êƒZƒ“ƒT */
     140/* 水あふれセンサ */
    149141#define EOJ_X2_WATER_OVERFLOW_SENSOR 0x18
    150142
    151 /* ‰ÎÐƒZƒ“ƒT */
     143/* 火災センサ */
    152144#define EOJ_X2_FIRE_SENSOR 0x19
    153145
    154 /* ƒ^ƒoƒR‰ŒƒZƒ“ƒT */
     146/* タバコ煙センサ */
    155147#define EOJ_X2_CIGARETTE_SMOKE_SENSOR 0x1A
    156148
    157 /* ‚b‚n‚QƒZƒ“ƒT */
     149/* CO2センサ */
    158150#define EOJ_X2_CO2_SENSOR 0x1B
    159151
    160 /* ƒKƒXƒZƒ“ƒT */
     152/* ガスセンサ */
    161153#define EOJ_X2_GAS_SENSOR 0x1C
    162154
    163 /* ‚u‚n‚bƒZƒ“ƒT */
     155/* VOCセンサ */
    164156#define EOJ_X2_VOC_SENSOR 0x1D
    165157
    166 /* ·ˆ³ƒZƒ“ƒT */
     158/* 差圧センサ */
    167159#define EOJ_X2_DIFFERENTIAL_PRESSURE_SENSOR 0x1E
    168160
    169 /* •—‘¬ƒZƒ“ƒT */
     161/* 風速センサ */
    170162#define EOJ_X2_AIR_SPEED_SENSOR 0x1F
    171163
    172 /* L‚¢ƒZƒ“ƒT */
     164/* 臭いセンサ */
    173165#define EOJ_X2_ODOR_SENSOR 0x20
    174166
    175 /* ‰ŠƒZƒ“ƒT */
     167/* 炎センサ */
    176168#define EOJ_X2_FLAME_SENSOR 0x21
    177169
    178 /* “d—͗ʃZƒ“ƒT */
     170/* 電力量センサ */
    179171#define EOJ_X2_ELECTRIC_ENERGY_SENSOR 0x22
    180172
    181 /* “d—¬—ʃZƒ“ƒT */
     173/* 電流量センサ */
    182174#define EOJ_X2_CURRENT_VALUE_SENSOR 0x23
    183175
    184 /* ’‹ŒõƒZƒ“ƒT */
     176/* 昼光センサ */
    185177#define EOJ_X2_DAYLIGHT_SENSOR 0x24
    186178
    187 /* 
    188 —¬—ʃZƒ“ƒT */
     179/* 水流量センサ */
    189180#define EOJ_X2_WATER_FLOW_RATE_SENSOR 0x25
    190181
    191 /* ”÷“®ƒZƒ“ƒT */
     182/* 微動センサ */
    192183#define EOJ_X2_MICROMOTION_SENSOR 0x26
    193184
    194 /* ’ʉ߃Zƒ“ƒT */
     185/* 通過センサ */
    195186#define EOJ_X2_PASSAGE_SENSOR 0x27
    196187
    197 /* Ý°ƒZƒ“ƒT */
     188/* 在床センサ */
    198189#define EOJ_X2_BED_PRESENCE_SENSOR 0x28
    199190
    200 /* ŠJ•ÂƒZƒ“ƒT */
     191/* 開閉センサ */
    201192#define EOJ_X2_OPEN_CLOSE_SENSOR 0x29
    202193
    203 /* Šˆ“®—ʃZƒ“ƒT */
     194/* 活動量センサ */
    204195#define EOJ_X2_ACTIVITY_AMOUNT_SENSOR 0x2A
    205196
    206 /* l‘̈ʒuƒZƒ“ƒT */
     197/* 人体位置センサ */
    207198#define EOJ_X2_HUMAN_BODY_LOCATION_SENSOR 0x2B
    208199
    209 /* áƒZƒ“ƒT */
     200/* 雪センサ */
    210201#define EOJ_X2_SNOW_SENSOR 0x2C
    211202
    212203/*
    213  * ‹ó’²ŠÖ˜A‹@ŠíƒNƒ‰ƒXƒOƒ‹[ƒv *
    214  */
    215 /* ‰Æ’ë—pƒGƒAƒRƒ“ */
     204 * 空調関連機器クラスグループ *
     205 */
     206/* 家庭用エアコン */
    216207#define EOJ_X2_HOME_AIR_CONDITIONER 0x30
    217208
    218 /* —â•—‹@ */
     209/* 冷風機 */
    219210#define EOJ_X2_COLD_BLASTER 0x31
    220211
    221 /* î•—‹@ */
     212/* 扇風機 */
    222213#define EOJ_X2_ELECTRIC_FAN 0x32
    223214
    224 /* Š·‹Cî */
     215/* 換気扇 */
    225216#define EOJ_X2_VENTILATION_FAN 0x33
    226217
    227 /* ‹ó’²Š·‹Cî */
     218/* 空調換気扇 */
    228219#define EOJ_X2_AIR_CONDITIONING_VENTILATION_FAN 0x34
    229220
    230 /* ‹ó‹C´òŠí */
     221/* 空気清浄器 */
    231222#define EOJ_X2_AIR_CLEANER 0x35
    232223
    233 /* —â•—î */
     224/* 冷風扇 */
    234225#define EOJ_X2_COLD_BLAST_FAN 0x36
    235226
    236 /* ƒT[ƒLƒ
    237 ƒŒ[ƒ^ */
     227/* サーキュレータ */
    238228#define EOJ_X2_CIRCULATOR 0x37
    239229
    240 /* œŽ¼‹@ */
     230/* 除湿機 */
    241231#define EOJ_X2_DEHUMIDIFIER 0x38
    242232
    243 /* ‰ÁŽ¼Ší */
     233/* 加湿器 */
    244234#define EOJ_X2_HUMIDIFIER 0x39
    245235
    246 /* “Vˆäî */
     236/* 天井扇 */
    247237#define EOJ_X2_CEILING_FAN 0x3A
    248238
    249 /* “d‹C‚±‚½‚ */
     239/* 電気こたつ */
    250240#define EOJ_X2_ELECTRIC_KOTATSU 0x3B
    251241
    252 /* “d‹C‚ ‚ñ‚© */
     242/* 電気あんか */
    253243#define EOJ_X2_ELECTRIC_HEATING_PAD 0x3C
    254244
    255 /* “d‹C–Ñ•z */
     245/* 電気毛布 */
    256246#define EOJ_X2_ELECTRIC_BLANKET 0x3D
    257247
    258 /* ƒXƒg[ƒu */
     248/* ストーブ */
    259249#define EOJ_X2_SPACE_HEATER 0x3E
    260250
    261 /* ƒpƒlƒ‹ƒq[ƒ^ */
     251/* パネルヒータ */
    262252#define EOJ_X2_PANEL_HEATER 0x3F
    263253
    264 /* “d‹CƒJ[ƒyƒbƒg */
     254/* 電気カーペット */
    265255#define EOJ_X2_ELECTRIC_CARPET 0x40
    266256
    267 /* ƒtƒƒAƒq[ƒ^ */
     257/* フロアヒータ */
    268258#define EOJ_X2_FLOOR_HEATER 0x41
    269259
    270 /* “d‹C’g–[Ší */
     260/* 電気暖房器 */
    271261#define EOJ_X2_ELECTRIC_HEATER 0x42
    272262
    273 /* ƒtƒ@ƒ“ƒq[ƒ^ */
     263/* ファンヒータ */
    274264#define EOJ_X2_FAN_HEATER 0x43
    275265
    276 /* [“dŠí */
     266/* 充電器 */
    277267#define EOJ_X2_BATTERY_CHARGER 0x44
    278268
    279 /* ‹Æ–±—pƒpƒbƒP[ƒWƒGƒAƒRƒ“Žº“à‹@ */
     269/* 業務用パッケージエアコン室内機 */
    280270#define EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_INDOOR_UNIT 0x45
    281271
    282 /* ‹Æ–±—pƒpƒbƒP[ƒWƒGƒAƒRƒ“ŽºŠO‹@ */
     272/* 業務用パッケージエアコン室外機 */
    283273#define EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_OUTDOOR_UNIT 0x46
    284274
    285 /* ‹Æ–±—pƒpƒbƒP[ƒWƒGƒAƒRƒ“’~”Mƒ†ƒjƒbƒg */
     275/* 業務用パッケージエアコン蓄熱ユニット */
    286276#define EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_THERMAL_STORAGE_UNIT 0x47
    287277
    288 /* ‹Æ–±—pƒtƒ@ƒ“ƒRƒCƒ‹ƒ†ƒjƒbƒg */
     278/* 業務用ファンコイルユニット */
    289279#define EOJ_X2_COMMERCIAL_FAN_COIL_UNIT 0x48
    290280
    291 /* ‹Æ–±—p‹ó’²—â”MŒ¹(ƒ`ƒ‰[) */
     281/* 業務用空調冷熱源(チラー) */
    292282#define EOJ_X2_COMMERCIAL_AIR_CONDITIONING_COLD_SOURCE_CHILLER 0x49
    293283
    294 /* ‹Æ–±—p‹ó’²‰·”MŒ¹(ƒ{ƒCƒ‰[) */
     284/* 業務用空調温熱源(ボイラー) */
    295285#define EOJ_X2_COMMERCIAL_AIR_CONDITIONING_HEAT_SOURCE_BOILER 0x50
    296286
    297 /* ‹Æ–±—p‹ó’²VAV */
     287/* 業務用空調VAV */
    298288#define EOJ_X2_AIR_CONDITIONING_VAV_FOR_COMMERCIAL_APPLICATION 0x51
    299289
    300 /* ‹Æ–±—p‹ó’²ƒGƒAƒnƒ“ƒhƒŠƒ“ƒOƒ†ƒjƒbƒg */
     290/* 業務用空調エアハンドリングユニット */
    301291#define EOJ_X2_AIR_HANDLING_UNIT_AIR_CONDITIONING_FOR_COMMERCIAL_APPLICATION 0x52
    302292
    303 /* ƒ†ƒjƒbƒgƒN[ƒ‰[ */
     293/* ユニットクーラー */
    304294#define EOJ_X2_UNIT_COOLER 0x53
    305295
    306 /* ‹Æ–±—pƒRƒ“ƒfƒ“ƒVƒ“ƒOƒ†ƒjƒbƒg */
     296/* 業務用コンデンシングユニット */
    307297#define EOJ_X2_CONDENSING_UNIT_FOR_COMMERCIAL_APPLICATION 0x54
    308298
    309299/*
    310  * Z‘îEÝ”õŠÖ˜A‹@ŠíƒNƒ‰ƒXƒOƒ‹[ƒv *
    311  */
    312 /* “d“®ƒuƒ‰ƒCƒ“ƒh */
     300 * 住宅・設備関連機器クラスグループ *
     301 */
     302/* 電動ブラインド */
    313303#define EOJ_X2_ELECTRICALLY_OPERATED_SHADE 0x60
    314304
    315 /* “d“®ƒVƒƒƒbƒ^[ */
     305/* 電動シャッター */
    316306#define EOJ_X2_ELECTRICALLY_OPERATED_SHUTTER 0x61
    317307
    318 /* “d“®ƒJ[ƒeƒ“ */
     308/* 電動カーテン */
    319309#define EOJ_X2_ELECTRICALLY_OPERATED_CURTAIN 0x62
    320310
    321 /* “d“®‰JŒË */
     311/* 電動雨戸 */
    322312#define EOJ_X2_ELECTRICALLY_OPERATED_STORM_WINDOW 0x63
    323313
    324 /* “d“®ƒKƒŒ[ƒW */
     314/* 電動ガレージ */
    325315#define EOJ_X2_ELECTRICALLY_OPERATED_DOOR 0x64
    326316
    327 /* “d“®“V‘‹ */
     317/* 電動天窓 */
    328318#define EOJ_X2_ELECTRICALLY_OPERATED_SKYLIGHT 0x65
    329319
    330 /* ƒI[ƒjƒ“ƒOi“ú‚悯j */
     320/* オーニング(日よけ) */
    331321#define EOJ_X2_AWNING 0x66
    332322
    333 /* ŽU
    334 Šíi’ë—pj */
     323/* 散水器(庭用) */
    335324#define EOJ_X2_GARDEN_SPRINKLER 0x67
    336325
    337 /* ŽU
    338 Šíi‰ÎÐ—pj */
     326/* 散水器(火災用) */
    339327#define EOJ_X2_FIRE_SPRINKLER 0x68
    340328
    341 /* •¬
    342  */
     329/* 噴水 */
    343330#define EOJ_X2_FOUNTAIN 0x69
    344331
    345 /* uŠÔ“’•¦Ší */
     332/* 瞬間湯沸器 */
    346333#define EOJ_X2_INSTANTANEOUS_WATER_HEATERS 0x6A
    347334
    348 /* “d‹C‰·
    349 Ší */
     335/* 電気温水器 */
    350336#define EOJ_X2_ELECTRIC_WATER_HEATER 0x6B
    351337
    352 /* ‘¾—z”M‰·
    353 Ší */
     338/* 太陽熱温水器 */
    354339#define EOJ_X2_SOLAR_WATER_HEATER 0x6C
    355340
    356 /* zŠÂƒ|ƒ“ƒv */
     341/* 循環ポンプ */
    357342#define EOJ_X2_CIRCULATION_PUMP 0x6D
    358343
    359 /* “d‹C•ÖÀi‰·
    360 ôò•ÖÀA’g–[•ÖÀ‚Ȃǁj */
     344/* 電気便座(温水洗浄便座、暖房便座など) */
    361345#define EOJ_X2_BIDET_EQUIPPED_TOILET 0x6E
    362346
    363 /* “d‹Cù */
     347/* 電気錠 */
    364348#define EOJ_X2_ELECTRIC_KEY 0x6F
    365349
    366 /* ƒKƒXŒ³•Ù */
     350/* ガス元弁 */
    367351#define EOJ_X2_GAS_LINE_VALVE 0x70
    368352
    369 /* ƒz[ƒ€ƒTƒEƒi */
     353/* ホームサウナ */
    370354#define EOJ_X2_HOME_SAUNA 0x71
    371355
    372 /* uŠÔŽ®‹‹“’Ší */
     356/* 瞬間式給湯器 */
    373357#define EOJ_X2_HOT_WATER_GENERATOR 0x72
    374358
    375 /* —Žº’g–[Š£‘‡‹@ */
     359/* 浴室暖房乾燥機 */
    376360#define EOJ_X2_BATHROOM_DRYER 0x73
    377361
    378 /* ƒz[ƒ€ƒGƒŒƒx[ƒ^ */
     362/* ホームエレベータ */
    379363#define EOJ_X2_HOME_ELEVATOR 0x74
    380364
    381 /* “d“®ŠÔŽdØ‚è */
     365/* 電動間仕切り */
    382366#define EOJ_X2_ELECTRICALLY_OPERATED_ROOM_DIVIDER 0x75
    383367
    384 /* 
    385 •½ƒgƒ‰ƒ“ƒXƒtƒ@ */
     368/* 水平トランスファ */
    386369#define EOJ_X2_HORIZONTAL_TRANSFER 0x76
    387370
    388 /* “d“®•¨Š±‚µ */
     371/* 電動物干し */
    389372#define EOJ_X2_ELECTRICALLY_OPERATED_CLOTHES_DRYING_POLE 0x77
    390373
    391 /* ò‰»‘
    392  */
     374/* 浄化槽 */
    393375#define EOJ_X2_SEPTIC_TANK 0x78
    394376
    395 /* Z‘î—p‘¾—zŒõ”­“d */
     377/* 住宅用太陽光発電 */
    396378#define EOJ_X2_HOME_SOLAR_POWER_GENERATION 0x79
    397379
    398 /* —≷
    399 ”MŒ¹‹@ */
     380/* 冷温水熱源機 */
    400381#define EOJ_X2_COLD_AND_HOT_WATER_HEAT_SOURCE_EQUIPMENT 0x7A
    401382
    402 /* °’g–[ */
     383/* 床暖房 */
    403384#define EOJ_X2_FLOOR_HEATING 0x7B
    404385
    405 /* ”R—¿“d’r */
     386/* 燃料電池 */
    406387#define EOJ_X2_FUEL_CELL 0x7C
    407388
    408 /* ’~“d’r */
     389/* 蓄電池 */
    409390#define EOJ_X2_STORAGE_BATTERY 0x7D
    410391
    411 /* “d‹CŽ©“®ŽÔ[•ú“dƒVƒXƒeƒ€ */
     392/* 電気自動車充放電システム */
    412393#define EOJ_X2_ELECTRIC_VEHICLE 0x7E
    413394
    414 /* “d—͗ʃ[ƒ^ */
     395/* 電力量メータ */
    415396#define EOJ_X2_ELECTRIC_ENERGY_METER 0x80
    416397
    417 /* 
    418 —¬—ʃ[ƒ^ */
     398/* 水流量メータ */
    419399#define EOJ_X2_WATER_FLOW_METER 0x81
    420400
    421 /* ƒKƒXƒ[ƒ^ */
     401/* ガスメータ */
    422402#define EOJ_X2_GAS_METER 0x82
    423403
    424 /* LPƒKƒXƒ[ƒ^ */
     404/* LPガスメータ */
    425405#define EOJ_X2_LP_GAS_METERS 0x83
    426406
    427 /* ŽžŒv */
     407/* 時計 */
    428408#define EOJ_X2_CLOCK 0x84
    429409
    430 /* Ž©“®ƒhƒA */
     410/* 自動ドア */
    431411#define EOJ_X2_AUTOMATIC_DOOR 0x85
    432412
    433 /* ‹Æ–±—pƒGƒŒƒx[ƒ^ */
     413/* 業務用エレベータ */
    434414#define EOJ_X2_COMMERCIAL_ELEVATOR 0x86
    435415
    436 /* •ª“d”Õƒ[ƒ^ƒŠƒ“ƒO */
     416/* 分電盤メータリング */
    437417#define EOJ_X2_DISTRIBUTION_PANEL_METERING 0x87
    438418
    439 /* ƒXƒ}[ƒg“d—͗ʃ[ƒ^ */
     419/* スマート電力量メータ */
    440420#define EOJ_X2_SMART_ELECTRIC_ENERGY_METER 0x88
    441421
    442 /* ƒXƒ}[ƒgƒKƒXƒ[ƒ^ */
     422/* スマートガスメータ */
    443423#define EOJ_X2_SMART_GAS_METER 0x89
    444424
    445 /* ˆê”ʏƖ¾ */
     425/* 一般照明 */
    446426#define EOJ_X2_GENERAL_LIGHTING_CLASS 0x90
    447427
    448 /* ”ñíÆ–¾ */
     428/* 非常照明 */
    449429#define EOJ_X2_EMERGENCY_LIGHTING 0x99
    450430
    451 /* Ý”õÆ–¾ */
     431/* 設備照明 */
    452432#define EOJ_X2_EQUIPMENT_LIGHT 0x9D
    453433
    454 /* ƒuƒU[ */
     434/* ブザー */
    455435#define EOJ_X2_BUZZER 0xA0
    456436
    457437/*
    458  * ’²—E‰ÆŽ–ŠÖ˜A‹@ŠíƒNƒ‰ƒXƒOƒ‹[ƒv *
    459  */
    460 /* ƒR[ƒq[ƒ[ƒJ */
     438 * 調理・家事関連機器クラスグループ *
     439 */
     440/* コーヒーメーカ */
    461441#define EOJ_X2_COFFEE_MACHINE 0xB0
    462442
    463 /* ƒR[ƒq[ƒ~ƒ‹ */
     443/* コーヒーミル */
    464444#define EOJ_X2_COFFEE_MILL 0xB1
    465445
    466 /* “d‹Cƒ|ƒbƒg */
     446/* 電気ポット */
    467447#define EOJ_X2_ELECTRIC_HOT_WATER_POT 0xB2
    468448
    469 /* “d‹C‚±‚ñ‚ë */
     449/* 電気こんろ */
    470450#define EOJ_X2_ELECTRIC_STOVE 0xB3
    471451
    472 /* ƒg[ƒXƒ^ */
     452/* トースタ */
    473453#define EOJ_X2_TOASTER 0xB4
    474454
    475 /* ƒWƒ
    476 [ƒTEƒ~ƒLƒT */
     455/* ジューサ・ミキサ */
    477456#define EOJ_X2_JUICER_FOOD_MIXER 0xB5
    478457
    479 /* ƒt[ƒhƒvƒƒZƒbƒT */
     458/* フードプロセッサ */
    480459#define EOJ_X2_FOOD_PROCESSOR 0xB6
    481460
    482 /* —â“€—â‘ ŒÉ */
     461/* 冷凍冷蔵庫 */
    483462#define EOJ_X2_REFRIGERATOR_FREEZER 0xB7
    484463
    485 /* ƒI[ƒuƒ“ƒŒƒ“ƒW */
     464/* オーブンレンジ */
    486465#define EOJ_X2_COMBINATION_MICROWAVE_OVEN 0xB8
    487466
    488 /* ƒNƒbƒLƒ“ƒOƒq[ƒ^ */
     467/* クッキングヒータ */
    489468#define EOJ_X2_COOKING_HEATER 0xB9
    490469
    491 /* ƒI[ƒuƒ“ */
     470/* オーブン */
    492471#define EOJ_X2_OVEN 0xBA
    493472
    494 /* †”ÑŠí */
     473/* 炊飯器 */
    495474#define EOJ_X2_RICE_COOKER 0xBB
    496475
    497 /* “dŽqƒWƒƒ[ */
     476/* 電子ジャー */
    498477#define EOJ_X2_ELECTRONIC_JAR 0xBC
    499478
    500 /* HŠíô‚¢‹@ */
     479/* 食器洗い機 */
    501480#define EOJ_X2_DISH_WASHER 0xBD
    502481
    503 /* HŠíŠ£‘‡‹@ */
     482/* 食器乾燥機 */
    504483#define EOJ_X2_DISH_DRYER 0xBE
    505484
    506 /* “d‹C‚à‚¿‚‚«‹@ */
     485/* 電気もちつき機 */
    507486#define EOJ_X2_ELECTRIC_RICE_CAKE_COOKER 0xBF
    508487
    509 /* •Û‰·‹@ */
     488/* 保温機 */
    510489#define EOJ_X2_KEEP_WARM_MACHINE 0xC0
    511490
    512 /* ¸•Ä‹@ */
     491/* 精米機 */
    513492#define EOJ_X2_RICE_MILL 0xC1
    514493
    515 /* Ž©“®»ƒpƒ“‹@ */
     494/* 自動製パン機 */
    516495#define EOJ_X2_AUTOMATIC_BREAD_COOKER 0xC2
    517496
    518 /* ƒXƒ[ƒNƒbƒJ[ */
     497/* スロークッカー */
    519498#define EOJ_X2_SLOW_COOKER 0xC3
    520499
    521 /* “d‹C’Е¨‹@ */
     500/* 電気漬物機 */
    522501#define EOJ_X2_ELECTRIC_PICKLES_COOKER 0xC4
    523502
    524 /* ô‘ó‹@ */
     503/* 洗濯機 */
    525504#define EOJ_X2_WASHING_MACHINE 0xC5
    526505
    527 /* ˆß—ÞŠ£‘‡‹@ */
     506/* 衣類乾燥機 */
    528507#define EOJ_X2_CLOTH_DRYER 0xC6
    529508
    530 /* “d‹CƒAƒCƒƒ“ */
     509/* 電気アイロン */
    531510#define EOJ_X2_ELECTRIC_IRON 0xC7
    532511
    533 /* ƒYƒ{ƒ“ƒvƒŒƒbƒT */
     512/* ズボンプレッサ */
    534513#define EOJ_X2_TROUSER_PRESS 0xC8
    535514
    536 /* ‚Ó‚Æ‚ñŠ£‘‡‹@ */
     515/* ふとん乾燥機 */
    537516#define EOJ_X2_FUTON_DRYER 0xC9
    538517
    539 /* ¬•¨E‚­‚Š£‘‡‹@ */
     518/* 小物・くつ乾燥機 */
    540519#define EOJ_X2_SMALL_ARTICLE_SHOES_DRYER 0xCA
    541520
    542 /* “d‹C‘|œ‹@iƒZƒ“ƒgƒ‰ƒ‹ƒNƒŠ[ƒiŠÜ‚ށj */
     521/* 電気掃除機(セントラルクリーナ含む) */
    543522#define EOJ_X2_ELECTRIC_VACUUM_CLEANER 0xCB
    544523
    545 /* ƒfƒBƒXƒ|[ƒU */
     524/* ディスポーザ */
    546525#define EOJ_X2_DISPOSER 0xCC
    547526
    548 /* “d‹C‰áŽæ‚è‹@ */
     527/* 電気蚊取り機 */
    549528#define EOJ_X2_ELECTRIC_MOSQUITO_CATCHER 0xCD
    550529
    551 /* ‹Æ–±—pƒVƒ‡[ƒP[ƒX */
     530/* 業務用ショーケース */
    552531#define EOJ_X2_COMMERCIAL_SHOW_CASE 0xCE
    553532
    554 /* ‹Æ–±—p—â‘ ŒÉ */
     533/* 業務用冷蔵庫 */
    555534#define EOJ_X2_COMMERCIAL_REFRIGERATOR 0xCF
    556535
    557 /* ‹Æ–±—pƒzƒbƒgƒP[ƒX */
     536/* 業務用ホットケース */
    558537#define EOJ_X2_COMMERCIAL_HOT_CASE 0xD0
    559538
    560 /* ‹Æ–±—pƒtƒ‰ƒCƒ„[ */
     539/* 業務用フライヤー */
    561540#define EOJ_X2_COMMERCIAL_FRYER 0xD1
    562541
    563 /* ‹Æ–±—p“dŽqƒŒƒ“ƒW */
     542/* 業務用電子レンジ */
    564543#define EOJ_X2_COMMERCIAL_MICROWAVE_OVEN 0xD2
    565544
    566 /* ô‘󊣑‡‹@ */
     545/* 洗濯乾燥機 */
    567546#define EOJ_X2_WASHER_AND_DRYER 0xD3
    568547
    569548/*
    570  * Œ’NŠÖ˜A‹@ŠíƒNƒ‰ƒXƒOƒ‹[ƒv *
    571  */
    572 /* ‘̏dŒv */
     549 * 健康関連機器クラスグループ *
     550 */
     551/* 体重計 */
    573552#define EOJ_X2_WEIGHING_MACHINE 0x01
    574553
    575 /* ‘̉·Œv */
     554/* 体温計 */
    576555#define EOJ_X2_CLINICAL_THERMOMETER 0x02
    577556
    578 /* ŒŒˆ³Œv */
     557/* 血圧計 */
    579558#define EOJ_X2_BLOOD_PRESSURE_METER 0x03
    580559
    581 /* ŒŒ“œ’lŒv */
     560/* 血糖値計 */
    582561#define EOJ_X2_BLOOD_SUGAR_METER 0x04
    583562
    584 /* ‘ÌŽ‰–bŒv */
     563/* 体脂肪計 */
    585564#define EOJ_X2_BODY_FAT_METER 0x05
    586565
    587566/*
    588  * ŠÇ—E‘€ìŠÖ˜A‹@ŠíƒNƒ‰ƒXƒOƒ‹[ƒv *
    589  */
    590 /* ƒZƒLƒ
    591 ƒA’ʐM—p‹¤—LŒ®Ý’èƒm[ƒh */
     567 * 管理・操作関連機器クラスグループ *
     568 */
     569/* セキュア通信用共有鍵設定ノード */
    592570#define EOJ_X2_SECURE_COMMUNICATION_SHARED_KEY_SETUP_NODE 0xFC
    593571
    594 /* ƒXƒCƒbƒ`iJEMA/HA’[Žq‘Ήžj */
     572/* スイッチ(JEMA/HA端子対応) */
    595573#define EOJ_X2_SWITCH 0xFD
    596574
    597 /* Œg‘Ñ’[–– */
     575/* 携帯端末 */
    598576#define EOJ_X2_PORTABLE_TERMINAL 0xFE
    599577
    600 /* ƒRƒ“ƒgƒ[ƒ‰ */
     578/* コントローラ */
    601579#define EOJ_X2_CONTROLLER 0xFF
    602580
    603581/*
    604  * ‚`‚uŠÖ˜A‹@ŠíƒNƒ‰ƒXƒOƒ‹[ƒv *
    605  */
    606 /* ƒfƒBƒXƒvƒŒ[ */
     582 * AV関連機器クラスグループ *
     583 */
     584/* ディスプレー */
    607585#define EOJ_X2_DISPLAY 0x01
    608586
    609 /* ƒeƒŒƒr */
     587/* テレビ */
    610588#define EOJ_X2_TELEVISION 0x02
    611589
    612590/*
    613  * ƒvƒƒtƒ@ƒCƒ‹ƒNƒ‰ƒXƒOƒ‹[ƒv *
    614  */
    615 /* ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹ */
     591 * プロファイルクラスグループ *
     592 */
     593/* ノードプロファイル */
    616594#define EOJ_X2_NODE_PROFILE 0xF0
    617595
  • uKadecot/trunk/ecnl_ssp/echonet_dbg.c

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
     
    4137
    4238/*
    43  *              ECHONET Lite ƒ^ƒXƒN ƒfƒoƒbƒOo—Í
     39 *              ECHONET Lite タスク デバッグ出力
    4440 */
    4541
     
    7167static ER _ecn_dbg_wai_syslog(void);
    7268/*
    73  *  syslog()ƒoƒbƒtƒ@‚É—]—T‚ª‚Å‚«‚é‚Ü‚Å‘Ò‚Â
     69 *  syslog()バッファに余裕ができるまで待つ
    7470 */
    7571static ER _ecn_dbg_wai_syslog(void)
     
    112108
    113109/*
    114  * ƒfƒoƒbƒOo—Í
    115  * —áF         ECN_DBG_PUT "task start" ECN_DBG_END;
     110 * デバッグ出力
     111 * 例:           ECN_DBG_PUT "task start" ECN_DBG_END;
    116112 */
    117113int _ecn_dbg_dbgput(const char *fp_srcloc, const char *fp_form, ...)
     
    122118#ifdef ECN_DBG_PUT_USE_STATIC
    123119 #ifndef SEM_ECN_DBG_PUT
    124         /* 256byteƒoƒbƒtƒ@8–{ƒ[ƒe[ƒVƒ‡ƒ“ */
     120        /* 256byteバッファ8本ローテーション */
    125121        static char                             a_buf[8][256];
    126122        static volatile uint_t  a_buf_idx = 0;
    127123        uint_t                                  a_buf_idx_a;
    128124 #else
    129         /* ƒZƒ}ƒtƒH‚ð—p‚¢‚āA1–{‚̃oƒbƒtƒ@ã‚É•¶Žš—ñ‚ð•À‚ׂĎg‚¤ */
     125        /* セマフォを用いて、1本のバッファ上に文字列を並べて使う */
    130126        static char                             a_buf[1024];
    131127        static volatile uint_t  a_buf_pos = 0;
     
    152148        p_buf = a_buf[a_buf_idx_a & 0x07];
    153149 #else
    154         if (sizeof(a_buf) - a_buf_pos < 80)     /* Žc‚肪80byte–¢–ž‚É‚È‚Á‚½‚çAæ“ª‚É–ß‚é */
     150        if (sizeof(a_buf) - a_buf_pos < 80)     /* 残りが80byte未満になったら、先頭に戻る */
    155151                a_buf_pos = 0;
    156152        p_buf = a_buf + a_buf_pos;
    157153        a_buf_len = sizeof(a_buf) - a_buf_pos - 1;
    158         if (80 * 2 <= a_buf_len)        /* 80byte*2ˆÈã‚Ì—]”’‚ª‚ ‚邤‚¿‚́A––”ö80byte‚ðŽc‚· */
     154        if (80 * 2 <= a_buf_len)        /* 80byte*2以上の余白があるうちは、末尾80byteを残す */
    159155                a_buf_len -= 80;
    160156 #endif /* #ifdef SEM_ECN_DBG_PUT */
     
    180176 #ifdef SEM_ECN_DBG_PUT
    181177        a_buf_len = strlen(p_buf) + 1;
    182         /* Žc‚肪80byte–¢–ž‚É‚È‚Á‚½‚ç */
     178        /* 残りが80byte未満になったら */
    183179        if (sizeof(a_buf) - a_buf_pos - a_buf_len < 80) {
    184                 /* æ“ª‚É–ß‚é */
     180                /* 先頭に戻る */
    185181                a_buf_pos = 0;
    186182        } else {
     
    190186#endif
    191187
    192         _ECN_DBG_WAI_SYSLOG; /* syslog()ƒoƒbƒtƒ@‚É—]—T‚ª‚Å‚«‚é‚Ü‚Å‘Ò‚Â */
     188        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    193189
    194190#ifdef SEM_ECN_DBG_PUT
     
    206202}
    207203
    208 /* ECN_ENOD_ID‚Ì•¶Žš—ñ•ÏŠ· */
     204/* ECN_ENOD_IDの文字列変換 */
    209205const char *_ecn_dbg_enod2str(ECN_ENOD_ID fa_enod_id)
    210206{
     
    254250
    255251/*
    256  * ƒoƒCƒiƒŠƒ_ƒ“ƒvo—Í
     252 * バイナリダンプ出力
    257253 */
    258254void _ecn_dbg_bindmp(const uint8_t *buffer, size_t len)
    259255{
    260         /* static—̈æ‚̃oƒbƒtƒ@‚ðØ‚è‘Ö‚¦‚éŒÂ”(2^n) */
     256        /* static領域のバッファを切り替える個数(2^n) */
    261257        #define _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT (4)
    262258/*      */
     
    264260 #ifdef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT
    265261  #undef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT
    266   /* ƒZƒ}ƒtƒH(SEM_ECN_DBG_BINDMP)‚ª’è‹`‚³‚ê‚Ä‚¢‚éê‡Aƒoƒbƒtƒ@Ø‚è‘Ö‚¦‚Í•s—v‚È‚Ì‚Åundef */
     262  /* セマフォ(SEM_ECN_DBG_BINDMP)が定義されている場合、バッファ切り替えは不要なのでundef */
    267263 #endif
    268264#endif
    269265#ifndef _ECN_FBS_DBG_BINDMP_BUFLEN
    270  /* ƒoƒbƒtƒ@ƒTƒCƒY(bindmp’†‚Ì1s‚ªŽû‚Ü‚éƒTƒCƒY) */
     266 /* バッファサイズ(bindmp中の1行が収まるサイズ) */
    271267 #define _ECN_FBS_DBG_BINDMP_BUFLEN (80)
    272268#endif
    273269#ifdef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT
    274         /* static—̈æ‚̃oƒbƒtƒ@‚ðØ‚è‘Ö‚¦‚邽‚ß‚ÌŠÇ——p•Ï” */
     270        /* static領域のバッファを切り替えるための管理用変数 */
    275271        static volatile uint8_t a_idx_vol = 0;
    276         /* static—̈æ‚̃oƒbƒtƒ@Ø‚è‘Ö‚¦—̈æ */
     272        /* static領域のバッファ切り替え領域 */
    277273        static char a_buf_area[1 << _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT][_ECN_FBS_DBG_BINDMP_BUFLEN];
    278274        uint8_t a_idx;
    279275        char *a_buf;
    280276#else
    281         /* static—̈æ‚̃oƒbƒtƒ@—̈æ */
     277        /* static領域のバッファ領域 */
    282278        static char a_buf[_ECN_FBS_DBG_BINDMP_BUFLEN];
    283279#endif
    284         const uint8_t *p = buffer;                      /* “Ç‚ÝŽæ‚èƒ|ƒCƒ“ƒ^ */
     280        const uint8_t *p = buffer;                      /* 読み取りポインタ */
    285281        int i, a_blk, a_blk_max, a_pos = 0;
    286282        const T_ECN_EDT_HDR *p_req_esv;
     
    300296        }
    301297        #ifndef ECN_DBG_BINDMP_MAXLEN
    302          /* bindmpo—͂̍őåƒTƒCƒY */
     298         /* bindmp出力の最大サイズ */
    303299         #define ECN_DBG_BINDMP_MAXLEN 1600
    304300        #endif
     
    315311        for (a_blk = 0; p && a_blk < a_blk_max; p = ((T_ECN_FST_BLK *)buffer)->lnk.p_sub[a_blk++]->dat) {
    316312                if (0 < a_blk) {
    317                         _ECN_DBG_WAI_SYSLOG; /* syslog()ƒoƒbƒtƒ@‚É—]—T‚ª‚Å‚«‚é‚Ü‚Å‘Ò‚Â */
     313                        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    318314                        syslog(LOG_NOTICE, "p_sub[%d] (0x%08X)", a_blk - 1, p);
    319315                }
     
    322318                        if (i % 16 == 0) {
    323319                                if (a_buf[0]) {
    324                                         _ECN_DBG_WAI_SYSLOG; /* syslog()ƒoƒbƒtƒ@‚É—]—T‚ª‚Å‚«‚é‚Ü‚Å‘Ò‚Â */
     320                                        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    325321                                        syslog(LOG_NOTICE, "%s", a_buf);
    326322                                }
     
    342338                }
    343339                if (a_buf[0]) {
    344                         _ECN_DBG_WAI_SYSLOG; /* syslog()ƒoƒbƒtƒ@‚É—]—T‚ª‚Å‚«‚é‚Ü‚Å‘Ò‚Â */
     340                        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    345341                        syslog(LOG_NOTICE, "%s", a_buf);
    346342                }
     
    353349                case ECN_MSG_ECHONET:
    354350                        p_req_esv = &((const T_ECN_FST_BLK *)buffer)->d.t_esv;
    355                         _ECN_DBG_WAI_SYSLOG; /* syslog()ƒoƒbƒtƒ@‚É—]—T‚ª‚Å‚«‚é‚Ü‚Å‘Ò‚Â */
     351                        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    356352                        syslog(LOG_NOTICE, " sender: %d %s, target: %d %s",
    357353                                ((T_ECN_FST_BLK *)buffer)->hdr.sender, _ecn_dbg_enod2str(((T_ECN_FST_BLK *)buffer)->hdr.sender),
    358354                                ((T_ECN_FST_BLK *)buffer)->hdr.target, _ecn_dbg_enod2str(((T_ECN_FST_BLK *)buffer)->hdr.target));
    359                         _ECN_DBG_WAI_SYSLOG; /* syslog()ƒoƒbƒtƒ@‚É—]—T‚ª‚Å‚«‚é‚Ü‚Å‘Ò‚Â */
     355                        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    360356                        syslog(LOG_NOTICE, " 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);
    361                         _ECN_DBG_WAI_SYSLOG; /* syslog()ƒoƒbƒtƒ@‚É—]—T‚ª‚Å‚«‚é‚Ü‚Å‘Ò‚Â */
     357                        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    362358                        syslog(LOG_NOTICE, " edata: 0x%06X 0x%06X 0x%02X 0x%02X (%s)",
    363359                                p_req_esv->edata.seoj.eojx1 << 16 | p_req_esv->edata.seoj.eojx2 << 8 | p_req_esv->edata.seoj.eojx3,
    364360                                p_req_esv->edata.deoj.eojx1 << 16 | p_req_esv->edata.deoj.eojx2 << 8 | p_req_esv->edata.deoj.eojx3,
    365361                                p_req_esv->edata.esv, p_req_esv->edata.opc, _ecn_dbg_esv2str(p_req_esv->edata.esv));
    366                         _ECN_DBG_WAI_SYSLOG; /* syslog()ƒoƒbƒtƒ@‚É—]—T‚ª‚Å‚«‚é‚Ü‚Å‘Ò‚Â */
     362                        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    367363                        syslog(LOG_NOTICE, " ecn_prp: 0x%02X 0x%02X", p_req_esv->ecn_prp.epc, p_req_esv->ecn_prp.pdc);
    368                         _ECN_DBG_WAI_SYSLOG; /* syslog()ƒoƒbƒtƒ@‚É—]—T‚ª‚Å‚«‚é‚Ü‚Å‘Ò‚Â */
     364                        _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    369365                        syslog(LOG_NOTICE, " cur(blk/pos): wr %d/%d, rd %d/%d",
    370366                                (int)((T_ECN_FST_BLK *)buffer)->hdr.wr.blk,
     
    403399        && ((const T_ECN_FST_BLK *)buffer)->bin[1] == 0x81) {
    404400                p_req_esv = (const T_ECN_EDT_HDR *)&((const T_ECN_FST_BLK *)buffer)->bin[0];
    405                 _ECN_DBG_WAI_SYSLOG; /* syslog()ƒoƒbƒtƒ@‚É—]—T‚ª‚Å‚«‚é‚Ü‚Å‘Ò‚Â */
     401                _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    406402                syslog(LOG_NOTICE, " 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);
    407                 _ECN_DBG_WAI_SYSLOG; /* syslog()ƒoƒbƒtƒ@‚É—]—T‚ª‚Å‚«‚é‚Ü‚Å‘Ò‚Â */
     403                _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    408404                syslog(LOG_NOTICE, " edata: 0x%06X 0x%06X 0x%02X 0x%02X (%s)",
    409405                        p_req_esv->edata.seoj.eojx1 << 16 | p_req_esv->edata.seoj.eojx2 << 8 | p_req_esv->edata.seoj.eojx3,
    410406                        p_req_esv->edata.deoj.eojx1 << 16 | p_req_esv->edata.deoj.eojx2 << 8 | p_req_esv->edata.deoj.eojx3,
    411407                        p_req_esv->edata.esv, p_req_esv->edata.opc, _ecn_dbg_esv2str(p_req_esv->edata.esv));
    412                 _ECN_DBG_WAI_SYSLOG; /* syslog()ƒoƒbƒtƒ@‚É—]—T‚ª‚Å‚«‚é‚Ü‚Å‘Ò‚Â */
     408                _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */
    413409                syslog(LOG_NOTICE, " ecn_prp: 0x%02X 0x%02X", p_req_esv->ecn_prp.epc, p_req_esv->ecn_prp.pdc);
    414410        }
     
    419415
    420416/*
    421  * ECHONET LiteƒT[ƒrƒXƒR[ƒh•¶Žš—ñ•ÏŠ·
     417 * ECHONET Liteサービスコード文字列変換
    422418 */
    423419const char *_ecn_dbg_esv2str(uint8_t fa_esv)
    424420{
    425421        switch (fa_esv) {
    426         case ESV_SET_I_SNA:             return "ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹•s‰Â‰ž“š";                      /* 0x50 */
    427         case ESV_SET_C_SNA:             return "ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹•s‰Â‰ž“š";                      /* 0x51 */
    428         case ESV_GET_SNA:               return "ƒvƒƒpƒeƒB’l“ǂݏo‚µ•s‰Â‰ž“š";                          /* 0x52 */
    429         case ESV_INF_SNA:               return "ƒvƒƒpƒeƒB’l’Ê’m•s‰Â‰ž“š";                                      /* 0x53 */
    430         case ESV_SET_GET_SNA:   return "ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ•s‰Â‰ž“š";        /* 0x5E */
    431         case ESV_SET_I:                 return "ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š•s—vj";          /* 0x60 */
    432         case ESV_SET_C:                 return "ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š—vj";            /* 0x61 */
    433         case ESV_GET:                   return "ƒvƒƒpƒeƒB’l“ǂݏo‚µ—v‹";                                      /* 0x62 */
    434         case ESV_INF_REQ:               return "ƒvƒƒpƒeƒB’l’Ê’m—v‹";                                          /* 0x63 */
    435         case ESV_SET_GET:               return "ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ—v‹";            /* 0x6E */
    436         case ESV_SET_RES:               return "ƒvƒƒpƒeƒB’l‘‚«ž‚݉ž“š";                                      /* 0x71 */
    437         case ESV_GET_RES:               return "ƒvƒƒpƒeƒB’l“ǂݏo‚µ‰ž“š";                                      /* 0x72 */
    438         case ESV_INF:                   return "ƒvƒƒpƒeƒB’l’Ê’m";                                                      /* 0x73 */
    439         case ESV_INFC:                  return "ƒvƒƒpƒeƒB’l’Ê’mi‰ž“š—vj";                            /* 0x74 */
    440         case ESV_SET_GET_RES:   return "ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ‰ž“š";            /* 0x7E */
    441         case ESV_INFC_RES:              return "ƒvƒƒpƒeƒB’l’Ê’m‰ž“š";                                          /* 0x7A */
     422        case ESV_SET_I_SNA:             return "プロパティ値書き込み要求不可応答";                      /* 0x50 */
     423        case ESV_SET_C_SNA:             return "プロパティ値書き込み要求不可応答";                      /* 0x51 */
     424        case ESV_GET_SNA:               return "プロパティ値読み出し不可応答";                                /* 0x52 */
     425        case ESV_INF_SNA:               return "プロパティ値通知不可応答";                                  /* 0x53 */
     426        case ESV_SET_GET_SNA:   return "プロパティ値書き込み・読み出し不可応答";   /* 0x5E */
     427        case ESV_SET_I:                 return "プロパティ値書き込み要求(応答不要)";            /* 0x60 */
     428        case ESV_SET_C:                 return "プロパティ値書き込み要求(応答要)";             /* 0x61 */
     429        case ESV_GET:                   return "プロパティ値読み出し要求";                                  /* 0x62 */
     430        case ESV_INF_REQ:               return "プロパティ値通知要求";                                            /* 0x63 */
     431        case ESV_SET_GET:               return "プロパティ値書き込み・読み出し要求";             /* 0x6E */
     432        case ESV_SET_RES:               return "プロパティ値書き込み応答";                                  /* 0x71 */
     433        case ESV_GET_RES:               return "プロパティ値読み出し応答";                                  /* 0x72 */
     434        case ESV_INF:                   return "プロパティ値通知";                                                      /* 0x73 */
     435        case ESV_INFC:                  return "プロパティ値通知(応答要)";                         /* 0x74 */
     436        case ESV_SET_GET_RES:   return "プロパティ値書き込み・読み出し応答";             /* 0x7E */
     437        case ESV_INFC_RES:              return "プロパティ値通知応答";                                            /* 0x7A */
    442438        default:
    443439                return "(unknown)";
  • uKadecot/trunk/ecnl_ssp/echonet_dbg.cfg

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
     
    4137
    4238/*
    43  *  ƒlƒbƒgƒ[ƒN‘ΉžƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€(1)‚Ì
    44  *  ƒVƒXƒeƒ€ƒRƒ“ƒtƒBƒMƒ
    45 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹
     39 *  ネットワーク対応サンプルプログラム(1)の
     40 *  システムコンフィギュレーションファイル
    4641 */
    4742
     
    5550/* INCLUDE("tinet/tinet_asp.cfg"); // */
    5651
    57 /* ƒZƒ}ƒtƒH */
     52/* セマフォ */
    5853
    5954CRE_SEM(SEM_ECN_DBG_PUT, { TA_TPRI, 1, 1 });
  • uKadecot/trunk/ecnl_ssp/echonet_dbg.h

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
     
    4137
    4238/*
    43  *              ECHONET Lite ƒ^ƒXƒN ƒfƒoƒbƒOo—Í
     39 *              ECHONET Lite タスク デバッグ出力
    4440 */
    4541
     
    5652#define ECN_DBG_PUT syslog(LOG_WARNING,
    5753#define ECN_DBG_END )
    58 /* —áF         ECN_DBG_PUT "task start" ECN_DBG_END; */
     54/* 例:           ECN_DBG_PUT "task start" ECN_DBG_END; */
    5955#else
    6056#define ECN_DBG_PUT for (;0;
     
    6258#endif
    6359
    64 /* ƒfƒoƒbƒOo—Í(CARP) */
     60/* デバッグ出力(CARP) */
    6561#ifdef ECN_CAP_PUT_ENA
    6662#define ECN_CAP_PUT syslog(LOG_DEBUG,
    6763#define ECN_CAP_END )
    68 /* —áF         ECN_CAP_PUT "task start" ECN_CAP_END; */
     64/* 例:           ECN_CAP_PUT "task start" ECN_CAP_END; */
    6965#else
    7066#define ECN_CAP_PUT for (;0;
  • uKadecot/trunk/ecnl_ssp/echonet_fbs.c

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
     
    4137
    4238/*
    43  * ŒÅ’è’·ƒoƒbƒtƒ@‰Â•Ï’·ƒXƒgƒŠ[ƒ€
     39 * 固定長バッファ可変長ストリーム
    4440 */
    4541
     
    353349}
    354350
    355 /* ƒƒ‚ƒŠƒuƒƒbƒNŽæ“¾ ok:ƒ|ƒCƒ“ƒ^ NG:NULL */
     351/* メモリブロック取得 ok:ポインタ NG:NULL */
    356352void *_ecn_fbs_mbx_get(ECN_FBS_SIZE_T fa_req_size)
    357353{
     
    363359}
    364360
    365 /* ƒƒ‚ƒŠƒuƒƒbƒN‰ð•ú */
     361/* メモリブロック解放 */
    366362ER _ecn_fbs_mbx_rel(void *p)
    367363{
     
    369365}
    370366
    371 /* —̈æŠm•Û */
     367/* 領域確保 */
    372368ER _ecn_fbs_cre(ECN_FBS_SIZE_T fa_req_size, ECN_FBS_ID *fp_id)
    373369{
     
    375371}
    376372
    377 /* —̈æ‰ð•ú */
     373/* 領域解放 */
    378374ER _ecn_fbs_del(ECN_FBS_ID fa_id)
    379375{
     
    381377}
    382378
    383 /* •ÛŽƒf[ƒ^‚Ì—L–³ */
     379/* 保持データの有無 */
    384380bool_t _ecn_fbs_exist_data(ECN_FBS_ID fa_id)
    385381{
     
    387383}
    388384
    389 /* •ÛŽƒf[ƒ^’·‚̎擾 */
     385/* 保持データ長の取得 */
    390386ECN_FBS_SSIZE_T _ecn_fbs_get_datalen(ECN_FBS_ID fa_id)
    391387{
     
    393389}
    394390
    395 /* “Ç‚ÝŽæ‚èƒJ[ƒ\ƒ‹‚̈ʒuŽæ“¾ */
     391/* 読み取りカーソルの位置取得 */
    396392ECN_FBS_SSIZE_T _ecn_fbs_get_rpos(ECN_FBS_ID fa_id)
    397393{
     
    399395}
    400396
    401 /* “Ç‚ÝŽæ‚èƒJ[ƒ\ƒ‹‚̈ʒuÝ’è */
     397/* 読み取りカーソルの位置設定 */
    402398ER _ecn_fbs_set_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_pos)
    403399{
    404         if (fa_id.ptr->hdr.length <= (unsigned int)fa_pos)      /* ˆÊ’uŽw’肪‘å‚«‚·‚¬‚é */
     400        if (fa_id.ptr->hdr.length <= (unsigned int)fa_pos)      /* 位置指定が大きすぎる */
    405401                return E_PAR;
    406402
     
    410406}
    411407
    412 /* “Ç‚ÝŽæ‚èƒJ[ƒ\ƒ‹‚̈ʒuˆÚ“® */
     408/* 読み取りカーソルの位置移動 */
    413409ER _ecn_fbs_seek_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek)
    414410{
     
    420416}
    421417
    422 /* ”CˆÓŽw’èˆÊ’u‚Ì1byte“Ç‚ÝŽæ‚è */
     418/* 任意指定位置の1byte読み取り */
    423419int _ecn_fbs_peek(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek)
    424420{
     
    431427}
    432428
    433 /* ”CˆÓŽw’èˆÊ’u‚Ì1byte‘‚«ž‚Ý */
     429/* 任意指定位置の1byte書き込み */
    434430ER _ecn_fbs_poke(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek, int fa_val)
    435431{
     
    442438}
    443439
    444 /* ƒf[ƒ^’ljÁ */
     440/* データ追加 */
    445441ER _ecn_fbs_add_data(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len)
    446442{
     
    452448}
    453449
    454 /* ƒf[ƒ^’ljÁ(—̈æ‚ðŽ©“®“I‚ÉŠg’£‚·‚é) */
     450/* データ追加(領域を自動的に拡張する) */
    455451ER _ecn_fbs_add_data_ex(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len)
    456452{
     
    459455}
    460456
    461 /* ƒf[ƒ^Žæ“¾ */
     457/* データ取得 */
    462458ER _ecn_fbs_get_data(ECN_FBS_ID fa_id, void *fa_buf, ECN_FBS_SSIZE_T fa_maxlen, ECN_FBS_SSIZE_T *p_len)
    463459{
  • uKadecot/trunk/ecnl_ssp/echonet_fbs.h

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
    32  *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     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 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
     
    4137
    4238/*
    43  * ŒÅ’è’·ƒoƒbƒtƒ@‰Â•Ï’·ƒXƒgƒŠ[ƒ€
     39 * 固定長バッファ可変長ストリーム
    4440 */
    4541
     
    5551
    5652#ifndef NUM_ECHONET_MEMPOOL_BLOCK
    57 #define NUM_ECHONET_MEMPOOL_BLOCK (60)          /* “d•¶—pƒƒ‚ƒŠƒuƒƒbƒN‚̐” */
     53#define NUM_ECHONET_MEMPOOL_BLOCK (60)          /* 電文用メモリブロックの数 */
    5854#endif /* NUM_ECHONET_MEMPOOL_BLOCK */
    5955
    6056#ifndef ECHONET_MEMPOOL_BLOCK_SIZE
    61 #define ECHONET_MEMPOOL_BLOCK_SIZE (256)        /* “d•¶—pƒƒ‚ƒŠƒuƒƒbƒN‚̃TƒCƒY */
     57#define ECHONET_MEMPOOL_BLOCK_SIZE (256)        /* 電文用メモリブロックのサイズ */
    6258#endif /* ECHONET_MEMPOOL_BLOCK_SIZE */
    6359
    64 typedef unsigned int ECN_FBS_SIZE_T;    /* size_t‘Š“–  */
    65 typedef int ECN_FBS_SSIZE_T;                    /* ssize_t‘Š“– */
    66 
    67 /* T_EDATAŠÇ——̈æƒTƒCƒY */
     60typedef unsigned int ECN_FBS_SIZE_T;    /* size_t相当  */
     61typedef int ECN_FBS_SSIZE_T;                    /* ssize_t相当 */
     62
     63/* T_EDATA管理領域サイズ */
    6864#ifdef TARGET_KERNEL_ASP
    6965#define DEF_ECN_EDT_HDR_LEN (sizeof(T_MSG))
     
    7268#endif
    7369
    74 /* ŠÇ——̈æƒTƒCƒY(64byte - sizeof(T_MSG)) */
     70/* 管理領域サイズ(64byte - sizeof(T_MSG)) */
    7571/* #define DEF_ECN_FBS_LIB_HDR_LEN ((ECHONET_MEMPOOL_BLOCK_SIZE + sizeof(int) - 1)>> 2) // */
    7672#define DEF_ECN_FBS_LIB_HDR_LEN (64 - DEF_ECN_EDT_HDR_LEN)
    7773
    78 /* ŠÇ——̈æ‚ðŠÜ‚ÞƒuƒƒbƒN‚É•ÛŽ‚·‚éƒf[ƒ^ƒTƒCƒY */
     74/* 管理領域を含むブロックに保持するデータサイズ */
    7975#define DEF_ECN_FBS_FST_DAT_LEN (64)
    8076
    81 /* ƒŠƒ“ƒNƒ|ƒCƒ“ƒ^”z—ñ‚̃TƒCƒY(byte) */
     77/* リンクポインタ配列のサイズ(byte) */
    8278#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)
    8379
    84 /* ŒÅ’è’·ƒoƒbƒtƒ@Å‘åƒTƒCƒY */
     80/* 固定長バッファ最大サイズ */
    8581#define DEF_ECN_FBS_BUF_MAXLEN ((DEF_ECN_FBS_LNK_LEN / sizeof(void *)) * ECHONET_MEMPOOL_BLOCK_SIZE + DEF_ECN_FBS_FST_DAT_LEN)
    8682
    87 /* Žq—v‘fƒoƒbƒtƒ@‚̃TƒCƒY */
     83/* 子要素バッファのサイズ */
    8884#define DEF_ECN_FBS_SUB_BUF_LEN ECHONET_MEMPOOL_BLOCK_SIZE
    8985
    90 /* “d•¶‚ÌŽí•Ê(“à—e‚͉¼) */
     86/* 電文の種別(内容は仮) */
    9187typedef enum
    9288{
    93         ECN_FBS_TYPE_BLANK              =       0,              /* –¢Žg—pƒXƒgƒŠ[ƒ€ */
    94         ECN_FBS_TYPE_INTERNAL   =       1,              /* “à•”ƒƒbƒZ[ƒW */
    95         ECN_FBS_TYPE_ECHONET    =       2               /* ECHONET“d•¶ */
     89        ECN_FBS_TYPE_BLANK              =       0,              /* 未使用ストリーム */
     90        ECN_FBS_TYPE_INTERNAL   =       1,              /* 内部メッセージ */
     91        ECN_FBS_TYPE_ECHONET    =       2               /* ECHONET電文 */
    9692} TA_ECN_MSG_TYPE;
    9793
    98 /* ƒŠƒ“ƒNƒ|ƒCƒ“ƒ^”z—ñ‚É—ñ‹“‚³‚ê‚éAŽq—v‘fƒoƒbƒtƒ@ */
     94/* リンクポインタ配列に列挙される、子要素バッファ */
    9995typedef struct
    10096{
     
    10298} T_ECN_SUB_BLK;
    10399
    104 /* ƒŠƒ“ƒNƒ|ƒCƒ“ƒ^”z—ñ */
     100/* リンクポインタ配列 */
    105101typedef union
    106102{
     
    109105} T_ECN_FBS_LNK;
    110106
    111 /* ŠÇ——̈æ(64byte - sizeof(T_MSG)) */
     107/* 管理領域(64byte - sizeof(T_MSG)) */
    112108typedef struct
    113109{
    114         uint16_t        length;                 /* ƒƒbƒZ[ƒW’· */
    115         uint16_t        type;                   /* ƒƒbƒZ[ƒWƒ^ƒCƒv */
     110        uint16_t        length;                 /* メッセージ長 */
     111        uint16_t        type;                   /* メッセージタイプ */
    116112        union{
    117                 ECN_ENOD_ID sender;             /* ‘—MŒ³ƒm[ƒhIDiECHONET“d•¶j */
    118                 ID sender_mbxid;                /* ‘—MŒ³ƒ[ƒ‹ƒ{ƒbƒNƒXIDi“à•”ƒƒbƒZ[ƒWj */
     113                ECN_ENOD_ID sender;             /* 送信元ノードID(ECHONET電文) */
     114                ID sender_mbxid;                /* 送信元メールボックスID(内部メッセージ) */
    119115        };
    120116        union{
    121                 ECN_ENOD_ID target;             /* ‘—Mæƒm[ƒhIDiECHONET“d•¶j */
    122                 ID target_mbxid;                /* ‘—Mæƒ[ƒ‹ƒ{ƒbƒNƒXIDi“à•”ƒƒbƒZ[ƒWj */
     117                ECN_ENOD_ID target;             /* 送信先ノードID(ECHONET電文) */
     118                ID target_mbxid;                /* 送信先メールボックスID(内部メッセージ) */
    123119        };
    124120        union{
    125                 ECN_ENOD_ID reply;              /* •ÔMæƒm[ƒhIDiECHONET“d•¶j */
    126                 ID reply_mbxid;                 /* •ÔMæƒ[ƒ‹ƒ{ƒbƒNƒXIDi“à•”ƒƒbƒZ[ƒWj */
     121                ECN_ENOD_ID reply;              /* 返信先ノードID(ECHONET電文) */
     122                ID reply_mbxid;                 /* 返信先メールボックスID(内部メッセージ) */
    127123        };
    128124
    129         int                     rd;                             /*      “Ç‚ÝŽæ‚èƒwƒbƒhî•ñ      */
    130         int                     wr;                             /*      ‘‚«ž‚݃wƒbƒhî•ñ      */
     125        int                     rd;                             /*      読み取りヘッド情報       */
     126        int                     wr;                             /*      書き込みヘッド情報       */
    131127} T_ECN_FBS_HDR;
    132128
    133 /* ŠÇ——̈æ‚ðŠÜ‚ÞƒuƒƒbƒN‚̍\‘¢ */
     129/* 管理領域を含むブロックの構造 */
    134130typedef struct
    135131{
    136132        uint8_t _msg[DEF_ECN_EDT_HDR_LEN];      /* T_MSG */
    137         T_ECN_FBS_HDR   hdr;    /*      ŠÇ——Ìˆæ  64byte  - sizeof(T_MSG)       */
     133        T_ECN_FBS_HDR   hdr;    /*      管理領域  64byte  - sizeof(T_MSG)   */
    138134        uint8_t                 _gap[DEF_ECN_FBS_LIB_HDR_LEN - sizeof(T_ECN_FBS_HDR)];
    139         T_ECN_FBS_LNK   lnk;    /*      ƒŠƒ“ƒNƒ|ƒCƒ“ƒ^”z—ñ      128byte                 */
     135        T_ECN_FBS_LNK   lnk;    /*      リンクポインタ配列       128byte                 */
    140136        uint8_t                 payload[DEF_ECN_FBS_FST_DAT_LEN];
    141137} T_ECN_FST_BLK;
     
    147143} ECN_FBS_ID;
    148144
    149 /* ƒƒbƒZ[ƒWƒLƒ
    150 [ */
     145/* メッセージキュー */
    151146typedef struct ecn_fbs_queue
    152147{
    153         T_ECN_FST_BLK   *pk_head;               /* æ“ª‚̃ƒbƒZ[ƒW */
    154         T_ECN_FST_BLK   *pk_last;               /* ––”ö‚̃ƒbƒZ[ƒW */
     148        T_ECN_FST_BLK   *pk_head;               /* 先頭のメッセージ */
     149        T_ECN_FST_BLK   *pk_last;               /* 末尾のメッセージ */
    155150} T_ECN_FBS_QUEUE;
    156151
    157 /* ƒƒ‚ƒŠƒuƒƒbƒNŽæ“¾ ok:ƒ|ƒCƒ“ƒ^ NG:NULL */
     152/* メモリブロック取得 ok:ポインタ NG:NULL */
    158153void *_ecn_fbs_mbx_get(ECN_FBS_SIZE_T fa_req_size);
    159154
    160 /* ƒƒ‚ƒŠƒuƒƒbƒN‰ð•ú ok:0 NG:”ñ0 */
     155/* メモリブロック解放 ok:0 NG:非0 */
    161156ER _ecn_fbs_mbx_rel(void *p);
    162157
    163158/*
    164  * —̈æŠm•Û
    165  *      ˆø”
    166  *              ECN_FBS_SIZE_T  fa_req_size             —v‹ƒoƒbƒtƒ@ƒTƒCƒY(byte)
     159 * 領域確保
     160 *      引数
     161 *              ECN_FBS_SIZE_T  fa_req_size             要求バッファサイズ(byte)
    167162 *                                                                              max: DEF_ECN_FBS_BUF_MAXLEN
    168  *              ECN_FBS_ID              *fp_id                  Šm•Û‚µ‚½FBS-ID‚ÌŠi”[æ
    169  *      –ß‚è’l
    170  *              ER                              0:ok ”ñ0:NG
     163 *              ECN_FBS_ID              *fp_id                  確保したFBS-IDの格納先
     164 *      戻り値
     165 *              ER                              0:ok 0:NG
    171166 */
    172167ER _ecn_fbs_cre(ECN_FBS_SIZE_T fa_req_size, ECN_FBS_ID *fp_id);
    173168
    174169/*
    175  * —̈æ‰ð•ú
    176  *      ˆø”
    177  *              ecn_fbs_idŒ^    Šm•Û‚µ‚½FBS-ID
    178  *      –ß‚è’l
    179  *              ER                              0:ok, ”ñ0:NG
     170 * 領域解放
     171 *      引数
     172 *              ecn_fbs_id型     確保したFBS-ID
     173 *      戻り値
     174 *              ER                              0:ok, 0:NG
    180175 */
    181176ER _ecn_fbs_del(ECN_FBS_ID fa_id);
    182177
    183178/*
    184  * •ÛŽƒf[ƒ^‚Ì—L–³
    185  *      ˆø”
    186  *              ecn_fbs_idŒ^    Šm•Û‚µ‚½FBS-ID
    187  *      –ß‚è’l
    188  *              bool_t                  0:–³‚µ, 1:‚ ‚è
     179 * 保持データの有無
     180 *      引数
     181 *              ecn_fbs_id型     確保したFBS-ID
     182 *      戻り値
     183 *              bool_t                  0:無し, 1:あり
    189184 */
    190185bool_t _ecn_fbs_exist_data(ECN_FBS_ID fa_id);
    191186
    192187/*
    193  * •ÛŽƒf[ƒ^’·‚̎擾
    194  *      ˆø”
    195  *              ecn_fbs_idŒ^    Šm•Û‚µ‚½FBS-ID
    196  *      –ß‚è’l
    197  *              ECN_FBS_SSIZE_T •ÛŽ‚µ‚Ä‚¢‚éƒf[ƒ^‚Ì’·‚³(byte) -1:NG
     188 * 保持データ長の取得
     189 *      引数
     190 *              ecn_fbs_id型     確保したFBS-ID
     191 *      戻り値
     192 *              ECN_FBS_SSIZE_T 保持しているデータの長さ(byte) -1:NG
    198193 */
    199194ECN_FBS_SSIZE_T _ecn_fbs_get_datalen(ECN_FBS_ID fa_id);
    200195
    201196/*
    202  * “Ç‚ÝŽæ‚èƒJ[ƒ\ƒ‹‚̈ʒuŽæ“¾
    203  *      ˆø”
    204  *              ecn_fbs_idŒ^    Šm•Û‚µ‚½FBS-ID
    205  *      –ß‚è’l
    206  *              ECN_FBS_SIZE_T  æ“ª‚©‚ç‚̐â‘Έʒu -1:NG
     197 * 読み取りカーソルの位置取得
     198 *      引数
     199 *              ecn_fbs_id型     確保したFBS-ID
     200 *      戻り値
     201 *              ECN_FBS_SIZE_T  先頭からの絶対位置 -1:NG
    207202 */
    208203ECN_FBS_SSIZE_T _ecn_fbs_get_rpos(ECN_FBS_ID fa_id);
    209204
    210205/*
    211  * “Ç‚ÝŽæ‚èƒJ[ƒ\ƒ‹‚̈ʒuÝ’è
    212  *      ˆø”
    213  *              ecn_fbs_idŒ^    Šm•Û‚µ‚½FBS-ID
    214  *              ECN_FBS_SIZE_T  fa_pos  Ý’è‚·‚éˆÊ’u(æ“ª‚©‚ç‚̐â‘Έʒu)
    215  *      –ß‚è’l
    216  *              ER                              0:ok, ”ñ0:NG
     206 * 読み取りカーソルの位置設定
     207 *      引数
     208 *              ecn_fbs_id型     確保したFBS-ID
     209 *              ECN_FBS_SIZE_T  fa_pos  設定する位置(先頭からの絶対位置)
     210 *      戻り値
     211 *              ER                              0:ok, 0:NG
    217212 */
    218213ER _ecn_fbs_set_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_pos);
    219214
    220215/*
    221  * “Ç‚ÝŽæ‚èƒJ[ƒ\ƒ‹‚̈ʒuˆÚ“®
    222  *      ˆø”
    223  *              ecn_fbs_idŒ^    Šm•Û‚µ‚½FBS-ID
    224  *              ECN_FBS_SIZE_T  fa_seek ˆÚ“®—Ê(Œ»óA‘Oi‚Ì‚Ý)
    225  *      –ß‚è’l
    226  *              ER                              0:ok, ”ñ0:NG
     216 * 読み取りカーソルの位置移動
     217 *      引数
     218 *              ecn_fbs_id型     確保したFBS-ID
     219 *              ECN_FBS_SIZE_T  fa_seek 移動量(現状、前進のみ)
     220 *      戻り値
     221 *              ER                              0:ok, 0:NG
    227222 */
    228223ER _ecn_fbs_seek_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek);
    229224
    230225/*
    231  * ”CˆÓŽw’èˆÊ’u‚Ì1byte“Ç‚ÝŽæ‚è
     226 * 任意指定位置の1byte読み取り
    232227 */
    233228int _ecn_fbs_peek(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek);
    234229
    235230/*
    236  * ”CˆÓŽw’èˆÊ’u‚Ì1byte‘‚«ž‚Ý
     231 * 任意指定位置の1byte書き込み
    237232 */
    238233ER _ecn_fbs_poke(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek, int fa_val);
    239234
    240235/*
    241  * ƒf[ƒ^’ljÁ
    242  *      ˆø”
    243  *              ecn_fbs_idŒ^    Šm•Û‚µ‚½FBS-ID
    244  *              const void *    fa_dat  ’ljÁ‚·‚éƒf[ƒ^
    245  *              ECN_FBS_SSIZE_T fa_len  ’ljÁ‚·‚é’·‚³(byte)
    246  *      –ß‚è’l
    247  *              ER                              0:ok, ”ñ0:NG
     236 * データ追加
     237 *      引数
     238 *              ecn_fbs_id型     確保したFBS-ID
     239 *              const void *    fa_dat  追加するデータ
     240 *              ECN_FBS_SSIZE_T fa_len  追加する長さ(byte)
     241 *      戻り値
     242 *              ER                              0:ok, 0:NG
    248243 */
    249244ER _ecn_fbs_add_data(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len);
    250245
    251246/*
    252  * ƒf[ƒ^’ljÁ(—̈æ‚ðŽ©“®“I‚ÉŠg’£‚·‚é)
    253  *      ˆø”
    254  *              ecn_fbs_idŒ^    Šm•Û‚µ‚½FBS-ID
    255  *              const void *    fa_dat  ’ljÁ‚·‚éƒf[ƒ^
    256  *              ECN_FBS_SSIZE_T fa_len  ’ljÁ‚·‚é’·‚³(byte)
    257  *      –ß‚è’l
    258  *              ER                              0:ok, ”ñ0:NG
     247 * データ追加(領域を自動的に拡張する)
     248 *      引数
     249 *              ecn_fbs_id型     確保したFBS-ID
     250 *              const void *    fa_dat  追加するデータ
     251 *              ECN_FBS_SSIZE_T fa_len  追加する長さ(byte)
     252 *      戻り値
     253 *              ER                              0:ok, 0:NG
    259254 */
    260255ER _ecn_fbs_add_data_ex(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len);
    261256
    262257/*
    263  * ƒf[ƒ^Žæ“¾
    264  *      ˆø”
    265  *              ecn_fbs_idŒ^    Šm•Û‚µ‚½FBS-ID
    266  *              void *                  fa_buf          Žæ“¾‚·‚éƒoƒbƒtƒ@
    267  *              ECN_FBS_SSIZE_T fa_maxlen       Žæ“¾‚·‚é’·‚³(byte)
    268  *              ECN_FBS_SSIZE_T *p_len          Žæ“¾‚µ‚½’·‚³(byte)
    269  *      –ß‚è’l
    270  *              ER                              0:ok, ”ñ0:NG
     258 * データ取得
     259 *      引数
     260 *              ecn_fbs_id型     確保したFBS-ID
     261 *              void *                  fa_buf          取得するバッファ
     262 *              ECN_FBS_SSIZE_T fa_maxlen       取得する長さ(byte)
     263 *              ECN_FBS_SSIZE_T *p_len          取得した長さ(byte)
     264 *      戻り値
     265 *              ER                              0:ok, 0:NG
    271266 */
    272267ER _ecn_fbs_get_data(ECN_FBS_ID fa_id, void *fa_buf, ECN_FBS_SSIZE_T fa_maxlen,
  • uKadecot/trunk/ecnl_ssp/echonet_lcl_task.h

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
     
    4137
    4238/*
    43  *              ECHONET Lite ‰ºˆÊ’ʐMƒŒƒCƒ„[ˆ—ƒ^ƒXƒN
     39 *              ECHONET Lite 下位通信レイヤー処理タスク
    4440 */
    4541
  • uKadecot/trunk/ecnl_ssp/echonet_rename.h

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
  • uKadecot/trunk/ecnl_ssp/echonet_ssp.cfg

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
     
    4137
    4238/*
    43  *  ECHONET Lite ƒRƒ“ƒtƒBƒMƒ
    44 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹
     39 *  ECHONET Lite コンフィギュレーションファイル
    4540 */
    4641
     
    5045
    5146/*
    52  * ECHONET Lite “d•¶—pƒƒ‚ƒŠ
     47 * ECHONET Lite 電文用メモリ
    5348 */
    5449/*CRE_MPF(ECHONET_MEMPOOL, { TA_TFIFO, 60, 256, NULL, NULL });*/
    5550
    5651/*
    57  * ECHONET Lite API—pƒ[ƒ‹ƒ{ƒbƒNƒX
     52 * ECHONET Lite API用メールボックス
    5853 */
    5954CRE_DTQ(ECHONET_API_MAILBOX, { TA_TFIFO, NUM_ECHONET_API_MAILBOX, NULL });
    6055
    6156/*
    62  * ECHONET Lite ƒT[ƒrƒXˆ—ƒ^ƒXƒN—pƒ[ƒ‹ƒ{ƒbƒNƒX
     57 * ECHONET Lite サービス処理タスク用メールボックス
    6358 */
    6459CRE_DTQ(ECHONET_SVC_MAILBOX, { TA_TFIFO, NUM_ECHONET_MAILBOX, NULL });
    6560
    6661/*
    67  * ECHONET Lite ƒT[ƒrƒXˆ—ƒ^ƒXƒN
     62 * ECHONET Lite サービス処理タスク
    6863 */
    6964CRE_TSK(ECHONET_SVC_TASK, { TA_HLNG, 0, echonet_task, ECHONET_TASK_PRIORITY, ECHONET_TASK_STACK_SIZE, NULL });
    7065
    7166/*
    72  * ECHONET Lite ƒ^ƒXƒN‹N“®—pŽüŠúƒnƒ“ƒhƒ‰[
     67 * ECHONET Lite タスク起動用周期ハンドラー
    7368 */
    7469CRE_CYC(ECHONET_SVC_CYCHDR, { TA_NULL, ECHONET_SVC_TASK, echonet_cychdr, 1, 0 });
    7570
    7671/*
    77  * ECHONET Lite UDP’ʐMˆ——pƒ[ƒ‹ƒ{ƒbƒNƒX
     72 * ECHONET Lite UDP通信処理用メールボックス
    7873 */
    7974CRE_DTQ(ECHONET_UDP_MAILBOX, { TA_TFIFO, NUM_ECHONET_UDP_MAILBOX, NULL });
    8075
    8176/*
    82  * ECHONET Lite UDP’ʐMˆ—ƒ^ƒXƒN
     77 * ECHONET Lite UDP通信処理タスク
    8378 */
    8479CRE_TSK(ECHONET_UDP_TASK, { TA_HLNG, 0, echonet_udp_task, ECHONET_UDP_TASK_PRIORITY, ECHONET_UDP_TASK_STACK_SIZE, NULL });
    8580
    8681/*
    87  * ECHONET Lite ƒ^ƒXƒN‹N“®—pŽüŠúƒnƒ“ƒhƒ‰[
     82 * ECHONET Lite タスク起動用周期ハンドラー
    8883 */
    8984CRE_CYC(ECHONET_UDP_CYCHDR, { TA_NULL, ECHONET_UDP_TASK, echonet_udp_cychdr, 1, 0 });
  • uKadecot/trunk/ecnl_ssp/echonet_task.c

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
     
    4137
    4238/*
    43  *              ECHONET Lite ƒ^ƒXƒN
     39 *              ECHONET Lite タスク
    4440 */
    4541
     
    7874static struct ecnl_state s;
    7975
    80 /* ŽóMƒƒbƒZ[ƒW‚ðŠJ•ú‚·‚é‚©”Û‚© */
     76/* 受信メッセージを開放するか否か */
    8177static bool_t g_release_esv;
    8278
    83 /* ŽóMƒƒbƒZ[ƒW‚ð“]‘—‚·‚é‚©”Û‚© */
     79/* 受信メッセージを転送するか否か */
    8480bool_t g_forward_esv;
    8581
     
    126122                        target += - ENOD_REMOTE_ID + 1;
    127123                        if (from_app && (target < tnum_enodid)) {
    128                                 /* ”ñ“¯Šú‚̃Šƒ‚[ƒgƒm[ƒh‚̓T[ƒrƒXˆ—ƒ^ƒXƒN‚ŏˆ—‚·‚é */
     124                                /* 非同期のリモートノードはサービス処理タスクで処理する */
    129125                                switch (eobjcb_table[target].profile->eobjatr) {
    130126                                case EOBJ_SYNC_REMOTE_NODE:
     
    174170        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID *fa_fbs_anno);
    175171
    176 /* ƒ‚ƒWƒ
    177 [ƒ‹‰Šú‰»ƒtƒ‰ƒO */
     172/* モジュール初期化フラグ */
    178173static uint8_t          m_eobjlist_need_init = 1;
    179174
    180 /* ƒV[ƒPƒ“ƒX”ԍ† */
     175/* シーケンス番号 */
    181176static uint16_t         g_current_tid = 1;
    182177
    183178/*
    184  *  ECHONET Lite ƒ^ƒXƒN‚̏‰Šú‰»iƒRƒ“ƒXƒgƒ‰ƒNƒ^‘Š“–j
     179 *  ECHONET Lite タスクの初期化(コンストラクタ相当)
    185180 */
    186181void echonet_task_init(intptr_t exinf)
     
    191186
    192187/*
    193  * ƒ‚ƒWƒ
    194 [ƒ‹‰Šú‰»
     188 * モジュール初期化
    195189 */
    196190static void _ecn_tsk_int_module_init(intptr_t exinf)
     
    210204
    211205/*
    212  *  ECHONET Lite ƒ^ƒXƒN‚Ì–{‘Ì
     206 *  ECHONET Lite タスクの本体
    213207 */
    214208static
     
    243237        }
    244238
    245         /* ƒƒbƒZ[ƒWƒ‹[ƒv */
     239        /* メッセージループ */
    246240        for (;;) {
    247241                a_prev = a_now;
     
    283277
    284278                        switch (a_mdt.fbs_id.ptr->hdr.type) {
    285                         /* “à•”Žg—pƒƒbƒZ[ƒW */
     279                        /* 内部使用メッセージ */
    286280                        case ECN_MSG_INTERNAL:
    287281                                _ecn_tsk_int_msg(fa_exinf, a_mdt.fbs_id);
    288282                                break;
    289283
    290                         /* ECHONET—pƒƒbƒZ[ƒW */
     284                        /* ECHONET用メッセージ */
    291285                        case ECN_MSG_ECHONET:
    292286                                _ecn_tsk_ecn_msg(fa_exinf, a_mdt.fbs_id);
     
    297291                        }
    298292
    299                         /* —̈æ‰ð•ú */
     293                        /* 領域解放 */
    300294                        if (g_release_esv)
    301295                                _ecn_fbs_del(a_mdt.fbs_id);
     
    312306
    313307/*
    314  *  ECHONET Lite ƒvƒƒgƒXƒŒƒbƒh‹N“®ƒ^ƒXƒN
     308 *  ECHONET Lite プロトスレッド起動タスク
    315309 */
    316310void echonet_task(intptr_t fa_exinf)
     
    320314
    321315/*
    322  *  ECHONET Lite ƒ^ƒXƒN‹N“®—pŽüŠúƒnƒ“ƒhƒ‰[
     316 *  ECHONET Lite タスク起動用周期ハンドラー
    323317 */
    324318void echonet_cychdr(intptr_t exinf)
     
    328322
    329323/*
    330  * ƒV[ƒPƒ“ƒX”ԍ†¶¬
     324 * シーケンス番号生成
    331325 */
    332326static uint16_t _ecn_tsk_new_tid(void)
     
    336330
    337331/*
    338  * —v‹“d•¶ì¬
    339  * ˆø”
    340  * ECN_FBS_ID           *fp_fbs_id              Žæ“¾‚µ‚½FBS_ID‚ÌŠi”[æ
    341  * ID                           fa_seoj                 ‘—MŒ³‚ÌECHONETƒIƒuƒWƒFƒNƒgID
    342  * ID                           fa_deoj                 ˆ¶æ‚ÌECHONETƒIƒuƒWƒFƒNƒgID
    343  * uint8_t                      fa_epc                  ƒvƒƒpƒeƒBƒR[ƒh
    344  * uint8_t                      fa_pdc                  ƒvƒƒpƒeƒB’lƒf[ƒ^ƒTƒCƒY
    345  * const void           *p_edt                  ƒvƒƒpƒeƒB’lƒf[ƒ^
    346  * ECN_SRV_CODE         fa_esv                  ECHONET Light ƒT[ƒrƒXƒR[ƒh
     332 * 要求電文作成
     333 * 引数
     334 * ECN_FBS_ID           *fp_fbs_id              取得したFBS_IDの格納先
     335 * ID                           fa_seoj                 送信元のECHONETオブジェクトID
     336 * ID                           fa_deoj                 宛先のECHONETオブジェクトID
     337 * uint8_t                      fa_epc                  プロパティコード
     338 * uint8_t                      fa_pdc                  プロパティ値データサイズ
     339 * const void           *p_edt                  プロパティ値データ
     340 * ECN_SRV_CODE         fa_esv                  ECHONET Light サービスコード
    347341 */
    348342ER _ecn_tsk_mk_esv(ECN_FBS_ID *fp_fbs_id, ID fa_seoj, ID fa_deoj,
     
    351345        ER                              a_ret;
    352346        int                             a_size, i;
    353         ECN_FBS_ID              a_fbs_id = { 0 };       /* —v‹“d•¶—pƒƒ‚ƒŠ                             */
     347        ECN_FBS_ID              a_fbs_id = { 0 };       /* 要求電文用メモリ                             */
    354348        T_ECN_EDT_HDR   a_ecn_hdp;                      /* ecn_hdr+edata+ecn_prp 14byte */
    355349        ID                              a_enodid;
     
    358352
    359353        if (!fp_fbs_id)
    360                 return E_PAR; /* Žæ“¾‚µ‚½FBS_ID‚ÌŠi”[æ‚ªNULL */
     354                return E_PAR; /* 取得したFBS_IDの格納先がNULL */
    361355        if (ECHONET_MEMPOOL_BLOCK_SIZE <= fa_pdc)
    362                 return E_PAR; /* ƒvƒƒpƒeƒB’lƒTƒCƒY‚ª‘å‚«‚·‚¬‚é */
     356                return E_PAR; /* プロパティ値サイズが大きすぎる */
    363357        if (!p_edt && 0 < fa_pdc)
    364                 return E_PAR; /* ƒvƒƒpƒeƒB’lƒTƒCƒY‚ª1ˆÈã‚Ȃ̂Ƀf[ƒ^ƒ|ƒCƒ“ƒ^‚ªNULL */
     358                return E_PAR; /* プロパティ値サイズが1以上なのにデータポインタがNULL */
    365359
    366360        if (fa_seoj <= EOBJ_NULL || tmax_eobjid < fa_seoj)
    367                 return E_NOEXS; /* ECHONETƒIƒuƒWƒFƒNƒgID‚ª–¢’è‹` */
     361                return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */
    368362#ifndef ECHONET_CONTROLLER_EXTENTION
    369363        if (fa_deoj < EOBJ_NULL || tmax_eobjid < fa_deoj)
    370                 return E_NOEXS; /* ECHONETƒIƒuƒWƒFƒNƒgID‚ª–¢’è‹` */
     364                return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */
    371365#else
    372366        if (fa_deoj < EOBJ_NULL || (tmax_eobjid + TNUM_AEOBJID) < fa_deoj)
    373                 return E_NOEXS; /* ECHONETƒIƒuƒWƒFƒNƒgID‚ª–¢’è‹` */
     367                return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */
    374368#endif
    375369        if (fa_deoj == EOBJ_NULL && fa_esv == ESV_INFC)
    376                 return E_NOEXS; /* ECHONETƒIƒuƒWƒFƒNƒgID‚ª–¢’è‹` */
    377 
    378         /* —v‹Å¬ƒTƒCƒY‚̎擾 */
     370                return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */
     371
     372        /* 要求最小サイズの取得 */
    379373        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    380374
    381         /* —v‹“d•¶—pƒƒ‚ƒŠ‚̎擾 */
     375        /* 要求電文用メモリの取得 */
    382376        a_ret = _ecn_fbs_cre(a_size, &a_fbs_id);
    383         if (a_ret != E_OK || !a_fbs_id.ptr) { /* Šm•ÛŽ¸”s */
     377        if (a_ret != E_OK || !a_fbs_id.ptr) { /* 確保失敗 */
    384378                ECN_DBG_PUT "_ecn_fbs_cre(%d) result = %d:%s",
    385379                        a_size,
     
    388382        }
    389383
    390         /* —v‹“d•¶Ý’è                                         */
     384        /* 要求電文設定                                               */
    391385        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
    392386        a_ecn_hdp.ecn_hdr.ehd1 = ECN_EDH1_ECHONET_LITE;
     
    395389        memcpy(&a_ecn_hdp.edata.seoj, &eobjinib_table[fa_seoj - 1].eojx1, sizeof(a_ecn_hdp.edata.seoj));
    396390        a_ecn_hdp.edata.esv = fa_esv;
    397         a_ecn_hdp.edata.opc = 1;                /* ˆ—ƒvƒƒpƒeƒB” */
    398         a_ecn_hdp.ecn_prp.epc = fa_epc; /* ƒvƒƒpƒeƒBƒR[ƒh */
    399         a_ecn_hdp.ecn_prp.pdc = fa_pdc; /* •tƒf[ƒ^ƒTƒCƒY */
    400 
    401         /* —v‹“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ */
     391        a_ecn_hdp.edata.opc = 1;                /* 処理プロパティ数 */
     392        a_ecn_hdp.ecn_prp.epc = fa_epc; /* プロパティコード */
     393        a_ecn_hdp.ecn_prp.pdc = fa_pdc; /* 付随データサイズ */
     394
     395        /* 要求電文用メモリにデータ追加 */
    402396        a_ret = _ecn_fbs_add_data_ex(a_fbs_id, &a_ecn_hdp, a_size);
    403397        if (a_ret) {
     
    408402        }
    409403        if (0 < fa_pdc) {
    410                 /* •tƒf[ƒ^’ljÁ */
     404                /* 付随データ追加 */
    411405                a_ret = _ecn_fbs_add_data_ex(a_fbs_id, p_edt, fa_pdc);
    412406                if (a_ret) {
     
    418412        }
    419413        if (fa_deoj == 0) {
    420                 ECN_DBG_PUT "%s", "ƒ}ƒ‹ƒ`ƒLƒƒƒXƒg" ECN_DBG_END;
    421                 /* fa_deoj == 0 : ƒ}ƒ‹ƒ`ƒLƒƒƒXƒg */
     414                ECN_DBG_PUT "%s", "マルチキャスト" ECN_DBG_END;
     415                /* fa_deoj == 0 : マルチキャスト */
    422416                ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1 = EOJ_X1_PROFILE;
    423417                ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx2 = EOJ_X2_NODE_PROFILE;
     
    427421        else if (fa_deoj <= tmax_eobjid) {
    428422                ECN_DBG_PUT "fa_deoj = %d", fa_deoj ECN_DBG_END;
    429                 /* if (fa_deoj < 1 || tmax_eobjid < fa_deoj) c‚ُ̈íŒn‚͊֐”–`“ª‚ŏœŠOÏ‚Ý‚Æ‚·‚é */
     423                /* if (fa_deoj < 1 || tmax_eobjid < fa_deoj) …の異常系は関数冒頭で除外済みとする */
    430424                a_eobj = &eobjinib_table[fa_deoj - 1];
    431425                memcpy(&((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj, &a_eobj->eojx1,
    432426                        sizeof(((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj));
    433427
    434                 /* ƒe[ƒuƒ‹‚©‚猟õ */
     428                /* テーブルから検索 */
    435429                a_fbs_id.ptr->hdr.target = ENOD_NOT_MATCH_ID;
    436430                a_enodid = (a_eobj->enodid == 0) ? fa_deoj : a_eobj->enodid;
     
    472466                ECN_ENOD_ID enodid;
    473467                ECN_DBG_PUT "fa_deoj = %d", fa_deoj ECN_DBG_END;
    474                 /* ƒIƒuƒWƒFƒNƒgID‚©‚çEOJ‚ƃm[ƒhID‚ðŽæ“¾ */
     468                /* オブジェクトIDからEOJとノードIDを取得 */
    475469                if(ecn_agent_get_eoj_enodid(fa_deoj, &eoj, &enodid)){
    476470                        memcpy(&((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj, &eoj,
     
    505499                a_fbs_id.ptr->hdr.reply = ENOD_API_ID;
    506500
    507         /* ³íI—¹ */
     501        /* 正常終了 */
    508502        *fp_fbs_id = a_fbs_id;
    509503        return E_OK;
    510504
    511505lb_except:
    512         /* ƒf[ƒ^ì¬Ž¸”s‚µ‚½‚ç—̈æ‰ð•ú */
     506        /* データ作成失敗したら領域解放 */
    513507        if (a_fbs_id.ptr)
    514508                _ecn_fbs_del(a_fbs_id);
     
    518512
    519513/*
    520  * “à•”Žg—pƒƒbƒZ[ƒW
     514 * 内部使用メッセージ
    521515 */
    522516static void _ecn_tsk_int_msg(intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id)
     
    549543
    550544/*
    551  * ƒ^ƒXƒN‰Šú‰»
     545 * タスク初期化
    552546 */
    553547static void _ecn_tsk_int_startup(intptr_t fa_exinf)
     
    558552                _ecn_tsk_int_module_init(fa_exinf);
    559553
    560         /* ƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg’Ê’m‚Ì‘—M */
     554        /* インスタンスリスト通知の送信 */
    561555        a_ret = _ecn_tsk_ntf_inl(fa_exinf);
    562556        if (a_ret) {
     
    566560
    567561/*
    568  * ƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg’Ê’m‚Ì‘—M
    569  * ECHONET-Lite_Ver.1.10_02.pdf p.43 }4-1-4
     562 * インスタンスリスト通知の送信
     563 * ECHONET-Lite_Ver.1.10_02.pdf p.43 4-1-4
    570564 */
    571565ER _ecn_tsk_ntf_inl(intptr_t fa_exinf)
    572566{
    573         const T_ECN_EOJ a_seoj =        /* 0x01 : ˆê”ʃm[ƒhA0x02F‘—Mê—pƒm[ƒh */
     567        const T_ECN_EOJ a_seoj =        /* 0x01 : 一般ノード、0x02:送信専用ノード */
    574568                { EOJ_X1_PROFILE, EOJ_X2_NODE_PROFILE, 0x01 };
    575569        const T_ECN_EOJ a_deoj =
     
    581575        int                     i;
    582576        uint8_t         a_count;
    583         const EOBJCB    *enod = &eobjcb_table[0];       /* ƒ[ƒJƒ‹ƒm[ƒh */
     577        const EOBJCB    *enod = &eobjcb_table[0];       /* ローカルノード */
    584578        const EOBJINIB *eobj;
    585579
     
    599593
    600594                if (!a_eoj_ct) {
    601                         /* ƒƒ‚ƒŠŠm•ÛEƒwƒbƒ_Ši”[ */
    602                         a_hdr.ecn_hdr.tid = (uint8_t)_ecn_tsk_new_tid(); /* ƒV[ƒPƒ“ƒX”ԍ†¶¬ */
     595                        /* メモリ確保・ヘッダ格納 */
     596                        a_hdr.ecn_hdr.tid = (uint8_t)_ecn_tsk_new_tid(); /* シーケンス番号生成 */
    603597                        a_ret = _ecn_fbs_cre(sizeof(a_hdr), &a_fbs);
    604                         if (a_ret != E_OK) /* Šm•ÛŽ¸”s */
     598                        if (a_ret != E_OK) /* 確保失敗 */
    605599                                goto lb_except;
    606600                        a_ret = _ecn_fbs_add_data(a_fbs, &a_hdr, sizeof(a_hdr));
    607                         if (a_ret != E_OK) /* ƒf[ƒ^’ljÁŽ¸”s */
     601                        if (a_ret != E_OK) /* データ追加失敗 */
    608602                                goto lb_except;
    609603
     
    612606                        a_fbs.ptr->hdr.target = ENOD_MULTICAST_ID;
    613607                        a_fbs.ptr->hdr.reply = ENOD_LOCAL_ID;
    614                         ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc = 1;    /* Œ” */
    615                         /* Œ”‚ðŠi”[ */
     608                        ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc = 1;    /* 件数 */
     609                        /* 件数を格納 */
    616610                        a_count = (uint8_t)(enod->eobjcnt - i);
    617611                        if (a_count >= ECN_IST_LST_EOJ_MAX_CT)
    618612                                a_count = ECN_IST_LST_EOJ_MAX_CT;
    619613                        a_ret = _ecn_fbs_add_data_ex(a_fbs, &a_count, sizeof(a_count));
    620                         if (a_ret != E_OK) /* ƒf[ƒ^’ljÁŽ¸”s */
     614                        if (a_ret != E_OK) /* データ追加失敗 */
    621615                                goto lb_except;
    622616                }
    623                 /* ECHONETƒIƒuƒWƒFƒNƒgID(3byte)‚ðŠi”[ */
     617                /* ECHONETオブジェクトID(3byte)を格納 */
    624618                a_ret = _ecn_fbs_add_data_ex(a_fbs, &eobj->eojx1, sizeof(T_ECN_EOJ));
    625                 if (a_ret != E_OK) /* ƒf[ƒ^’ljÁŽ¸”s */
     619                if (a_ret != E_OK) /* データ追加失敗 */
    626620                        goto lb_except;
    627621
    628                 /* Œ”EedtƒTƒCƒY‰ÁŽZ */
     622                /* 件数・edtサイズ加算 */
    629623                ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc += sizeof(T_ECN_EOJ);
    630624                if (++a_eoj_ct < ECN_IST_LST_EOJ_MAX_CT)
    631625                        continue;
    632626
    633                 /* 1ƒAƒiƒEƒ“ƒX‚ł̏ãŒÀ‚É’B‚µ‚½‚çAˆê’U‘—M */
     627                /* 1アナウンスでの上限に達したら、一旦送信 */
    634628                a_ret = _ecn_tsk_snd_mbx(a_fbs, false);
    635                 if (a_ret != E_OK) /* ƒf[ƒ^‘—MŽ¸”s */
     629                if (a_ret != E_OK) /* データ送信失敗 */
    636630                        goto lb_except;
    637631                a_eoj_ct = 0;
     
    639633        }
    640634        if (a_eoj_ct) {
    641                 /* –¢‘—Mƒf[ƒ^‚ª‚ ‚Á‚½‚çA‘—M */
     635                /* 未送信データがあったら、送信 */
    642636                a_ret = _ecn_tsk_snd_mbx(a_fbs, false);
    643                 if (a_ret != E_OK) /* ƒf[ƒ^‘—MŽ¸”s */
     637                if (a_ret != E_OK) /* データ送信失敗 */
    644638                        goto lb_except;
    645639                a_fbs.ptr = 0;
     
    685679
    686680/*
    687  * 3byte‚Ìeobjid‚Å”z—ñ’†‚ðŒŸõ‚·‚é
     681 * 3byteのeobjidで配列中を検索する
    688682 */
    689683const EOBJINIB *_ecn_eoj_fnd(const EOBJCB *fp_nod, const T_ECN_EOJ *fp_eoj)
     
    721715
    722716/*
    723  * ECHONET—pƒƒbƒZ[ƒW
     717 * ECHONET用メッセージ
    724718 */
    725719static void _ecn_tsk_ecn_msg(intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id)
     
    749743        }
    750744
    751         /* ‘—Mˆ¶‚©‚çƒm[ƒh‚ðŒŸõ */
     745        /* 送信宛からノードを検索 */
    752746        p_nod = _ecn_eno_fnd(fa_fbs_id.ptr->hdr.target);
    753         /* ‘—MŒ³‚©‚çƒm[ƒh‚ðŒŸõ */
     747        /* 送信元からノードを検索 */
    754748        sender = fa_fbs_id.ptr->hdr.sender;
    755749        p_snod = _ecn_eno_fnd(sender);
    756750        if (p_snod != NULL) {
    757751                sobjatr = p_snod->profile->eobjatr;
    758                 /* ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹‚̏ꍇ */
     752                /* ノードプロファイルの場合 */
    759753                if ((p_esv->edata.seoj.eojx1 == EOJ_X1_PROFILE)
    760754                        && (p_esv->edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) {
    761755                        p_sobj = p_snod->profile;
    762756                }
    763                 /* ‹@ŠíƒIƒuƒWƒFƒNƒg‚̏ꍇ */
     757                /* 機器オブジェクトの場合 */
    764758                else {
    765759                        p_sobj = _ecn_eoj_fnd(p_snod, &p_esv->edata.seoj);
     
    771765#endif
    772766
    773         /* ƒm[ƒh“à‚Ì‹@ŠíƒIƒuƒWƒFƒNƒg‚ðŒŸõ */
     767        /* ノード内の機器オブジェクトを検索 */
    774768        a_prc = false;
    775769        a_fwd = false;
     
    778772                eobjatr = p_nod->profile->eobjatr;
    779773                p_eoj = &p_esv->edata.deoj;
    780                 /* ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹‚̏ꍇ */
     774                /* ノードプロファイルの場合 */
    781775                if ((p_eoj->eojx1 == EOJ_X1_PROFILE)
    782776                        && (p_eoj->eojx2 == EOJ_X2_NODE_PROFILE)) {
    783                         /* “d•¶ˆ—ŽÀs */
     777                        /* 電文処理実行 */
    784778                        if (_ecn_tsk_ecn_msg_main(fa_fbs_id, p_nod->profile, eobjatr, p_sobj, sobjatr) == 1)
    785779                                a_fwd = true;
    786780                        a_prc = true;
    787781                }
    788                 /* ‹@ŠíƒIƒuƒWƒFƒNƒg‚̏ꍇ */
     782                /* 機器オブジェクトの場合 */
    789783                else {
    790784                        count = p_nod->eobjcnt;
     
    805799                                if (p_obj->eojx2 != p_eoj->eojx2)
    806800                                        continue;
    807                                 /* ƒCƒ“ƒXƒ^ƒ“ƒXƒR[ƒh‚ª‚O‚̏ꍇA“¯‚¶ƒNƒ‰ƒX‚Ì‘S‚ẴCƒ“ƒXƒ^ƒ“ƒXˆ¶ */
     801                                /* インスタンスコードが0の場合、同じクラスの全てのインスタンス宛 */
    808802                                if ((p_obj->eojx3 != p_eoj->eojx3) && (p_eoj->eojx3 != 0))
    809803                                        continue;
    810804
    811                                 /* “d•¶ˆ—ŽÀs */
     805                                /* 電文処理実行 */
    812806                                if (_ecn_tsk_ecn_msg_main(fa_fbs_id, p_obj, eobjatr, p_sobj, sobjatr) == 1)
    813807                                        a_fwd = true;
     
    816810                }
    817811        }
    818         /* ‹@ŠíƒIƒuƒWƒFƒNƒg‚ªŒ©‚‚©‚ç‚È‚¢ê‡‚Å‚à */
     812        /* 機器オブジェクトが見つからない場合でも */
    819813        if (!a_prc) {
    820                 /* “d•¶ˆ—ŽÀsi‰ž“šŽóM—pj */
     814                /* 電文処理実行(応答受信用) */
    821815                if (_ecn_tsk_ecn_msg_main(fa_fbs_id, NULL, EPC_NONE, p_sobj, sobjatr) == 1)
    822816                        a_fwd = true;
    823817        }
    824818
    825         /* ‰ž“š‚̏ꍇƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É“]‘—‚·‚é */
     819        /* 応答の場合アプリケーションに転送する */
    826820        if (a_fwd && ((p_esv->ecn_hdr.tid == apitid_table[sender])
    827821                || g_forward_esv))
     
    829823                g_release_esv = false;
    830824
    831                 ECN_CAP_PUT "redirect ecn_svc_mailboxid ¨ ecn_api_mailboxid (esv:0x%02X)",
     825                ECN_CAP_PUT "redirect ecn_svc_mailboxid ecn_api_mailboxid (esv:0x%02X)",
    832826                        p_esv->edata.esv ECN_CAP_END;
    833827                fa_fbs_id.ptr->hdr.target = ENOD_API_ID;
     
    853847
    854848        switch (p_esv->edata.esv) {
    855         /* 0x60 ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š•s—vj */
     849        /* 0x60 プロパティ値書き込み要求(応答不要) */
    856850        case ESV_SET_I:
    857851                if (!p_obj) {
     
    865859                break;
    866860
    867         /* 0x61 ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š—vj */
     861        /* 0x61 プロパティ値書き込み要求(応答要) */
    868862        case ESV_SET_C:
    869863                if (!p_obj) {
     
    877871                break;
    878872
    879         /* 0x62 ƒvƒƒpƒeƒB’l“ǂݏo‚µ—v‹ */
     873        /* 0x62 プロパティ値読み出し要求 */
    880874        case ESV_GET:
    881875                if (!p_obj) {
     
    889883                break;
    890884
    891         /* 0x63 ƒvƒƒpƒeƒB’l’Ê’m—v‹ */
     885        /* 0x63 プロパティ値通知要求 */
    892886        case ESV_INF_REQ:
    893887                if (!p_obj) {
     
    902896                break;
    903897
    904         /* 0x6E ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ—v‹ */
     898        /* 0x6E プロパティ値書き込み・読み出し要求 */
    905899        case ESV_SET_GET:
    906900                if (!p_obj) {
     
    914908                break;
    915909
    916         /* 0x74 ƒvƒƒpƒeƒB’l’Ê’mi‰ž“š—vj */
     910        /* 0x74 プロパティ値通知(応答要) */
    917911        case ESV_INFC:
    918912                if (!p_sobj)
     
    925919                break;
    926920
    927         /* 0x60 ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š•s—vj */
    928         case ESV_SET_I_SNA:             /* 0x50 ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹•s‰Â‰ž“š */
     921        /* 0x60 プロパティ値書き込み要求(応答不要) */
     922        case ESV_SET_I_SNA:             /* 0x50 プロパティ値書き込み要求不可応答 */
    929923                result = 1;
    930924                break;
    931925
    932         /* 0x61 ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š—vj */
    933         case ESV_SET_RES:               /* 0x71 ƒvƒƒpƒeƒB’l‘‚«ž‚݉ž“š */
    934         case ESV_SET_C_SNA:             /* 0x51 ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹•s‰Â‰ž“š */
     926        /* 0x61 プロパティ値書き込み要求(応答要) */
     927        case ESV_SET_RES:               /* 0x71 プロパティ値書き込み応答 */
     928        case ESV_SET_C_SNA:             /* 0x51 プロパティ値書き込み要求不可応答 */
    935929                result = 1;
    936930                break;
    937931
    938         /* 0x62 ƒvƒƒpƒeƒB’l“ǂݏo‚µ—v‹ */
    939         case ESV_GET_RES:               /* 0x72 ƒvƒƒpƒeƒB’l“ǂݏo‚µ‰ž“š */
    940         case ESV_GET_SNA:               /* 0x52 ƒvƒƒpƒeƒB’l“ǂݏo‚µ•s‰Â‰ž“š */
     932        /* 0x62 プロパティ値読み出し要求 */
     933        case ESV_GET_RES:               /* 0x72 プロパティ値読み出し応答 */
     934        case ESV_GET_SNA:               /* 0x52 プロパティ値読み出し不可応答 */
    941935                if (!p_sobj) {
    942936                        ECN_DBG_PUT "_ecn_tsk_ecn_msg_main() eoj %06X not found.",
     
    949943                break;
    950944
    951         /* 0x63 ƒvƒƒpƒeƒB’l’Ê’m—v‹ */
    952         case ESV_INF:                   /* 0x73 ƒvƒƒpƒeƒB’l’Ê’m */
    953         case ESV_INF_SNA:               /* 0x53 ƒvƒƒpƒeƒB’l’Ê’m•s‰Â‰ž“š */
     945        /* 0x63 プロパティ値通知要求 */
     946        case ESV_INF:                   /* 0x73 プロパティ値通知 */
     947        case ESV_INF_SNA:               /* 0x53 プロパティ値通知不可応答 */
    954948                if (!p_sobj) {
    955949                        ECN_DBG_PUT "_ecn_tsk_ecn_msg_main() eoj %06X not found.",
     
    962956                break;
    963957
    964         /* 0x6E ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ—v‹ */
    965         case ESV_SET_GET_RES:   /* 0x7E ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ‰ž“š */
    966         case ESV_SET_GET_SNA:   /* 0x5E ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ•s‰Â‰ž“š */
     958        /* 0x6E プロパティ値書き込み・読み出し要求 */
     959        case ESV_SET_GET_RES:   /* 0x7E プロパティ値書き込み・読み出し応答 */
     960        case ESV_SET_GET_SNA:   /* 0x5E プロパティ値書き込み・読み出し不可応答 */
    967961                if (!p_sobj) {
    968962                        ECN_DBG_PUT "_ecn_tsk_ecn_msg_main() eoj %06X not found.",
     
    975969                break;
    976970
    977         /* 0x74 ƒvƒƒpƒeƒB’l’Ê’mi‰ž“š—vj */
    978         case ESV_INFC_RES:              /* 0x7A ƒvƒƒpƒeƒB’l’Ê’m‰ž“š */
     971        /* 0x74 プロパティ値通知(応答要) */
     972        case ESV_INFC_RES:              /* 0x7A プロパティ値通知応答 */
    979973                result = 1;
    980974                break;
     
    986980        }
    987981
    988         /* ƒvƒƒpƒeƒB’Ê’m—v‹‚𑗐M */
     982        /* プロパティ通知要求を送信 */
    989983        if (a_fbs_anno.ptr != NULL) {
    990984                ER a_ret = _ecn_tsk_snd_mbx(a_fbs_anno, true);
     
    10661060
    10671061/*
    1068  * ECN_FBS_ID‚©‚çT_ECN_PRP1Œ‚Æ‚»‚Ì•tƒf[ƒ^(edt)‚𒊏o‚µAedt‚̃|ƒCƒ“ƒ^‚ð•Ô‚·
    1069  * ˆø”
    1070  * ECN_FBS_ID fa_fbs_id                                 “Ç‚ÝŽæ‚éFBS
    1071  * T_ECN_PRP *fp_prp                                    epc+pdc‚ÌŠi”[æ
    1072  * T_ECN_SUB_BLK * const fp_prev_blk    ‘O‰ñŽg‚Á‚½ƒƒ‚ƒŠ‚̃|ƒCƒ“ƒ^(–³‚¯‚ê‚Î0)
    1073  * ³íFƒ|ƒCƒ“ƒ^ NG:0
    1074  * ƒ|ƒCƒ“ƒ^‚Í_ecn_fbs_mbx_rel()‚ʼnð•ú‚·‚é•K—v‚ª‚ ‚é
     1062 * ECN_FBS_IDからT_ECN_PRP1件とその付随データ(edt)を抽出し、edtのポインタを返す
     1063 * 引数
     1064 * ECN_FBS_ID fa_fbs_id                                 読み取るFBS
     1065 * T_ECN_PRP *fp_prp                                    epc+pdcの格納先
     1066 * T_ECN_SUB_BLK * const fp_prev_blk    前回使ったメモリのポインタ(無ければ0)
     1067 * 正常:ポインタ NG:0
     1068 * ポインタは_ecn_fbs_mbx_rel()で解放する必要がある
    10751069 */
    10761070static T_ECN_SUB_BLK *_ecn_tsk_get_prp_pce(ECN_FBS_ID fa_fbs_id, T_ECN_PRP *fp_prp,
     
    10811075        ER              a_ret;
    10821076
    1083         /* ƒvƒƒpƒeƒB—pƒƒ‚ƒŠ‚̎擾 */
     1077        /* プロパティ用メモリの取得 */
    10841078        if (fp_prev_blk) {
    1085                 p_blk = fp_prev_blk; /* ‘O‰ñŽg‚Á‚½ƒƒ‚ƒŠ‚ª‚ ‚é‚È‚çAÄ—˜—p‚·‚é */
     1079                p_blk = fp_prev_blk; /* 前回使ったメモリがあるなら、再利用する */
    10861080        }
    10871081        else {
     
    10891083                if (!p_blk) {
    10901084                        ECN_DBG_PUT "_ecn_fbs_mbx_get() fault." ECN_DBG_END;
    1091                         return 0;       /* ƒƒ‚ƒŠ•s‘« */
     1085                        return 0;       /* メモリ不足 */
    10921086                }
    10931087        }
    10941088        memset(p_blk, 0, sizeof(*p_blk));
    10951089
    1096         /* T_ECN_PRP•”•ª(epc,pdc)‚ð“Ç‚ÝŽæ‚é */
     1090        /* T_ECN_PRP部分(epc,pdc)を読み取る */
    10971091        a_size = 0;
    10981092        a_ret = _ecn_fbs_get_data(fa_fbs_id, fp_prp, sizeof(*fp_prp), &a_size);
     
    11031097
    11041098        if (0 < fp_prp->pdc) {
    1105                 /* •tƒf[ƒ^•”•ª(edt)‚ð“Ç‚ÝŽæ‚é */
     1099                /* 付随データ部分(edt)を読み取る */
    11061100                a_size = 0;
    11071101                a_ret = _ecn_fbs_get_data(fa_fbs_id, p_blk, fp_prp->pdc, &a_size);
     
    11151109
    11161110lb_except:
    1117         /* ƒvƒƒpƒeƒB—pƒƒ‚ƒŠ‰ð•ú */
     1111        /* プロパティ用メモリ解放 */
    11181112        if (p_blk && !fp_prev_blk)
    11191113                _ecn_fbs_mbx_rel(p_blk);
     
    11251119        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count,
    11261120        int *p_sw_ok);
    1127 /* ƒvƒƒpƒeƒB’l‘‚«ž‚ÝŽÀs */
     1121/* プロパティ値書き込み実行 */
    11281122static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
    11291123        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count,
     
    11411135
    11421136        for (i = 0; i < a_count; i++) {
    1143                 /* ECN_FBS_ID‚©‚çT_ECN_PRP1Œ‚Æ‚»‚Ì•tƒf[ƒ^‚𒊏o‚µA‚»‚̃|ƒCƒ“ƒ^‚ð•Ô‚· */
     1137                /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出し、そのポインタを返す */
    11441138                p_edt = _ecn_tsk_get_prp_pce(fa_fbs_id, &a_prp, p_edt);
    11451139                if (!p_edt) {
     
    11481142                }
    11491143
    1150                 /* ƒvƒƒpƒeƒB‚̐ݒè set_prp(obj, reqp, resp) */
     1144                /* プロパティの設定 set_prp(obj, reqp, resp) */
    11511145                a_size = a_prp.pdc;
    1152                 /* obj,epc‚ɑΉž‚·‚ésetŠÖ”‚ðŒÄ‚Ô */
     1146                /* obj,epcに対応するset関数を呼ぶ */
    11531147                a_eprp = _ecn_tsk_eoj_get_property(fp_obj, a_prp.epc);
    11541148                if ((a_eprp != NULL)
     
    11721166                                fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3,
    11731167                                a_prp.epc, p_edt->payload[0], a_size ECN_DBG_END;
    1174                         *p_sw_ok = 0;   /* ƒvƒƒpƒeƒBÝ’莸”s */
    1175                         /* ‰ž“šˆ—‚̏ꍇEDT‚͐ݒ肵‚È‚¢ */
     1168                        *p_sw_ok = 0;   /* プロパティ設定失敗 */
     1169                        /* 応答処理の場合EDTは設定しない */
    11761170                        if (fa_update)
    11771171                                a_prp.pdc = 0;
    11781172                }
    11791173
    1180                 /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ(epc,pdc‚Ì2byte) */
     1174                /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */
    11811175                a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_prp, sizeof(a_prp));
    11821176                if (a_ret) {
     
    11861180
    11871181                if (0 < a_prp.pdc) {
    1188                         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ(edt n-byte) */
     1182                        /* 応答電文用メモリにデータ追加(edt n-byte) */
    11891183                        a_ret = _ecn_fbs_add_data_ex(a_fbs_res, p_edt->payload, a_prp.pdc);
    11901184                        if (a_ret) {
     
    11951189                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc ++;
    11961190
    1197                 /* ƒvƒƒpƒeƒB’Ê’m‚ ‚è‚̏ꍇ */
     1191                /* プロパティ通知ありの場合 */
    11981192                if (a_anno && (a_ans == a_size)) {
    11991193                        if (fa_fbs_anno->ptr == NULL) {
     
    12131207
    12141208lb_finally:
    1215         /* ƒvƒƒpƒeƒB—pƒƒ‚ƒŠ‰ð•ú */
     1209        /* プロパティ用メモリ解放 */
    12161210        if (p_edt)
    12171211                _ecn_fbs_mbx_rel(p_edt);
     
    12221216static ER _ecn_tsk_eoj_get_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access,
    12231217        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok);
    1224 /* ƒvƒƒpƒeƒB’l“ǂݏo‚µŽÀs */
     1218/* プロパティ値読み出し実行 */
    12251219static ER _ecn_tsk_eoj_get_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access,
    12261220        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok)
    12271221{
    12281222        T_ECN_SUB_BLK   *p_edt          =       0;
    1229         void                            *p_prp_buf      =       0;      /* ì‹Æ—̈æ */
     1223        void                            *p_prp_buf      =       0;      /* 作業領域 */
    12301224        const EPRPINIB          *a_eprp;
    12311225        ER                                      a_ret           =       E_SYS;
     
    12351229        ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0;
    12361230
    1237         /* ì‹Æ—̈æŠm•Û */
     1231        /* 作業領域確保 */
    12381232        p_prp_buf = _ecn_fbs_mbx_get(ECHONET_MEMPOOL_BLOCK_SIZE);
    12391233        if (!p_prp_buf) {
    12401234                ECN_DBG_PUT "_ecn_fbs_mbx_get() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
    1241                 goto lb_except; /* ƒƒ‚ƒŠ•s‘« */
     1235                goto lb_except; /* メモリ不足 */
    12421236        }
    12431237
    12441238        for (i = 0; i < a_count; i++) {
    1245                 /* ECN_FBS_ID‚©‚çT_ECN_PRP1Œ‚Æ‚»‚Ì•tƒf[ƒ^‚𒊏o */
     1239                /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出 */
    12461240                p_edt = _ecn_tsk_get_prp_pce(fa_fbs_id, &a_prp, p_edt);
    12471241                if (!p_edt) {
     
    12501244                }
    12511245
    1252                 /* ƒvƒƒpƒeƒB‚̎擾 get_eprp(obj, reqp, resp, size) */
     1246                /* プロパティの取得 get_eprp(obj, reqp, resp, size) */
    12531247                memset(p_prp_buf, 0, ECHONET_MEMPOOL_BLOCK_SIZE);
    1254                 /* obj,epc‚ɑΉž‚·‚égetŠÖ”‚ðŒÄ‚Ô */
     1248                /* obj,epcに対応するget関数を呼ぶ */
    12551249                a_eprp = _ecn_tsk_eoj_get_property(fp_obj, a_prp.epc);
    12561250                if ((a_eprp != NULL) && (((a_eprp->eprpatr & fa_access) != 0) && (fa_eobjatr == EOBJ_LOCAL_NODE) || fa_forward)) {
     
    12631257                        a_prp.pdc = (uint8_t)a_ans;
    12641258                } else {
    1265                         *p_sw_ok = 0;   /* ƒvƒƒpƒeƒBŽæ“¾Ž¸”s */
     1259                        *p_sw_ok = 0;   /* プロパティ取得失敗 */
    12661260                        a_ans = 0;
    12671261                        a_prp.pdc = 0;
    12681262                }
    12691263
    1270                 /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ(epc,pdc‚Ì2byte) */
     1264                /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */
    12711265                a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_prp, sizeof(a_prp));
    12721266                if (a_ret) {
     
    12751269                }
    12761270                if (0 < a_ans) {
    1277                         /* •tƒf[ƒ^’ljÁ */
     1271                        /* 付随データ追加 */
    12781272                        a_ret = _ecn_fbs_add_data_ex(a_fbs_res, p_prp_buf, a_ans);
    12791273                        if (a_ret) {
     
    12911285
    12921286lb_finally:
    1293         /* ì‹Æ—̈æ‰ð•ú */
     1287        /* 作業領域解放 */
    12941288        if (p_prp_buf)
    12951289                _ecn_fbs_mbx_rel(p_prp_buf);
    12961290
    1297         /* ƒvƒƒpƒeƒB—pƒƒ‚ƒŠ‰ð•ú */
     1291        /* プロパティ用メモリ解放 */
    12981292        if (p_edt)
    12991293                _ecn_fbs_mbx_rel(p_edt);
     
    13031297
    13041298static ER _ecn_tsk_eoj_res_main(ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok);
    1305 /* ƒvƒƒpƒeƒB’l“ǂݏo‚µŽÀs */
     1299/* プロパティ値読み出し実行 */
    13061300static ER _ecn_tsk_eoj_res_main(ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok)
    13071301{
    13081302        T_ECN_SUB_BLK   *p_edt          =       0;
    1309         void                            *p_prp_buf      =       0;      /* ì‹Æ—̈æ */
     1303        void                            *p_prp_buf      =       0;      /* 作業領域 */
    13101304        ER                                      a_ret           =       E_SYS;
    13111305        T_ECN_PRP                       a_prp;                  /* epc+pdc */
     
    13141308        ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0;
    13151309
    1316         /* ì‹Æ—̈æŠm•Û */
     1310        /* 作業領域確保 */
    13171311        p_prp_buf = _ecn_fbs_mbx_get(ECHONET_MEMPOOL_BLOCK_SIZE);
    13181312        if (!p_prp_buf) {
    13191313                ECN_DBG_PUT "_ecn_fbs_mbx_get() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
    1320                 goto lb_except; /* ƒƒ‚ƒŠ•s‘« */
     1314                goto lb_except; /* メモリ不足 */
    13211315        }
    13221316
    13231317        for (i = 0; i < a_count; i++) {
    1324                 /* ECN_FBS_ID‚©‚çT_ECN_PRP1Œ‚Æ‚»‚Ì•tƒf[ƒ^‚𒊏o */
     1318                /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出 */
    13251319                p_edt = _ecn_tsk_get_prp_pce(fa_fbs_id, &a_prp, p_edt);
    13261320                if (!p_edt) {
     
    13311325                a_prp.pdc = 0;
    13321326
    1333                 /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ(epc,pdc‚Ì2byte) */
     1327                /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */
    13341328                a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_prp, sizeof(a_prp));
    13351329                if (a_ret) {
     
    13461340
    13471341lb_finally:
    1348         /* ì‹Æ—̈æ‰ð•ú */
     1342        /* 作業領域解放 */
    13491343        if (p_prp_buf)
    13501344                _ecn_fbs_mbx_rel(p_prp_buf);
    13511345
    1352         /* ƒvƒƒpƒeƒB—pƒƒ‚ƒŠ‰ð•ú */
     1346        /* プロパティ用メモリ解放 */
    13531347        if (p_edt)
    13541348                _ecn_fbs_mbx_rel(p_edt);
     
    13571351}
    13581352
    1359 /* ƒvƒƒpƒeƒB’l“Ç‚Ý”ò‚΂µŽÀs */
     1353/* プロパティ値読み飛ばし実行 */
    13601354static ER _ecn_tsk_eoj_skip_main(const EOBJINIB *fp_obj, ECN_FBS_ID fa_fbs_id,
    13611355        int a_count);
     
    13681362
    13691363        for (i = 0; i < a_count; i++) {
    1370                 /* T_ECN_PRP•”•ª(epc,pdc)‚ð“Ç‚ÝŽæ‚é */
     1364                /* T_ECN_PRP部分(epc,pdc)を読み取る */
    13711365                a_size = 0;
    13721366                a_ret = _ecn_fbs_get_data(fa_fbs_id, &a_prp, sizeof(a_prp), &a_size);
     
    13761370                }
    13771371
    1378                 /* pdc•ª“Ç‚Ý”ò‚΂µ */
     1372                /* pdc分読み飛ばし */
    13791373                a_ret = _ecn_fbs_seek_rpos(fa_fbs_id, a_prp.pdc);
    13801374                if (a_ret) {
     
    13951389static void _ecn_tsk_mk_rsp_hdr(const EOBJINIB *fp_obj, T_ECN_EDT_HDR *fp_rsp_esv,
    13961390        T_ECN_EDT_HDR const *fp_req_esv);
    1397 /* ‰ž“š“d•¶Ý’è */
     1391/* 応答電文設定 */
    13981392static void _ecn_tsk_mk_rsp_hdr(const EOBJINIB *fp_obj, T_ECN_EDT_HDR *fp_rsp_esv,
    13991393        T_ECN_EDT_HDR const *fp_req_esv)
     
    14201414}
    14211415
    1422 /* ‰ž“š“d•¶—pfbsÝ’è */
     1416/* 応答電文用fbs設定 */
    14231417static void _ecn_tsk_set_rsp_fbs(ECN_FBS_ID fa_rsp_fbs, T_ECN_FST_BLK const *fp_req_ptr);
    1424 /* ‰ž“š“d•¶—pfbsÝ’è(sender/target‚̐ݒè) */
     1418/* 応答電文用fbs設定(sender/targetの設定) */
    14251419static void _ecn_tsk_set_rsp_fbs(ECN_FBS_ID fa_rsp_fbs, T_ECN_FST_BLK const *fp_req_ptr)
    14261420{
     
    14311425}
    14321426
    1433 /* ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹     */
     1427/* プロパティ値書き込み要求 */
    14341428static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
    14351429        ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
     
    14461440        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
    14471441
    1448         /* ‰ž“šÅ‘åƒTƒCƒY‚̎擾 */
     1442        /* 応答最大サイズの取得 */
    14491443        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    14501444
    1451         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚̎擾 */
     1445        /* 応答電文用メモリの取得 */
    14521446        a_ret = _ecn_fbs_cre(a_size, &a_fbs_res);
    1453         if (a_ret != E_OK || !a_fbs_res.ptr) /* Šm•ÛŽ¸”s */
     1447        if (a_ret != E_OK || !a_fbs_res.ptr) /* 確保失敗 */
    14541448                return;
    14551449
    1456         /* ‰ž“š“d•¶Ý’è */
     1450        /* 応答電文設定 */
    14571451        if(p_req_esv->edata.deoj.eojx3 != 0)
    14581452                _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
     
    14601454                _ecn_tsk_mk_rsp_hdr(fp_obj, &a_ecn_hdp, p_req_esv);
    14611455
    1462         /* ³íŽž‚̉ž“š“d•¶‚ªƒvƒƒpƒeƒB’l’Ê’m‰ž“š‚̏ꍇ */
     1456        /* 正常時の応答電文がプロパティ値通知応答の場合 */
    14631457        if (fa_res_esv == ESV_INFC_RES) {
    1464                 /* ‘—MŒ³‚ƈ¶æ‚ð“ü‚ê‘Ö‚¦ */
     1458                /* 送信元と宛先を入れ替え */
    14651459                eoj = a_ecn_hdp.edata.seoj;
    14661460                a_ecn_hdp.edata.seoj = a_ecn_hdp.edata.deoj;
     
    14681462        }
    14691463
    1470         f_put_fbs_eoj("_ecn_tsk_eoj_set", "fa_fbs_id", fa_fbs_id); /* s/deoj ƒfƒoƒbƒOo—Í */
    1471 
    1472         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ */
     1464        f_put_fbs_eoj("_ecn_tsk_eoj_set", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */
     1465
     1466        /* 応答電文用メモリにデータ追加 */
    14731467        a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_ecn_hdp,
    14741468                                sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata));
     
    14761470                goto lb_except;
    14771471
    1478         /* payloadæ“ª‚ÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)‚ð“Ç‚Ý”ò‚΂· */
     1472        /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
    14791473        a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
    14801474        if (a_ret)
    14811475                goto lb_except;
    14821476
    1483         /* ‰ž“š“d•¶—pfbsÝ’è */
     1477        /* 応答電文用fbs設定 */
    14841478        _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr);
    14851479
    1486         /* ƒvƒƒpƒeƒB’l‘‚«ž‚ÝŽÀs */
     1480        /* プロパティ値書き込み実行 */
    14871481        a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_update, fa_fbs_id, a_fbs_res,
    14881482                fa_fbs_anno, p_req_esv->edata.opc, &a_sw_ok);
     
    14901484                goto lb_except;
    14911485
    1492         /* ‰ž“š—v‚̏ꍇ */
     1486        /* 応答要の場合 */
    14931487        if (a_sw_ok) {
    14941488                if (!fa_res_esv) {
    1495                         /* ‰ž“š•s—v‚̏ꍇ */
     1489                        /* 応答不要の場合 */
    14961490                        _ecn_fbs_del(a_fbs_res);
    14971491                        goto lb_finally;
    14981492                }
    1499                 /* Ý’菈—¬Œ÷ */
     1493                /* 設定処理成功 */
    15001494                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv;
    15011495        } else {
    15021496                if (!fa_sna_esv) {
    1503                         /* ‰ž“š•s—v‚̏ꍇ */
     1497                        /* 応答不要の場合 */
    15041498                        _ecn_fbs_del(a_fbs_res);
    15051499                        goto lb_finally;
    15061500                }
    1507                 /* Ý’菈—Ž¸”s */
     1501                /* 設定処理失敗 */
    15081502                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
    15091503        }
    1510         /* ‰ž“š‘—M */
     1504        /* 応答送信 */
    15111505        a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false);
    15121506        if (a_ret == E_OK)
     
    15141508
    15151509lb_except:
    1516         /* ƒf[ƒ^‘—MŽ¸”s‚µ‚½‚ç—̈æ‰ð•ú */
     1510        /* データ送信失敗したら領域解放 */
    15171511        if (a_fbs_res.ptr)
    15181512                _ecn_fbs_del(a_fbs_res);
     
    15221516}
    15231517
    1524 /* ƒvƒƒpƒeƒB’l“ǂݏo‚µ—v‹     */
     1518/* プロパティ値読み出し要求 */
    15251519static void _ecn_tsk_eoj_get(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access,
    15261520        ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv)
     
    15351529        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
    15361530
    1537         /* ‰ŠúŽæ“¾ƒTƒCƒY */
     1531        /* 初期取得サイズ */
    15381532        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    15391533
    1540         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚̎擾 */
     1534        /* 応答電文用メモリの取得 */
    15411535        a_ret = _ecn_fbs_cre(a_size, &a_fbs_res);
    1542         if (a_ret != E_OK || !a_fbs_res.ptr) { /* Šm•ÛŽ¸”s */
     1536        if (a_ret != E_OK || !a_fbs_res.ptr) { /* 確保失敗 */
    15431537                ECN_DBG_PUT "_ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
    15441538                goto lb_finally;
    15451539        }
    15461540
    1547         /* ‰ž“š“d•¶Ý’è */
     1541        /* 応答電文設定 */
    15481542        if(p_req_esv->edata.deoj.eojx3 != 0)
    15491543                _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
     
    15511545                _ecn_tsk_mk_rsp_hdr(fp_obj, &a_ecn_hdp, p_req_esv);
    15521546
    1553         f_put_fbs_eoj("_ecn_tsk_eoj_get", "fa_fbs_id", fa_fbs_id); /* s/deoj ƒfƒoƒbƒOo—Í */
    1554 
    1555         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ */
     1547        f_put_fbs_eoj("_ecn_tsk_eoj_get", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */
     1548
     1549        /* 応答電文用メモリにデータ追加 */
    15561550        a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_ecn_hdp,
    15571551                        sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata));
     
    15611555        }
    15621556
    1563         /* payloadæ“ª‚ÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)‚ð“Ç‚Ý”ò‚΂· */
     1557        /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
    15641558        a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
    15651559        if (a_ret) {
     
    15681562        }
    15691563
    1570         /* ‰ž“š“d•¶—pfbsÝ’è */
     1564        /* 応答電文用fbs設定 */
    15711565        _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr);
    15721566
    1573         /* ƒvƒƒpƒeƒB’l“ǂݍž‚ÝŽÀs */
     1567        /* プロパティ値読み込み実行 */
    15741568        a_ret = _ecn_tsk_eoj_get_main(fp_obj, fa_eobjatr, fa_forward, fa_access, fa_fbs_id, a_fbs_res,
    15751569                ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc, &a_sw_ok);
     
    15811575        if (a_sw_ok) {
    15821576                if (!fa_res_esv) {
    1583                         /* ‰ž“š•s—v‚̏ꍇ */
     1577                        /* 応答不要の場合 */
    15841578                        _ecn_fbs_del(a_fbs_res);
    15851579                        goto lb_finally;
    15861580                }
    1587                 /* Ý’菈—¬Œ÷ */
     1581                /* 設定処理成功 */
    15881582                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv;
    15891583        } else {
    15901584                if (!fa_sna_esv) {
    1591                         /* ‰ž“š•s—v‚̏ꍇ */
     1585                        /* 応答不要の場合 */
    15921586                        _ecn_fbs_del(a_fbs_res);
    15931587                        goto lb_finally;
    15941588                }
    1595                 /* Ý’菈—Ž¸”s */
     1589                /* 設定処理失敗 */
    15961590                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
    15971591        }
    1598         /* ‰ž“š‘—M */
     1592        /* 応答送信 */
    15991593        a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false);
    16001594        if (a_ret != E_OK) {
     
    16051599
    16061600lb_except:
    1607         /* ƒf[ƒ^‘—MŽ¸”s‚µ‚½‚ç—̈æ‰ð•ú */
     1601        /* データ送信失敗したら領域解放 */
    16081602        if (a_fbs_res.ptr)
    16091603                _ecn_fbs_del(a_fbs_res);
     
    16131607}
    16141608
    1615 /* ƒvƒƒpƒeƒB’l“ǂݏo‚µ—v‹     */
     1609/* プロパティ値読み出し要求 */
    16161610static void _ecn_tsk_eoj_res(ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv,
    16171611        ECN_SRV_CODE fa_sna_esv)
     
    16261620        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
    16271621
    1628         /* ‰ŠúŽæ“¾ƒTƒCƒY */
     1622        /* 初期取得サイズ */
    16291623        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    16301624
    1631         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚̎擾 */
     1625        /* 応答電文用メモリの取得 */
    16321626        a_ret = _ecn_fbs_cre(a_size, &a_fbs_res);
    1633         if (a_ret != E_OK || !a_fbs_res.ptr) { /* Šm•ÛŽ¸”s */
     1627        if (a_ret != E_OK || !a_fbs_res.ptr) { /* 確保失敗 */
    16341628                ECN_DBG_PUT "_ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
    16351629                goto lb_finally;
    16361630        }
    16371631
    1638         /* ‰ž“š“d•¶Ý’è                                         */
     1632        /* 応答電文設定                                               */
    16391633        _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
    16401634
    1641         f_put_fbs_eoj("_ecn_tsk_eoj_res", "fa_fbs_id", fa_fbs_id); /* s/deoj ƒfƒoƒbƒOo—Í */
    1642 
    1643         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ */
     1635        f_put_fbs_eoj("_ecn_tsk_eoj_res", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */
     1636
     1637        /* 応答電文用メモリにデータ追加 */
    16441638        a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_ecn_hdp,
    16451639                        sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata));
     
    16491643        }
    16501644
    1651         /* payloadæ“ª‚ÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)‚ð“Ç‚Ý”ò‚΂· */
     1645        /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
    16521646        a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
    16531647        if (a_ret) {
     
    16561650        }
    16571651
    1658         /* ‰ž“š“d•¶—pfbsÝ’è */
     1652        /* 応答電文用fbs設定 */
    16591653        _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr);
    16601654
    1661         /* ƒvƒƒpƒeƒB’l“ǂݍž‚ÝŽÀs */
     1655        /* プロパティ値読み込み実行 */
    16621656        a_ret = _ecn_tsk_eoj_res_main(fa_fbs_id, a_fbs_res,
    16631657                ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc, &a_sw_ok);
     
    16691663        if (a_sw_ok) {
    16701664                if (!fa_res_esv) {
    1671                         /* ‰ž“š•s—v‚̏ꍇ */
     1665                        /* 応答不要の場合 */
    16721666                        _ecn_fbs_del(a_fbs_res);
    16731667                        goto lb_finally;
    16741668                }
    1675                 /* Ý’菈—¬Œ÷ */
     1669                /* 設定処理成功 */
    16761670                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv;
    16771671        } else {
    16781672                if (!fa_sna_esv) {
    1679                         /* ‰ž“š•s—v‚̏ꍇ */
     1673                        /* 応答不要の場合 */
    16801674                        _ecn_fbs_del(a_fbs_res);
    16811675                        goto lb_finally;
    16821676                }
    1683                 /* Ý’菈—Ž¸”s */
     1677                /* 設定処理失敗 */
    16841678                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
    16851679        }
    1686         /* ‰ž“š‘—M */
     1680        /* 応答送信 */
    16871681        a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false);
    16881682        if (a_ret != E_OK) {
     
    16931687
    16941688lb_except:
    1695         /* ƒf[ƒ^‘—MŽ¸”s‚µ‚½‚ç—̈æ‰ð•ú */
     1689        /* データ送信失敗したら領域解放 */
    16961690        if (a_fbs_res.ptr)
    16971691                _ecn_fbs_del(a_fbs_res);
     
    17081702        T_ECN_EDT_HDR   a_ecn_hdp;
    17091703        ECN_FBS_ID              a_fbs_res       = { 0 };
    1710         int                             a_rdprp_wrpos;  /*      ƒvƒƒpƒeƒB“ǂݍž‚ÝŒ”‘‚«ž‚ÝŽž‚̃wƒbƒhˆÊ’u    */
     1704        int                             a_rdprp_wrpos;  /*      プロパティ読み込み件数書き込み時のヘッド位置  */
    17111705        ER              a_ret;
    17121706        int             i, a_size, a_rdlen;
    17131707        int             a_sw_ok = 1;
    1714         int             a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc;    /* ˆ—ƒvƒƒpƒeƒB” */
     1708        int             a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc;    /* 処理プロパティ数 */
    17151709
    17161710        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
     
    17191713                fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3 ECN_DBG_END;
    17201714
    1721         /* ‰ŠúŽæ“¾ƒTƒCƒY */
     1715        /* 初期取得サイズ */
    17221716        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    17231717
    1724         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚̎擾 */
     1718        /* 応答電文用メモリの取得 */
    17251719        a_ret = _ecn_fbs_cre(a_size, &a_fbs_res);
    1726         if (a_ret != E_OK || !a_fbs_res.ptr) /* Šm•ÛŽ¸”s */
     1720        if (a_ret != E_OK || !a_fbs_res.ptr) /* 確保失敗 */
    17271721                goto lb_finally;
    17281722
    1729         /* ‰ž“š“d•¶Ý’è */
     1723        /* 応答電文設定 */
    17301724        if(p_req_esv->edata.deoj.eojx3 != 0)
    17311725                _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
     
    17341728        a_size -= sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY);
    17351729
    1736         f_put_fbs_eoj("_ecn_tsk_eoj_set_get", "fa_fbs_id", fa_fbs_id); /* s/deoj ƒfƒoƒbƒOo—Í */
    1737 
    1738         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ */
     1730        f_put_fbs_eoj("_ecn_tsk_eoj_set_get", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */
     1731
     1732        /* 応答電文用メモリにデータ追加 */
    17391733        a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_ecn_hdp,
    17401734                                sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata));
     
    17421736                goto lb_except;
    17431737
    1744         /* payloadæ“ª‚ÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)‚ð“Ç‚Ý”ò‚΂· */
     1738        /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
    17451739        a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
    17461740        if (a_ret)
    17471741                goto lb_except;
    17481742
    1749         /* ‰ž“š“d•¶—pfbsÝ’è */
     1743        /* 応答電文用fbs設定 */
    17501744        _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr);
    17511745
    1752         /* ƒvƒƒpƒeƒB’l‘‚«ž‚ÝŽÀs */
     1746        /* プロパティ値書き込み実行 */
    17531747        a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, false, fa_fbs_id, a_fbs_res,
    17541748                fa_fbs_anno, a_count, &a_sw_ok);
     
    17631757                (a_sw_ok ? "true" : "false") ECN_DBG_END;
    17641758
    1765         /* ŽŸ‚ÌŒ”‚ð“Ç‚ÝŽæ‚é(1byte)                                            */
    1766         /* ¨ ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet]        */
     1759        /* 次の件数を読み取る(1byte)                                             */
     1760        /* ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet] */
    17671761        a_rdlen = i = 0;
    17681762        a_ret = _ecn_fbs_get_data(fa_fbs_id, &i, 1, &a_rdlen);
     
    17711765        a_count = *(uint8_t *)&i;
    17721766
    1773         /* ƒvƒƒpƒeƒB“ǂݍž‚ÝŒ”‘‚«ž‚ÝŽž‚̃wƒbƒhî•ñ‚ð‹L˜^ */
     1767        /* プロパティ読み込み件数書き込み時のヘッド情報を記録 */
    17741768        a_rdprp_wrpos = _ecn_fbs_get_datalen(a_fbs_res);
    17751769
    1776         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ (OPCGet 1byte) */
     1770        /* 応答電文用メモリにデータ追加 (OPCGet 1byte) */
    17771771        a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &i, 1);
    17781772        if (a_ret)
    17791773                goto lb_except;
    17801774
    1781         /* ‚±‚ÌŽž“_‚ł̉ž“š“d•¶’†ƒvƒƒpƒeƒBŒ”‚ð‹L˜^ */
     1775        /* この時点での応答電文中プロパティ件数を記録 */
    17821776        i = ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc;
    17831777        ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0;
    17841778
    1785         /* ƒvƒƒpƒeƒB’l“ǂݍž‚ÝŽÀs */
     1779        /* プロパティ値読み込み実行 */
    17861780        a_ret = _ecn_tsk_eoj_get_main(fp_obj, fa_eobjatr, false, EPC_RULE_GET, fa_fbs_id, a_fbs_res,
    17871781                a_count, &a_sw_ok);
     
    17961790                (a_sw_ok ? "true" : "false") ECN_DBG_END;
    17971791
    1798         /* ƒvƒƒpƒeƒB“ǂݍž‚ÝŒ”‘‚«ž‚ÝŽž‚̃wƒbƒhî•ñ‚ŁA“ǂݏo‚µŒ”‚ð‹L˜^ */
     1792        /* プロパティ読み込み件数書き込み時のヘッド情報で、読み出し件数を記録 */
    17991793        _ecn_fbs_poke(a_fbs_res, a_rdprp_wrpos, ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc);
    18001794
    1801         /* ‹L˜^‚µ‚Ä‚¨‚¢‚½ƒvƒƒpƒeƒBŒ”i‘‚«ž‚ÝŒ”j‚ð‘‚«–ß‚· */
     1795        /* 記録しておいたプロパティ件数(書き込み件数)を書き戻す */
    18021796        ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = (uint8_t)i;
    18031797
    1804         /* ‰ž“š—v‚̏ꍇ */
     1798        /* 応答要の場合 */
    18051799        if (a_sw_ok) {
    1806                 /* Ý’菈—¬Œ÷ */
     1800                /* 設定処理成功 */
    18071801                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv;
    18081802        } else {
    1809                 /* Ý’菈—Ž¸”s */
     1803                /* 設定処理失敗 */
    18101804                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
    18111805        }
    1812         /* ‰ž“š‘—M */
     1806        /* 応答送信 */
    18131807        a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false);
    18141808        if (a_ret == E_OK)
     
    18161810
    18171811lb_except:
    1818         /* ƒf[ƒ^‘—MŽ¸”s‚µ‚½‚ç—̈æ‰ð•ú */
     1812        /* データ送信失敗したら領域解放 */
    18191813        if (a_fbs_res.ptr)
    18201814                _ecn_fbs_del(a_fbs_res);
     
    18331827        int             i, a_size, a_rdlen;
    18341828        int             a_sw_ok = 1;
    1835         int             a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc;    /* ˆ—ƒvƒƒpƒeƒB” */
     1829        int             a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc;    /* 処理プロパティ数 */
    18361830
    18371831        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
     
    18401834                fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3 ECN_DBG_END;
    18411835
    1842         /* ‰ŠúŽæ“¾ƒTƒCƒY */
     1836        /* 初期取得サイズ */
    18431837        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    18441838
    1845         /* ‰ž“š“d•¶—pƒƒ‚ƒŠiƒ_ƒ~[j‚̎擾 */
     1839        /* 応答電文用メモリ(ダミー)の取得 */
    18461840        a_ret = _ecn_fbs_cre(a_size, &a_fbs_dmy);
    1847         if (a_ret != E_OK || !a_fbs_dmy.ptr) /* Šm•ÛŽ¸”s */
     1841        if (a_ret != E_OK || !a_fbs_dmy.ptr) /* 確保失敗 */
    18481842                goto lb_finally;
    18491843
    1850         /* ‰ž“š“d•¶Ý’è                                         */
     1844        /* 応答電文設定                                               */
    18511845        _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
    18521846        a_size -= sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY);
    18531847
    1854         /* payloadæ“ª‚ÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)‚ð“Ç‚Ý”ò‚΂· */
     1848        /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
    18551849        a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
    18561850        if (a_ret)
    18571851                goto lb_except;
    18581852
    1859         /* ƒvƒƒpƒeƒB’l‘‚«ž‚݉ž“š“Ç‚Ý”ò‚΂µŽÀs */
     1853        /* プロパティ値書き込み応答読み飛ばし実行 */
    18601854        a_ret = _ecn_tsk_eoj_skip_main(fp_obj, fa_fbs_id, a_count);
    18611855        if (a_ret) {
     
    18691863                (a_sw_ok ? "true" : "false") ECN_DBG_END;
    18701864
    1871         /* ŽŸ‚ÌŒ”‚ð“Ç‚ÝŽæ‚é(1byte)                                            */
    1872         /* ¨ ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet]        */
     1865        /* 次の件数を読み取る(1byte)                                             */
     1866        /* ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet] */
    18731867        a_rdlen = i = 0;
    18741868        a_ret = _ecn_fbs_get_data(fa_fbs_id, &i, 1, &a_rdlen);
     
    18771871        a_count = *(uint8_t *)&i;
    18781872
    1879         /* ƒvƒƒpƒeƒB’l“ǂݏo‚µ‰ž“š‚̏‘‚«ž‚ÝŽÀs */
     1873        /* プロパティ値読み出し応答の書き込み実行 */
    18801874        a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, true, fa_fbs_id, a_fbs_dmy,
    18811875                                                                  fa_fbs_anno, a_count, &a_sw_ok);
     
    18931887
    18941888lb_except:
    1895         /* ƒf[ƒ^‘—MŽ¸”s‚µ‚½‚ç—̈æ‰ð•ú */
     1889        /* データ送信失敗したら領域解放 */
    18961890        if (a_fbs_dmy.ptr)
    18971891                _ecn_fbs_del(a_fbs_dmy);
     
    19021896
    19031897/*
    1904  * ‰ž“š“d•¶‘Ò‚¿‚ÌŠ„‚荞‚Ý“d•¶ì¬
     1898 * 応答電文待ちの割り込み電文作成
    19051899 */
    19061900ER _ecn_mk_brk_wai(ECN_FBS_ID *pk_fbs_id, const void *p_dat, size_t fa_size)
    19071901{
    19081902        ER                              a_ret;
    1909         ECN_FBS_ID              a_fbs_id = { 0 };       /* —v‹“d•¶—pƒƒ‚ƒŠ     */
     1903        ECN_FBS_ID              a_fbs_id = { 0 };       /* 要求電文用メモリ     */
    19101904
    19111905        if (!pk_fbs_id)
     
    19131907        *pk_fbs_id = a_fbs_id;
    19141908        if (sizeof(a_fbs_id.ptr->payload) <= fa_size)
    1915                 return E_PAR; /* •tƒf[ƒ^‚ª‘å‚«‚·‚¬‚é */
     1909                return E_PAR; /* 付随データが大きすぎる */
    19161910        if (!p_dat && 0 < fa_size)
    1917                 return E_PAR; /* •tƒf[ƒ^ƒTƒCƒY‚ª1ˆÈã‚Ȃ̂Ƀf[ƒ^ƒ|ƒCƒ“ƒ^‚ªNULL */
    1918 
    1919         /* —v‹“d•¶—pƒƒ‚ƒŠ‚̎擾 */
     1911                return E_PAR; /* 付随データサイズが1以上なのにデータポインタがNULL */
     1912
     1913        /* 要求電文用メモリの取得 */
    19201914        a_ret = _ecn_fbs_cre((0 < fa_size ? fa_size : 1), &a_fbs_id);
    1921         if (a_ret != E_OK || !a_fbs_id.ptr) { /* Šm•ÛŽ¸”s */
     1915        if (a_ret != E_OK || !a_fbs_id.ptr) { /* 確保失敗 */
    19221916                syslog(LOG_WARNING, "_ecn_fbs_cre(%d) result = %d:%s", fa_size, a_ret, itron_strerror(a_ret));
    19231917                return a_ret;
    19241918        }
    19251919
    1926         /* —v‹“d•¶Ý’è */
     1920        /* 要求電文設定 */
    19271921        a_fbs_id.ptr->hdr.type = ECN_MSG_USER_BREAK;
    19281922        a_fbs_id.ptr->hdr.sender = ENOD_API_ID;
     
    19311925
    19321926        if (0 < fa_size && p_dat) {
    1933                 /* •tƒf[ƒ^’ljÁ */
     1927                /* 付随データ追加 */
    19341928                a_ret = _ecn_fbs_add_data_ex(a_fbs_id, p_dat, fa_size);
    19351929                if (a_ret) {
     
    19431937        *pk_fbs_id = a_fbs_id;
    19441938
    1945         /* ³íI—¹ */
     1939        /* 正常終了 */
    19461940        return a_ret;
    19471941
    19481942lb_except:
    1949         /* ƒf[ƒ^ì¬Ž¸”s‚µ‚½‚ç—̈æ‰ð•ú */
     1943        /* データ作成失敗したら領域解放 */
    19501944        if (a_fbs_id.ptr)
    19511945                _ecn_fbs_del(a_fbs_id);
     
    19541948}
    19551949
    1956 /* ‰ž“š“d•¶—pfbsÝ’è(sender/target‚̐ݒè) */
     1950/* 応答電文用fbs設定(sender/targetの設定) */
    19571951ER _ecn_tsk_cre_req_fbs(ID sender, uint8_t cmd, ECN_FBS_ID *pk_req)
    19581952{
     
    19831977}
    19841978
    1985 /* ‰ž“š“d•¶—pfbsÝ’è(sender/target‚̐ݒè) */
     1979/* 応答電文用fbs設定(sender/targetの設定) */
    19861980ER _ecn_tsk_cre_res_fbs(ECN_FBS_ID req, uint8_t cmd, ECN_FBS_ID *pk_res)
    19871981{
  • uKadecot/trunk/ecnl_ssp/echonet_task.h

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
     
    4137
    4238/*
    43  *              ECHONET Lite ƒ^ƒXƒN
     39 *              ECHONET Lite タスク
    4440 */
    4541
     
    5854
    5955/*
    60  *  ECHONET Lite ƒ^ƒXƒNŠÖ˜A‚̒萔‚̃fƒtƒHƒ‹ƒg’l‚Ì’è‹`
     56 *  ECHONET Lite タスク関連の定数のデフォルト値の定義
    6157 */
    6258#ifndef ECHONET_TASK_PRIORITY
    63 #define ECHONET_TASK_PRIORITY   6               /* ‰Šú—Dæ“x */
     59#define ECHONET_TASK_PRIORITY   6               /* 初期優先度 */
    6460#endif /* ECHONET_TASK_PRIORITY */
    6561
    6662#ifndef ECHONET_TASK_STACK_SIZE
    67 #define ECHONET_TASK_STACK_SIZE 1024    /* ƒXƒ^ƒbƒN—̈æ‚̃TƒCƒY */
     63#define ECHONET_TASK_STACK_SIZE 1024    /* スタック領域のサイズ */
    6864#endif /* ECHONET_TASK_STACK_SIZE */
    6965
     
    8278
    8379/*
    84  *  ECHONET Lite ƒ^ƒXƒN‚Ì–{‘Ì
     80 *  ECHONET Lite タスクの本体
    8581 */
    8682void echonet_task(intptr_t exinf);
    8783
    8884/*
    89  *  ECHONET Lite ƒ^ƒXƒN‹N“®—p
     85 *  ECHONET Lite タスク起動用
    9086 */
    9187void echonet_cychdr(intptr_t exinf);
    9288
    93 /* ECHONET Lite ƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg‚Ì1ƒAƒiƒEƒ“ƒX“–‚½‚èÅ‘åƒm[ƒh” */
     89/* ECHONET Lite インスタンスリストの1アナウンス当たり最大ノード数 */
    9490#define ECN_IST_LST_EOJ_MAX_CT (84)
    9591
    96 /* ECHONET LiteƒIƒuƒWƒFƒNƒgƒR[ƒh x1,x2,x3(T_ECN_EOJ)‚ð24bit®”‚É•ÏŠ· */
     92/* ECHONET Liteオブジェクトコード x1,x2,x3(T_ECN_EOJ)を24bit整数に変換 */
    9793#define _ECN_EOJ2VALUE(s) (((s).eojx1 << 16) | ((s).eojx2 << 8) | (s).eojx3)
    9894
    9995enum ecn_epc_code
    10096{
    101         ECN_EPC_INL_BCS         =       0xD5    /* ƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg’Ê’mƒvƒƒpƒeƒB */
     97        ECN_EPC_INL_BCS         =       0xD5    /* インスタンスリスト通知プロパティ */
    10298};
    10399
     
    129125
    130126/*
    131  * —v‹“d•¶ì¬
     127 * 要求電文作成
    132128 */
    133129ER _ecn_tsk_mk_esv(ECN_FBS_ID *fp_fbs_id, ID fa_seoj, ID fa_deoj,
     
    137133
    138134/*
    139  * ‰ž“š“d•¶‘Ò‚¿‚ÌŠ„‚荞‚Ý“d•¶ì¬
     135 * 応答電文待ちの割り込み電文作成
    140136 */
    141137ER _ecn_mk_brk_wai(ECN_FBS_ID *pk_fbs_id, const void *p_dat, size_t fa_size);
  • uKadecot/trunk/ecnl_ssp/echonet_uip_task.c

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
     
    4137
    4238/*
    43  *              ECHONET Lite UDP’ʐMˆ—ƒ^ƒXƒN
     39 *              ECHONET Lite UDP通信処理タスク
    4440 */
    4541#ifdef SUPPORT_UIP
     
    9591
    9692/*
    97  * ŽóM‚µ‚½UDPƒf[ƒ^‚ðMAILBOX‚É‘—‚é
     93 * 受信したUDPデータをMAILBOXに送る
    9894 */
    9995ER _ecn_udp2mbx(const uint8_t *buffer, size_t fa_len, const T_IPV4EP *dst);
     
    110106
    111107        a_rcv_pkt.buffer = buffer;
    112         if (    a_rcv_pkt.t_esv->ecn_hdr.ehd1 != ECN_EDH1_ECHONET_LITE  /* ECHONET Lite‹KŠi     */
    113         ||      a_rcv_pkt.t_esv->ecn_hdr.ehd2 != ECN_EDH2_FORMAT_1                      /* “d•¶Œ`Ž®1            */) {
     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                */) {
    114110                ECN_DBG_PUT "[UDP ECHO SRV] illegal type (0x%02X,0x%02X)", a_rcv_pkt.t_esv->ecn_hdr.ehd1, a_rcv_pkt.t_esv->ecn_hdr.ehd2 ECN_DBG_END;
    115111                return E_PAR;
     
    134130        a_fbs_id.ptr->hdr.sender = ENOD_NOT_MATCH_ID;
    135131
    136         /* IPƒAƒhƒŒƒX‚©‚烊ƒ‚[ƒgECHONETƒm[ƒh‚Ö•ÏŠ· */
     132        /* IPアドレスからリモートECHONETノードへ変換 */
    137133        a_enod_id = udp_get_id((T_EDATA *)a_fbs_id.ptr, dst->ipaddr, dst->portno);
    138134        if (a_enod_id < 0 || tnum_enodadr <= a_enod_id) {
     
    140136                        ip2str(NULL, dst->ipaddr) ECN_DBG_END;
    141137        } else {
    142                 /* ‘—MŒ³ECHONETƒm[ƒh‚ð‹L˜^ */
     138                /* 送信元ECHONETノードを記録 */
    143139                a_fbs_id.ptr->hdr.sender = a_enod_id;
    144140        }
    145141        a_fbs_id.ptr->hdr.reply = a_fbs_id.ptr->hdr.sender;
    146142
    147         /* echonet_task‚É‘—‚é */
     143        /* echonet_taskに送る */
    148144        a_ret = psnd_dtq(ecn_svc_mailboxid, (intptr_t)a_fbs_id.ptr);
    149145        if (a_ret != E_OK) {
     
    158154
    159155/*
    160  *  ECHONET UDP’ʐMˆ—ƒ^ƒXƒN
     156 *  ECHONET UDP通信処理タスク
    161157 */
    162158static
    163159PT_THREAD(echonet_udp_task_pt(void))
    164160{
    165         /* UDPo—͗̈æiŽb’èj */
     161        /* UDP出力領域(暫定) */
    166162        static uint_t buffer[(UIP_BUFSIZE) / sizeof(uint_t) + 1];
    167163
     
    201197        }
    202198
    203         /* ŽüŠúƒnƒ“ƒhƒ‰‚Ì‹N“® */
     199        /* 周期ハンドラの起動 */
    204200        a_ret = sta_cyc(ecn_udp_cychdrid);
    205201        if (a_ret != E_OK) {
     
    220216        }
    221217
    222         /* ƒƒbƒZ[ƒWƒ‹[ƒv */
     218        /* メッセージループ */
    223219        for (;;) {
    224220                a_prev = a_now;
     
    244240
    245241                if (a_ret == E_OK) {
    246                         /* ‘—Mƒf[ƒ^’·‚ðŽæ“¾ */
     242                        /* 送信データ長を取得 */
    247243                        a_snd_len = _ecn_fbs_get_datalen(a_mdt.fbs_id);
    248244
     
    270266
    271267/*
    272  *  ECHONET UDP’ʐMˆ—ƒvƒƒgƒXƒŒƒbƒh‹N“®ƒ^ƒXƒN
     268 *  ECHONET UDP通信処理プロトスレッド起動タスク
    273269 */
    274270void echonet_udp_task(intptr_t exinf)
     
    278274
    279275/*
    280  *  ECHONET UDP’ʐMˆ—ƒ^ƒXƒN‹N“®—pŽüŠúƒnƒ“ƒhƒ‰[
     276 *  ECHONET UDP通信処理タスク起動用周期ハンドラー
    281277 */
    282278void echonet_udp_cychdr(intptr_t exinf)
     
    285281}
    286282
    287 /* ‰ž“š“d•¶—pfbsÝ’è(sender/target‚̐ݒè) */
     283/* 応答電文用fbs設定(sender/targetの設定) */
    288284static ER _ecn_udp_cre_req_fbs(ID sender, uint8_t cmd, ECN_FBS_ID *pk_req)
    289285{
     
    314310}
    315311
    316 /* ‰ž“š“d•¶—pfbsÝ’è(sender/target‚̐ݒè) */
     312/* 応答電文用fbs設定(sender/targetの設定) */
    317313static ER _ecn_udp_cre_res_fbs(ECN_FBS_ID req, uint8_t cmd, ECN_FBS_ID *pk_res)
    318314{
     
    344340
    345341/*
    346  *  “à•”ƒƒbƒZ[ƒWŽóMˆ—
     342 *  内部メッセージ受信処理
    347343 */
    348344void _ecn_int_msg(ECN_FBS_ID fbs_id, ECN_FBS_SSIZE_T a_snd_len)
     
    362358
    363359        switch(cmd){
    364         // IPƒAƒhƒŒƒX‚ð•ÔM
     360        // IPアドレスを返信
    365361        case ECN_UDP_MSG_GET_IPADDR_REQ:
    366362                if (a_snd_len < sizeof(msg)) {
     
    431427
    432428/*
    433  *  ECHONET “d•¶ŽóMˆ—
     429 *  ECHONET 電文受信処理
    434430 */
    435431void _ecn_esv_msg(ECN_FBS_ID fbs_id)
    436432{
    437         /* UDPo—͗̈æiŽb’èj */
     433        /* UDP出力領域(暫定) */
    438434        static uint_t buffer[(UIP_BUFSIZE) / sizeof(uint_t) + 1];
    439435        T_IPV4EP a_dst;
     
    444440        uip_ipaddr(a_dst.ipaddr, 0,0,0,0);
    445441        a_dst.portno = 0;
    446         /* ‘—MæIPƒAƒhƒŒƒX */
     442        /* 送信先IPアドレス */
    447443        a_ret = udp_get_ip(&a_dst, fbs_id.ptr->hdr.target);
    448444        if (!a_ret) {
    449                 ECN_DBG_PUT "[UDP TSK] echonet-node 0x%02X-0x%02X-0x%02X ¨ udp dest(%s)",
     445                ECN_DBG_PUT "[UDP TSK] echonet-node 0x%02X-0x%02X-0x%02X udp dest(%s)",
    450446                        ((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx1,
    451447                        ((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx2,
     
    453449                        ip2str(NULL, a_dst.ipaddr) ECN_DBG_END;
    454450
    455                 /* fbs‚©‚ço—͗̈æ‚Ƀf[ƒ^‚𒊏o */
     451                /* fbsから出力領域にデータを抽出 */
    456452                a_snd_len = 0;
    457453                a_ret = _ecn_fbs_get_data(fbs_id, buffer, sizeof(buffer), &a_snd_len);
     
    460456                }
    461457                else if(uip_ipaddr_cmp(a_dst.ipaddr, localhost)) {
    462                         /* ‘—Mæ‚ª127.0.0.1 ¨ mbx‚É“]‘— */
    463                         ECN_DBG_PUT "redirect ecn_udp_mailboxid ¨ ecn_svc_mailboxid (esv:0x%02X)",
     458                        /* 送信先が127.0.0.1 → mbxに転送 */
     459                        ECN_DBG_PUT "redirect ecn_udp_mailboxid ecn_svc_mailboxid (esv:0x%02X)",
    464460                                ((T_EDATA *)fbs_id.ptr)->hdr.edata.esv ECN_DBG_END;
    465461
     
    475471                        _ecn_dbg_bindmp((const uint8_t *)buffer, a_snd_len);
    476472#endif
    477                         /* UDP‘—M */
     473                        /* UDP送信 */
    478474                        a_ret = udp_snd_dat(UDP_CEPID, &a_dst, buffer, a_snd_len);
    479475                        if (a_ret < 0) {
     
    482478                }
    483479
    484                 /* ƒf[ƒ^‚ª’·‚·‚¬‚Ä1ƒpƒPƒbƒg‚ÉŽû‚Ü‚ç‚È‚©‚Á‚½ê‡ */
     480                /* データが長すぎて1パケットに収まらなかった場合 */
    485481                if (_ecn_fbs_exist_data(fbs_id)) {
    486482                        ECN_DBG_PUT "[UDP TSK] send, data so long: %dbyte(s)", _ecn_fbs_get_datalen(fbs_id) ECN_DBG_END;
     
    497493
    498494/*
    499  *  ƒmƒ“ƒuƒƒbƒLƒ“ƒOƒR[ƒ‹‚̃R[ƒ‹ƒoƒbƒNŠÖ”
     495 *  ノンブロッキングコールのコールバック関数
    500496 */
    501497static
     
    518514        }
    519515#ifdef _MSC_VER
    520         /* (ŠJ”­—p) ECHONET—pƒpƒPƒbƒgˆÈŠO‚Í“Ç‚ÝŽÌ‚Ä‚é */
     516        /* (開発用) ECHONET用パケット以外は読み捨てる */
    521517        if (buffer[0] != 0x10 || buffer[1] != 0x81) {
    522518                PT_EXIT(&s.pt);
     
    548544
    549545/*
    550  *  ƒŠƒ‚[ƒgECHONETƒm[ƒh‚Ì“K‡Šm”F
     546 *  リモートECHONETノードの適合確認
    551547 */
    552548bool_t is_match(const EOBJCB *enodcb, T_EDATA *edata, const void *_ipaddr, uint16_t portno)
     
    566562                return false;
    567563
    568         /* ƒm[ƒhƒXƒ^[ƒgŽžƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg’Ê’mˆÈŠO‚͏œŠO */
     564        /* ノードスタート時インスタンスリスト通知以外は除外 */
    569565        if (    edata->hdr.edata.esv != ESV_INF
    570566                ||      edata->hdr.edata.deoj.eojx1 != EOJ_X1_PROFILE
     
    588584                }
    589585                ECN_DBG_PUT "is_match(): ecn_itr_nxt() result: epc=0x%02X, pdc=%d", epc, pdc ECN_DBG_END;
    590                 /* ƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg’Ê’m‚Ü‚½‚ÍŽ©ƒm[ƒhƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg‚rˆÈŠO‚͏œŠO */
     586                /* インスタンスリスト通知または自ノードインスタンスリストS以外は除外 */
    591587                if ((epc != 0xD5) && (epc != 0xD6)) {
    592588                        continue;
    593589                }
    594590
    595                 /* ‚QƒoƒCƒg–ڈȍ~‚Éeoj‚ª—ñ‹“‚³‚ê‚Ä‚¢‚é */
     591                /* 2バイト目以降にeojが列挙されている */
    596592                count = (pdc - 1) / sizeof(T_ECN_EOJ);
    597593
    598                 /* ƒm[ƒh“à‚Ì‹@ŠíƒIƒuƒWƒFƒNƒg‚ðŒŸõ */
     594                /* ノード内の機器オブジェクトを検索 */
    599595                for (k = 0; k < enodcb->eobjcnt; k++) {
    600596                        p_eobj = enodcb->eobjs[k];
    601597
    602                         /* ƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg‚ðŠm”F */
     598                        /* インスタンスリストを確認 */
    603599                        match = false;
    604600                        for (i = 0, j = 1; i < count; i++, j += sizeof(T_ECN_EOJ)) {
     
    618614                }
    619615
    620                 /* ‚·‚ׂđµ‚Á‚Ä‚¢‚½‚ç“K‡iƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg‚Ì•û‚ª‘½‚­‚Ä‚à‚¢‚¢‚±‚Æ‚Æ‚·‚éj */
     616                /* すべて揃っていたら適合(インスタンスリストの方が多くてもいいこととする) */
    621617                return true;
    622618        }
     
    626622
    627623/*
    628  *  IPƒAƒhƒŒƒX‚©‚烊ƒ‚[ƒgECHONETƒm[ƒh‚Ö•ÏŠ·
     624 *  IPアドレスからリモートECHONETノードへ変換
    629625 */
    630626ECN_ENOD_ID udp_get_id(T_EDATA *edata, const T_IN4_ADDR ipaddr, uint16_t portno)
     
    638634                return ENOD_MULTICAST_ID;
    639635
    640         /* IPƒAƒhƒŒƒX‚Ì“¯‚¶‚à‚Ì‚ðŒŸõ */
     636        /* IPアドレスの同じものを検索 */
    641637        for (i = 0, ea = enodadrb_table; i < tnum_enodadr; i++, ea++) {
    642638                if (!ea->inuse)
     
    650646        }
    651647
    652         /* ‘Ήž‚·‚郊ƒ‚[ƒgƒm[ƒh‚ðŒŸõ */
     648        /* 対応するリモートノードを検索 */
    653649        for (i = ENOD_REMOTE_ID, ea = &enodadrb_table[ENOD_REMOTE_ID]; i < tnum_enodadr; i++, ea++) {
    654650                if (!ea->inuse)
     
    661657                        continue;
    662658
    663                 /* ‘Ήž‚·‚郊ƒ‚[ƒgƒm[ƒh‚ª‚ ‚ê‚ÎIPƒAƒhƒŒƒX‚ðÝ’è */
     659                /* 対応するリモートノードがあればIPアドレスを設定 */
    664660                uip_ipaddr_copy(ea->ipaddr, ipaddr);
    665661
     
    669665        }
    670666
    671         /* ‹ó‚«—̈æ‚ð’T‚µ‚ÄŽ©“®“o˜^ */
     667        /* 空き領域を探して自動登録 */
    672668        for (i = ENOD_REMOTE_ID, ea = &enodadrb_table[ENOD_REMOTE_ID]; i < tnum_enodadr; i++, ea++) {
    673669                if (ea->inuse)
     
    686682
    687683/*
    688  *  ƒŠƒ‚[ƒgECHONETƒm[ƒh‚©‚çIPƒAƒhƒŒƒX‚Ö•ÏŠ·
     684 *  リモートECHONETノードからIPアドレスへ変換
    689685 */
    690686int udp_get_ip(T_IPV4EP *fp_ipep, ECN_ENOD_ID fa_enodid)
     
    698694
    699695        if (fa_enodid == ENOD_MULTICAST_ID) {
    700                 /* target‚ªENOD_MULTICAST_ID‚̏ꍇAƒ}ƒ‹ƒ`ƒLƒƒƒXƒg‚ðs‚¤ */
     696                /* targetがENOD_MULTICAST_IDの場合、マルチキャストを行う */
    701697                uip_ipaddr_copy(fp_ipep->ipaddr, multicast);
    702698                return 0;       /* ok */
     
    704700
    705701        if (fa_enodid < ENOD_REMOTE_ID) {
    706                 /* target‚ª–¢’è‹`ELOCALEAPI‚̏ꍇAƒ[ƒJƒ‹”z‘—‚ðs‚¤ */
     702                /* targetが未定義・LOCAL・APIの場合、ローカル配送を行う */
    707703                uip_ipaddr_copy(fp_ipep->ipaddr, localhost);
    708704                return 0;       /* ok */
  • uKadecot/trunk/ecnl_ssp/echonet_uip_task.h

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2014 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
     
    4137
    4238/*
    43  *              ECHONET Lite ƒ^ƒXƒN
     39 *              ECHONET Lite タスク
    4440 */
    4541
     
    5551
    5652/*
    57  *  ECHONET Lite ˆêÄ“¯•ñƒAƒhƒŒƒX
     53 *  ECHONET Lite 一斉同報アドレス
    5854 */
    5955#ifdef SIL_ENDIAN_LITTLE
     
    6460
    6561/*
    66  *  ECHONET Lite ƒ^ƒXƒNŠÖ˜A‚̒萔‚̃fƒtƒHƒ‹ƒg’l‚Ì’è‹`
     62 *  ECHONET Lite タスク関連の定数のデフォルト値の定義
    6763 */
    6864#ifndef ECHONET_UDP_TASK_PRIORITY
    69 #define ECHONET_UDP_TASK_PRIORITY       5               /* ‰Šú—Dæ“x */
     65#define ECHONET_UDP_TASK_PRIORITY       5               /* 初期優先度 */
    7066#endif /* ECHONET_UDP_TASK_PRIORITY */
    7167
    7268#ifndef ECHONET_UDP_TASK_STACK_SIZE
    73 #define ECHONET_UDP_TASK_STACK_SIZE     1024    /* ƒXƒ^ƒbƒN—̈æ‚̃TƒCƒY */
     69#define ECHONET_UDP_TASK_STACK_SIZE     1024    /* スタック領域のサイズ */
    7470#endif /* ECHONET_UDP_TASK_STACK_SIZE */
    7571
     
    7975
    8076/*
    81  *  ECHONET Lite ƒ^ƒXƒN‚Ì–{‘Ì
     77 *  ECHONET Lite タスクの本体
    8278 */
    8379void echonet_udp_task(intptr_t exinf);
    8480
    85 /*  ƒmƒ“ƒuƒƒbƒLƒ“ƒOƒR[ƒ‹‚̃R[ƒ‹ƒoƒbƒNŠÖ”  */
     81/*  ノンブロッキングコールのコールバック関数  */
    8682ER callback_nblk_udp(struct uip_udp_conn *uip_udp_conn, int fncd, void *p_parblk);
    8783
    88 /*  ECHONET Lite ƒ^ƒXƒN‹N“®—pŽüŠúƒnƒ“ƒhƒ‰[ */
     84/*  ECHONET Lite タスク起動用周期ハンドラー */
    8985void echonet_udp_cychdr(intptr_t exinf);
    9086
    9187/*
    92  *  ƒŠƒ‚[ƒgECHONETƒm[ƒh‚Ì“K‡Šm”F
     88 *  リモートECHONETノードの適合確認
    9389 */
    9490bool_t is_match(const EOBJCB *eobjcb, T_EDATA *edata, const void *_ipaddr, uint16_t portno);
    9591
    96 /* IPƒAƒhƒŒƒX‚𕶎š—ñ‚É•ÏŠ· */
     92/* IPアドレスを文字列に変換 */
    9793char *ipaddr2str(char *buf, int bubsz, uint8_t *ipaddr);
    9894
  • uKadecot/trunk/ecnl_ssp/fbs_string.c

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    99 *  Copyright (C) 2015 Cores Co., Ltd. Japan
    1010 *
    11  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    12  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    13  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    14  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    15  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    16  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    17  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    18  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    19 ƒƒ“ƒgi—˜—p
    20  *      ŽÒƒ}ƒjƒ
    21 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    22  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    23  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    24  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    25  *      ‚ƁD
    26  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    27 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    28 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    29  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    30  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    31  *        •ñ‚·‚邱‚ƁD
    32  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    33  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    34  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    35  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    36  *      –Ɛӂ·‚邱‚ƁD
     11 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     12 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     13 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     14 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     15 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     16 *      スコード中に含まれていること.
     17 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     18 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     19 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     20 *      の無保証規定を掲載すること.
     21 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     22 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     23 *      と.
     24 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     25 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     26 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     27 *        報告すること.
     28 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     29 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     30 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     31 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     32 *      免責すること.
    3733 *
    38  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    39  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    40  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    41  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    42  *  ‚̐ӔC‚𕉂í‚È‚¢D
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    5147
    5248/*
    53  *  ”’l‚𕶎š—ñ‚É•ÏŠ·
     49 *  数値を文字列に変換
    5450 */
    5551#define CONVERT_BUFLEN  ((sizeof(uintptr_t) * CHAR_BIT + 2) / 3)
    56                                                                                 /* uintptr_tŒ^‚̐”’l‚̍ő啶Žš” */
     52                                                                                /* uintptr_t型の数値の最大文字数 */
    5753static ER
    5854convert(ECN_FBS_ID fbs, ECN_FBS_SSIZE_T *pos, uintptr_t val, uint_t radix, const char *radchar,
     
    10096
    10197/*
    102  *  •¶Žš—ñ®Œ`o—Í
     98 *  文字列整形出力
    10399 */
    104100static const char raddec[] = "0123456789";
  • uKadecot/trunk/ecnl_ssp/fbs_string.h

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r101 r107  
    44 *  Copyright (C) 2015 Cores Co., Ltd. Japan
    55 *
    6  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    7  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    8  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    9  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    10  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    11  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    12  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    13  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    14 ƒƒ“ƒgi—˜—p
    15  *      ŽÒƒ}ƒjƒ
    16 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    17  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    18  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    20  *      ‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    24  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    26  *        •ñ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    28  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    29  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    30  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    31  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3228 *
    33  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    34  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    35  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    36  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    37  *  ‚̐ӔC‚𕉂í‚È‚¢D
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    3834 *
    3935 *  @(#) $Id$
Note: See TracChangeset for help on using the changeset viewer.