Changeset 152 for uKadecot/trunk/src/ukadecot/main.c
- Timestamp:
- Jan 14, 2016, 1:17:21 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uKadecot/trunk/src/ukadecot/main.c
r148 r152 1 1 /* 2 2 * TOPPERS ECHONET Lite Communication Middleware 3 * 3 * 4 4 * Copyright (C) 2014 Cores Co., Ltd. Japan 5 * 5 * 6 6 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 7 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 … … 26 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 27 * 免責すること. 28 * 28 * 29 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 … … 32 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 33 * の責任を負わない. 34 * 34 * 35 35 * @(#) $Id$ 36 36 */ 37 37 38 /* 38 /* 39 39 * サンプルプログラム(1)の本体 40 40 */ … … 64 64 #include "data_flash.h" 65 65 66 uint8_t mac_addr[6] = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xB8};66 uint8_t mac_addr[6] = {0x12, 0x34, 0x56, 0x78, 0x9A, 0xB8}; 67 67 bool_t dhcp_enable = true; 68 68 … … 97 97 { 98 98 /* サイズが1以外は受け付けない */ 99 if (size != 1)99 if (size != 1) 100 100 return 0; 101 101 102 102 *anno = *((uint8_t*)item->exinf) != *((uint8_t*)src); 103 103 104 switch (*(uint8_t *)src){104 switch (*(uint8_t *)src) { 105 105 /* ONの場合 */ 106 106 case 0x30: … … 129 129 { 130 130 /* サイズが2以外は受け付けない */ 131 if (size != 2)131 if (size != 2) 132 132 return 0; 133 133 134 if ((*(uint16_t *)src >= 0x0) && (*(uint16_t *)src <= 0x3ec)){134 if ((*(uint16_t *)src >= 0x0) && (*(uint16_t *)src <= 0x3ec)) { 135 135 *((uint16_t *)item->exinf) = *((uint16_t *)src); 136 136 /* TODO: このの場合の処理*/ 137 137 } 138 138 /* 上記以外は受け付けない */ 139 else {139 else { 140 140 return 0; 141 141 } … … 150 150 { 151 151 /* サイズが1以外は受け付けない */ 152 if (size != 1)152 if (size != 1) 153 153 return 0; 154 154 155 155 *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src); 156 156 157 switch (*(uint8_t *)src){157 switch (*(uint8_t *)src) { 158 158 /* 異常発生ありの場合 */ 159 159 case 0x41: … … 177 177 uint8_t *p_src; 178 178 179 if (size != 2)179 if (size != 2) 180 180 return 0; 181 181 … … 196 196 uint8_t *p_dst; 197 197 198 if (size != 2)198 if (size != 2) 199 199 return 0; 200 200 … … 214 214 uint8_t *p_src; 215 215 216 if (size != 4)216 if (size != 4) 217 217 return 0; 218 218 … … 234 234 uint8_t *p_dst; 235 235 236 if (size != 4)236 if (size != 4) 237 237 return 0; 238 238 … … 305 305 306 306 ret2 = get_tim(&now); 307 if (ret2 != E_OK) {307 if (ret2 != E_OK) { 308 308 syslog(LOG_ERROR, "get_tim"); 309 309 PT_EXIT(&main_pt); 310 310 } 311 311 312 for (;;){312 for (;;) { 313 313 prev = now; 314 314 … … 320 320 PT_WAIT_UNTIL(&main_pt, (((ret = ecn_prcv_esv(&esv)) == E_OK) || (ret == E_BRK) 321 321 || ((ret = timer_expired(&main_pt_timer) ? E_TMOUT : E_WBLK) == E_TMOUT))); 322 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {322 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) { 323 323 syslog(LOG_ERROR, "ecn_trcv_esv"); 324 324 PT_EXIT(&main_pt); … … 326 326 327 327 ret2 = get_tim(&now); 328 if (ret2 != E_OK) {328 if (ret2 != E_OK) { 329 329 syslog(LOG_ERROR, "get_tim"); 330 330 PT_EXIT(&main_pt); … … 341 341 /* 領域解放 */ 342 342 ret = ecn_rel_esv(esv); 343 if (ret != E_OK) {343 if (ret != E_OK) { 344 344 syslog(LOG_ERROR, "ECNL ecn_rel_esv result = %d", ret); 345 345 PT_EXIT(&main_pt); … … 348 348 /* 応答電文待ちの割り込みの場合 */ 349 349 else if (ret == E_BRK) { 350 ECN_FBS_ID msg = { (T_ECN_FST_BLK *)esv};350 ECN_FBS_ID msg = {(T_ECN_FST_BLK *)esv}; 351 351 bool_t rel_msg = true; 352 352 switch (msg.ptr->hdr.type) { 353 case 0: 353 case 0: 354 354 rel_msg = main_wbs_msg(msg); 355 355 break; … … 360 360 /* 応答電文待ちの割り込みデータ取得 */ 361 361 ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len); 362 if (ret != E_OK) {362 if (ret != E_OK) { 363 363 syslog(LOG_ERROR, "ecn_get_brk_dat"); 364 364 PT_EXIT(&main_pt); … … 373 373 if (rel_msg) { 374 374 ret = ecn_rel_esv(esv); 375 if (ret != E_OK) {375 if (ret != E_OK) { 376 376 syslog(LOG_ERROR, "BRK ecn_rel_esv msg = %p, type = %d, result = %d", esv, msg.ptr->hdr.type, ret); 377 377 PT_EXIT(&main_pt); … … 384 384 385 385 /* キューに溜まったメッセージを処理 */ 386 while (main_wbs_que_msg());386 while (main_wbs_que_msg()); 387 387 } 388 388 … … 400 400 } 401 401 402 bool_t main_btn1_state; 403 int main_btn1_count = 0; 404 bool_t main_btn2_state; 405 int main_btn2_count = 0; 402 typedef struct gpio_state { 403 bool_t state; 404 int count; 405 } gpio_state_t; 406 407 gpio_state_t main_gpio[2/*btn1, btn2*/ + 14/*arduino pin*/]; 408 409 #define MAIN_GPIO_BTN1 0 410 #define MAIN_GPIO_BTN2 1 411 #define MAIN_GPIO_ARDUINO_PIN0 2 412 #define MAIN_GPIO_COUNT (sizeof(main_gpio) / sizeof(main_gpio[0])) 413 414 typedef struct analog_state { 415 int subscriptionId; 416 int pinno; 417 bool_t state; 418 int count; 419 uint16_t threshold; 420 } analog_state_t; 421 422 analog_state_t main_analog[16]; 423 424 #define MAIN_ANALOG_COUNT (sizeof(main_analog) / sizeof(main_analog[0])) 425 426 int main_gpio_pubid; 406 427 407 428 enum request_info_state_t { … … 430 451 wamp_state_t wamp; 431 452 453 #define MAIN_REQUEST_INFOS_COUNT (sizeof(request_infos) / sizeof(request_infos[0])) 454 432 455 /* 433 456 * 初期化 … … 448 471 449 472 ret = data_flash_init(); 450 while (ret == E_OK){473 while (ret == E_OK) { 451 474 ret = data_flash_read(0, data); 452 if (ret != E_OK){475 if (ret != E_OK) { 453 476 break; 454 477 } … … 463 486 } 464 487 465 for (i = 0, j = 0; i < sizeof(mac_addr); i++){488 for (i = 0, j = 0; i < sizeof(mac_addr); i++) { 466 489 c = mac_addr[i] >> 4; 467 490 data[j++] = (c < 10) ? ('0' + c) : ('A' - 10 + c); … … 489 512 btn1 = sil_reb_mem((uint8_t *)0x0008C04A); 490 513 /*btn1 = sil_reb_mem((uint8_t *)0x0008C040);*/ 491 btn2 = sil_reb_mem((uint8_t *) 0x0008C040); 492 main_btn1_state = (btn1 & 0x80/*0x0x20*/) != 0; 493 main_btn2_state = (btn2 & 0x80) != 0; 494 495 for (i = 0; i< sizeof(request_infos) / sizeof(request_infos[0]); i++) { 514 btn2 = sil_reb_mem((uint8_t *)0x0008C040); 515 main_gpio[MAIN_GPIO_BTN1].state = (btn1 & 0x80/*0x0x20*/) != 0; 516 main_gpio[MAIN_GPIO_BTN2].state = (btn2 & 0x80) != 0; 517 for (i = MAIN_GPIO_ARDUINO_PIN0; i < MAIN_GPIO_COUNT; i++) { 518 arduino_digital_value_t dval; 519 arduino_digitalRead(i - MAIN_GPIO_ARDUINO_PIN0, &dval); 520 main_gpio[i].state = dval == ARDUINO_DIGITAL_VALUE_HIGH; 521 } 522 523 for (i = 0; i < MAIN_ANALOG_COUNT; i++) { 524 main_analog[i].state = true; /* たぶんプルアップされている */ 525 } 526 527 for (i = 0; i < MAIN_REQUEST_INFOS_COUNT; i++) { 496 528 request_infos[i].timer = TMO_FEVR; 497 529 } … … 506 538 TMO timer = main_timer, temp; 507 539 508 for (i = 0; i < sizeof(request_infos) / sizeof(request_infos[0]); i++) {540 for (i = 0; i < sizeof(request_infos) / sizeof(request_infos[0]); i++) { 509 541 temp = request_infos[i].timer; 510 542 if (temp != TMO_FEVR) { … … 528 560 if (main_timer != TMO_FEVR) { 529 561 main_timer -= interval; 530 if (main_timer < 0){562 if (main_timer < 0) { 531 563 main_timer = 0; 532 564 } 533 565 } 534 566 535 for (i = 0; i < sizeof(request_infos) / sizeof(request_infos[0]); i++) {567 for (i = 0; i < sizeof(request_infos) / sizeof(request_infos[0]); i++) { 536 568 temp = request_infos[i].timer; 537 569 if (temp != TMO_FEVR) { 538 570 temp -= interval; 539 if (temp < 0){571 if (temp < 0) { 540 572 temp = 0; 541 573 } … … 554 586 request_info_t *request_info = &request_infos[0]; 555 587 556 switch (esv->hdr.edata.esv){588 switch (esv->hdr.edata.esv) { 557 589 case ESV_SET_RES: 558 590 case ESV_SET_C_SNA: … … 562 594 } 563 595 564 switch (request_info->state){596 switch (request_info->state) { 565 597 case request_info_state_kadecot_set: 566 598 main_kadecot_set_res(esv); … … 578 610 } 579 611 580 switch (request_info->state){612 switch (request_info->state) { 581 613 case request_info_state_kadecot_get: 582 614 main_kadecot_get_res(esv); … … 594 626 } 595 627 596 switch (request_info->state){628 switch (request_info->state) { 597 629 case request_info_state_ecnl_setget: 598 630 main_ecnl_setget_res(esv); … … 621 653 return false; 622 654 } 623 655 624 656 wamp_put_msg(&wamp, msg, ((ID *)msg.ptr->_gap)[0]); 625 657 return true; … … 660 692 } 661 693 662 switch (cmd){694 switch (cmd) { 663 695 case ECN_INM_GET_DEVICE_LIST_RES: 664 696 main_get_device_list_res(msg); … … 678 710 static void main_break_wait(uint8_t *brkdat, int32_t len) 679 711 { 680 switch (main_state){712 switch (main_state) { 681 713 case main_state_start: 682 714 main_start_service(); … … 700 732 data[0] = 0x01; 701 733 ret = ecn_brk_wai(data, sizeof(data)); 702 if (ret != E_OK){734 if (ret != E_OK) { 703 735 syslog(LOG_ERROR, "ecn_brk_wai"); 704 736 } … … 720 752 /* ECHONETミドルウェアを起動 */ 721 753 ret = ecn_sta_svc(); 722 if (ret != E_OK)754 if (ret != E_OK) 723 755 return; 724 756 } … … 739 771 } 740 772 741 for (i = 0; i < sizeof(request_infos) / sizeof(request_infos[0]); i++) {773 for (i = 0; i < sizeof(request_infos) / sizeof(request_infos[0]); i++) { 742 774 temp = request_infos[i].timer; 743 775 if (temp != 0) … … 750 782 static void main_btn1_change(bool_t push); 751 783 static void main_btn2_change(bool_t push); 784 static void main_gpio_change(int pinno, uint16_t high); 752 785 static ER main_search_device(); 753 786 754 787 static void main_btn_timeout() 755 788 { 756 uint8_t btn1, btn2; 757 758 if(main_timer != 0) 759 return; 760 761 switch(main_state){ 789 gpio_state_t *gpio; 790 analog_state_t *analog; 791 arduino_digital_value_t dval; 792 int aval; 793 bool_t val; 794 int i; 795 796 if (main_timer != 0) 797 return; 798 799 switch (main_state) { 762 800 case main_state_idle: 763 801 /* 10ms後にボタン状態を確認 */ … … 766 804 arduino_tick(); 767 805 768 /* ボタン状態読み込み */ 769 btn1 = sil_reb_mem((uint8_t *)0x0008C04A); 770 /*btn1 = sil_reb_mem((uint8_t *)0x0008C040);*/ 771 btn2 = sil_reb_mem((uint8_t *) 0x0008C040); 772 773 /* ボタン1の処理 */ 774 if(((btn1 & 0x80/*0x20*/) != 0) && !main_btn1_state){ 775 main_btn1_count++; 776 if(main_btn1_count > 10){ 777 main_btn1_count = 0; 778 main_btn1_state = true; 779 780 main_btn1_change(true); 806 for (i = 0; i < MAIN_GPIO_COUNT; i++) { 807 gpio = &main_gpio[i]; 808 809 /* GPIO状態読み込み */ 810 switch (i) { 811 case MAIN_GPIO_BTN1: 812 val = (sil_reb_mem((uint8_t *)0x0008C04A) & 0x80) != 0; 813 /*val = (sil_reb_mem((uint8_t *)0x0008C040) & 0x20) != 0;*/ 814 break; 815 case MAIN_GPIO_BTN2: 816 val = (sil_reb_mem((uint8_t *)0x0008C040) & 0x80) != 0; 817 break; 818 default: 819 arduino_digitalRead(i - MAIN_GPIO_ARDUINO_PIN0, &dval); 820 val = dval == ARDUINO_DIGITAL_VALUE_HIGH; 821 break; 781 822 } 782 } 783 else if(((btn1 & 0x80/*0x20*/) == 0) && main_btn1_state){ 784 main_btn1_count++; 785 if(main_btn1_count > 10){ 786 main_btn1_count = 0; 787 main_btn1_state = false; 788 789 main_btn1_change(false); 823 824 if (val && !gpio->state) { 825 gpio->count++; 826 if (gpio->count > 10) { 827 gpio->count = 0; 828 gpio->state = true; 829 830 switch (i) { 831 case MAIN_GPIO_BTN1: 832 main_btn1_change(true); 833 break; 834 case MAIN_GPIO_BTN2: 835 main_btn2_change(true); 836 break; 837 default: 838 main_gpio_change(i - MAIN_GPIO_ARDUINO_PIN0, 1); 839 break; 840 } 841 } 790 842 } 791 } 792 else{ 793 main_btn1_count = 0; 794 } 795 796 /* ボタン2の処理 */ 797 if(((btn2 & 0x80) != 0) && !main_btn2_state){ 798 main_btn2_count++; 799 if(main_btn2_count > 10){ 800 main_btn2_count = 0; 801 main_btn2_state = true; 802 803 main_btn2_change(true); 843 else if (!val && gpio->state) { 844 gpio->count++; 845 if (gpio->count > 10) { 846 gpio->count = 0; 847 gpio->state = false; 848 849 switch (i) { 850 case MAIN_GPIO_BTN1: 851 main_btn1_change(false); 852 break; 853 case MAIN_GPIO_BTN2: 854 main_btn2_change(false); 855 break; 856 default: 857 main_gpio_change(i - MAIN_GPIO_ARDUINO_PIN0, 0); 858 break; 859 } 860 } 804 861 } 805 } 806 else if(((btn2 & 0x80) == 0) && main_btn2_state){ 807 main_btn2_count++; 808 if(main_btn2_count > 10){ 809 main_btn2_count = 0; 810 main_btn2_state = false; 811 812 main_btn2_change(false); 862 else { 863 gpio->count = 0; 813 864 } 814 865 } 815 else{ 816 main_btn2_count = 0; 817 } 818 break; 819 } 866 867 for (i = 0; i < MAIN_ANALOG_COUNT; i++) { 868 analog = &main_analog[i]; 869 870 if (analog->subscriptionId == 0) 871 continue; 872 873 /* GPIO状態読み込み */ 874 arduino_analogRead(analog->pinno, &aval); 875 876 if (analog->state) 877 val = aval < analog->threshold; 878 else 879 val = aval > analog->threshold; 880 881 if (val && !analog->state) { 882 analog->count++; 883 if (analog->count > 10) { 884 analog->count = 0; 885 analog->state = true; 886 887 main_gpio_change(analog->pinno, aval); 888 } 889 } 890 else if (val && analog->state) { 891 analog->count++; 892 if (analog->count > 10) { 893 analog->count = 0; 894 analog->state = false; 895 896 main_gpio_change(analog->pinno, aval); 897 } 898 } 899 else { 900 analog->count = 0; 901 } 902 } 903 break; 904 } 905 } 906 907 ER main_add_threshold(int subscriptionId, int pinno, uint16_t threshold) 908 { 909 int i, aval; 910 analog_state_t *analog; 911 912 if ((pinno < 14) || (pinno > 19)) 913 return E_PAR; 914 915 for (i = 0; i < MAIN_ANALOG_COUNT; i++) { 916 analog = &main_analog[i]; 917 if (analog->subscriptionId != 0) 918 continue; 919 920 analog->subscriptionId = subscriptionId; 921 analog->pinno = pinno; 922 analog->threshold = threshold; 923 924 arduino_analogRead(analog->pinno, &aval); 925 926 analog->state = (aval < analog->threshold); 927 analog->count = 0; 928 929 return E_OK; 930 } 931 932 return E_NOMEM; 933 } 934 935 ER main_del_threshold(int subscriptionId) 936 { 937 int i; 938 analog_state_t *analog; 939 940 for (i = 0; i < MAIN_ANALOG_COUNT; i++) { 941 analog = &main_analog[i]; 942 if (analog->subscriptionId != subscriptionId) 943 continue; 944 945 analog->subscriptionId = 0; 946 947 return E_OK; 948 } 949 950 return E_OBJ; 820 951 } 821 952 … … 829 960 830 961 ret = ecn_itr_ini(&enm, esv); 831 if (ret != E_OK){962 if (ret != E_OK) { 832 963 syslog(LOG_ERROR, "ecn_itr_ini"); 833 964 return; 834 965 } 835 966 836 for (;;) {837 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {967 for (;;) { 968 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) { 838 969 switch (epc) { 839 970 case 0x80: … … 843 974 } 844 975 } 845 if (ret != E_BOVR){976 if (ret != E_BOVR) { 846 977 syslog(LOG_ERROR, "ecn_itr_nxt"); 847 978 break; 848 979 } 849 if (enm.is_eof)980 if (enm.is_eof) 850 981 break; 851 982 } … … 858 989 { 859 990 /* 押されて戻った時に処理する */ 860 if (push)991 if (push) 861 992 return; 862 993 … … 873 1004 874 1005 /* 1006 * GPIO状態変化処理 1007 */ 1008 static void main_gpio_change(int pinno, uint16_t value) 1009 { 1010 main_gpio_pubid++; 1011 1012 wamp_broker_publish_pin(&wamp.broker, main_gpio_pubid, 1, pinno, value); 1013 } 1014 1015 /* 875 1016 * 機器の検索 876 1017 */ … … 882 1023 /* 機器の検索 */ 883 1024 ret = ecn_esv_inf_req(&esv, EOBJ_NULL, 0xD6); 884 if (ret != E_OK){1025 if (ret != E_OK) { 885 1026 syslog(LOG_ERROR, "ecn_esv_inf_req"); 886 1027 return ret; … … 889 1030 /* 電文送信 */ 890 1031 ret = ecn_snd_esv(esv); 891 if (ret != E_OK){1032 if (ret != E_OK) { 892 1033 syslog(LOG_ERROR, "ecn_snd_esv"); 893 1034 return ret; … … 906 1047 907 1048 ret = psnd_dtq(WEBSOCKET_MBXID, (intptr_t)msg.ptr); 908 if (ret != E_OK){1049 if (ret != E_OK) { 909 1050 syslog(LOG_ERROR, "psnd_dtq(WEBSOCKET_MBXID) : result=%d", ret); 910 1051 _ecn_fbs_del(msg); … … 923 1064 ER ret; 924 1065 925 if (request_info->requestId != 0)1066 if (request_info->requestId != 0) 926 1067 return E_QOVR; 927 1068 928 1069 /* 機器の検索 */ 929 1070 ret = main_search_device(); 930 if (ret != E_OK){1071 if (ret != E_OK) { 931 1072 return ret; 932 1073 } … … 948 1089 for (;;) { 949 1090 ret = ecn_agent_get_device_list(ECHONET_API_MAILBOX, request_info->requestId, &req); 950 if (ret != E_OK){1091 if (ret != E_OK) { 951 1092 syslog(LOG_ERROR, "ecn_agent_get_device_list"); 952 1093 break; … … 1005 1146 ECN_FBS_ID req; 1006 1147 1007 if (request_info->requestId != 0)1148 if (request_info->requestId != 0) 1008 1149 return E_QOVR; 1009 1150 1010 1151 ret = ecn_udp_get_ipaddr(ECHONET_API_MAILBOX, requestId, addrid, &req); 1011 if (ret != E_OK){1152 if (ret != E_OK) { 1012 1153 return ret; 1013 1154 } … … 1063 1204 ECN_FBS_ID req; 1064 1205 1065 if (request_info->requestId != 0)1206 if (request_info->requestId != 0) 1066 1207 return E_QOVR; 1067 1208 1068 1209 ret = ecn_agent_get_device_info(ECHONET_API_MAILBOX, requestId, eobjid, &req); 1069 if (ret != E_OK){1210 if (ret != E_OK) { 1070 1211 return ret; 1071 1212 } … … 1118 1259 T_EDATA *esv; 1119 1260 1120 if (request_info->requestId != 0)1261 if (request_info->requestId != 0) 1121 1262 return E_QOVR; 1122 1263 1123 1264 /* プロパティ取得電文作成 */ 1124 1265 ret = ecn_esv_get(&esv, eobjid, epc); 1125 if (ret != E_OK){1266 if (ret != E_OK) { 1126 1267 syslog(LOG_ERROR, "ecn_esv_get"); 1127 1268 return ret; … … 1130 1271 /* 電文送信 */ 1131 1272 ret = ecn_snd_esv(esv); 1132 if (ret != E_OK){1273 if (ret != E_OK) { 1133 1274 syslog(LOG_ERROR, "ecn_snd_esv"); 1134 1275 return ret; … … 1156 1297 T_ENUM_EPC enm; 1157 1298 1158 if (request_info->eobjid != eobjid)1299 if (request_info->eobjid != eobjid) 1159 1300 return; 1160 1301 … … 1166 1307 1167 1308 ret = ecn_itr_ini(&enm, esv); 1168 if (ret != E_OK){1309 if (ret != E_OK) { 1169 1310 syslog(LOG_ERROR, "ecn_itr_ini"); 1170 1311 return; 1171 1312 } 1172 1313 1173 for (;;) {1174 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {1314 for (;;) { 1315 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) { 1175 1316 if (request_info->epc == epc) { 1176 1317 wamp_dealer_kadecot_get(dealer, eobjid, epc, pdc, p_edt); 1177 1318 } 1178 1319 } 1179 if (ret != E_BOVR){1320 if (ret != E_BOVR) { 1180 1321 syslog(LOG_ERROR, "ecn_itr_nxt"); 1181 1322 break; 1182 1323 } 1183 if (enm.is_eof)1324 if (enm.is_eof) 1184 1325 break; 1185 1326 } … … 1193 1334 T_EDATA *esv; 1194 1335 1195 if (request_info->requestId != 0)1336 if (request_info->requestId != 0) 1196 1337 return E_QOVR; 1197 1338 1198 1339 /* プロパティ取得電文作成 */ 1199 1340 ret = ecn_esv_setc(&esv, eobjid, epc, pdc, edt); 1200 if (ret != E_OK){1341 if (ret != E_OK) { 1201 1342 syslog(LOG_ERROR, "ecn_esv_setc"); 1202 1343 return ret; … … 1205 1346 /* 電文送信 */ 1206 1347 ret = ecn_snd_esv(esv); 1207 if (ret != E_OK){1348 if (ret != E_OK) { 1208 1349 syslog(LOG_ERROR, "ecn_snd_esv"); 1209 1350 return ret; … … 1234 1375 return; 1235 1376 1236 if (request_info->eobjid != eobjid)1377 if (request_info->eobjid != eobjid) 1237 1378 return; 1238 1379 … … 1243 1384 1244 1385 ret = ecn_itr_ini(&enm, esv); 1245 if (ret != E_OK){1386 if (ret != E_OK) { 1246 1387 syslog(LOG_ERROR, "ecn_itr_ini"); 1247 1388 return; 1248 1389 } 1249 1390 1250 for (;;) {1251 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {1391 for (;;) { 1392 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) { 1252 1393 if (request_info->epc == epc) { 1253 1394 wamp_dealer_kadecot_set(dealer, eobjid, epc); 1254 1395 } 1255 1396 } 1256 if (ret != E_BOVR){1397 if (ret != E_BOVR) { 1257 1398 syslog(LOG_ERROR, "ecn_itr_nxt"); 1258 1399 break; 1259 1400 } 1260 if (enm.is_eof)1401 if (enm.is_eof) 1261 1402 break; 1262 1403 } … … 1268 1409 ER ret; 1269 1410 1270 if (request_info->requestId != 0)1411 if (request_info->requestId != 0) 1271 1412 return E_QOVR; 1272 1413 1273 1414 /* 電文送信 */ 1274 1415 ret = ecn_snd_esv(esv); 1275 if (ret != E_OK){1416 if (ret != E_OK) { 1276 1417 syslog(LOG_ERROR, "ecn_snd_esv"); 1277 1418 return ret; … … 1304 1445 ER ret; 1305 1446 1306 if (request_info->requestId != 0)1447 if (request_info->requestId != 0) 1307 1448 return E_QOVR; 1308 1449 1309 1450 /* 電文送信 */ 1310 1451 ret = ecn_snd_esv(esv); 1311 if (ret != E_OK){1452 if (ret != E_OK) { 1312 1453 syslog(LOG_ERROR, "ecn_snd_esv"); 1313 1454 return ret; … … 1340 1481 ER ret; 1341 1482 1342 if (request_info->requestId != 0)1483 if (request_info->requestId != 0) 1343 1484 return E_QOVR; 1344 1485 1345 1486 /* 電文送信 */ 1346 1487 ret = ecn_snd_esv(esv); 1347 if (ret != E_OK){1488 if (ret != E_OK) { 1348 1489 syslog(LOG_ERROR, "ecn_snd_esv"); 1349 1490 return ret; … … 1375 1516 struct wamp_dealer *dealer = request_info->dealer; 1376 1517 1377 switch (request_info->state) {1518 switch (request_info->state) { 1378 1519 case request_info_state_search_device: 1379 1520 main_search_device_timeout(); … … 1422 1563 1423 1564 ret = ecn_itr_ini(&enm, esv); 1424 if (ret != E_OK){1565 if (ret != E_OK) { 1425 1566 syslog(LOG_ERROR, "ecn_itr_ini"); 1426 1567 return; 1427 1568 } 1428 1569 1429 for (;;) {1430 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {1570 for (;;) { 1571 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) { 1431 1572 wamp_broker_publish_inf(&wamp.broker, esv->hdr.ecn_hdr.tid, eobjid, 1432 1573 devType, epc, pdc, p_edt); 1433 1574 } 1434 if (ret != E_BOVR){1575 if (ret != E_BOVR) { 1435 1576 syslog(LOG_ERROR, "ecn_itr_nxt"); 1436 1577 break; 1437 1578 } 1438 if (enm.is_eof)1439 break; 1440 } 1441 } 1579 if (enm.is_eof) 1580 break; 1581 } 1582 }
Note:
See TracChangeset
for help on using the changeset viewer.