- Timestamp:
- Feb 1, 2019, 9:57:09 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
asp3_tinet_ecnl_arm/trunk/app5_temp_sensor/src/echonet_main.c
r352 r364 1 1 /* 2 2 * TOPPERS ECHONET Lite Communication Middleware 3 * 3 * 4 4 * Copyright (C) 2014-2018 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 */ … … 55 55 #include "adafruit_st7735.h" 56 56 #include "draw_font.h" 57 #include <tinet_defs.h> 58 #include <tinet_config.h> 59 #include <netinet/in.h> 60 #include <netinet/in_var.h> 61 #include <net/ethernet.h> 62 #include <net/if_var.h> 63 64 extern uint8_t mac_addr[6]; 57 65 58 66 /* TODO: メーカーコードを設定 */ … … 111 119 112 120 /* サイズが1以外は受け付けない */ 113 if (size != 1)121 if (size != 1) 114 122 return 0; 115 123 116 124 *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src); 117 125 118 switch (*(uint8_t *)src){126 switch (*(uint8_t *)src) { 119 127 /* ONの場合 */ 120 128 case 0x30: … … 126 134 data[1] = *(uint8_t *)src; 127 135 ret = ecn_brk_wai(data, sizeof(data)); 128 if (ret != E_OK){136 if (ret != E_OK) { 129 137 syslog(LOG_ERROR, "ecn_brk_wai"); 130 138 return 1; … … 145 153 { 146 154 /* サイズが1以外は受け付けない */ 147 if (size != 1)155 if (size != 1) 148 156 return 0; 149 157 150 158 *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src); 151 159 152 switch (*(uint8_t *)src){160 switch (*(uint8_t *)src) { 153 161 /* 異常発生ありの場合 */ 154 162 case 0x41: … … 176 184 177 185 /* サイズが2以外は受け付けない */ 178 if (size != 2)186 if (size != 2) 179 187 return 0; 180 188 181 189 value = (((uint8_t *)src)[0] << 8) | (((uint8_t *)src)[1] & 0xFF); 182 190 183 if ((value >= -2732) && (value <= 32766)){191 if ((value >= -2732) && (value <= 32766)) { 184 192 eobj->propertyE0 = value; 185 193 /* メインタスクに通知 */ 186 194 data[0] = 0xE0; 187 195 ret = ecn_brk_wai(data, sizeof(data)); 188 if (ret != E_OK){196 if (ret != E_OK) { 189 197 syslog(LOG_ERROR, "ecn_brk_wai"); 190 198 return 2; … … 192 200 } 193 201 /* 上記以外は受け付けない */ 194 else {202 else { 195 203 return 0; 196 204 } … … 199 207 } 200 208 201 /* 209 /* 202 210 * 温度計測値取得関数 203 211 */ … … 208 216 209 217 /* サイズが2以外は受け付けない */ 210 if (size != 2)218 if (size != 2) 211 219 return 0; 212 220 … … 240 248 241 249 ret2 = get_tim(&now); 242 if (ret2 != E_OK) {250 if (ret2 != E_OK) { 243 251 syslog(LOG_ERROR, "get_tim"); 244 252 return; 245 253 } 246 254 247 for (;;){255 for (;;) { 248 256 prev = now; 249 257 … … 253 261 /* 応答電文待ち */ 254 262 ret = ecn_trcv_esv(&esv, timer); 255 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {263 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) { 256 264 syslog(LOG_ERROR, "ecn_trcv_esv"); 257 265 break; … … 259 267 260 268 ret2 = get_tim(&now); 261 if (ret2 != E_OK) {269 if (ret2 != E_OK) { 262 270 syslog(LOG_ERROR, "get_tim"); 263 271 break; … … 274 282 /* 領域解放 */ 275 283 ret = ecn_rel_esv(esv); 276 if (ret != E_OK) {284 if (ret != E_OK) { 277 285 syslog(LOG_ERROR, "ecn_rel_esv"); 278 286 break; … … 283 291 /* 応答電文待ちの割り込みデータ取得 */ 284 292 ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len); 285 if (ret != E_OK) {293 if (ret != E_OK) { 286 294 syslog(LOG_ERROR, "ecn_get_brk_dat"); 287 295 break; … … 293 301 /* 領域解放 */ 294 302 ret = ecn_rel_esv(esv); 295 if (ret != E_OK) {303 if (ret != E_OK) { 296 304 syslog(LOG_ERROR, "ecn_rel_esv"); 297 305 break; … … 304 312 } 305 313 306 bool_t started = false;307 308 314 void echonet_change_netif_link(uint8_t link_up, uint8_t up) 309 315 { … … 313 319 return; 314 320 315 if (up && !started) { 316 started = true; 317 318 /* ECHONETミドルウェアを起動 */ 319 ret = ecn_sta_svc(); 320 if (ret != E_OK) 321 return; 322 323 /* ECHONETミドルウェアを起動するのを待つ */ 324 dly_tsk(100); 321 if (up) { 322 /* インスタンスリスト通知の送信 */ 323 ret = ecn_ntf_inl(); 324 if (ret != E_OK) { 325 syslog(LOG_ERROR, "ecn_ntf_inl"); 326 } 325 327 } 326 328 … … 328 330 uint8_t data[2]; 329 331 data[0] = 0x01; 330 data[1] = up ? 0x01 : 0x02;332 data[1] = (up ? 0x01 : 0x02) | (link_up ? 0x10 : 0x20); 331 333 ret = ecn_brk_wai(data, sizeof(data)); 332 334 if (ret != E_OK) { … … 336 338 } 337 339 338 enum main_state_t{ 340 enum main_state_t { 341 main_state_start, 339 342 main_state_idle, 340 343 }; 341 344 342 345 int main_timer = TMO_FEVR; 343 enum main_state_t main_state = main_state_ idle;346 enum main_state_t main_state = main_state_start; 344 347 345 348 int main_lcd_timer = TMO_FEVR; … … 386 389 analogin_init(&joystick, P1_12); 387 390 388 /* 10ms後にボタン状態を確認 */ 389 main_timer = 10 * 1000; 391 /* ECHONETミドルウェアを起動するのを待つ */ 392 main_state = main_state_start; 393 main_timer = 1000 * 1000; 390 394 391 395 /* ボタン状態読み込み */ … … 397 401 spi_init(&lcd.hspi, P10_14, P10_15, P10_12, NC); 398 402 spi_format(&lcd.hspi, 8, 0, 0); 399 spi_frequency(&lcd.hspi, 1000000);403 spi_frequency(&lcd.hspi, 4000000); 400 404 401 405 gpio_init_out(&lcd.cs_pin, P10_13); … … 416 420 main_lcd_timer = 1000 * 1000; 417 421 422 /* メインタスクを起動 */ 418 423 ER ret = act_tsk(MAIN_TASK); 419 424 if (ret != E_OK) { … … 429 434 int result = main_timer; 430 435 431 if ((result == TMO_FEVR)432 || ((main_lcd_timer != TMO_FEVR) && (main_lcd_timer < result))) {436 if ((result == TMO_FEVR) 437 || ((main_lcd_timer != TMO_FEVR) && (main_lcd_timer < result))) { 433 438 result = main_lcd_timer; 434 439 } … … 442 447 static void main_progress(int interval) 443 448 { 444 if (main_timer != TMO_FEVR){449 if (main_timer != TMO_FEVR) { 445 450 main_timer -= interval; 446 if (main_timer < 0){451 if (main_timer < 0) { 447 452 main_timer = 0; 448 453 } 449 454 } 450 455 451 if (main_lcd_timer != TMO_FEVR){456 if (main_lcd_timer != TMO_FEVR) { 452 457 main_lcd_timer -= interval; 453 if (main_lcd_timer < 0){458 if (main_lcd_timer < 0) { 454 459 main_lcd_timer = 0; 455 460 } … … 472 477 473 478 ret = ecn_itr_ini(&enm, esv); 474 if (ret != E_OK){479 if (ret != E_OK) { 475 480 syslog(LOG_ERROR, "ecn_itr_ini"); 476 481 return; 477 482 } 478 483 479 for (;;) {480 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {484 for (;;) { 485 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) { 481 486 switch (epc) { 482 487 case 0xE0: 483 if (in_get && (esv->hdr.edata.esv == ESV_SET_GET_RES)){488 if (in_get && (esv->hdr.edata.esv == ESV_SET_GET_RES)) { 484 489 check_response(pdc, p_edt); 485 490 } … … 487 492 } 488 493 } 489 if (ret != E_BOVR){494 if (ret != E_BOVR) { 490 495 syslog(LOG_ERROR, "ecn_itr_nxt"); 491 496 break; 492 497 } 493 if (enm.is_eof)498 if (enm.is_eof) 494 499 break; 495 500 … … 504 509 static void main_break_wait(uint8_t *brkdat, int32_t len) 505 510 { 511 char mac_text[30] = "mac: "; 512 char ipaddr_text[30] = "ipadr: "; 513 const T_IN4_ADDR *ip4_addr; 514 int pos; 515 506 516 if (brkdat[0] == 0x01) { 507 // Link up/down 517 pos = str_macaddr(&mac_text[4], sizeof(mac_text) - 4, mac_addr, 0); 518 mac_text[pos + 4] = '\0'; 519 lcd_drawString(&lcd, mac_text, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 11), ST7735_BLACK, ST7735_WHITE); 520 521 ip4_addr = in4_get_ifaddr(0); 522 pos = str_ipv4addr(&ipaddr_text[6], sizeof(ipaddr_text) - 6, ip4_addr, 0); 523 ipaddr_text[pos + 6] = '\0'; 524 lcd_drawString(&lcd, ipaddr_text, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 12), ST7735_BLACK, ST7735_WHITE); 508 525 return; 509 526 } 510 527 511 528 if ((len == 2) && (brkdat[0] == 0x80)) { 512 switch (brkdat[1]){529 switch (brkdat[1]) { 513 530 /* ONの場合 */ 514 531 case 0x30: … … 533 550 static void main_timeout() 534 551 { 535 if (main_timer == 0){552 if (main_timer == 0) { 536 553 main_ontimer(); 537 554 } 538 555 539 if (main_lcd_timer == 0){556 if (main_lcd_timer == 0) { 540 557 main_lcd_ontimer(); 541 558 } … … 543 560 544 561 #define main_ad_count 3 562 #define main_ad_table_count 64 545 563 static int16_t main_ad_tempr[main_ad_count] = { 200, 200, 200 }; 546 static uint16_t main_ad_table[64]; 547 #define main_ad_table_count (sizeof(main_ad_table) / sizeof(main_ad_table[0])) 564 static uint16_t main_ad_table[main_ad_count][main_ad_table_count]; 548 565 static int main_ad_pos = 0; 549 566 static uint32_t main_ad_avelage[main_ad_count]; … … 556 573 static void main_ontimer() 557 574 { 575 ER ret; 558 576 uint8_t btn; 559 577 uint16_t ad_value; 560 578 int16_t ad_tempr; 561 579 562 switch(main_state){ 580 switch (main_state) { 581 case main_state_start: 582 /* ECHONETミドルウェアを起動 */ 583 ret = ecn_sta_svc(); 584 if (ret != E_OK) { 585 syslog(LOG_ERROR, "ecn_sta_svc"); 586 } 587 588 /* 10ms後にボタン状態を確認 */ 589 main_state = main_state_idle; 590 main_timer = 10 * 1000; 591 break; 563 592 case main_state_idle: 564 593 /* 10ms後にボタン状態を確認 */ … … 567 596 /* ADCの変換結果取得 */ 568 597 for (int i = 0; i < main_ad_count; i++) { 569 main_ad_avelage[i] -= main_ad_table[ main_ad_pos];598 main_ad_avelage[i] -= main_ad_table[i][main_ad_pos]; 570 599 ad_value = analogin_read_u16(&analogin[i]) >> 4; // 16bit値取得->12bit 571 main_ad_table[ main_ad_pos] = ad_value;600 main_ad_table[i][main_ad_pos] = ad_value; 572 601 main_ad_avelage[i] += ad_value; 573 602 } 574 603 575 604 main_ad_pos++; 576 if (main_ad_pos >= main_ad_table_count){605 if (main_ad_pos >= main_ad_table_count) { 577 606 main_ad_pos = 0; 578 607 } … … 586 615 } 587 616 else { 617 main_count[i] = 0; 588 618 main_ad_tempr[i] = ad_tempr; 589 619 … … 601 631 602 632 /* ボタン1の処理 */ 603 if ((btn == BUTTON_LEFT) && !main_btn1_state){633 if ((btn == BUTTON_LEFT) && !main_btn1_state) { 604 634 main_btn1_count++; 605 if (main_btn1_count > 10){635 if (main_btn1_count > 10) { 606 636 main_btn1_count = 0; 607 637 main_btn1_state = true; … … 610 640 } 611 641 } 612 else if ((btn != BUTTON_LEFT) && main_btn1_state){642 else if ((btn != BUTTON_LEFT) && main_btn1_state) { 613 643 main_btn1_count++; 614 if (main_btn1_count > 10){644 if (main_btn1_count > 10) { 615 645 main_btn1_count = 0; 616 646 main_btn1_state = false; … … 621 651 622 652 /* ボタン2の処理 */ 623 if ((btn == BUTTON_RIGHT) && !main_btn2_state){653 if ((btn == BUTTON_RIGHT) && !main_btn2_state) { 624 654 main_btn2_count++; 625 if (main_btn2_count > 10){655 if (main_btn2_count > 10) { 626 656 main_btn2_count = 0; 627 657 main_btn2_state = true; … … 630 660 } 631 661 } 632 else if ((btn != BUTTON_RIGHT) && main_btn2_state){662 else if ((btn != BUTTON_RIGHT) && main_btn2_state) { 633 663 main_btn2_count++; 634 if (main_btn2_count > 10){664 if (main_btn2_count > 10) { 635 665 main_btn2_count = 0; 636 666 main_btn2_state = false; … … 645 675 static void main_lcd_ontimer() 646 676 { 647 char temp1[] = "温度1:+00 .0℃";648 char temp2[] = "温度2:+00 .0℃";649 char humid[] = "湿度 :+00 .0%";677 char temp1[] = "温度1:+000.0℃"; 678 char temp2[] = "温度2:+000.0℃"; 679 char humid[] = "湿度 :+000.0%"; 650 680 char *btn_texts[] = { "none ", "down ", "left ", "select", "up ", "right " }; 651 681 int temp, btn; … … 653 683 switch (main_lcd_state) { 654 684 case 0: 655 temp1[ 9] = (temperature_sensor1_data.propertyE0 >= 0) ? ' ' : '-';685 temp1[10] = (temperature_sensor1_data.propertyE0 >= 0) ? ' ' : '-'; 656 686 temp = (temperature_sensor1_data.propertyE0 / 1000) % 10; 657 687 if (temp < 0) 658 688 temp = -temp; 659 temp1[1 0] = '0' + temp;689 temp1[11] = '0' + temp; 660 690 temp = (temperature_sensor1_data.propertyE0 / 100) % 10; 661 691 if (temp < 0) 662 692 temp = -temp; 663 temp1[1 1] = '0' + temp;693 temp1[12] = '0' + temp; 664 694 temp = (temperature_sensor1_data.propertyE0 / 10) % 10; 665 695 if (temp < 0) 666 696 temp = -temp; 667 697 temp1[13] = '0' + temp; 668 lcd_drawString(&lcd, &temp1[9], X_LINE_HALF_TO_PIX(&lcd, 8) + 10, Y_ROW_TO_PIX(&lcd, main_lcd_state + 4) + 10, ST7735_BLACK, ST7735_WHITE); 698 temp = (temperature_sensor1_data.propertyE0 / 1) % 10; 699 if (temp < 0) 700 temp = -temp; 701 temp1[15] = '0' + temp; 702 lcd_drawString(&lcd, &temp1[10], X_LINE_HALF_TO_PIX(&lcd, 7), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), ST7735_BLACK, ST7735_WHITE); 669 703 main_lcd_state++; 670 704 break; 671 705 case 1: 672 temp2[ 9] = (temperature_sensor2_data.propertyE0 >= 0) ? ' ' : '-';706 temp2[10] = (temperature_sensor2_data.propertyE0 >= 0) ? ' ' : '-'; 673 707 temp = (temperature_sensor2_data.propertyE0 / 1000) % 10; 674 708 if (temp < 0) 675 709 temp = -temp; 676 temp2[1 0] = '0' + temp;710 temp2[11] = '0' + temp; 677 711 temp = (temperature_sensor2_data.propertyE0 / 100) % 10; 678 712 if (temp < 0) 679 713 temp = -temp; 680 temp2[1 1] = '0' + temp;714 temp2[12] = '0' + temp; 681 715 temp = (temperature_sensor2_data.propertyE0 / 10) % 10; 682 716 if (temp < 0) 683 717 temp = -temp; 684 718 temp2[13] = '0' + temp; 685 lcd_drawString(&lcd, &temp2[9], X_LINE_HALF_TO_PIX(&lcd, 8) + 10, Y_ROW_TO_PIX(&lcd, main_lcd_state + 4) + 10, ST7735_BLACK, ST7735_WHITE); 719 temp = (temperature_sensor2_data.propertyE0 / 1) % 10; 720 if (temp < 0) 721 temp = -temp; 722 temp2[15] = '0' + temp; 723 lcd_drawString(&lcd, &temp2[10], X_LINE_HALF_TO_PIX(&lcd, 7), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), ST7735_BLACK, ST7735_WHITE); 686 724 main_lcd_state++; 687 725 break; 688 726 case 2: 689 humid[9] = ' '; 690 temp = (humidity_sensor_data.propertyE0 / 1000) % 10; 691 humid[10] = '0' + temp; 727 humid[10] = ' '; 728 humid[11] = ' '; 692 729 temp = (humidity_sensor_data.propertyE0 / 100) % 10; 693 humid[1 1] = '0' + temp;730 humid[12] = '0' + temp; 694 731 temp = (humidity_sensor_data.propertyE0 / 10) % 10; 695 732 humid[13] = '0' + temp; 696 lcd_drawString(&lcd, &humid[9], X_LINE_HALF_TO_PIX(&lcd, 8) + 10, Y_ROW_TO_PIX(&lcd, main_lcd_state + 4) + 10, ST7735_BLACK, ST7735_WHITE); 733 temp = (humidity_sensor_data.propertyE0 / 1) % 10; 734 humid[15] = '0' + temp; 735 lcd_drawString(&lcd, &humid[10], X_LINE_HALF_TO_PIX(&lcd, 7), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), ST7735_BLACK, ST7735_WHITE); 697 736 main_lcd_state++; 698 737 break; … … 704 743 case 6: 705 744 btn = main_read_button(&joystick); 706 lcd_drawString(&lcd, btn_texts[btn], X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 10) + 10, ST7735_BLACK, ST7735_WHITE);745 lcd_drawString(&lcd, btn_texts[btn], X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 9), ST7735_BLACK, ST7735_WHITE); 707 746 main_lcd_state++; 708 747 break; … … 711 750 break; 712 751 case 10: 713 lcd_drawString(&lcd, "温度湿度計", X_LINE_TO_PIX(&lcd, 9) + 10, Y_ROW_TO_PIX(&lcd, 0) + 10, ST7735_BLACK, ST7735_WHITE);714 lcd_drawString(&lcd, temp1, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 0 + 4) + 10, ST7735_BLACK, ST7735_WHITE);715 lcd_drawString(&lcd, temp2, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 1 + 4) + 10, ST7735_BLACK, ST7735_WHITE);716 lcd_drawString(&lcd, humid, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 2 + 4) + 10, ST7735_BLACK, ST7735_WHITE);752 lcd_drawString(&lcd, "温度湿度計", X_LINE_TO_PIX(&lcd, 5), Y_ROW_TO_PIX(&lcd, 0), ST7735_BLACK, ST7735_WHITE); 753 lcd_drawString(&lcd, temp1, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 0 + 2), ST7735_BLACK, ST7735_WHITE); 754 lcd_drawString(&lcd, temp2, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 1 + 2), ST7735_BLACK, ST7735_WHITE); 755 lcd_drawString(&lcd, humid, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 2 + 2), ST7735_BLACK, ST7735_WHITE); 717 756 main_lcd_state = 0; 718 757 break; … … 755 794 /* プロパティ設定電文作成 */ 756 795 ret = ecn_esv_setc(&esv, eobj, 0xE0, 2, p_edt); 757 if (ret != E_OK){796 if (ret != E_OK) { 758 797 syslog(LOG_ERROR, "ecn_esv_setc"); 759 798 return; … … 761 800 762 801 /* 電文送信 */ 763 ecn_snd_esv(esv); 802 ret = ecn_snd_esv(esv); 803 if (ret != E_OK) { 804 syslog(LOG_ERROR, "ecn_snd_esv"); 805 } 764 806 } 765 807 … … 798 840 799 841 /* 押されて戻った時に処理する */ 800 if (push)842 if (push) 801 843 return; 802 844 803 845 /* 温度計測値 */ 804 846 main_tmpr -= 10; /* - 1.0℃ */ 805 if (main_tmpr < -100) /* -10.0℃までとする */847 if (main_tmpr < -100) /* -10.0℃までとする */ 806 848 main_tmpr = -100; 807 849 … … 811 853 /* プロパティ値書き込み・読み出し要求電文作成 */ 812 854 ret = ecn_esv_set_get(&esv, TEMP_SENSOR_02_EOBJ, 0xE0, 2, p_edt); 813 if (ret != E_OK){855 if (ret != E_OK) { 814 856 syslog(LOG_ERROR, "ecn_esv_setc"); 815 857 return; … … 820 862 /* 書き込みプロパティ追加 */ 821 863 ret = ecn_add_edt(esv, 0x80, 1, p_edt); 822 if (ret) {864 if (ret) { 823 865 syslog(LOG_ERROR, "ecn_add_edt"); 824 866 goto error; … … 827 869 /* プロパティ値書き込み・読み出し要求電文作成:折り返し指定 */ 828 870 ret = ecn_trn_set_get(esv, &trn_pos); 829 if (ret) {871 if (ret) { 830 872 syslog(LOG_ERROR, "ecn_trn_set_get"); 831 873 goto error; … … 834 876 /* 読み出しプロパティ追加 */ 835 877 ret = ecn_add_epc(esv, 0xE0); 836 if (ret) {878 if (ret) { 837 879 syslog(LOG_ERROR, "ecn_add_epc"); 838 880 goto error; … … 841 883 /* プロパティ値書き込み・読み出し要求電文作成:終了指定 */ 842 884 ret = ecn_end_set_get(esv, trn_pos); 843 if (ret) {885 if (ret) { 844 886 syslog(LOG_ERROR, "ecn_end_set_get"); 845 887 goto error; … … 848 890 /* 電文送信 */ 849 891 ret = ecn_snd_esv(esv); 850 if (ret != E_OK){892 if (ret != E_OK) { 851 893 syslog(LOG_ERROR, "ecn_snd_esv"); 852 894 } … … 855 897 /* 領域解放 */ 856 898 ret = ecn_rel_esv(esv); 857 if (ret != E_OK) {899 if (ret != E_OK) { 858 900 syslog(LOG_ERROR, "ecn_rel_esv"); 859 901 } … … 871 913 872 914 /* 押されて戻った時に処理する */ 873 if (push)915 if (push) 874 916 return; 875 917 876 918 /* 温度計測値 */ 877 919 main_tmpr += 10; /* + 1.0℃ */ 878 if (main_tmpr > 400) /* +40.0℃までとする */920 if (main_tmpr > 400) /* +40.0℃までとする */ 879 921 main_tmpr = 400; 880 922 … … 884 926 /* プロパティ値書き込み・読み出し要求電文作成 */ 885 927 ret = ecn_esv_set_get(&esv, TEMP_SENSOR_02_EOBJ, 0xE0, 2, p_edt); 886 if (ret != E_OK){928 if (ret != E_OK) { 887 929 syslog(LOG_ERROR, "ecn_esv_setc"); 888 930 return; … … 893 935 /* 書き込みプロパティ追加 */ 894 936 ret = ecn_add_edt(esv, 0x80, 1, p_edt); 895 if (ret) {937 if (ret) { 896 938 syslog(LOG_ERROR, "ecn_add_edt"); 897 939 goto error; … … 900 942 /* プロパティ値書き込み・読み出し要求電文作成:折り返し指定 */ 901 943 ret = ecn_trn_set_get(esv, &trn_pos); 902 if (ret) {944 if (ret) { 903 945 syslog(LOG_ERROR, "ecn_trn_set_get"); 904 946 goto error; … … 907 949 /* 読み出しプロパティ追加 */ 908 950 ret = ecn_add_epc(esv, 0xE0); 909 if (ret) {951 if (ret) { 910 952 syslog(LOG_ERROR, "ecn_add_epc"); 911 953 goto error; … … 914 956 /* プロパティ値書き込み・読み出し要求電文作成:終了指定 */ 915 957 ret = ecn_end_set_get(esv, trn_pos); 916 if (ret) {958 if (ret) { 917 959 syslog(LOG_ERROR, "ecn_end_set_get"); 918 960 goto error; … … 921 963 /* 電文送信 */ 922 964 ret = ecn_snd_esv(esv); 923 if (ret != E_OK){965 if (ret != E_OK) { 924 966 syslog(LOG_ERROR, "ecn_snd_esv"); 925 967 } … … 928 970 /* 領域解放 */ 929 971 ret = ecn_rel_esv(esv); 930 if (ret != E_OK) {972 if (ret != E_OK) { 931 973 syslog(LOG_ERROR, "ecn_rel_esv"); 932 974 } … … 938 980 static bool_t check_response(uint8_t pdc, uint8_t *p_edt) 939 981 { 940 if ((pdc != 2)982 if ((pdc != 2) 941 983 || (p_edt[0] != ((uint16_t)main_tmpr) >> 8) 942 || (p_edt[1] != ((uint16_t)main_tmpr) & 0xFF)) 943 { 984 || (p_edt[1] != ((uint16_t)main_tmpr) & 0xFF)) { 944 985 syslog(LOG_WARNING, "epc_set_get response NG"); 945 986 return false;
Note:
See TracChangeset
for help on using the changeset viewer.