Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/trunk/ntshell/src/ntp_cli.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r388 r389  
    11/*
    2  *  TOPPERS ECHONET Lite Communication Middleware
     2 *  TOPPERS PROJECT Home Network Working Group Software
    33 *
    44 *  Copyright (C) 2018 Cores Co., Ltd. Japan
    55 *
    6  *  上記著作権è€
    7 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    8  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    9  *  変・再é
    10 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    11  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    12  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    13  *      スコード中に含まれていること.
    14  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    15  *      用できる形で再é
    16 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    17 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    18  *      è€
    19 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    20  *      の無保証規定を掲載すること.
    21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    22  *      用できない形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    24  *      と.
    25  *    (a) 再é
    26 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    28  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    29  *    (b) 再é
    30 å¸ƒã®å½¢æ
    31 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    32  *        報告すること.
    33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    34  *      害からも,上記著作権è€
    35 ãŠã‚ˆã³TOPPERSプロジェクトをå
    36 è²¬ã™ã‚‹ã“と.
    37  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    38  *      由に基づく請求からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトを
    40  *      å
    41 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    4228 *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
     29 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     30 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     31 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     32 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     33 *  の責任を負わない.
    4934 *
    5035 *  @(#) $Id$
     
    5237
    5338/*
    54  *  NTP クライアント
     39 *  NTP クライアント
    5540 */
    5641
     
    8469#include "ntp_cli.h"
    8570
    86 /* NTP サーバのポート番号 */
     71/* NTP サーバのポート番号 */
    8772
    8873#define NTP_SRV_PORTNO          UINT_C(123)
    8974
    90 /* NTP サーバのURL */
     75/* NTP サーバのURL */
    9176
    9277#define NTP_SRV_URL             "ntp.nict.jp"
    9378
    94 /* 送信間隔 */
     79/* 送信間隔 */
    9580
    9681#define SLP_ITV         (60*SYSTIM_HZ)
    9782
    98 /* 関数 */
     83/* 関数 */
    9984
    10085void ntp_cli_update_time(T_NTP_CLI_CONTEXT *nc);
     
    10590
    10691/*
    107  *  å
    108 ¨åŸŸå¤‰æ•°
     92 *  全域変数
    10993 */
    11094
     
    171155}
    172156
    173 #define NTP_POLL_ASYNC 10               // 1024秒毎に時刻問い合わせ
    174 #define NTP_POLL_NORMAL 16              // 65536秒毎に時刻問い合わせ
     157#define NTP_POLL_ASYNC 10               // 1024秒毎に時刻問い合わせ
     158#define NTP_POLL_NORMAL 16              // 65536秒毎に時刻問い合わせ
    175159
    176160void ntp_cli_initialize(T_NTP_CLI_CONTEXT *nc, ID cepid)
     
    214198        T_NTP_MSG *ntp = &nc->ntp_msg;
    215199
    216         // NTP時刻応答の場合
     200        // NTP時刻応答の場合
    217201        if ((ntp->mode == NTP_MODE_SERVER) || (ntp->mode == NTP_MODE_BROADCAST)) {
    218202                switch (nc->state) {
     
    221205                        break;
    222206                case NTP_CLI_STATE_REQUEST:
    223                         // サーバーからの応答時刻を取得
     207                        // サーバーからの応答時刻を取得
    224208                        memcpy(&nc->receive_timestamp, &ntp->receive_timestamp, sizeof(nc->receive_timestamp));
    225209                        memcpy(&nc->transmit_timestamp, &ntp->transmit_timestamp, sizeof(nc->transmit_timestamp));
    226210
    227                         // 現在時刻取得
     211                        // 現在時刻取得
    228212                        ntp_cli_read_time(nc, &tp);
    229213
    230                         // NTP参ç
    231 §æ™‚刻に現在時刻を設定
     214                        // NTP参照時刻に現在時刻を設定
    232215                        set_systime_to_ntptime(&tp, &nc->recv_resp_timestamp);
    233216
    234                         // 時刻を更新
     217                        // 時刻を更新
    235218                        ntp_cli_update_time(nc);
    236219
     
    243226                }
    244227        }
    245         // NTP時刻要求の場合
     228        // NTP時刻要求の場合
    246229        else if (ntp->mode == NTP_MODE_CLIENT) {
    247                 // 現在時刻取得
     230                // 現在時刻取得
    248231                ntp_cli_read_time(nc, &tp);
    249232
    250                 // NTP受信・送信時刻に現在時刻を設定
     233                // NTP受信・送信時刻に現在時刻を設定
    251234                set_systime_to_ntptime(&tp, &nc->receive_timestamp);
    252235                set_systime_to_ntptime(&tp, &nc->transmit_timestamp);
    253236
    254                 // NTPパケット送信
     237                // NTPパケット送信
    255238                ntp_cli_time_synchronization(nc, NTP_MODE_SERVER);
    256239        }
     
    267250        div2_timestamp(&ofs);
    268251
    269         // 差が大きい場合はサーバーの送信時間を設定
     252        // 差が大きい場合はサーバーの送信時間を設定
    270253        if (ntohl(ofs.integer) > 2) {
    271254                memcpy(&nc->reference_timestamp, &nc->transmit_timestamp, sizeof(nc->transmit_timestamp));
     
    286269#endif
    287270        {
    288                 /* 改行コードの削除 */
     271                /* 改行コードの削除 */
    289272                int len = strnlen(nc->buf, sizeof(nc->buf) - 1);
    290273                nc->buf[len - 1] = '\0';
     
    344327                /* through */
    345328        case NTP_CLI_STATE_RESOLVE_ADDR:
    346                 // 現在時刻取得
     329                // 現在時刻取得
    347330                ntp_cli_read_time(nc, &tp);
    348331
    349                 // NTP開始時刻に現在時刻を設定
     332                // NTP開始時刻に現在時刻を設定
    350333                set_systime_to_ntptime(&tp, &nc->originate_timestamp);
    351334                memset(&nc->receive_timestamp, 0, sizeof(nc->receive_timestamp));
    352335                memset(&nc->transmit_timestamp, 0, sizeof(nc->transmit_timestamp));
    353336
    354                 // NTPパケット送信
     337                // NTPパケット送信
    355338                ntp_cli_time_synchronization(nc, NTP_MODE_CLIENT);
    356339
    357                 // NTP応答å¾
    358 ã¡ã«é·ç§»ã€500msでリトライ
     340                // NTP応答待ちに遷移、500msでリトライ
    359341                nc->retry = 0;
    360342                nc->state = NTP_CLI_STATE_REQUEST;
     
    366348                        nc->state = NTP_CLI_STATE_ASYNC;
    367349                        nc->poll = NTP_POLL_ASYNC;
    368                         nc->timer = (1 << nc->poll) * 1000 * 1000;  // 1024秒後に時刻同期
    369                         break;
    370                 }
    371                 // 現在時刻取得
     350                        nc->timer = (1 << nc->poll) * 1000 * 1000;  // 1024秒後に時刻同期
     351                        break;
     352                }
     353                // 現在時刻取得
    372354                ntp_cli_read_time(nc, &tp);
    373355
    374                 // NTP開始時刻に現在時刻を設定
     356                // NTP開始時刻に現在時刻を設定
    375357                set_systime_to_ntptime(&tp, &nc->originate_timestamp);
    376358                memset(&nc->receive_timestamp, 0, sizeof(nc->receive_timestamp));
    377359                memset(&nc->transmit_timestamp, 0, sizeof(nc->transmit_timestamp));
    378360
    379                 // NTPパケット送信
     361                // NTPパケット送信
    380362                ntp_cli_time_synchronization(nc, NTP_MODE_CLIENT);
    381363
    382                 // NTP応答å¾
    383 ã¡ã«é·ç§»ã€500msでリトライ
     364                // NTP応答待ちに遷移、500msでリトライ
    384365                nc->state = NTP_CLI_STATE_REQUEST;
    385366                nc->timer = 500 * 1000;
    386367                break;
    387368        case NTP_CLI_STATE_SYNC:
    388                 // 現在時刻取得
     369                // 現在時刻取得
    389370                ntp_cli_read_time(nc, &tp);
    390371
    391                 // NTP開始時刻に現在時刻を設定
     372                // NTP開始時刻に現在時刻を設定
    392373                set_systime_to_ntptime(&tp, &nc->originate_timestamp);
    393374                memset(&nc->receive_timestamp, 0, sizeof(nc->receive_timestamp));
    394375                memset(&nc->transmit_timestamp, 0, sizeof(nc->transmit_timestamp));
    395376
    396                 // NTPパケット送信
     377                // NTPパケット送信
    397378                ntp_cli_time_synchronization(nc, NTP_MODE_CLIENT);
    398379
    399                 // NTP応答å¾
    400 ã¡ã«é·ç§»ã€500msでリトライ
     380                // NTP応答待ちに遷移、500msでリトライ
    401381                nc->state = NTP_CLI_STATE_REQUEST;
    402382                nc->timer = 500 * 1000;
     
    418398        ntp->stratum = (mode == NTP_MODE_CLIENT) ? 2 : 1;
    419399        ntp->poll = nc->poll;
    420         ntp->precision = 0xfa;   // 精度は10^-6(1μs)
     400        ntp->precision = 0xfa;   // 精度は10^-6(1μs)
    421401        ntp->root_delay = htonl(0);
    422402        ntp->root_dispersion = htonl(0);
    423         // 同期のための外部的な手段のないサブネット
     403        // 同期のための外部的な手段のないサブネット
    424404        ntp->reference_identifier[0] = 'L';
    425405        ntp->reference_identifier[1] = 'O';
    426406        ntp->reference_identifier[2] = 'C';
    427407        ntp->reference_identifier[3] = 'L';
    428         // 参ç
    429 §ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—
     408        // 参照タイムスタンプ
    430409        memcpy(&ntp->reference_timestamp, &nc->reference_timestamp, sizeof(ntp->reference_timestamp));
    431         // 開始タイムスタンプ
     410        // 開始タイムスタンプ
    432411        memcpy(&ntp->originate_timestamp, &nc->originate_timestamp, sizeof(ntp->originate_timestamp));
    433         // 受信タイムスタンプ
     412        // 受信タイムスタンプ
    434413        memcpy(&ntp->receive_timestamp, &nc->receive_timestamp, sizeof(ntp->receive_timestamp));
    435         // 送信タイムスタンプ
     414        // 送信タイムスタンプ
    436415        memcpy(&ntp->transmit_timestamp, &nc->transmit_timestamp, sizeof(ntp->transmit_timestamp));
    437         // 鍵識別子
     416        // 鍵識別子
    438417        ntp->key_identifier[0] = 0x08;
    439418        ntp->key_identifier[1] = 0x18;
     
    486465
    487466/*
    488  *  ノンブロッキングコールのコールバック関数
     467 *  ノンブロッキングコールのコールバック関数
    489468 */
    490469
     
    497476        len = *(ER_UINT*)p_parblk;
    498477        if (len < 0 && len != E_RLWAI) {
    499                 /* E_RLWAI 以外で、0 以下の場合は、エラーを意味している。*/
     478                /* E_RLWAI 以外で、0 以下の場合は、エラーを意味している。*/
    500479                syslog(LOG_NOTICE, "[NTP CLI,%d] callback error: %s, fncd: %s", nc->cepid,
    501480                        itron_strerror(len), in_strtfn(fncd));
     
    525504
    526505/*
    527  *  NTP クライアント送信タスク
     506 *  NTP クライアント送信タスク
    528507 */
    529508
     
    539518        syslog(LOG_NOTICE, "[NTP CLI:%d,%d] started.", nc->tskid, (ID)exinf);
    540519
    541         /* 初期化 */
     520        /* 初期化 */
    542521        ntp_cli_initialize(nc, (ID)exinf);
    543522
     
    552531                prev = time;
    553532
    554                 /* タイマー取得 */
     533                /* タイマー取得 */
    555534                timer = ntp_cli_get_timer(nc);
    556535
    557                 /* å¾
    558 ã¡ */
     536                /* 待ち */
    559537                error = tslp_tsk(timer);
    560538                if ((error != E_OK) && (error != E_TMOUT)) {
     
    571549                }
    572550
    573                 /* 時間経過 */
     551                /* 時間経過 */
    574552                ntp_cli_progress(nc, time - prev);
    575553
    576                 /* 起こされた場合 */
     554                /* 起こされた場合 */
    577555                if (error == E_OK) {
    578556                        ntp_cli_wakeup(nc);
    579557                }
    580558
    581                 /* タイムアウト処理 */
     559                /* タイムアウト処理 */
    582560                ntp_cli_timeout(nc);
    583561        }
Note: See TracChangeset for help on using the changeset viewer.