Ignore:
Timestamp:
Feb 1, 2019, 9:57:09 PM (5 years ago)
Author:
coas-nagasima
Message:

TINETとSocket APIなどを更新

Location:
asp3_tinet_ecnl_rx/trunk/ntshell/echonet
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet.c

    r337 r364  
    5656
    5757/*
     58 * インスタンスリスト通知の送信
     59 */
     60ER ecn_ntf_inl()
     61{
     62        return _ecn_tsk_ntf_inl();
     63}
     64
     65/*
    5866 * ECHONETオブジェクト参照
    5967 * 引数
     
    393401                return E_PAR;
    394402
    395         a_ret = trcv_dtq(ecn_api_mailboxid, (intptr_t *)&p_msg, fa_tmout);
     403        a_ret = trcv_dtq(ecn_api_dataqueueid, (intptr_t *)&p_msg, fa_tmout);
    396404        if (a_ret != E_OK) {
    397405                *ppk_esv = NULL;
     
    425433        a_ret = _ecn_fbs_del(a_fbs);
    426434        return a_ret;
     435}
     436
     437/*
     438 * 応答電文の送信元ノードを取得する
     439 */
     440ID ecn_get_enod(T_EDATA *pk_esv)
     441{
     442        const EOBJCB    *p_snod;
     443        const EOBJINIB  *p_sobj = NULL;
     444
     445        p_snod = _ecn_eno_fnd(((T_ECN_FST_BLK *)pk_esv)->hdr.sender.id);
     446        if (p_snod != NULL) {
     447                p_sobj = p_snod->profile;
     448        }
     449
     450        if (p_sobj == NULL)
     451                return EOBJ_NULL;
     452#ifdef ECHONET_CONTROLLER_EXTENTION
     453        if (p_sobj->eprpcnt == 0)
     454                return ecn_agent_get_eobj(p_sobj);
     455#endif
     456        return 1 + (((intptr_t)p_sobj - (intptr_t)eobjinib_table) / sizeof(EOBJINIB));
    427457}
    428458
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet.h

    r337 r364  
    6767typedef enum _echonet_enod_id
    6868{
    69         ENOD_NOT_MATCH_ID       = -1,
     69        ENOD_NOT_MATCH_ID       = -1,                   /* アドレスID登録なし */
    7070        ENOD_MULTICAST_ID       = 0,                    /* マルチキャストアドレスID */
    7171        ENOD_LOCAL_ID           = 1,                    /* 自ノードアドレスID */
     
    279279extern const ID ecn_svc_taskid;
    280280extern const ID ecn_udp_taskid;
    281 extern const ID ecn_api_mailboxid;
    282 extern const ID ecn_svc_mailboxid;
    283 extern const ID ecn_udp_mailboxid;
     281extern const ID ecn_api_dataqueueid;
     282extern const ID ecn_svc_dataqueueid;
     283extern const ID ecn_udp_dataqueueid;
    284284#ifndef ECHONET_USE_MALLOC
    285285extern const ID ecn_mempoolid;
     
    309309
    310310/*
     311 * インスタンスリスト通知の送信
     312 */
     313ER ecn_ntf_inl();
     314
     315/*
    311316 * ECHONETオブジェクト参照
    312317 */
     
    392397 */
    393398ER ecn_rel_esv(T_EDATA *pk_esv);
     399
     400/*
     401 * 応答電文の送信元ノードを取得する
     402 */
     403ID ecn_get_enod(T_EDATA *pk_esv);
    394404
    395405/*
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet.trb

    r337 r364  
    634634const ID _echonet_ecn_svc_taskid = ECHONET_SVC_TASK;
    635635const ID _echonet_ecn_udp_taskid = ECHONET_UDP_TASK;
    636 const ID _echonet_ecn_api_mailboxid = ECHONET_API_MAILBOX;
    637 const ID _echonet_ecn_svc_mailboxid = ECHONET_SVC_MAILBOX;
    638 const ID _echonet_ecn_udp_mailboxid = ECHONET_UDP_MAILBOX;
     636const ID _echonet_ecn_api_dataqueueid = ECHONET_API_DATAQUEUE;
     637const ID _echonet_ecn_svc_dataqueueid = ECHONET_SVC_DATAQUEUE;
     638const ID _echonet_ecn_udp_dataqueueid = ECHONET_UDP_DATAQUEUE;
    639639#ifndef ECHONET_USE_MALLOC
    640640const ID _echonet_ecn_mempoolid = ECHONET_MEMPOOL;
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_asp.cfg

    r337 r364  
    5151
    5252/*
    53  * ECHONET Lite API用メールボックス
     53 * ECHONET Lite API用データキュー
    5454 */
    55 CRE_DTQ(ECHONET_API_MAILBOX, { TA_TFIFO, 1, NULL });
     55CRE_DTQ(ECHONET_API_DATAQUEUE, { TA_TFIFO, ECHONET_API_DATAQUEUE_COUNT, NULL });
    5656
    5757/*
    58  * ECHONET Lite サービス処理タスク用メールボックス
     58 * ECHONET Lite サービス処理タスク用データキュー
    5959 */
    60 CRE_DTQ(ECHONET_SVC_MAILBOX, { TA_TFIFO, 1, NULL });
     60CRE_DTQ(ECHONET_SVC_DATAQUEUE, { TA_TFIFO, ECHONET_SVC_DATAQUEUE_COUNT, NULL });
    6161
    6262/*
     
    6666
    6767/*
    68  * ECHONET Lite UDP通信処理用メールボックス
     68 * ECHONET Lite UDP通信処理用データキュー
    6969 */
    70 CRE_DTQ(ECHONET_UDP_MAILBOX, { TA_TFIFO, 1, NULL });
     70CRE_DTQ(ECHONET_UDP_DATAQUEUE, { TA_TFIFO, ECHONET_UDP_DATAQUEUE_COUNT, NULL });
    7171
    7272/*
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_rename.h

    r337 r364  
    4747#define ecn_svc_taskid          _echonet_ecn_svc_taskid
    4848#define ecn_udp_taskid          _echonet_ecn_udp_taskid
    49 #define ecn_api_mailboxid       _echonet_ecn_api_mailboxid
    50 #define ecn_svc_mailboxid       _echonet_ecn_svc_mailboxid
    51 #define ecn_udp_mailboxid       _echonet_ecn_udp_mailboxid
     49#define ecn_api_dataqueueid     _echonet_ecn_api_dataqueueid
     50#define ecn_svc_dataqueueid     _echonet_ecn_svc_dataqueueid
     51#define ecn_udp_dataqueueid     _echonet_ecn_udp_dataqueueid
    5252#define ecn_mempoolid           _echonet_ecn_mempoolid
    5353#define ecn_udp_cepid           _echonet_ecn_udp_cepid
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_task.c

    r337 r364  
    7777static bool_t g_release_esv;
    7878
    79 ER _ecn_tsk_ntf_inl(intptr_t fa_exinf);
    80 
    8179ER _ecn_tsk_snd_dtq(ECN_FBS_ID fa_rsp_fbs, bool_t from_app)
    8280{
    8381        ER      a_ret;
    8482        T_MSG *msg = (T_MSG *)fa_rsp_fbs.ptr;
    85         ID dtqid = ecn_udp_mailboxid;
     83        ID dtqid = ecn_udp_dataqueueid;
    8684        int i;
    8785#ifdef ECN_DBG_PUT_ENA
     
    9088        if (from_app && (((T_EDATA *)fa_rsp_fbs.ptr)->hdr.edata.esv == ESV_INFC)) {
    9189                g_api_tid = ((T_EDATA *)fa_rsp_fbs.ptr)->hdr.ecn_hdr.tid;
    92                 dtqid = ecn_svc_mailboxid;
     90                dtqid = ecn_svc_dataqueueid;
    9391        }
    9492        else {
     
    9896                                g_api_tid = ((T_EDATA *)fa_rsp_fbs.ptr)->hdr.ecn_hdr.tid;
    9997
    100                         dtqid = ecn_udp_mailboxid;
     98                        dtqid = ecn_udp_dataqueueid;
    10199                        break;
    102100                case ENOD_LOCAL_ID:
    103101                        if (from_app)
    104                                 dtqid = ecn_svc_mailboxid;
     102                                dtqid = ecn_svc_dataqueueid;
    105103                        else
    106                                 dtqid = ecn_api_mailboxid;
     104                                dtqid = ecn_api_dataqueueid;
    107105                        break;
    108106                case ENOD_API_ID:
    109                         dtqid = ecn_api_mailboxid;
     107                        dtqid = ecn_api_dataqueueid;
    110108                        break;
    111109                default:
     
    121119                                switch (eobjcb_table[i].profile->eobjatr) {
    122120                                case EOBJ_SYNC_REMOTE_NODE:
    123                                         dtqid = ecn_udp_mailboxid;
     121                                        dtqid = ecn_udp_dataqueueid;
    124122                                        break;
    125123                                case EOBJ_ASYNC_REMOTE_NODE:
    126                                         dtqid = ecn_svc_mailboxid;
     124                                        dtqid = ecn_svc_dataqueueid;
    127125                                        break;
    128126                                default:
     
    131129                        }
    132130                        else {
    133                                 dtqid = ecn_udp_mailboxid;
     131                                dtqid = ecn_udp_dataqueueid;
    134132                        }
    135133                        break;
     
    242240#endif
    243241
    244                 a_ret = trcv_dtq(ecn_svc_mailboxid, (intptr_t *)&a_mdt.p_msg, a_timer);
     242                a_ret = trcv_dtq(ecn_svc_dataqueueid, (intptr_t *)&a_mdt.p_msg, a_timer);
    245243                if ((a_ret != E_OK) && (a_ret != E_TMOUT)) {
    246244                        ECN_DBG_PUT_2("trcv_dtq() result = %d:%s", a_ret, itron_strerror(a_ret));
     
    867865                g_release_esv = false;
    868866
    869                 ECN_CAP_PUT_1("redirect ecn_svc_mailboxid → ecn_api_mailboxid (esv:0x%02X)",
     867                ECN_CAP_PUT_1("redirect ecn_svc_dataqueueid → ecn_api_dataqueueid (esv:0x%02X)",
    870868                        p_esv->edata.esv);
    871869                fa_fbs_id.ptr->hdr.target.id = ENOD_API_ID;
    872                 a_ret = snd_dtq(ecn_api_mailboxid, (intptr_t)fa_fbs_id.ptr);
     870                a_ret = snd_dtq(ecn_api_dataqueueid, (intptr_t)fa_fbs_id.ptr);
    873871                if (a_ret != E_OK) {
    874872                        syslog(LOG_WARNING, "_ecn_tsk_ecn_msg() : snd_dtq() result = %d:%s", a_ret, itron_strerror(a_ret));
     
    20242022        req.ptr->hdr.type = ECN_MSG_INTERNAL;
    20252023        req.ptr->hdr.sender.dtqid = sender;
    2026         req.ptr->hdr.target.dtqid = ecn_svc_mailboxid;
     2024        req.ptr->hdr.target.dtqid = ecn_svc_dataqueueid;
    20272025        req.ptr->hdr.reply.dtqid = sender;
    20282026
     
    20522050
    20532051        res.ptr->hdr.type = ECN_MSG_INTERNAL;
    2054         res.ptr->hdr.sender.dtqid = ecn_svc_mailboxid;
     2052        res.ptr->hdr.sender.dtqid = ecn_svc_dataqueueid;
    20552053        res.ptr->hdr.target.dtqid = req.ptr->hdr.reply.dtqid;
    2056         res.ptr->hdr.reply.dtqid = ecn_svc_mailboxid;
     2054        res.ptr->hdr.reply.dtqid = ecn_svc_dataqueueid;
    20572055
    20582056        *pk_res = res;
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_task.h

    r337 r364  
    110110} T_ECN_INTERNAL_MSG;
    111111
     112/*
     113 * インスタンスリスト通知の送信
     114 */
     115ER _ecn_tsk_ntf_inl();
    112116/*
    113117 * 要求電文作成
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_udp6_task.c

    r337 r364  
    151151
    152152        /* echonet_taskに送る */
    153         a_ret = snd_dtq(ecn_svc_mailboxid, (intptr_t)a_fbs_id.ptr);
    154         if (a_ret != E_OK) {
    155                 ECN_DBG_PUT_2("[UDP ECHO SRV] snd_dtq(ecn_svc_mailboxid) result = %d:%s", a_ret, itron_strerror(a_ret));
     153        a_ret = snd_dtq(ecn_svc_dataqueueid, (intptr_t)a_fbs_id.ptr);
     154        if (a_ret != E_OK) {
     155                ECN_DBG_PUT_2("[UDP ECHO SRV] snd_dtq(ecn_svc_dataqueueid) result = %d:%s", a_ret, itron_strerror(a_ret));
    156156                goto lb_except;
    157157        }
     
    201201                a_timer = ECHONET_UDP_TASK_GET_TIMER;
    202202
    203                 a_ret = trcv_dtq(ecn_udp_mailboxid, (intptr_t *)&a_mdt.p_msg, a_timer);
     203                a_ret = trcv_dtq(ecn_udp_dataqueueid, (intptr_t *)&a_mdt.p_msg, a_timer);
    204204                if ((a_ret != E_OK) && (a_ret != E_TMOUT)) {
    205205                        ECN_DBG_PUT_2("trcv_dtq() result = %d:%s", a_ret, itron_strerror(a_ret));
     
    261261        req.ptr->hdr.type = ECN_MSG_INTERNAL;
    262262        req.ptr->hdr.sender.dtqid = sender;
    263         req.ptr->hdr.target.dtqid = ecn_udp_mailboxid;
     263        req.ptr->hdr.target.dtqid = ecn_udp_dataqueueid;
    264264        req.ptr->hdr.reply.dtqid = sender;
    265265
     
    289289
    290290        res.ptr->hdr.type = ECN_MSG_INTERNAL;
    291         res.ptr->hdr.sender.dtqid = ecn_udp_mailboxid;
     291        res.ptr->hdr.sender.dtqid = ecn_udp_dataqueueid;
    292292        res.ptr->hdr.target.dtqid = req.ptr->hdr.reply.dtqid;
    293         res.ptr->hdr.reply.dtqid = ecn_udp_mailboxid;
     293        res.ptr->hdr.reply.dtqid = ecn_udp_dataqueueid;
    294294
    295295        *pk_res = res;
     
    416416                else if (memcmp(&a_dst.ipaddr, &locl, sizeof(a_dst.ipaddr)) == 0) {
    417417                        /* 送信先が127.0.0.1 → dtqに転送 */
    418                         ECN_DBG_PUT_1("redirect ecn_udp_mailboxid → ecn_svc_mailboxid (esv:0x%02X)",
     418                        ECN_DBG_PUT_1("redirect ecn_udp_dataqueueid → ecn_svc_dataqueueid (esv:0x%02X)",
    419419                                ((T_EDATA *)fbs_id.ptr)->hdr.edata.esv);
    420420
     
    462462
    463463        switch (fncd) {
    464         case TFN_UDP_CRE_CEP:
     464        case TEV_UDP_RCV_DAT:
    465465        case TFN_UDP_RCV_DAT:
    466466                /* ECN_CAP_PUT("[UDP ECHO SRV] callback_nblk_udp() recv: %u", *(int *)p_parblk); */
     
    488488                return E_OK;
    489489
     490        case TFN_UDP_CRE_CEP:
    490491        case TFN_UDP_SND_DAT:
    491492                break;
    492493        default:
    493494                ECN_CAP_PUT_2("[UDP ECHO SRV] fncd:0x%04X(%s)", -fncd,
     495                        (fncd == TEV_UDP_RCV_DAT ? "TEV_UDP_RCV_DAT" :
    494496                        (fncd == TFN_UDP_CRE_CEP ? "TFN_UDP_CRE_CEP" :
    495497                        (fncd == TFN_UDP_RCV_DAT ? "TFN_UDP_RCV_DAT" :
    496                         (fncd == TFN_UDP_SND_DAT ? "TFN_UDP_SND_DAT" : "undef"))));
     498                        (fncd == TFN_UDP_SND_DAT ? "TFN_UDP_SND_DAT" : "undef")))));
    497499
    498500                error = E_PAR;
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_udp6_task.h

    r337 r364  
    7171#endif /* ECHONET_UDP_TASK_STACK_SIZE */
    7272
    73 #ifndef NUM_ECHONET_UDP_MAILBOX
    74 #define NUM_ECHONET_UDP_MAILBOX 10
    75 #endif /* NUM_ECHONET_UDP_MAILBOX */
     73#ifndef NUM_ECHONET_UDP_DATAQUEUE
     74#define NUM_ECHONET_UDP_DATAQUEUE       10
     75#endif /* NUM_ECHONET_UDP_DATAQUEUE */
    7676
    7777/*
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_udp_task.c

    r337 r364  
    146146
    147147        /* echonet_taskに送る */
    148         a_ret = snd_dtq(ecn_svc_mailboxid, (intptr_t)a_fbs_id.ptr);
    149         if (a_ret != E_OK) {
    150                 ECN_DBG_PUT_2("[UDP ECHO SRV] snd_dtq(ecn_svc_mailboxid) result = %d:%s", a_ret, itron_strerror(a_ret));
     148        a_ret = snd_dtq(ecn_svc_dataqueueid, (intptr_t)a_fbs_id.ptr);
     149        if (a_ret != E_OK) {
     150                ECN_DBG_PUT_2("[UDP ECHO SRV] snd_dtq(ecn_svc_dataqueueid) result = %d:%s", a_ret, itron_strerror(a_ret));
    151151                goto lb_except;
    152152        }
     
    206206                a_timer = ECHONET_UDP_TASK_GET_TIMER;
    207207
    208                 a_ret = trcv_dtq(ecn_udp_mailboxid, (intptr_t *)&a_mdt.p_msg, a_timer);
     208                a_ret = trcv_dtq(ecn_udp_dataqueueid, (intptr_t *)&a_mdt.p_msg, a_timer);
    209209                if ((a_ret != E_OK) && (a_ret != E_TMOUT)) {
    210210                        ECN_DBG_PUT_2("trcv_dtq() result = %d:%s", a_ret, itron_strerror(a_ret));
     
    266266        req.ptr->hdr.type = ECN_MSG_INTERNAL;
    267267        req.ptr->hdr.sender.dtqid = sender;
    268         req.ptr->hdr.target.dtqid = ecn_udp_mailboxid;
     268        req.ptr->hdr.target.dtqid = ecn_udp_dataqueueid;
    269269        req.ptr->hdr.reply.dtqid = sender;
    270270
     
    294294
    295295        res.ptr->hdr.type = ECN_MSG_INTERNAL;
    296         res.ptr->hdr.sender.dtqid = ecn_udp_mailboxid;
     296        res.ptr->hdr.sender.dtqid = ecn_udp_dataqueueid;
    297297        res.ptr->hdr.target.dtqid = req.ptr->hdr.reply.dtqid;
    298         res.ptr->hdr.reply.dtqid = ecn_udp_mailboxid;
     298        res.ptr->hdr.reply.dtqid = ecn_udp_dataqueueid;
    299299
    300300        *pk_res = res;
     
    420420                else if (a_dst.ipaddr == MAKE_IPV4_ADDR(127,0,0,1)) {
    421421                        /* 送信先が127.0.0.1 → dtqに転送 */
    422                         ECN_DBG_PUT_1("redirect ecn_udp_mailboxid → ecn_svc_mailboxid (esv:0x%02X)",
     422                        ECN_DBG_PUT_1("redirect ecn_udp_dataqueueid → ecn_svc_dataqueueid (esv:0x%02X)",
    423423                                ((T_EDATA *)fbs_id.ptr)->hdr.edata.esv);
    424424
     
    466466
    467467        switch (fncd) {
    468         case TFN_UDP_CRE_CEP:
     468        case TEV_UDP_RCV_DAT:
    469469        case TFN_UDP_RCV_DAT:
    470470                /* ECN_CAP_PUT("[UDP ECHO SRV] callback_nblk_udp() recv: %u", *(int *)p_parblk); */
     
    492492                return E_OK;
    493493
     494        case TFN_UDP_CRE_CEP:
    494495        case TFN_UDP_SND_DAT:
    495496                break;
    496497        default:
    497498                ECN_CAP_PUT_2("[UDP ECHO SRV] fncd:0x%04X(%s)", -fncd,
     499                        (fncd == TEV_UDP_RCV_DAT ? "TEV_UDP_RCV_DAT" :
    498500                        (fncd == TFN_UDP_CRE_CEP ? "TFN_UDP_CRE_CEP" :
    499501                        (fncd == TFN_UDP_RCV_DAT ? "TFN_UDP_RCV_DAT" :
    500                         (fncd == TFN_UDP_SND_DAT ? "TFN_UDP_SND_DAT" : "undef"))));
     502                        (fncd == TFN_UDP_SND_DAT ? "TFN_UDP_SND_DAT" : "undef")))));
    501503
    502504                error = E_PAR;
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_udp_task.h

    r337 r364  
    7171#endif /* ECHONET_UDP_TASK_STACK_SIZE */
    7272
    73 #ifndef NUM_ECHONET_UDP_MAILBOX
    74 #define NUM_ECHONET_UDP_MAILBOX 10
    75 #endif /* NUM_ECHONET_UDP_MAILBOX */
     73#ifndef NUM_ECHONET_UDP_DATAQUEUE
     74#define NUM_ECHONET_UDP_DATAQUEUE       10
     75#endif /* NUM_ECHONET_UDP_DATAQUEUE */
    7676
    7777/*
Note: See TracChangeset for help on using the changeset viewer.