source: asp3_tinet_ecnl_arm/trunk/ntshell/src/ntp_cli.h@ 352

Last change on this file since 352 was 352, checked in by coas-nagasima, 6 years ago

arm向けASP3版ECNLを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-chdr;charset=UTF-8
File size: 4.7 KB
Line 
1/*
2 * TOPPERS ECHONET Lite Communication Middleware
3 *
4 * Copyright (C) 2018 Cores Co., Ltd. Japan
5 *
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 * 免責すること.
28 *
29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
33 * の責任を負わない.
34 *
35 * @(#) $Id$
36 */
37
38#ifndef _NTP_CLI_H_
39#define _NTP_CLI_H_
40
41/* スタックサイズ */
42
43#define NTP_CLI_STACK_SIZE 1024 /* NTP クライアントタスク(IPv4)のスタックサイズ */
44
45/* 優先度 */
46
47#define NTP_CLI_MAIN_PRIORITY 5 /* NTP クライアントタスク(IPv4)の優先度 */
48
49/* タスク */
50
51extern void ntp_cli_task(intptr_t exinf);
52
53/* NTPタイムスタンプ */
54typedef struct ntp_timestamp {
55 uint32_t integer;
56 uint32_t fraction;
57} __attribute__((packed)) T_NTP_TIMESTAMP;
58
59/* NTPパケット */
60typedef struct ntp_msg {
61 uint8_t mode : 3;
62 uint8_t version_number : 3;
63 uint8_t leap_indicator : 2;
64 uint8_t stratum;
65 uint8_t poll;
66 uint8_t precision;
67 uint32_t root_delay;
68 uint32_t root_dispersion;
69 uint8_t reference_identifier[4];
70 T_NTP_TIMESTAMP reference_timestamp;
71 T_NTP_TIMESTAMP originate_timestamp;
72 T_NTP_TIMESTAMP receive_timestamp;
73 T_NTP_TIMESTAMP transmit_timestamp;
74 uint8_t key_identifier[4];
75 uint8_t message_digest[16];
76} __attribute__((packed)) T_NTP_MSG;
77
78typedef enum ntp_mode {
79 NTP_MODE_RESERVED,
80 NTP_MODE_SYMMETRIC_ACTIVE,
81 NTP_MODE_SYMMETRIC_PASSIVE,
82 NTP_MODE_CLIENT,
83 NTP_MODE_SERVER,
84 NTP_MODE_BROADCAST,
85 NTP_MODE_NTP_CONTROL_MESSAGE,
86 NTP_MODE_RESERVED_FOR_PRIVATE_USER
87} ntp_mode_t;
88
89/* NTPクライアント状態 */
90typedef enum ntp_cli_state {
91 NTP_CLI_STATE_ASYNC,
92 NTP_CLI_STATE_RESOLVE_ADDR,
93 NTP_CLI_STATE_REQUEST,
94 NTP_CLI_STATE_SYNC,
95} ntp_cli_state_t;
96
97typedef struct ntp_cli {
98 ntp_cli_state_t state;
99 int timer;
100 int retry;
101#if defined(SUPPORT_INET6) && defined(SUPPORT_INET4)
102 T_IN6_ADDR ipaddr6;
103#endif
104 uint16_t portno;
105 ID tskid;
106 ID cepid;
107 T_NTP_MSG ntp_msg;
108 T_IPV4EP snd_rmt;
109 T_IPV4EP rcv_rmt;
110 uint8_t poll;
111 T_NTP_TIMESTAMP reference_timestamp;
112 T_NTP_TIMESTAMP originate_timestamp;
113 T_NTP_TIMESTAMP receive_timestamp;
114 T_NTP_TIMESTAMP transmit_timestamp;
115 T_NTP_TIMESTAMP recv_resp_timestamp;
116 char buf[30];
117 int rcv_flag;
118 int exe_flag;
119} T_NTP_CLI_CONTEXT;
120
121/* 関数 */
122
123void ntp_cli_initialize(T_NTP_CLI_CONTEXT *nc, ID cepid);
124int ntp_cli_get_timer(T_NTP_CLI_CONTEXT *nc);
125void ntp_cli_progress(T_NTP_CLI_CONTEXT *nc, TMO elapse);
126void ntp_cli_wakeup(T_NTP_CLI_CONTEXT *nc);
127void ntp_cli_timeout(T_NTP_CLI_CONTEXT *nc);
128ER callback_nblk_ntp_cli(ID cepid, FN fncd, void *p_parblk);
129
130void ntp_cli_execute();
131
132#endif /* of #ifndef _NTP_CLI_H_ */
Note: See TracBrowser for help on using the repository browser.