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

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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;
Note: See TracChangeset for help on using the changeset viewer.