Ignore:
Timestamp:
Mar 8, 2016, 8:37:45 PM (8 years ago)
Author:
coas-nagasima
Message:

MIMEにSJISを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • UsbWattMeter/trunk/ecnl_lwip/echonet_task.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    44 *  Copyright (C) 2014-2016 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
     
    7571#endif /* ECHONET_TASK_TIMEOUT */
    7672
    77 /* ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª—v‹‚µ‚½“d•¶‚̃V[ƒPƒ“ƒX”ԍ† */
     73/* アプリケーションが要求した電文のシーケンス番号 */
    7874static uint16_t g_api_tid;
    7975
    80 /* ŽóMƒƒbƒZ[ƒW‚ðŠJ•ú‚·‚é‚©”Û‚© */
     76/* 受信メッセージを開放するか否か */
    8177static bool_t g_release_esv;
    8278
     
    122118                        i += - ENOD_REMOTE_ID + 1;
    123119                        if (from_app && (i < tnum_enodid)) {
    124                                 /* ”ñ“¯Šú‚̃Šƒ‚[ƒgƒm[ƒh‚̓T[ƒrƒXˆ—ƒ^ƒXƒN‚ŏˆ—‚·‚é */
     120                                /* 非同期のリモートノードはサービス処理タスクで処理する */
    125121                                switch (eobjcb_table[i].profile->eobjatr) {
    126122                                case EOBJ_SYNC_REMOTE_NODE:
     
    170166        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID *fa_fbs_anno);
    171167
    172 /* ƒ‚ƒWƒ
    173 [ƒ‹‰Šú‰»ƒtƒ‰ƒO */
     168/* モジュール初期化フラグ */
    174169static uint8_t          m_eobjlist_need_init = 1;
    175170
    176 /* ƒV[ƒPƒ“ƒX”ԍ† */
     171/* シーケンス番号 */
    177172static uint16_t         g_current_tid = 1;
    178173
    179174/*
    180  *  ECHONET Lite ƒ^ƒXƒN‚̏‰Šú‰»iƒRƒ“ƒXƒgƒ‰ƒNƒ^‘Š“–j
     175 *  ECHONET Lite タスクの初期化(コンストラクタ相当)
    181176 */
    182177void echonet_task_init(intptr_t exinf)
     
    187182
    188183/*
    189  * ƒ‚ƒWƒ
    190 [ƒ‹‰Šú‰»
     184 * モジュール初期化
    191185 */
    192186static void _ecn_tsk_int_module_init(intptr_t exinf)
     
    209203
    210204/*
    211  *  ECHONET Lite ƒ^ƒXƒN‚Ì–{‘Ì
     205 *  ECHONET Lite タスクの本体
    212206 */
    213207void echonet_task(intptr_t fa_exinf)
     
    233227        }
    234228
    235         /* ƒƒbƒZ[ƒWƒ‹[ƒv */
     229        /* メッセージループ */
    236230        for (;;) {
    237231                a_prev = a_now;
     
    271265
    272266                        switch (a_mdt.fbs_id.ptr->hdr.type) {
    273                         /* “à•”Žg—pƒƒbƒZ[ƒW */
     267                        /* 内部使用メッセージ */
    274268                        case ECN_MSG_INTERNAL:
    275269                                _ecn_tsk_int_msg(fa_exinf, a_mdt.fbs_id);
    276270                                break;
    277271
    278                         /* ECHONET—pƒƒbƒZ[ƒW */
     272                        /* ECHONET用メッセージ */
    279273                        case ECN_MSG_ECHONET:
    280274                                _ecn_tsk_ecn_msg(fa_exinf, a_mdt.fbs_id);
     
    285279                        }
    286280
    287                         /* —̈æ‰ð•ú */
     281                        /* 領域解放 */
    288282                        if (g_release_esv)
    289283                                _ecn_fbs_del(a_mdt.fbs_id);
     
    298292
    299293/*
    300  * ƒV[ƒPƒ“ƒX”ԍ†¶¬
     294 * シーケンス番号生成
    301295 */
    302296static uint16_t _ecn_tsk_new_tid(void)
     
    306300
    307301/*
    308  * —v‹“d•¶ì¬
    309  * ˆø”
    310  * ECN_FBS_ID           *fp_fbs_id              Žæ“¾‚µ‚½FBS_ID‚ÌŠi”[æ
    311  * ID                           fa_seoj                 ‘—MŒ³‚ÌECHONETƒIƒuƒWƒFƒNƒgID
    312  * ID                           fa_deoj                 ˆ¶æ‚ÌECHONETƒIƒuƒWƒFƒNƒgID
    313  * uint8_t                      fa_epc                  ƒvƒƒpƒeƒBƒR[ƒh
    314  * uint8_t                      fa_pdc                  ƒvƒƒpƒeƒB’lƒf[ƒ^ƒTƒCƒY
    315  * const void           *p_edt                  ƒvƒƒpƒeƒB’lƒf[ƒ^
    316  * ECN_SRV_CODE         fa_esv                  ECHONET Light ƒT[ƒrƒXƒR[ƒh
     302 * 要求電文作成
     303 * 引数
     304 * ECN_FBS_ID           *fp_fbs_id              取得したFBS_IDの格納先
     305 * ID                           fa_seoj                 送信元のECHONETオブジェクトID
     306 * ID                           fa_deoj                 宛先のECHONETオブジェクトID
     307 * uint8_t                      fa_epc                  プロパティコード
     308 * uint8_t                      fa_pdc                  プロパティ値データサイズ
     309 * const void           *p_edt                  プロパティ値データ
     310 * ECN_SRV_CODE         fa_esv                  ECHONET Light サービスコード
    317311 */
    318312ER _ecn_tsk_mk_esv(ECN_FBS_ID *fp_fbs_id, ID fa_seoj, ID fa_deoj,
     
    321315        ER                              a_ret;
    322316        int                             a_size, i;
    323         ECN_FBS_ID              a_fbs_id = { 0 };       /* —v‹“d•¶—pƒƒ‚ƒŠ                             */
     317        ECN_FBS_ID              a_fbs_id = { 0 };       /* 要求電文用メモリ                             */
    324318        T_ECN_EDT_HDR   a_ecn_hdp;                      /* ecn_hdr+edata+ecn_prp 14byte */
    325319        ID                              a_enodid;
     
    328322
    329323        if (!fp_fbs_id)
    330                 return E_PAR; /* Žæ“¾‚µ‚½FBS_ID‚ÌŠi”[æ‚ªNULL */
     324                return E_PAR; /* 取得したFBS_IDの格納先がNULL */
    331325        if (ECHONET_MEMPOOL_BLOCK_SIZE <= fa_pdc)
    332                 return E_PAR; /* ƒvƒƒpƒeƒB’lƒTƒCƒY‚ª‘å‚«‚·‚¬‚é */
     326                return E_PAR; /* プロパティ値サイズが大きすぎる */
    333327        if (!p_edt && 0 < fa_pdc)
    334                 return E_PAR; /* ƒvƒƒpƒeƒB’lƒTƒCƒY‚ª1ˆÈã‚Ȃ̂Ƀf[ƒ^ƒ|ƒCƒ“ƒ^‚ªNULL */
     328                return E_PAR; /* プロパティ値サイズが1以上なのにデータポインタがNULL */
    335329
    336330        if (fa_seoj <= EOBJ_NULL || tmax_eobjid < fa_seoj)
    337                 return E_NOEXS; /* ECHONETƒIƒuƒWƒFƒNƒgID‚ª–¢’è‹` */
     331                return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */
    338332#ifndef ECHONET_CONTROLLER_EXTENTION
    339333        if (fa_deoj < EOBJ_NULL || tmax_eobjid < fa_deoj)
    340                 return E_NOEXS; /* ECHONETƒIƒuƒWƒFƒNƒgID‚ª–¢’è‹` */
     334                return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */
    341335#else
    342336        if (fa_deoj < EOBJ_NULL || (tmax_eobjid + TNUM_AEOBJID) < fa_deoj)
    343                 return E_NOEXS; /* ECHONETƒIƒuƒWƒFƒNƒgID‚ª–¢’è‹` */
     337                return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */
    344338#endif
    345339        if (fa_deoj == EOBJ_NULL && fa_esv == ESV_INFC)
    346                 return E_NOEXS; /* ECHONETƒIƒuƒWƒFƒNƒgID‚ª–¢’è‹` */
    347 
    348         /* —v‹Å¬ƒTƒCƒY‚̎擾 */
     340                return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */
     341
     342        /* 要求最小サイズの取得 */
    349343        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    350344
    351         /* —v‹“d•¶—pƒƒ‚ƒŠ‚̎擾 */
     345        /* 要求電文用メモリの取得 */
    352346        a_ret = _ecn_fbs_cre(a_size, &a_fbs_id);
    353         if (a_ret != E_OK || !a_fbs_id.ptr) { /* Šm•ÛŽ¸”s */
     347        if (a_ret != E_OK || !a_fbs_id.ptr) { /* 確保失敗 */
    354348                ECN_DBG_PUT( "_ecn_fbs_cre(%d) result = %d:%s",
    355349                        a_size,
     
    358352        }
    359353
    360         /* —v‹“d•¶Ý’è                                         */
     354        /* 要求電文設定                                               */
    361355        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
    362356        a_ecn_hdp.ecn_hdr.ehd1 = ECN_EDH1_ECHONET_LITE;
     
    365359        memcpy(&a_ecn_hdp.edata.seoj, &eobjinib_table[fa_seoj - 1].eojx1, sizeof(a_ecn_hdp.edata.seoj));
    366360        a_ecn_hdp.edata.esv = fa_esv;
    367         a_ecn_hdp.edata.opc = 1;                /* ˆ—ƒvƒƒpƒeƒB” */
    368         a_ecn_hdp.ecn_prp.epc = fa_epc; /* ƒvƒƒpƒeƒBƒR[ƒh */
    369         a_ecn_hdp.ecn_prp.pdc = fa_pdc; /* •tƒf[ƒ^ƒTƒCƒY */
    370 
    371         /* —v‹“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ */
     361        a_ecn_hdp.edata.opc = 1;                /* 処理プロパティ数 */
     362        a_ecn_hdp.ecn_prp.epc = fa_epc; /* プロパティコード */
     363        a_ecn_hdp.ecn_prp.pdc = fa_pdc; /* 付随データサイズ */
     364
     365        /* 要求電文用メモリにデータ追加 */
    372366        a_ret = _ecn_fbs_add_data_ex(a_fbs_id, &a_ecn_hdp, a_size);
    373367        if (a_ret) {
     
    378372        }
    379373        if (0 < fa_pdc) {
    380                 /* •tƒf[ƒ^’ljÁ */
     374                /* 付随データ追加 */
    381375                a_ret = _ecn_fbs_add_data_ex(a_fbs_id, p_edt, fa_pdc);
    382376                if (a_ret) {
     
    388382        }
    389383        if (fa_deoj == 0) {
    390                 ECN_DBG_PUT( "%s", "ƒ}ƒ‹ƒ`ƒLƒƒƒXƒg" );
    391                 /* fa_deoj == 0 : ƒ}ƒ‹ƒ`ƒLƒƒƒXƒg */
     384                ECN_DBG_PUT( "%s", "マルチキャスト" );
     385                /* fa_deoj == 0 : マルチキャスト */
    392386                ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1 = EOJ_X1_PROFILE;
    393387                ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx2 = EOJ_X2_NODE_PROFILE;
     
    397391        else if (fa_deoj <= tmax_eobjid) {
    398392                ECN_DBG_PUT( "fa_deoj = %d", fa_deoj );
    399                 /* if (fa_deoj < 1 || tmax_eobjid < fa_deoj) c‚ُ̈íŒn‚͊֐”–`“ª‚ŏœŠOÏ‚Ý‚Æ‚·‚é */
     393                /* if (fa_deoj < 1 || tmax_eobjid < fa_deoj) …の異常系は関数冒頭で除外済みとする */
    400394                a_eobj = &eobjinib_table[fa_deoj - 1];
    401395                memcpy(&((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj, &a_eobj->eojx1,
    402396                        sizeof(((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj));
    403397
    404                 /* ƒe[ƒuƒ‹‚©‚猟õ */
     398                /* テーブルから検索 */
    405399                a_fbs_id.ptr->hdr.target.id = ENOD_NOT_MATCH_ID;
    406400                a_enodid = (a_eobj->enodid == 0) ? fa_deoj : a_eobj->enodid;
     
    442436                ECN_ENOD_ID enodid;
    443437                ECN_DBG_PUT( "fa_deoj = %d", fa_deoj );
    444                 /* ƒIƒuƒWƒFƒNƒgID‚©‚çEOJ‚ƃm[ƒhID‚ðŽæ“¾ */
     438                /* オブジェクトIDからEOJとノードIDを取得 */
    445439                if(ecn_agent_get_eoj_enodid(fa_deoj, &eoj, &enodid)){
    446440                        memcpy(&((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj, &eoj,
     
    475469                a_fbs_id.ptr->hdr.reply.id = ENOD_API_ID;
    476470
    477         /* ³íI—¹ */
     471        /* 正常終了 */
    478472        *fp_fbs_id = a_fbs_id;
    479473        return E_OK;
    480474
    481475lb_except:
    482         /* ƒf[ƒ^ì¬Ž¸”s‚µ‚½‚ç—̈æ‰ð•ú */
     476        /* データ作成失敗したら領域解放 */
    483477        if (a_fbs_id.ptr)
    484478                _ecn_fbs_del(a_fbs_id);
     
    488482
    489483/*
    490  * “à•”Žg—pƒƒbƒZ[ƒW
     484 * 内部使用メッセージ
    491485 */
    492486static void _ecn_tsk_int_msg(intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id)
     
    519513
    520514/*
    521  * ƒ^ƒXƒN‰Šú‰»
     515 * タスク初期化
    522516 */
    523517static void _ecn_tsk_int_startup(intptr_t fa_exinf)
     
    528522                _ecn_tsk_int_module_init(fa_exinf);
    529523
    530         /* ƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg’Ê’m‚Ì‘—M */
     524        /* インスタンスリスト通知の送信 */
    531525        a_ret = _ecn_tsk_ntf_inl(fa_exinf);
    532526        if (a_ret) {
     
    536530
    537531/*
    538  * ƒCƒ“ƒXƒ^ƒ“ƒXƒŠƒXƒg’Ê’m‚Ì‘—M
    539  * ECHONET-Lite_Ver.1.10_02.pdf p.43 }4-1-4
     532 * インスタンスリスト通知の送信
     533 * ECHONET-Lite_Ver.1.10_02.pdf p.43 4-1-4
    540534 */
    541535ER _ecn_tsk_ntf_inl(intptr_t fa_exinf)
    542536{
    543         const T_ECN_EOJ a_seoj =        /* 0x01 : ˆê”ʃm[ƒhA0x02F‘—Mê—pƒm[ƒh */
     537        const T_ECN_EOJ a_seoj =        /* 0x01 : 一般ノード、0x02:送信専用ノード */
    544538                { EOJ_X1_PROFILE, EOJ_X2_NODE_PROFILE, 0x01 };
    545539        const T_ECN_EOJ a_deoj =
     
    551545        int                     i;
    552546        uint8_t         a_count;
    553         const EOBJCB    *enod = &eobjcb_table[0];       /* ƒ[ƒJƒ‹ƒm[ƒh */
     547        const EOBJCB    *enod = &eobjcb_table[0];       /* ローカルノード */
    554548        const EOBJINIB *eobj;
    555549
     
    569563
    570564                if (!a_eoj_ct) {
    571                         /* ƒƒ‚ƒŠŠm•ÛEƒwƒbƒ_Ši”[ */
    572                         a_hdr.ecn_hdr.tid = (uint8_t)_ecn_tsk_new_tid(); /* ƒV[ƒPƒ“ƒX”ԍ†¶¬ */
     565                        /* メモリ確保・ヘッダ格納 */
     566                        a_hdr.ecn_hdr.tid = (uint8_t)_ecn_tsk_new_tid(); /* シーケンス番号生成 */
    573567                        a_ret = _ecn_fbs_cre(sizeof(a_hdr), &a_fbs);
    574                         if (a_ret != E_OK) /* Šm•ÛŽ¸”s */
     568                        if (a_ret != E_OK) /* 確保失敗 */
    575569                                goto lb_except;
    576570                        a_ret = _ecn_fbs_add_data(a_fbs, &a_hdr, sizeof(a_hdr));
    577                         if (a_ret != E_OK) /* ƒf[ƒ^’ljÁŽ¸”s */
     571                        if (a_ret != E_OK) /* データ追加失敗 */
    578572                                goto lb_except;
    579573
     
    582576                        a_fbs.ptr->hdr.target.id = ENOD_MULTICAST_ID;
    583577                        a_fbs.ptr->hdr.reply.id = ENOD_LOCAL_ID;
    584                         ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc = 1;    /* Œ” */
    585                         /* Œ”‚ðŠi”[ */
     578                        ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc = 1;    /* 件数 */
     579                        /* 件数を格納 */
    586580                        a_count = (uint8_t)(enod->eobjcnt - i);
    587581                        if (a_count >= ECN_IST_LST_EOJ_MAX_CT)
    588582                                a_count = ECN_IST_LST_EOJ_MAX_CT;
    589583                        a_ret = _ecn_fbs_add_data_ex(a_fbs, &a_count, sizeof(a_count));
    590                         if (a_ret != E_OK) /* ƒf[ƒ^’ljÁŽ¸”s */
     584                        if (a_ret != E_OK) /* データ追加失敗 */
    591585                                goto lb_except;
    592586                }
    593                 /* ECHONETƒIƒuƒWƒFƒNƒgID(3byte)‚ðŠi”[ */
     587                /* ECHONETオブジェクトID(3byte)を格納 */
    594588                a_ret = _ecn_fbs_add_data_ex(a_fbs, &eobj->eojx1, sizeof(T_ECN_EOJ));
    595                 if (a_ret != E_OK) /* ƒf[ƒ^’ljÁŽ¸”s */
     589                if (a_ret != E_OK) /* データ追加失敗 */
    596590                        goto lb_except;
    597591
    598                 /* Œ”EedtƒTƒCƒY‰ÁŽZ */
     592                /* 件数・edtサイズ加算 */
    599593                ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc += sizeof(T_ECN_EOJ);
    600594                if (++a_eoj_ct < ECN_IST_LST_EOJ_MAX_CT)
    601595                        continue;
    602596
    603                 /* 1ƒAƒiƒEƒ“ƒX‚ł̏ãŒÀ‚É’B‚µ‚½‚çAˆê’U‘—M */
     597                /* 1アナウンスでの上限に達したら、一旦送信 */
    604598                a_ret = _ecn_tsk_snd_mbx(a_fbs, false);
    605                 if (a_ret != E_OK) /* ƒf[ƒ^‘—MŽ¸”s */
     599                if (a_ret != E_OK) /* データ送信失敗 */
    606600                        goto lb_except;
    607601                a_eoj_ct = 0;
     
    609603        }
    610604        if (a_eoj_ct) {
    611                 /* –¢‘—Mƒf[ƒ^‚ª‚ ‚Á‚½‚çA‘—M */
     605                /* 未送信データがあったら、送信 */
    612606                a_ret = _ecn_tsk_snd_mbx(a_fbs, false);
    613                 if (a_ret != E_OK) /* ƒf[ƒ^‘—MŽ¸”s */
     607                if (a_ret != E_OK) /* データ送信失敗 */
    614608                        goto lb_except;
    615609                a_fbs.ptr = 0;
     
    655649
    656650/*
    657  * 3byte‚Ìeobjid‚Å”z—ñ’†‚ðŒŸõ‚·‚é
     651 * 3byteのeobjidで配列中を検索する
    658652 */
    659653const EOBJINIB *_ecn_eoj_fnd(const EOBJCB *fp_nod, const T_ECN_EOJ *fp_eoj)
     
    691685
    692686/*
    693  * ECHONET—pƒƒbƒZ[ƒW
     687 * ECHONET用メッセージ
    694688 */
    695689static void _ecn_tsk_ecn_msg(intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id)
     
    718712        }
    719713
    720         /* ‘—Mˆ¶‚©‚çƒm[ƒh‚ðŒŸõ */
     714        /* 送信宛からノードを検索 */
    721715        p_nod = _ecn_eno_fnd(fa_fbs_id.ptr->hdr.target.id);
    722         /* ‘—MŒ³‚©‚çƒm[ƒh‚ðŒŸõ */
     716        /* 送信元からノードを検索 */
    723717        p_snod = _ecn_eno_fnd(fa_fbs_id.ptr->hdr.sender.id);
    724718        if (p_snod != NULL) {
    725719                sobjatr = p_snod->profile->eobjatr;
    726                 /* ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹‚̏ꍇ */
     720                /* ノードプロファイルの場合 */
    727721                if ((p_esv->edata.seoj.eojx1 == EOJ_X1_PROFILE)
    728722                        && (p_esv->edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) {
    729723                        p_sobj = p_snod->profile;
    730724                }
    731                 /* ‹@ŠíƒIƒuƒWƒFƒNƒg‚̏ꍇ */
     725                /* 機器オブジェクトの場合 */
    732726                else {
    733727                        p_sobj = _ecn_eoj_fnd(p_snod, &p_esv->edata.seoj);
     
    739733#endif
    740734
    741         /* ƒm[ƒh“à‚Ì‹@ŠíƒIƒuƒWƒFƒNƒg‚ðŒŸõ */
     735        /* ノード内の機器オブジェクトを検索 */
    742736        a_prc = false;
    743737        a_fwd = false;
     
    745739                eobjatr = p_nod->profile->eobjatr;
    746740                p_eoj = &p_esv->edata.deoj;
    747                 /* ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹‚̏ꍇ */
     741                /* ノードプロファイルの場合 */
    748742                if ((p_eoj->eojx1 == EOJ_X1_PROFILE)
    749743                        && (p_eoj->eojx2 == EOJ_X2_NODE_PROFILE)) {
    750744                        if ((p_eoj->eojx3 == p_nod->profile->eojx3)
    751745                                || (p_eoj->eojx3 == 0)) {
    752                                 /* “d•¶ˆ—ŽÀs */
     746                                /* 電文処理実行 */
    753747                                if (_ecn_tsk_ecn_msg_main(fa_fbs_id, p_nod->profile, eobjatr, p_sobj, sobjatr) == 1)
    754748                                        a_fwd = true;
    755749                                a_prc = true;
    756750                        }
    757                         /* 0x74 ƒvƒƒpƒeƒB’l’Ê’mi‰ž“š—vj‚̏ꍇˆ—‚µ‚½‚±‚Æ‚É‚·‚é */
     751                        /* 0x74 プロパティ値通知(応答要)の場合処理したことにする */
    758752                        else if (p_esv->edata.esv == ESV_INFC) {
    759753                                a_prc = true;
    760754                        }
    761755                }
    762                 /* ‹@ŠíƒIƒuƒWƒFƒNƒg‚̏ꍇ */
     756                /* 機器オブジェクトの場合 */
    763757                else {
    764758                        count = p_nod->eobjcnt;
     
    779773                                if (p_obj->eojx2 != p_eoj->eojx2)
    780774                                        continue;
    781                                 /* ƒCƒ“ƒXƒ^ƒ“ƒXƒR[ƒh‚ª‚O‚̏ꍇA“¯‚¶ƒNƒ‰ƒX‚Ì‘S‚ẴCƒ“ƒXƒ^ƒ“ƒXˆ¶ */
     775                                /* インスタンスコードが0の場合、同じクラスの全てのインスタンス宛 */
    782776                                if ((p_obj->eojx3 != p_eoj->eojx3) && (p_eoj->eojx3 != 0))
    783777                                        continue;
    784778
    785                                 /* “d•¶ˆ—ŽÀs */
     779                                /* 電文処理実行 */
    786780                                if (_ecn_tsk_ecn_msg_main(fa_fbs_id, p_obj, eobjatr, p_sobj, sobjatr) == 1)
    787781                                        a_fwd = true;
     
    790784                }
    791785        }
    792         /* ‹@ŠíƒIƒuƒWƒFƒNƒg‚ªŒ©‚‚©‚ç‚È‚¢ê‡‚Å‚à */
     786        /* 機器オブジェクトが見つからない場合でも */
    793787        if (!a_prc) {
    794                 /* “d•¶ˆ—ŽÀsi‰ž“šŽóM—pj */
     788                /* 電文処理実行(応答受信用) */
    795789                if (_ecn_tsk_ecn_msg_main(fa_fbs_id, NULL, EPC_NONE, p_sobj, sobjatr) == 1)
    796790                        a_fwd = true;
    797791        }
    798792
    799         /* ‰ž“š‚̏ꍇƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É“]‘—‚·‚é */
     793        /* 応答の場合アプリケーションに転送する */
    800794        if (a_fwd && (p_esv->ecn_hdr.tid == g_api_tid)) {
    801795                g_release_esv = false;
    802796
    803                 ECN_CAP_PUT( "redirect ecn_svc_mailboxid ¨ ecn_api_mailboxid (esv:0x%02X)",
     797                ECN_CAP_PUT( "redirect ecn_svc_mailboxid ecn_api_mailboxid (esv:0x%02X)",
    804798                        p_esv->edata.esv );
    805799                fa_fbs_id.ptr->hdr.target.id = ENOD_API_ID;
     
    826820
    827821        switch (p_esv->edata.esv) {
    828         /* 0x60 ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š•s—vj */
     822        /* 0x60 プロパティ値書き込み要求(応答不要) */
    829823        case ESV_SET_I:
    830824                if (!p_obj) {
     
    838832                break;
    839833
    840         /* 0x61 ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š—vj */
     834        /* 0x61 プロパティ値書き込み要求(応答要) */
    841835        case ESV_SET_C:
    842836                if (!p_obj) {
     
    850844                break;
    851845
    852         /* 0x62 ƒvƒƒpƒeƒB’l“ǂݏo‚µ—v‹ */
     846        /* 0x62 プロパティ値読み出し要求 */
    853847        case ESV_GET:
    854848                if (!p_obj) {
     
    862856                break;
    863857
    864         /* 0x63 ƒvƒƒpƒeƒB’l’Ê’m—v‹ */
     858        /* 0x63 プロパティ値通知要求 */
    865859        case ESV_INF_REQ:
    866860                if (!p_obj) {
     
    875869                break;
    876870
    877         /* 0x6E ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ—v‹ */
     871        /* 0x6E プロパティ値書き込み・読み出し要求 */
    878872        case ESV_SET_GET:
    879873                if (!p_obj) {
     
    887881                break;
    888882
    889         /* 0x74 ƒvƒƒpƒeƒB’l’Ê’mi‰ž“š—vj */
     883        /* 0x74 プロパティ値通知(応答要) */
    890884        case ESV_INFC:
    891885                if (!p_sobj)
     
    898892                break;
    899893
    900         /* 0x60 ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š•s—vj */
    901         case ESV_SET_I_SNA:             /* 0x50 ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹•s‰Â‰ž“š */
     894        /* 0x60 プロパティ値書き込み要求(応答不要) */
     895        case ESV_SET_I_SNA:             /* 0x50 プロパティ値書き込み要求不可応答 */
    902896                result = 1;
    903897                break;
    904898
    905         /* 0x61 ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹i‰ž“š—vj */
    906         case ESV_SET_RES:               /* 0x71 ƒvƒƒpƒeƒB’l‘‚«ž‚݉ž“š */
    907         case ESV_SET_C_SNA:             /* 0x51 ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹•s‰Â‰ž“š */
     899        /* 0x61 プロパティ値書き込み要求(応答要) */
     900        case ESV_SET_RES:               /* 0x71 プロパティ値書き込み応答 */
     901        case ESV_SET_C_SNA:             /* 0x51 プロパティ値書き込み要求不可応答 */
    908902                result = 1;
    909903                break;
    910904
    911         /* 0x62 ƒvƒƒpƒeƒB’l“ǂݏo‚µ—v‹ */
    912         case ESV_GET_RES:               /* 0x72 ƒvƒƒpƒeƒB’l“ǂݏo‚µ‰ž“š */
    913         case ESV_GET_SNA:               /* 0x52 ƒvƒƒpƒeƒB’l“ǂݏo‚µ•s‰Â‰ž“š */
     905        /* 0x62 プロパティ値読み出し要求 */
     906        case ESV_GET_RES:               /* 0x72 プロパティ値読み出し応答 */
     907        case ESV_GET_SNA:               /* 0x52 プロパティ値読み出し不可応答 */
    914908                if (!p_sobj) {
    915909                        ECN_DBG_PUT( "_ecn_tsk_ecn_msg_main() eoj %06X not found.",
     
    922916                break;
    923917
    924         /* 0x63 ƒvƒƒpƒeƒB’l’Ê’m—v‹ */
    925         case ESV_INF:                   /* 0x73 ƒvƒƒpƒeƒB’l’Ê’m */
    926         case ESV_INF_SNA:               /* 0x53 ƒvƒƒpƒeƒB’l’Ê’m•s‰Â‰ž“š */
     918        /* 0x63 プロパティ値通知要求 */
     919        case ESV_INF:                   /* 0x73 プロパティ値通知 */
     920        case ESV_INF_SNA:               /* 0x53 プロパティ値通知不可応答 */
    927921                if (!p_sobj) {
    928922                        ECN_DBG_PUT( "_ecn_tsk_ecn_msg_main() eoj %06X not found.",
     
    935929                break;
    936930
    937         /* 0x6E ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ—v‹ */
    938         case ESV_SET_GET_RES:   /* 0x7E ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ‰ž“š */
    939         case ESV_SET_GET_SNA:   /* 0x5E ƒvƒƒpƒeƒB’l‘‚«ž‚݁E“ǂݏo‚µ•s‰Â‰ž“š */
     931        /* 0x6E プロパティ値書き込み・読み出し要求 */
     932        case ESV_SET_GET_RES:   /* 0x7E プロパティ値書き込み・読み出し応答 */
     933        case ESV_SET_GET_SNA:   /* 0x5E プロパティ値書き込み・読み出し不可応答 */
    940934                if (!p_sobj) {
    941935                        ECN_DBG_PUT( "_ecn_tsk_ecn_msg_main() eoj %06X not found.",
     
    948942                break;
    949943
    950         /* 0x74 ƒvƒƒpƒeƒB’l’Ê’mi‰ž“š—vj */
    951         case ESV_INFC_RES:              /* 0x7A ƒvƒƒpƒeƒB’l’Ê’m‰ž“š */
     944        /* 0x74 プロパティ値通知(応答要) */
     945        case ESV_INFC_RES:              /* 0x7A プロパティ値通知応答 */
    952946                result = 1;
    953947                break;
     
    959953        }
    960954
    961         /* ƒvƒƒpƒeƒB’Ê’m—v‹‚𑗐M */
     955        /* プロパティ通知要求を送信 */
    962956        if (a_fbs_anno.ptr != NULL) {
    963957                ER a_ret = _ecn_tsk_snd_mbx(a_fbs_anno, true);
     
    10391033
    10401034/*
    1041  * ECN_FBS_ID‚©‚çT_ECN_PRP1Œ‚Æ‚»‚Ì•tƒf[ƒ^(edt)‚𒊏o‚µAedt‚̃|ƒCƒ“ƒ^‚ð•Ô‚·
    1042  * ˆø”
    1043  * ECN_FBS_ID fa_fbs_id                                 “Ç‚ÝŽæ‚éFBS
    1044  * T_ECN_PRP *fp_prp                                    epc+pdc‚ÌŠi”[æ
    1045  * uint8_t *fp_blk                                              ì‹Æ—pƒƒ‚ƒŠ‚̃|ƒCƒ“ƒ^
    1046  * ³íFƒ|ƒCƒ“ƒ^ NG:0
     1035 * ECN_FBS_IDからT_ECN_PRP1件とその付随データ(edt)を抽出し、edtのポインタを返す
     1036 * 引数
     1037 * ECN_FBS_ID fa_fbs_id                                 読み取るFBS
     1038 * T_ECN_PRP *fp_prp                                    epc+pdcの格納先
     1039 * uint8_t *fp_blk                                              作業用メモリのポインタ
     1040 * 正常:ポインタ NG:0
    10471041 */
    10481042static ID _ecn_tsk_get_prp_pce(ECN_FBS_ID fa_fbs_id, T_ECN_PRP *fp_prp,
     
    10541048        memset(fp_blk, 0, sizeof(T_ECN_SUB_BLK));
    10551049
    1056         /* T_ECN_PRP•”•ª(epc,pdc)‚ð“Ç‚ÝŽæ‚é */
     1050        /* T_ECN_PRP部分(epc,pdc)を読み取る */
    10571051        a_size = 0;
    10581052        a_ret = _ecn_fbs_get_data(fa_fbs_id, fp_prp, sizeof(*fp_prp), &a_size);
     
    10631057
    10641058        if (0 < fp_prp->pdc) {
    1065                 /* •tƒf[ƒ^•”•ª(edt)‚ð“Ç‚ÝŽæ‚é */
     1059                /* 付随データ部分(edt)を読み取る */
    10661060                a_size = 0;
    10671061                a_ret = _ecn_fbs_get_data(fa_fbs_id, fp_blk, fp_prp->pdc, &a_size);
     
    10781072        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count,
    10791073        int *p_sw_ok);
    1080 /* ƒvƒƒpƒeƒB’l‘‚«ž‚ÝŽÀs */
     1074/* プロパティ値書き込み実行 */
    10811075static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update,
    10821076        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count,
     
    10941088
    10951089        for (i = 0; i < a_count; i++) {
    1096                 /* ECN_FBS_ID‚©‚çT_ECN_PRP1Œ‚Æ‚»‚Ì•tƒf[ƒ^‚𒊏o‚µA‚»‚̃|ƒCƒ“ƒ^‚ð•Ô‚· */
     1090                /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出し、そのポインタを返す */
    10971091                a_ret = _ecn_tsk_get_prp_pce(fa_fbs_id, &a_prp, p_edt);
    10981092                if (a_ret != E_OK) {
     
    11011095                }
    11021096
    1103                 /* ƒvƒƒpƒeƒB‚̐ݒè set_prp(obj, reqp, resp) */
     1097                /* プロパティの設定 set_prp(obj, reqp, resp) */
    11041098                a_size = a_prp.pdc;
    1105                 /* obj,epc‚ɑΉž‚·‚ésetŠÖ”‚ðŒÄ‚Ô */
     1099                /* obj,epcに対応するset関数を呼ぶ */
    11061100                a_eprp = _ecn_tsk_eoj_get_property(fp_obj, a_prp.epc);
    11071101                if ((a_eprp != NULL)
     
    11251119                                fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3,
    11261120                                a_prp.epc, p_edt[0], a_size );
    1127                         *p_sw_ok = 0;   /* ƒvƒƒpƒeƒBÝ’莸”s */
    1128                         /* ‰ž“šˆ—‚̏ꍇEDT‚͐ݒ肵‚È‚¢ */
     1121                        *p_sw_ok = 0;   /* プロパティ設定失敗 */
     1122                        /* 応答処理の場合EDTは設定しない */
    11291123                        if (fa_update)
    11301124                                a_prp.pdc = 0;
    11311125                }
    11321126
    1133                 /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ(epc,pdc‚Ì2byte) */
     1127                /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */
    11341128                a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_prp, sizeof(a_prp));
    11351129                if (a_ret) {
     
    11391133
    11401134                if (0 < a_prp.pdc) {
    1141                         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ(edt n-byte) */
     1135                        /* 応答電文用メモリにデータ追加(edt n-byte) */
    11421136                        a_ret = _ecn_fbs_add_data_ex(a_fbs_res, p_edt, a_prp.pdc);
    11431137                        if (a_ret) {
     
    11481142                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc ++;
    11491143
    1150                 /* ƒvƒƒpƒeƒB’Ê’m‚ ‚è‚̏ꍇ */
     1144                /* プロパティ通知ありの場合 */
    11511145                if (a_anno && (a_ans == a_size)) {
    11521146                        if (fa_fbs_anno->ptr == NULL) {
     
    11711165static ER _ecn_tsk_eoj_get_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access,
    11721166        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok);
    1173 /* ƒvƒƒpƒeƒB’l“ǂݏo‚µŽÀs */
     1167/* プロパティ値読み出し実行 */
    11741168static ER _ecn_tsk_eoj_get_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access,
    11751169        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok)
    11761170{
    1177         uint8_t p_edt[256];     /* ì‹Æ—̈æ */
     1171        uint8_t p_edt[256];     /* 作業領域 */
    11781172        const EPRPINIB          *a_eprp;
    11791173        ER                                      a_ret           =       E_SYS;
     
    11841178
    11851179        for (i = 0; i < a_count; i++) {
    1186                 /* ECN_FBS_ID‚©‚çT_ECN_PRP1Œ‚Æ‚»‚Ì•tƒf[ƒ^‚𒊏o */
     1180                /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出 */
    11871181                a_ret = _ecn_tsk_get_prp_pce(fa_fbs_id, &a_prp, p_edt);
    11881182                if (a_ret != E_OK) {
     
    11911185                }
    11921186
    1193                 /* ƒvƒƒpƒeƒB‚̎擾 get_eprp(obj, reqp, resp, size) */
     1187                /* プロパティの取得 get_eprp(obj, reqp, resp, size) */
    11941188                memset(p_edt, 0, sizeof(p_edt));
    1195                 /* obj,epc‚ɑΉž‚·‚égetŠÖ”‚ðŒÄ‚Ô */
     1189                /* obj,epcに対応するget関数を呼ぶ */
    11961190                a_eprp = _ecn_tsk_eoj_get_property(fp_obj, a_prp.epc);
    11971191                if ((a_eprp != NULL) && (((a_eprp->eprpatr & fa_access) != 0) && (fa_eobjatr == EOBJ_LOCAL_NODE) || fa_forward)) {
     
    12041198                        a_prp.pdc = (uint8_t)a_ans;
    12051199                } else {
    1206                         *p_sw_ok = 0;   /* ƒvƒƒpƒeƒBŽæ“¾Ž¸”s */
     1200                        *p_sw_ok = 0;   /* プロパティ取得失敗 */
    12071201                        a_ans = 0;
    12081202                        a_prp.pdc = 0;
    12091203                }
    12101204
    1211                 /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ(epc,pdc‚Ì2byte) */
     1205                /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */
    12121206                a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_prp, sizeof(a_prp));
    12131207                if (a_ret) {
     
    12161210                }
    12171211                if (0 < a_ans) {
    1218                         /* •tƒf[ƒ^’ljÁ */
     1212                        /* 付随データ追加 */
    12191213                        a_ret = _ecn_fbs_add_data_ex(a_fbs_res, p_edt, a_ans);
    12201214                        if (a_ret) {
     
    12361230
    12371231static 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);
    1238 /* ƒvƒƒpƒeƒB’l“ǂݏo‚µŽÀs */
     1232/* プロパティ値読み出し実行 */
    12391233static 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)
    12401234{
     
    12471241
    12481242        for (i = 0; i < a_count; i++) {
    1249                 /* ECN_FBS_ID‚©‚çT_ECN_PRP1Œ‚Æ‚»‚Ì•tƒf[ƒ^‚𒊏o */
     1243                /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出 */
    12501244                a_ret = _ecn_tsk_get_prp_pce(fa_fbs_id, &a_prp, p_edt);
    12511245                if (a_ret != E_OK) {
     
    12561250                a_prp.pdc = 0;
    12571251
    1258                 /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ(epc,pdc‚Ì2byte) */
     1252                /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */
    12591253                a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_prp, sizeof(a_prp));
    12601254                if (a_ret) {
     
    12741268}
    12751269
    1276 /* ƒvƒƒpƒeƒB’l“Ç‚Ý”ò‚΂µŽÀs */
     1270/* プロパティ値読み飛ばし実行 */
    12771271static ER _ecn_tsk_eoj_skip_main(const EOBJINIB *fp_obj, ECN_FBS_ID fa_fbs_id,
    12781272        int a_count);
     
    12851279
    12861280        for (i = 0; i < a_count; i++) {
    1287                 /* T_ECN_PRP•”•ª(epc,pdc)‚ð“Ç‚ÝŽæ‚é */
     1281                /* T_ECN_PRP部分(epc,pdc)を読み取る */
    12881282                a_size = 0;
    12891283                a_ret = _ecn_fbs_get_data(fa_fbs_id, &a_prp, sizeof(a_prp), &a_size);
     
    12931287                }
    12941288
    1295                 /* pdc•ª“Ç‚Ý”ò‚΂µ */
     1289                /* pdc分読み飛ばし */
    12961290                a_ret = _ecn_fbs_seek_rpos(fa_fbs_id, a_prp.pdc);
    12971291                if (a_ret) {
     
    13121306static void _ecn_tsk_mk_rsp_hdr(const EOBJINIB *fp_obj, T_ECN_EDT_HDR *fp_rsp_esv,
    13131307        T_ECN_EDT_HDR const *fp_req_esv);
    1314 /* ‰ž“š“d•¶Ý’è */
     1308/* 応答電文設定 */
    13151309static void _ecn_tsk_mk_rsp_hdr(const EOBJINIB *fp_obj, T_ECN_EDT_HDR *fp_rsp_esv,
    13161310        T_ECN_EDT_HDR const *fp_req_esv)
     
    13371331}
    13381332
    1339 /* ‰ž“š“d•¶—pfbsÝ’è */
     1333/* 応答電文用fbs設定 */
    13401334static void _ecn_tsk_set_rsp_fbs(ECN_FBS_ID fa_rsp_fbs, T_ECN_FST_BLK const *fp_req_ptr);
    1341 /* ‰ž“š“d•¶—pfbsÝ’è(sender/target‚̐ݒè) */
     1335/* 応答電文用fbs設定(sender/targetの設定) */
    13421336static void _ecn_tsk_set_rsp_fbs(ECN_FBS_ID fa_rsp_fbs, T_ECN_FST_BLK const *fp_req_ptr)
    13431337{
     
    13481342}
    13491343
    1350 /* ƒvƒƒpƒeƒB’l‘‚«ž‚Ý—v‹     */
     1344/* プロパティ値書き込み要求 */
    13511345static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update,
    13521346        ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
     
    13631357        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
    13641358
    1365         /* ‰ž“šÅ‘åƒTƒCƒY‚̎擾 */
     1359        /* 応答最大サイズの取得 */
    13661360        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    13671361
    1368         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚̎擾 */
     1362        /* 応答電文用メモリの取得 */
    13691363        a_ret = _ecn_fbs_cre(a_size, &a_fbs_res);
    1370         if (a_ret != E_OK || !a_fbs_res.ptr) /* Šm•ÛŽ¸”s */
     1364        if (a_ret != E_OK || !a_fbs_res.ptr) /* 確保失敗 */
    13711365                return;
    13721366
    1373         /* ‰ž“š“d•¶Ý’è */
     1367        /* 応答電文設定 */
    13741368        if(p_req_esv->edata.deoj.eojx3 != 0)
    13751369                _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
     
    13771371                _ecn_tsk_mk_rsp_hdr(fp_obj, &a_ecn_hdp, p_req_esv);
    13781372
    1379         /* ³íŽž‚̉ž“š“d•¶‚ªƒvƒƒpƒeƒB’l’Ê’m‰ž“š‚̏ꍇ */
     1373        /* 正常時の応答電文がプロパティ値通知応答の場合 */
    13801374        if (fa_res_esv == ESV_INFC_RES) {
    1381                 /* ‘—MŒ³‚ƈ¶æ‚ð“ü‚ê‘Ö‚¦ */
     1375                /* 送信元と宛先を入れ替え */
    13821376                eoj = a_ecn_hdp.edata.seoj;
    13831377                a_ecn_hdp.edata.seoj = a_ecn_hdp.edata.deoj;
     
    13851379        }
    13861380
    1387         f_put_fbs_eoj("_ecn_tsk_eoj_set", "fa_fbs_id", fa_fbs_id); /* s/deoj ƒfƒoƒbƒOo—Í */
    1388 
    1389         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ */
     1381        f_put_fbs_eoj("_ecn_tsk_eoj_set", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */
     1382
     1383        /* 応答電文用メモリにデータ追加 */
    13901384        a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_ecn_hdp,
    13911385                                sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata));
     
    13931387                goto lb_except;
    13941388
    1395         /* payloadæ“ª‚ÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)‚ð“Ç‚Ý”ò‚΂· */
     1389        /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
    13961390        a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
    13971391        if (a_ret)
    13981392                goto lb_except;
    13991393
    1400         /* ‰ž“š“d•¶—pfbsÝ’è */
     1394        /* 応答電文用fbs設定 */
    14011395        _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr);
    14021396
    1403         /* ƒvƒƒpƒeƒB’l‘‚«ž‚ÝŽÀs */
     1397        /* プロパティ値書き込み実行 */
    14041398        a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_fromapp, fa_update, fa_fbs_id, a_fbs_res,
    14051399                fa_fbs_anno, p_req_esv->edata.opc, &a_sw_ok);
     
    14071401                goto lb_except;
    14081402
    1409         /* ‰ž“š—v‚̏ꍇ */
     1403        /* 応答要の場合 */
    14101404        if (a_sw_ok) {
    14111405                if (!fa_res_esv) {
    1412                         /* ‰ž“š•s—v‚̏ꍇ */
     1406                        /* 応答不要の場合 */
    14131407                        _ecn_fbs_del(a_fbs_res);
    14141408                        goto lb_finally;
    14151409                }
    1416                 /* Ý’菈—¬Œ÷ */
     1410                /* 設定処理成功 */
    14171411                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv;
    14181412        } else {
    14191413                if (!fa_sna_esv) {
    1420                         /* ‰ž“š•s—v‚̏ꍇ */
     1414                        /* 応答不要の場合 */
    14211415                        _ecn_fbs_del(a_fbs_res);
    14221416                        goto lb_finally;
    14231417                }
    1424                 /* Ý’菈—Ž¸”s */
     1418                /* 設定処理失敗 */
    14251419                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
    14261420        }
    1427         /* ‰ž“š‘—M */
     1421        /* 応答送信 */
    14281422        a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false);
    14291423        if (a_ret == E_OK)
     
    14311425
    14321426lb_except:
    1433         /* ƒf[ƒ^‘—MŽ¸”s‚µ‚½‚ç—̈æ‰ð•ú */
     1427        /* データ送信失敗したら領域解放 */
    14341428        if (a_fbs_res.ptr)
    14351429                _ecn_fbs_del(a_fbs_res);
     
    14391433}
    14401434
    1441 /* ƒvƒƒpƒeƒB’l“ǂݏo‚µ—v‹     */
     1435/* プロパティ値読み出し要求 */
    14421436static void _ecn_tsk_eoj_get(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access,
    14431437        ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv)
     
    14521446        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
    14531447
    1454         /* ‰ŠúŽæ“¾ƒTƒCƒY */
     1448        /* 初期取得サイズ */
    14551449        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    14561450
    1457         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚̎擾 */
     1451        /* 応答電文用メモリの取得 */
    14581452        a_ret = _ecn_fbs_cre(a_size, &a_fbs_res);
    1459         if (a_ret != E_OK || !a_fbs_res.ptr) { /* Šm•ÛŽ¸”s */
     1453        if (a_ret != E_OK || !a_fbs_res.ptr) { /* 確保失敗 */
    14601454                ECN_DBG_PUT( "_ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret) );
    14611455                goto lb_finally;
    14621456        }
    14631457
    1464         /* ‰ž“š“d•¶Ý’è */
     1458        /* 応答電文設定 */
    14651459        if(p_req_esv->edata.deoj.eojx3 != 0)
    14661460                _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
     
    14681462                _ecn_tsk_mk_rsp_hdr(fp_obj, &a_ecn_hdp, p_req_esv);
    14691463
    1470         f_put_fbs_eoj("_ecn_tsk_eoj_get", "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_get", "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));
     
    14781472        }
    14791473
    1480         /* payloadæ“ª‚ÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)‚ð“Ç‚Ý”ò‚΂· */
     1474        /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
    14811475        a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
    14821476        if (a_ret) {
     
    14851479        }
    14861480
    1487         /* ‰ž“š“d•¶—pfbsÝ’è */
     1481        /* 応答電文用fbs設定 */
    14881482        _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr);
    14891483
    1490         /* ƒvƒƒpƒeƒB’l“ǂݍž‚ÝŽÀs */
     1484        /* プロパティ値読み込み実行 */
    14911485        a_ret = _ecn_tsk_eoj_get_main(fp_obj, fa_eobjatr, fa_forward, fa_access, fa_fbs_id, a_fbs_res,
    14921486                ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc, &a_sw_ok);
     
    14981492        if (a_sw_ok) {
    14991493                if (!fa_res_esv) {
    1500                         /* ‰ž“š•s—v‚̏ꍇ */
     1494                        /* 応答不要の場合 */
    15011495                        _ecn_fbs_del(a_fbs_res);
    15021496                        goto lb_finally;
    15031497                }
    1504                 /* Ý’菈—¬Œ÷ */
     1498                /* 設定処理成功 */
    15051499                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv;
    15061500        } else {
    15071501                if (!fa_sna_esv) {
    1508                         /* ‰ž“š•s—v‚̏ꍇ */
     1502                        /* 応答不要の場合 */
    15091503                        _ecn_fbs_del(a_fbs_res);
    15101504                        goto lb_finally;
    15111505                }
    1512                 /* Ý’菈—Ž¸”s */
     1506                /* 設定処理失敗 */
    15131507                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
    15141508        }
    1515         /* ‰ž“š‘—M */
     1509        /* 応答送信 */
    15161510        a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false);
    15171511        if (a_ret != E_OK) {
     
    15221516
    15231517lb_except:
    1524         /* ƒf[ƒ^‘—MŽ¸”s‚µ‚½‚ç—̈æ‰ð•ú */
     1518        /* データ送信失敗したら領域解放 */
    15251519        if (a_fbs_res.ptr)
    15261520                _ecn_fbs_del(a_fbs_res);
     
    15301524}
    15311525
    1532 /* ƒvƒƒpƒeƒB’l“ǂݏo‚µ—v‹     */
     1526/* プロパティ値読み出し要求 */
    15331527static void _ecn_tsk_eoj_res(ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv,
    15341528        ECN_SRV_CODE fa_sna_esv)
     
    15431537        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
    15441538
    1545         /* ‰ŠúŽæ“¾ƒTƒCƒY */
     1539        /* 初期取得サイズ */
    15461540        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    15471541
    1548         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚̎擾 */
     1542        /* 応答電文用メモリの取得 */
    15491543        a_ret = _ecn_fbs_cre(a_size, &a_fbs_res);
    1550         if (a_ret != E_OK || !a_fbs_res.ptr) { /* Šm•ÛŽ¸”s */
     1544        if (a_ret != E_OK || !a_fbs_res.ptr) { /* 確保失敗 */
    15511545                ECN_DBG_PUT( "_ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret) );
    15521546                goto lb_finally;
    15531547        }
    15541548
    1555         /* ‰ž“š“d•¶Ý’è                                         */
     1549        /* 応答電文設定                                               */
    15561550        _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
    15571551
    1558         f_put_fbs_eoj("_ecn_tsk_eoj_res", "fa_fbs_id", fa_fbs_id); /* s/deoj ƒfƒoƒbƒOo—Í */
    1559 
    1560         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ */
     1552        f_put_fbs_eoj("_ecn_tsk_eoj_res", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */
     1553
     1554        /* 応答電文用メモリにデータ追加 */
    15611555        a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_ecn_hdp,
    15621556                        sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata));
     
    15661560        }
    15671561
    1568         /* payloadæ“ª‚ÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)‚ð“Ç‚Ý”ò‚΂· */
     1562        /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
    15691563        a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
    15701564        if (a_ret) {
     
    15731567        }
    15741568
    1575         /* ‰ž“š“d•¶—pfbsÝ’è */
     1569        /* 応答電文用fbs設定 */
    15761570        _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr);
    15771571
    1578         /* ƒvƒƒpƒeƒB’l“ǂݍž‚ÝŽÀs */
     1572        /* プロパティ値読み込み実行 */
    15791573        a_ret = _ecn_tsk_eoj_res_main(fa_fbs_id, a_fbs_res,
    15801574                ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc, &a_sw_ok);
     
    15861580        if (a_sw_ok) {
    15871581                if (!fa_res_esv) {
    1588                         /* ‰ž“š•s—v‚̏ꍇ */
     1582                        /* 応答不要の場合 */
    15891583                        _ecn_fbs_del(a_fbs_res);
    15901584                        goto lb_finally;
    15911585                }
    1592                 /* Ý’菈—¬Œ÷ */
     1586                /* 設定処理成功 */
    15931587                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv;
    15941588        } else {
    15951589                if (!fa_sna_esv) {
    1596                         /* ‰ž“š•s—v‚̏ꍇ */
     1590                        /* 応答不要の場合 */
    15971591                        _ecn_fbs_del(a_fbs_res);
    15981592                        goto lb_finally;
    15991593                }
    1600                 /* Ý’菈—Ž¸”s */
     1594                /* 設定処理失敗 */
    16011595                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
    16021596        }
    1603         /* ‰ž“š‘—M */
     1597        /* 応答送信 */
    16041598        a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false);
    16051599        if (a_ret != E_OK) {
     
    16101604
    16111605lb_except:
    1612         /* ƒf[ƒ^‘—MŽ¸”s‚µ‚½‚ç—̈æ‰ð•ú */
     1606        /* データ送信失敗したら領域解放 */
    16131607        if (a_fbs_res.ptr)
    16141608                _ecn_fbs_del(a_fbs_res);
     
    16251619        T_ECN_EDT_HDR   a_ecn_hdp;
    16261620        ECN_FBS_ID              a_fbs_res       = { 0 };
    1627         int                             a_rdprp_wrpos;  /*      ƒvƒƒpƒeƒB“ǂݍž‚ÝŒ”‘‚«ž‚ÝŽž‚̃wƒbƒhˆÊ’u    */
     1621        int                             a_rdprp_wrpos;  /*      プロパティ読み込み件数書き込み時のヘッド位置  */
    16281622        ER              a_ret;
    16291623        int             i, a_size, a_rdlen;
    16301624        int             a_sw_ok = 1;
    1631         int             a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc;    /* ˆ—ƒvƒƒpƒeƒB” */
     1625        int             a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc;    /* 処理プロパティ数 */
    16321626
    16331627        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
     
    16361630                fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3 );
    16371631
    1638         /* ‰ŠúŽæ“¾ƒTƒCƒY */
     1632        /* 初期取得サイズ */
    16391633        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    16401634
    1641         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚̎擾 */
     1635        /* 応答電文用メモリの取得 */
    16421636        a_ret = _ecn_fbs_cre(a_size, &a_fbs_res);
    1643         if (a_ret != E_OK || !a_fbs_res.ptr) /* Šm•ÛŽ¸”s */
     1637        if (a_ret != E_OK || !a_fbs_res.ptr) /* 確保失敗 */
    16441638                goto lb_finally;
    16451639
    1646         /* ‰ž“š“d•¶Ý’è */
     1640        /* 応答電文設定 */
    16471641        if(p_req_esv->edata.deoj.eojx3 != 0)
    16481642                _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
     
    16511645        a_size -= sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY);
    16521646
    1653         f_put_fbs_eoj("_ecn_tsk_eoj_set_get", "fa_fbs_id", fa_fbs_id); /* s/deoj ƒfƒoƒbƒOo—Í */
    1654 
    1655         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ */
     1647        f_put_fbs_eoj("_ecn_tsk_eoj_set_get", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */
     1648
     1649        /* 応答電文用メモリにデータ追加 */
    16561650        a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_ecn_hdp,
    16571651                                sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata));
     
    16591653                goto lb_except;
    16601654
    1661         /* payloadæ“ª‚ÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)‚ð“Ç‚Ý”ò‚΂· */
     1655        /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
    16621656        a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
    16631657        if (a_ret)
    16641658                goto lb_except;
    16651659
    1666         /* ‰ž“š“d•¶—pfbsÝ’è */
     1660        /* 応答電文用fbs設定 */
    16671661        _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr);
    16681662
    1669         /* ƒvƒƒpƒeƒB’l‘‚«ž‚ÝŽÀs */
     1663        /* プロパティ値書き込み実行 */
    16701664        a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_fromapp, false, fa_fbs_id, a_fbs_res,
    16711665                fa_fbs_anno, a_count, &a_sw_ok);
     
    16801674                (a_sw_ok ? "true" : "false") );
    16811675
    1682         /* ŽŸ‚ÌŒ”‚ð“Ç‚ÝŽæ‚é(1byte)                                            */
    1683         /* ¨ ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet]        */
     1676        /* 次の件数を読み取る(1byte)                                             */
     1677        /* ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet] */
    16841678        a_rdlen = i = 0;
    16851679        a_ret = _ecn_fbs_get_data(fa_fbs_id, &i, 1, &a_rdlen);
     
    16881682        a_count = *(uint8_t *)&i;
    16891683
    1690         /* ƒvƒƒpƒeƒB“ǂݍž‚ÝŒ”‘‚«ž‚ÝŽž‚̃wƒbƒhî•ñ‚ð‹L˜^ */
     1684        /* プロパティ読み込み件数書き込み時のヘッド情報を記録 */
    16911685        a_rdprp_wrpos = _ecn_fbs_get_datalen(a_fbs_res);
    16921686
    1693         /* ‰ž“š“d•¶—pƒƒ‚ƒŠ‚Ƀf[ƒ^’ljÁ (OPCGet 1byte) */
     1687        /* 応答電文用メモリにデータ追加 (OPCGet 1byte) */
    16941688        a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &i, 1);
    16951689        if (a_ret)
    16961690                goto lb_except;
    16971691
    1698         /* ‚±‚ÌŽž“_‚ł̉ž“š“d•¶’†ƒvƒƒpƒeƒBŒ”‚ð‹L˜^ */
     1692        /* この時点での応答電文中プロパティ件数を記録 */
    16991693        i = ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc;
    17001694        ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0;
    17011695
    1702         /* ƒvƒƒpƒeƒB’l“ǂݍž‚ÝŽÀs */
     1696        /* プロパティ値読み込み実行 */
    17031697        a_ret = _ecn_tsk_eoj_get_main(fp_obj, fa_eobjatr, false, EPC_RULE_GET, fa_fbs_id, a_fbs_res,
    17041698                a_count, &a_sw_ok);
     
    17141708                (a_sw_ok ? "true" : "false") );
    17151709
    1716         /* ƒvƒƒpƒeƒB“ǂݍž‚ÝŒ”‘‚«ž‚ÝŽž‚̃wƒbƒhî•ñ‚ŁA“ǂݏo‚µŒ”‚ð‹L˜^ */
     1710        /* プロパティ読み込み件数書き込み時のヘッド情報で、読み出し件数を記録 */
    17171711        _ecn_fbs_poke(a_fbs_res, a_rdprp_wrpos, ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc);
    17181712
    1719         /* ‹L˜^‚µ‚Ä‚¨‚¢‚½ƒvƒƒpƒeƒBŒ”i‘‚«ž‚ÝŒ”j‚ð‘‚«–ß‚· */
     1713        /* 記録しておいたプロパティ件数(書き込み件数)を書き戻す */
    17201714        ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = (uint8_t)i;
    17211715
    1722         /* ‰ž“š—v‚̏ꍇ */
     1716        /* 応答要の場合 */
    17231717        if (a_sw_ok) {
    1724                 /* Ý’菈—¬Œ÷ */
     1718                /* 設定処理成功 */
    17251719                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv;
    17261720        } else {
    1727                 /* Ý’菈—Ž¸”s */
     1721                /* 設定処理失敗 */
    17281722                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
    17291723        }
    1730         /* ‰ž“š‘—M */
     1724        /* 応答送信 */
    17311725        a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false);
    17321726        if (a_ret == E_OK)
     
    17341728
    17351729lb_except:
    1736         /* ƒf[ƒ^‘—MŽ¸”s‚µ‚½‚ç—̈æ‰ð•ú */
     1730        /* データ送信失敗したら領域解放 */
    17371731        if (a_fbs_res.ptr)
    17381732                _ecn_fbs_del(a_fbs_res);
     
    17511745        int             i, a_size, a_rdlen;
    17521746        int             a_sw_ok = 1;
    1753         int             a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc;    /* ˆ—ƒvƒƒpƒeƒB” */
     1747        int             a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc;    /* 処理プロパティ数 */
    17541748
    17551749        memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
     
    17581752                fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3 );
    17591753
    1760         /* ‰ŠúŽæ“¾ƒTƒCƒY */
     1754        /* 初期取得サイズ */
    17611755        a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
    17621756
    1763         /* ‰ž“š“d•¶—pƒƒ‚ƒŠiƒ_ƒ~[j‚̎擾 */
     1757        /* 応答電文用メモリ(ダミー)の取得 */
    17641758        a_ret = _ecn_fbs_cre(a_size, &a_fbs_dmy);
    1765         if (a_ret != E_OK || !a_fbs_dmy.ptr) /* Šm•ÛŽ¸”s */
     1759        if (a_ret != E_OK || !a_fbs_dmy.ptr) /* 確保失敗 */
    17661760                goto lb_finally;
    17671761
    1768         /* ‰ž“š“d•¶Ý’è                                         */
     1762        /* 応答電文設定                                               */
    17691763        _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
    17701764        a_size -= sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY);
    17711765
    1772         /* payloadæ“ª‚ÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)‚ð“Ç‚Ý”ò‚΂· */
     1766        /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */
    17731767        a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
    17741768        if (a_ret)
    17751769                goto lb_except;
    17761770
    1777         /* ƒvƒƒpƒeƒB’l‘‚«ž‚݉ž“š“Ç‚Ý”ò‚΂µŽÀs */
     1771        /* プロパティ値書き込み応答読み飛ばし実行 */
    17781772        a_ret = _ecn_tsk_eoj_skip_main(fp_obj, fa_fbs_id, a_count);
    17791773        if (a_ret) {
     
    17871781                (a_sw_ok ? "true" : "false") );
    17881782
    1789         /* ŽŸ‚ÌŒ”‚ð“Ç‚ÝŽæ‚é(1byte)                                            */
    1790         /* ¨ ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet]        */
     1783        /* 次の件数を読み取る(1byte)                                             */
     1784        /* ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet] */
    17911785        a_rdlen = i = 0;
    17921786        a_ret = _ecn_fbs_get_data(fa_fbs_id, &i, 1, &a_rdlen);
     
    17951789        a_count = *(uint8_t *)&i;
    17961790
    1797         /* ƒvƒƒpƒeƒB’l“ǂݏo‚µ‰ž“š‚̏‘‚«ž‚ÝŽÀs */
     1791        /* プロパティ値読み出し応答の書き込み実行 */
    17981792        a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_fromapp, true, fa_fbs_id, a_fbs_dmy,
    17991793                fa_fbs_anno, a_count, &a_sw_ok);
     
    18121806
    18131807lb_except:
    1814         /* ƒf[ƒ^‘—MŽ¸”s‚µ‚½‚ç—̈æ‰ð•ú */
     1808        /* データ送信失敗したら領域解放 */
    18151809        if (a_fbs_dmy.ptr)
    18161810                _ecn_fbs_del(a_fbs_dmy);
     
    18211815
    18221816/*
    1823  * ‰ž“š“d•¶‘Ò‚¿‚ÌŠ„‚荞‚Ý“d•¶ì¬
     1817 * 応答電文待ちの割り込み電文作成
    18241818 */
    18251819ER _ecn_mk_brk_wai(ECN_FBS_ID *pk_fbs_id, const void *p_dat, size_t fa_size)
    18261820{
    18271821        ER                              a_ret;
    1828         ECN_FBS_ID              a_fbs_id = { 0 };       /* —v‹“d•¶—pƒƒ‚ƒŠ     */
     1822        ECN_FBS_ID              a_fbs_id = { 0 };       /* 要求電文用メモリ     */
    18291823
    18301824        if (!pk_fbs_id)
     
    18321826        *pk_fbs_id = a_fbs_id;
    18331827        if (sizeof(a_fbs_id.ptr->payload) <= fa_size)
    1834                 return E_PAR; /* •tƒf[ƒ^‚ª‘å‚«‚·‚¬‚é */
     1828                return E_PAR; /* 付随データが大きすぎる */
    18351829        if (!p_dat && 0 < fa_size)
    1836                 return E_PAR; /* •tƒf[ƒ^ƒTƒCƒY‚ª1ˆÈã‚Ȃ̂Ƀf[ƒ^ƒ|ƒCƒ“ƒ^‚ªNULL */
    1837 
    1838         /* —v‹“d•¶—pƒƒ‚ƒŠ‚̎擾 */
     1830                return E_PAR; /* 付随データサイズが1以上なのにデータポインタがNULL */
     1831
     1832        /* 要求電文用メモリの取得 */
    18391833        a_ret = _ecn_fbs_cre((0 < fa_size ? fa_size : 1), &a_fbs_id);
    1840         if (a_ret != E_OK || !a_fbs_id.ptr) { /* Šm•ÛŽ¸”s */
     1834        if (a_ret != E_OK || !a_fbs_id.ptr) { /* 確保失敗 */
    18411835                syslog(LOG_WARNING, "_ecn_fbs_cre(%d) result = %d:%s", fa_size, a_ret, itron_strerror(a_ret));
    18421836                return a_ret;
    18431837        }
    18441838
    1845         /* —v‹“d•¶Ý’è */
     1839        /* 要求電文設定 */
    18461840        a_fbs_id.ptr->hdr.type = ECN_MSG_USER_BREAK;
    18471841        a_fbs_id.ptr->hdr.sender.id = ENOD_API_ID;
     
    18501844
    18511845        if (0 < fa_size && p_dat) {
    1852                 /* •tƒf[ƒ^’ljÁ */
     1846                /* 付随データ追加 */
    18531847                a_ret = _ecn_fbs_add_data_ex(a_fbs_id, p_dat, fa_size);
    18541848                if (a_ret) {
     
    18621856        *pk_fbs_id = a_fbs_id;
    18631857
    1864         /* ³íI—¹ */
     1858        /* 正常終了 */
    18651859        return a_ret;
    18661860
    18671861lb_except:
    1868         /* ƒf[ƒ^ì¬Ž¸”s‚µ‚½‚ç—̈æ‰ð•ú */
     1862        /* データ作成失敗したら領域解放 */
    18691863        if (a_fbs_id.ptr)
    18701864                _ecn_fbs_del(a_fbs_id);
     
    18731867}
    18741868
    1875 /* ‰ž“š“d•¶—pfbsÝ’è(sender/target‚̐ݒè) */
     1869/* 応答電文用fbs設定(sender/targetの設定) */
    18761870ER _ecn_tsk_cre_req_fbs(ID sender, uint8_t cmd, ECN_FBS_ID *pk_req)
    18771871{
     
    19021896}
    19031897
    1904 /* ‰ž“š“d•¶—pfbsÝ’è(sender/target‚̐ݒè) */
     1898/* 応答電文用fbs設定(sender/targetの設定) */
    19051899ER _ecn_tsk_cre_res_fbs(ECN_FBS_ID req, uint8_t cmd, ECN_FBS_ID *pk_res)
    19061900{
Note: See TracChangeset for help on using the changeset viewer.