Changeset 148


Ignore:
Timestamp:
Jan 8, 2016, 2:35:52 PM (6 years ago)
Author:
coas-nagasima
Message:

メッセージバッファ領域がなくなったときにWebSocketパケットを誤って処理してしまうのを修正。
Ethernet送信バッファが取れないときにパケットが送信できなかったのを修正。
その他、処理の安定性の向上。

Location:
uKadecot/trunk
Files:
1 added
1 deleted
13 edited

Legend:

Unmodified
Added
Removed
  • uKadecot/trunk/kadecot/wamp_broker.c

    r108 r148  
    9090
    9191        subscription = wamp_broker_new_subscription(broker);
     92        if(subscription == NULL)
     93                return;
    9294
    9395        subscription->deviceName[0] = '\0';
  • uKadecot/trunk/src/ukadecot/main.c

    r125 r148  
    274274static void main_publish(T_EDATA *esv);
    275275
     276enum main_state_t {
     277        main_state_start,
     278        main_state_idle,
     279};
     280
     281TMO main_timer = TMO_FEVR;
     282enum main_state_t main_state = main_state_start;
    276283struct pt main_pt;
    277284struct uip_timer main_pt_timer;
     
    294301
    295302        /* 初期化 */
    296         main_initialize();
     303        if (main_state == main_state_start)
     304                main_initialize();
    297305
    298306        ret2 = get_tim(&now);
     
    334342                        ret = ecn_rel_esv(esv);
    335343                        if (ret != E_OK){
    336                                 syslog(LOG_ERROR, "ecn_rel_esv");
     344                                syslog(LOG_ERROR, "ECNL ecn_rel_esv result = %d", ret);
    337345                                PT_EXIT(&main_pt);
    338346                        }
     
    366374                                ret = ecn_rel_esv(esv);
    367375                                if (ret != E_OK){
    368                                         syslog(LOG_ERROR, "ecn_rel_esv");
     376                                        syslog(LOG_ERROR, "BRK ecn_rel_esv msg = %p, type = %d, result = %d", esv, msg.ptr->hdr.type, ret);
    369377                                        PT_EXIT(&main_pt);
    370378                                }
     
    392400}
    393401
    394 enum main_state_t {
    395         main_state_start,
    396         main_state_idle,
    397 };
    398 
    399 TMO main_timer = TMO_FEVR;
    400 enum main_state_t main_state = main_state_start;
    401402bool_t main_btn1_state;
    402403int main_btn1_count = 0;
  • uKadecot/trunk/src/ukadecot/main.h

    r108 r148  
    5555 */
    5656
    57 #define MAIN_PRIORITY   7               /* メインタスクの優先度 */
     57#define MAIN_PRIORITY   3               /* メインタスクの優先度 */
    5858#define INIT_PRIORITY           1       /* 初期化タスクの優先度 */
    5959#define LOGTASK_PRIORITY        8       /* ログタスクの優先度 */
  • uKadecot/trunk/src/ukadecot/uip_app_config.h

    r108 r148  
    4545 */
    4646
    47 #define UIP_TASK_PRIORITY       3
     47#define UIP_TASK_PRIORITY       7
    4848#define UIP_TASK_STACK_SIZE     256
    4949
  • uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/Control.cs

    r108 r148  
    764764
    765765                private Type InputType { get { return FieldContain.Input.GetType(); } }
     766
    766767                private byte[] ToByteValue()
    767768                {
     
    935936                /// </summary>
    936937                public bool Changed { get { return !FieldContain.Input.Value.Equals(ToText(GetValue)); } }
     938
    937939                public void GrpBoxChange(Element ele, jQueryEvent ev)
    938940                {
     
    946948
    947949                public EventHandlerDevicePropertyInfo KadecotSet;
     950
    948951                public void SetGetValue(byte[] data)
    949952                {
     
    11101113                public Icon ButtonIcon { get { return getIcon(); } set { base.Object.ToggleClass(getClass(value), true); } }
    11111114                public string Href { get { return base.Object.GetAttribute("href"); } set { base.Object.Attribute("href", value); } }
     1115
    11121116                public enum Icon
    11131117                {
     
    12371241                public List<RadioInput> RadioList;
    12381242                private bool _ControlGroup;
     1243
    12391244                public bool ControlGroup
    12401245                {
     
    12561261
    12571262                private bool _Horizontal;
     1263
    12581264                public bool Horizontal
    12591265                {
     
    12751281                        public UIRadioInput Radio;
    12761282                        public UILabel Label;
     1283
    12771284                        public RadioInput(UILabel Label, UIRadioInput Radio)
    12781285                        {
     
    14131420
    14141421                public string Placeholder { get { return base.GetAttribute("placeholder"); } set { base.Attribute("placeholder", value); } }
     1422
    14151423                public JsDictionary DataOptions
    14161424                {
     
    15721580                        : base("<li>")
    15731581                {
    1574 
    15751582                }
    15761583
     
    16341641                        : base("<a>")
    16351642                {
    1636 
    16371643                }
    16381644
     
    16631669                        : base("<h" + i.ToString() + ">")
    16641670                {
    1665 
    16661671                }
    16671672
     
    16781683                        : base("<img>")
    16791684                {
    1680 
    16811685                }
    16821686
     
    18261830        {
    18271831                public DeviceController DeviceController;
     1832
    18281833                public class UIDeviceInfo
    18291834                {
     
    20002005                        info = new UIDiv();
    20012006                        string identifer = "";
     2007
    20022008                        foreach (var node in NodeList) {
    2003 
    20042009                                var profile = node.Profile;
    20052010
    20062011                                if (jQuery.Select("#" + "cl_node_" + identifer).Length > 0)
    20072012                                        continue;
     2013
    20082014                                UICollapsibleset col = new UICollapsibleset(node.Data.ToString());
    20092015                                col.Id = "cl_node_" + identifer;
     
    20132019
    20142020                                col.Append(listview);
     2021
    20152022                                foreach (var item in node.Devices) {
    2016 
    20172023                                        if (item.Profile)
    20182024                                                continue;
     
    20632069                public static string LoadingShow = "loading.show";
    20642070                public static string LoadingHide = "loading.hide";
    2065                 /// <summary>
    2066                 /// 機器検索開始
    2067                 /// </summary>
     2071                /// <summary>機器検索開始</summary>
    20682072                public static string SearchStart = "search.start";
    2069                 /// <summary>
    2070                 /// 機器検索終了
    2071                 /// </summary>
     2073                /// <summary>機器検索終了</summary>
    20722074                public static string SearchEnd = "search.end";
    2073                 /// <summary>
    2074                 /// 機器検索エラー
    2075                 /// </summary>
     2075                /// <summary>機器検索エラー</summary>
    20762076                public static string SearchError = "search.error";
    2077                 /// <summary>
    2078                 /// 入力画面作成開始
    2079                 /// </summary>
     2077                /// <summary>入力画面作成開始</summary>
    20802078                public static string PropertyWriteStart = "propertywrite.start";
    2081                 /// <summary>
    2082                 /// 入力画面作成終了
    2083                 /// </summary>
     2079                /// <summary>入力画面作成終了</summary>
    20842080                public static string PropertyWriteEnd = "propertywrite.end";
    20852081        }
  • uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WampClient.cs

    r108 r148  
    491491
    492492                        //deserialize
    493                         if (msg.data != null) {
    494                                 data = WampDeserializer.Parse(msg.data);
    495                         }
    496                         else {
    497                                 data = WampDeserializer.Parse((string)msg);
     493                        try {
     494                                if (msg.data != null) {
     495                                        data = WampDeserializer.Parse(msg.data);
     496                                }
     497                                else {
     498                                        data = WampDeserializer.Parse((string)msg);
     499                                }
     500                        }
     501                        catch {
     502                                data = null;
    498503                        }
    499504                        if (data == null) {
  • uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/ctrlui.js

    r125 r148  
    53145314                        //decrypt data
    53155315                        //deserialize
    5316                         if (!!ss.isValue(msg.data)) {
    5317                                 data = $Kadecot_WampDeserializer.parse(ss.cast(msg.data, String));
    5318                         }
    5319                         else {
    5320                                 data = $Kadecot_WampDeserializer.parse(ss.cast(msg, String));
     5316                        try {
     5317                                if (!!ss.isValue(msg.data)) {
     5318                                        data = $Kadecot_WampDeserializer.parse(ss.cast(msg.data, String));
     5319                                }
     5320                                else {
     5321                                        data = $Kadecot_WampDeserializer.parse(ss.cast(msg, String));
     5322                                }
     5323                        }
     5324                        catch ($t1) {
     5325                                data = null;
    53215326                        }
    53225327                        if (ss.isNullOrUndefined(data)) {
  • uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/ctrlui.min.js

    r125 r148  
    425425else{return null;}
    426426return data;},sendYield:function(request,options,arguments1,argumentsKw){var data;data=$Kadecot_WampSerializer.createYield(request,options,arguments1,argumentsKw);if(this.$on_open_flag){this.$webSocket.send(data);}
    427 return data;},onOpen:function(e){this.$on_open_flag=true;var callback=this.$wampClientCore.get_openCallback();if(!ss.staticEquals(callback,null)){callback();}},onClose:function(e){this.$on_open_flag=false;var callback=this.$wampClientCore.get_closeCallback();if(!ss.staticEquals(callback,null)){callback();}},onError:function(e){var eea=e;if(!ss.staticEquals(this.$errorCallback,null)){this.$errorCallback(ss.cast(eea.message,String));}},onMessage:function(e){var msg=e;var data;var callback=null;if(!!ss.isValue(msg.data)){data=$Kadecot_WampDeserializer.parse(ss.cast(msg.data,String));}
    428 else{data=$Kadecot_WampDeserializer.parse(ss.cast(msg,String));}
     427return data;},onOpen:function(e){this.$on_open_flag=true;var callback=this.$wampClientCore.get_openCallback();if(!ss.staticEquals(callback,null)){callback();}},onClose:function(e){this.$on_open_flag=false;var callback=this.$wampClientCore.get_closeCallback();if(!ss.staticEquals(callback,null)){callback();}},onError:function(e){var eea=e;if(!ss.staticEquals(this.$errorCallback,null)){this.$errorCallback(ss.cast(eea.message,String));}},onMessage:function(e){var msg=e;var data;var callback=null;try{if(!!ss.isValue(msg.data)){data=$Kadecot_WampDeserializer.parse(ss.cast(msg.data,String));}
     428else{data=$Kadecot_WampDeserializer.parse(ss.cast(msg,String));}}
     429catch($t1){data=null;}
    429430if(ss.isNullOrUndefined(data)){return;}
    430431var list=ss.cast(data,Array);var switchData=ss.unbox(ss.cast(list[0],ss.Int32));switch(switchData){case 2:{if(this.$challnge_flag){this.$challnge_flag=false;callback=this.$wampClientCore.get_authenticateCallback();if(!ss.staticEquals(callback,null)){callback(data);}
  • uKadecot/trunk/uip/apps/webserver/websocket.c

    r108 r148  
    127127                // Payload buffer
    128128                default:
    129                         _ecn_fbs_poke(ws->cur_in_msg, s->data_pos, *pos ^ s->masking_key[s->data_pos % 4]);
     129                        if(ws->cur_in_msg.ptr != NULL)
     130                                _ecn_fbs_poke(ws->cur_in_msg, s->data_pos, *pos ^ s->masking_key[s->data_pos % 4]);
    130131
    131132                        s->data_pos++;
     
    133134                                ER ret;
    134135                                s->state = 0;
    135                                 ((ID *)ws->cur_in_msg.ptr->_gap)[0] = ws->wbsid;
    136                                 ret = psnd_dtq(ecn_api_mailboxid, (intptr_t)ws->cur_in_msg.ptr);
    137                                 if (ret != E_OK) {
    138                                         syslog(LOG_WARNING, "websocket_input() : psnd_dtq(%d) result = %d", ecn_api_mailboxid, ret);
    139                                         _ecn_fbs_del(ws->cur_in_msg);
     136
     137                                if (ws->cur_in_msg.ptr != NULL) {
     138                                        ((ID *)ws->cur_in_msg.ptr->_gap)[0] = ws->wbsid;
     139                                        ret = psnd_dtq(ecn_api_mailboxid, (intptr_t)ws->cur_in_msg.ptr);
     140                                        if (ret != E_OK) {
     141                                                syslog(LOG_WARNING, "websocket_input() : psnd_dtq(%d) result = %d", ecn_api_mailboxid, ret);
     142                                                _ecn_fbs_del(ws->cur_in_msg);
     143                                        }
    140144                                }
    141145                                memset(&ws->cur_in_msg, 0, sizeof(ws->cur_in_msg));
  • uKadecot/trunk/uip/target/if_rx62n/if_rx62n.c

    r108 r148  
    378378 */
    379379
    380 void
     380bool_t
    381381rx62n_start (T_IF_SOFTC *ic, void *output, int size)
    382382{
     
    391391
    392392                if (desc->tact != 0) {
    393                         break;
     393                        return false;
    394394                }
    395395
     
    423423                sil_wrw_mem(EDMAC_EDTRR, EDMAC_EDTRR_TR);
    424424        }
     425
     426        return true;
    425427}
    426428
     
    435437        T_RX62N_SOFTC *sc;
    436438        uint32_t ecsr, eesr, psr;
    437         bool_t acttsk;
     439        bool_t acttsk = false;
    438440
    439441        i_begin_int(INTNO_IF_RX62N_TRX);
  • uKadecot/trunk/uip/target/if_rx62n/if_rx62n.h

    r108 r148  
    6060 */
    6161
    62 #define NUM_IF_RX62N_TXBUF              8       /* 送信バッファ数                      */
     62#define NUM_IF_RX62N_TXBUF              2       /* 送信バッファ数                      */
    6363#define NUM_IF_RX62N_RXBUF              8       /* 受信バッファ数                      */
    6464#define IF_RX62N_BUF_PAGE_SIZE  1518    /* バッファサイズ */
     
    120120extern bool_t rx62n_link(T_IF_SOFTC *ic);
    121121extern int rx62n_read(T_IF_SOFTC *ic, void **input);
    122 extern void rx62n_start(T_IF_SOFTC *ic, void *output, int size);
     122extern bool_t rx62n_start(T_IF_SOFTC *ic, void *output, int size);
    123123extern ER rx62n_addmulti(T_IF_SOFTC *ic);
    124124extern void if_rx62n_trx_handler(void);
  • uKadecot/trunk/uip/task/uip_task.c

    r125 r148  
    9898        T_IF_SOFTC      *ic = IF_ETHER_NIC_GET_SOFTC();
    9999        int ret;
     100        bool_t tx;
    100101
    101102        PT_BEGIN(&uiptsk->pt);
     
    124125
    125126                PT_WAIT_UNTIL(&uiptsk->pt, (ret = ic->link_pre != ic->link_now ? 1 :
    126                         (ic->rxb_read != ic->rxb_write ? 2 :
    127127                        (uip_out_buf[uip_out_rpos].len > 0 ? 3 :
    128128                        (ws_out_req != ws_out_res ? 4 :
    129                         (timer_expired(&uiptsk->periodic_timer) ? 5 : 0))))) != 0);
     129                        (timer_expired(&uiptsk->periodic_timer) ? 5 :
     130                        (ic->rxb_read != ic->rxb_write ? 2 : 0))))) != 0);
    130131
    131132                if(ret == 1){
     
    146147                                                if (uip_len > 0) {
    147148                                                        uip_arp_out();
    148                                                         IF_ETHER_NIC_START(ic, uip_buf, uip_len);
     149                                                        for (;;) {
     150                                                                tx = IF_ETHER_NIC_START(ic, uip_buf, uip_len);
     151                                                                if (tx)
     152                                                                        break;
     153                                                                PT_YIELD(&uiptsk->pt);
     154                                                        }
    149155                                                }
    150156                                        }
     
    174180                                        if (uip_len > 0) {
    175181                                                uip_arp_out();
    176                                                 IF_ETHER_NIC_START(ic, uip_buf, uip_len);
     182                                                for (;;) {
     183                                                        tx = IF_ETHER_NIC_START(ic, uip_buf, uip_len);
     184                                                        if (tx)
     185                                                                break;
     186                                                        PT_YIELD(&uiptsk->pt);
     187                                                }
    177188                                                PT_YIELD(&uiptsk->pt);
    178189                                                continue;
     
    185196                                           uip_len is set to a value > 0. */
    186197                                        if (uip_len > 0) {
    187                                                 IF_ETHER_NIC_START(ic, uip_buf, uip_len);
     198                                                for (;;) {
     199                                                        tx = IF_ETHER_NIC_START(ic, uip_buf, uip_len);
     200                                                        if (tx)
     201                                                                break;
     202                                                        PT_YIELD(&uiptsk->pt);
     203                                                }
    188204                                                PT_YIELD(&uiptsk->pt);
    189205                                                continue;
     
    204220                        uip_udp_send(buf->len);
    205221
    206                         buf->len = 0;
    207                         uip_out_rpos++;
    208                         if (uip_out_rpos >= UIP_BUF_COUNT)
    209                                 uip_out_rpos = 0;
    210 
    211222                        uip_udp_conn = cepid;
    212223                        uip_process(UIP_UDP_SEND_CONN);
     
    214225                        cepid->rport = 0;
    215226                        uip_arp_out();
    216                         IF_ETHER_NIC_START(ic, uip_buf, uip_len);
     227                        for (;;) {
     228                                tx = IF_ETHER_NIC_START(ic, uip_buf, uip_len);
     229                                if (tx)
     230                                        break;
     231                                PT_YIELD(&uiptsk->pt);
     232                        }
     233
     234                        buf = &uip_out_buf[uip_out_rpos];
     235                        uip_out_rpos++;
     236                        if (uip_out_rpos >= UIP_BUF_COUNT)
     237                                uip_out_rpos = 0;
     238                        buf->len = 0;
     239
    217240                        PT_YIELD(&uiptsk->pt);
    218241                        continue;
     
    231254                                if (uip_len > 0) {
    232255                                        uip_arp_out();
    233                                         IF_ETHER_NIC_START(ic, uip_buf, uip_len);
     256                                        for (;;) {
     257                                                tx = IF_ETHER_NIC_START(ic, uip_buf, uip_len);
     258                                                if (tx)
     259                                                        break;
     260                                                PT_YIELD(&uiptsk->pt);
     261                                        }
    234262                                        PT_YIELD(&uiptsk->pt);
    235263                                }
     
    247275                                if (uip_len > 0) {
    248276                                        uip_arp_out();
    249                                         IF_ETHER_NIC_START(ic, uip_buf, uip_len);
     277                                        for (;;) {
     278                                                tx = IF_ETHER_NIC_START(ic, uip_buf, uip_len);
     279                                                if (tx)
     280                                                        break;
     281                                                PT_YIELD(&uiptsk->pt);
     282                                        }
    250283                                        PT_YIELD(&uiptsk->pt);
    251284                                }
     
    261294                                if (uip_len > 0) {
    262295                                        uip_arp_out();
    263                                         IF_ETHER_NIC_START(ic, uip_buf, uip_len);
     296                                        for (;;) {
     297                                                tx = IF_ETHER_NIC_START(ic, uip_buf, uip_len);
     298                                                if (tx)
     299                                                        break;
     300                                                PT_YIELD(&uiptsk->pt);
     301                                        }
    264302                                        PT_YIELD(&uiptsk->pt);
    265303                                }
Note: See TracChangeset for help on using the changeset viewer.