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

文字コードを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_agent.c

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