source: UsbWattMeter/trunk/ecnl_lwip/echonet_fbs.h@ 165

Last change on this file since 165 was 164, checked in by coas-nagasima, 8 years ago

TOPPERS/ECNLサンプルアプリ「USB充電器電力計」を追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-chdr
File size: 7.7 KB
Line 
1/*
2 * TOPPERS ECHONET Lite Communication Middleware
3 *
4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan
5 *
6 * ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
7 * ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
8 * •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
9 * (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
10 * Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
11 * ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
12 * (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
13 * —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ…
14ƒƒ“ƒgi—˜—p
15 * ŽÒƒ}ƒjƒ…
16ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
17 * ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
18 * (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
19 * —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
20 * ‚ƁD
21 * (a) Ä”z•z‚É”º‚¤ƒhƒLƒ…
22ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
23ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
24 * ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
25 * (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
26 * •ñ‚·‚邱‚ƁD
27 * (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
28 * ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
29 * ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
30 * —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
31 * –Ɛӂ·‚邱‚ƁD
32 *
33 * –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
34 * ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
35 * ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
36 * ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
37 * ‚̐ӔC‚𕉂í‚È‚¢D
38 *
39 * @(#) $Id: echonet_fbs.h 164 2016-03-07 11:33:50Z coas-nagasima $
40 */
41
42/*
43 * ŒÅ’è’·ƒoƒbƒtƒ@‰Â•Ï’·ƒXƒgƒŠ[ƒ€
44 */
45
46#ifndef TOPPERS_ECHONET_FBS_H
47#define TOPPERS_ECHONET_FBS_H
48
49#include <kernel.h>
50#include "echonet.h"
51
52#ifdef __cplusplus
53extern "C" {
54#endif
55
56#ifndef ECHONET_MEMPOOL_GET_TMO
57#define ECHONET_MEMPOOL_GET_TMO (0) /* ƒƒ‚ƒŠƒv[ƒ‹Žæ“¾Žž‚̃^ƒCƒ€ƒAƒEƒgŽw’è */
58#endif /* ECHONET_MEMPOOL_GET_TMO */
59
60#ifndef NUM_ECHONET_MEMPOOL_BLOCK
61#define NUM_ECHONET_MEMPOOL_BLOCK (60) /* “d•¶—pƒƒ‚ƒŠƒuƒƒbƒN‚̐” */
62#endif /* NUM_ECHONET_MEMPOOL_BLOCK */
63
64#ifndef ECHONET_MEMPOOL_BLOCK_SIZE
65#define ECHONET_MEMPOOL_BLOCK_SIZE (256) /* “d•¶—pƒƒ‚ƒŠƒuƒƒbƒN‚̃TƒCƒY */
66#endif /* ECHONET_MEMPOOL_BLOCK_SIZE */
67
68typedef unsigned int ECN_FBS_SIZE_T; /* size_t‘Š“– */
69typedef int ECN_FBS_SSIZE_T; /* ssize_t‘Š“– */
70
71/* T_EDATAŠÇ——̈æƒTƒCƒY */
72#ifdef TARGET_KERNEL_ASP
73#define DEF_ECN_EDT_HDR_LEN (sizeof(T_MSG))
74#else
75#define DEF_ECN_EDT_HDR_LEN (sizeof(intptr_t))
76#endif
77
78/* ŠÇ——̈æƒTƒCƒY(64byte - sizeof(T_MSG)) */
79/* #define DEF_ECN_FBS_LIB_HDR_LEN ((ECHONET_MEMPOOL_BLOCK_SIZE + sizeof(int) - 1)>> 2) // */
80#define DEF_ECN_FBS_LIB_HDR_LEN (64 - DEF_ECN_EDT_HDR_LEN)
81
82/* ŠÇ——̈æ‚ðŠÜ‚ÞƒuƒƒbƒN‚É•ÛŽ‚·‚éƒf[ƒ^ƒTƒCƒY */
83#define DEF_ECN_FBS_FST_DAT_LEN (64)
84
85/* ƒŠƒ“ƒNƒ|ƒCƒ“ƒ^”z—ñ‚̃TƒCƒY(byte) */
86#define DEF_ECN_FBS_LNK_LEN (ECHONET_MEMPOOL_BLOCK_SIZE - DEF_ECN_EDT_HDR_LEN - DEF_ECN_FBS_LIB_HDR_LEN - DEF_ECN_FBS_FST_DAT_LEN)
87
88/* ŒÅ’è’·ƒoƒbƒtƒ@Å‘åƒTƒCƒY */
89#define DEF_ECN_FBS_BUF_MAXLEN ((DEF_ECN_FBS_LNK_LEN / sizeof(void *)) * ECHONET_MEMPOOL_BLOCK_SIZE + DEF_ECN_FBS_FST_DAT_LEN)
90
91/* Žq—v‘fƒoƒbƒtƒ@‚̃TƒCƒY */
92#define DEF_ECN_FBS_SUB_BUF_LEN ECHONET_MEMPOOL_BLOCK_SIZE
93
94/* “d•¶‚ÌŽí•Ê(“à—e‚͉¼) */
95typedef enum
96{
97 ECN_FBS_TYPE_BLANK = 0, /* –¢Žg—pƒXƒgƒŠ[ƒ€ */
98 ECN_FBS_TYPE_INTERNAL = 1, /* “à•”ƒƒbƒZ[ƒW */
99 ECN_FBS_TYPE_ECHONET = 2 /* ECHONET“d•¶ */
100} TA_ECN_MSG_TYPE;
101
102/* ƒŠƒ“ƒNƒ|ƒCƒ“ƒ^”z—ñ‚É—ñ‹“‚³‚ê‚éAŽq—v‘fƒoƒbƒtƒ@ */
103typedef struct
104{
105 uint8_t payload[ECHONET_MEMPOOL_BLOCK_SIZE];
106} T_ECN_SUB_BLK;
107
108/* ƒŠƒ“ƒNƒ|ƒCƒ“ƒ^”z—ñ */
109typedef union
110{
111 T_ECN_SUB_BLK *p_sub[DEF_ECN_FBS_LNK_LEN / sizeof(T_ECN_SUB_BLK *)];
112 uint8_t bin[DEF_ECN_FBS_LNK_LEN];
113} T_ECN_FBS_LNK;
114
115/* ŠÇ——̈æ(64byte - sizeof(T_MSG)) */
116typedef struct
117{
118 uint16_t length; /* ƒƒbƒZ[ƒW’· */
119 uint16_t type; /* ƒƒbƒZ[ƒWƒ^ƒCƒv */
120 union{
121 ECN_ENOD_ID id; /* ‘—MŒ³ƒm[ƒhIDiECHONET“d•¶j */
122 ID mbxid; /* ‘—MŒ³ƒ[ƒ‹ƒ{ƒbƒNƒXIDi“à•”ƒƒbƒZ[ƒWj */
123 }sender;
124 union{
125 ECN_ENOD_ID id; /* ‘—Mæƒm[ƒhIDiECHONET“d•¶j */
126 ID mbxid; /* ‘—Mæƒ[ƒ‹ƒ{ƒbƒNƒXIDi“à•”ƒƒbƒZ[ƒWj */
127 }target;
128 union{
129 ECN_ENOD_ID id; /* •ÔMæƒm[ƒhIDiECHONET“d•¶j */
130 ID mbxid; /* •ÔMæƒ[ƒ‹ƒ{ƒbƒNƒXIDi“à•”ƒƒbƒZ[ƒWj */
131 }reply;
132
133 int rd; /* “Ç‚ÝŽæ‚èƒwƒbƒhî•ñ */
134 int wr; /* ‘‚«ž‚݃wƒbƒhî•ñ */
135} T_ECN_FBS_HDR;
136
137/* ŠÇ——̈æ‚ðŠÜ‚ÞƒuƒƒbƒN‚̍\‘¢ */
138typedef struct
139{
140 uint8_t _msg[DEF_ECN_EDT_HDR_LEN]; /* T_MSG */
141 T_ECN_FBS_HDR hdr; /* ŠÇ——̈æ 64byte - sizeof(T_MSG) */
142 uint8_t _gap[DEF_ECN_FBS_LIB_HDR_LEN - sizeof(T_ECN_FBS_HDR)];
143 T_ECN_FBS_LNK lnk; /* ƒŠƒ“ƒNƒ|ƒCƒ“ƒ^”z—ñ 128byte */
144 uint8_t payload[DEF_ECN_FBS_FST_DAT_LEN];
145} T_ECN_FST_BLK;
146
147/* FBS-ID */
148typedef struct ecn_fbs_id_strc
149{
150 T_ECN_FST_BLK *ptr;
151} ECN_FBS_ID;
152
153/* ƒƒbƒZ[ƒWƒLƒ…
154[ */
155typedef struct ecn_fbs_queue
156{
157 T_ECN_FST_BLK *pk_head; /* æ“ª‚̃ƒbƒZ[ƒW */
158 T_ECN_FST_BLK *pk_last; /* ––”ö‚̃ƒbƒZ[ƒW */
159} T_ECN_FBS_QUEUE;
160
161/*
162 * —̈æŠm•Û
163 * ˆø”
164 * ECN_FBS_SIZE_T fa_req_size —v‹ƒoƒbƒtƒ@ƒTƒCƒY(byte)
165 * max: DEF_ECN_FBS_BUF_MAXLEN
166 * ECN_FBS_ID *fp_id Šm•Û‚µ‚½FBS-ID‚ÌŠi”[æ
167 * –ß‚è’l
168 * ER 0:ok Ӗ0:NG
169 */
170ER _ecn_fbs_cre(ECN_FBS_SIZE_T fa_req_size, ECN_FBS_ID *fp_id);
171
172/*
173 * —̈æ‰ð•ú
174 * ˆø”
175 * ecn_fbs_idŒ^ Šm•Û‚µ‚½FBS-ID
176 * –ß‚è’l
177 * ER 0:ok, Ӗ0:NG
178 */
179ER _ecn_fbs_del(ECN_FBS_ID fa_id);
180
181/*
182 * •ÛŽƒf[ƒ^‚Ì—L–³
183 * ˆø”
184 * ecn_fbs_idŒ^ Šm•Û‚µ‚½FBS-ID
185 * –ß‚è’l
186 * bool_t 0:–³‚µ, 1:‚ ‚è
187 */
188bool_t _ecn_fbs_exist_data(ECN_FBS_ID fa_id);
189
190/*
191 * •ÛŽƒf[ƒ^’·‚̎擾
192 * ˆø”
193 * ecn_fbs_idŒ^ Šm•Û‚µ‚½FBS-ID
194 * –ß‚è’l
195 * ECN_FBS_SSIZE_T •ÛŽ‚µ‚Ä‚¢‚éƒf[ƒ^‚Ì’·‚³(byte) -1:NG
196 */
197ECN_FBS_SSIZE_T _ecn_fbs_get_datalen(ECN_FBS_ID fa_id);
198
199/*
200 * “Ç‚ÝŽæ‚èƒJ[ƒ\ƒ‹‚̈ʒuŽæ“¾
201 * ˆø”
202 * ecn_fbs_idŒ^ Šm•Û‚µ‚½FBS-ID
203 * –ß‚è’l
204 * ECN_FBS_SIZE_T æ“ª‚©‚ç‚̐â‘Έʒu -1:NG
205 */
206ECN_FBS_SSIZE_T _ecn_fbs_get_rpos(ECN_FBS_ID fa_id);
207
208/*
209 * “Ç‚ÝŽæ‚èƒJ[ƒ\ƒ‹‚̈ʒuÝ’è
210 * ˆø”
211 * ecn_fbs_idŒ^ Šm•Û‚µ‚½FBS-ID
212 * ECN_FBS_SIZE_T fa_pos Ý’è‚·‚éˆÊ’u(æ“ª‚©‚ç‚̐â‘Έʒu)
213 * –ß‚è’l
214 * ER 0:ok, Ӗ0:NG
215 */
216ER _ecn_fbs_set_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_pos);
217
218/*
219 * “Ç‚ÝŽæ‚èƒJ[ƒ\ƒ‹‚̈ʒuˆÚ“®
220 * ˆø”
221 * ecn_fbs_idŒ^ Šm•Û‚µ‚½FBS-ID
222 * ECN_FBS_SIZE_T fa_seek ˆÚ“®—Ê(Œ»óA‘Oi‚Ì‚Ý)
223 * –ß‚è’l
224 * ER 0:ok, Ӗ0:NG
225 */
226ER _ecn_fbs_seek_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek);
227
228/*
229 * ”CˆÓŽw’èˆÊ’u‚Ì1byte“Ç‚ÝŽæ‚è
230 */
231int _ecn_fbs_peek(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek);
232
233/*
234 * ”CˆÓŽw’èˆÊ’u‚Ì1byte‘‚«ž‚Ý
235 */
236ER _ecn_fbs_poke(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek, int fa_val);
237
238/*
239 * ƒf[ƒ^’ljÁ
240 * ˆø”
241 * ecn_fbs_idŒ^ Šm•Û‚µ‚½FBS-ID
242 * const void * fa_dat ’ljÁ‚·‚éƒf[ƒ^
243 * ECN_FBS_SSIZE_T fa_len ’ljÁ‚·‚é’·‚³(byte)
244 * –ß‚è’l
245 * ER 0:ok, Ӗ0:NG
246 */
247ER _ecn_fbs_add_data(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len);
248
249/*
250 * ƒf[ƒ^’ljÁ(—̈æ‚ðŽ©“®“I‚ÉŠg’£‚·‚é)
251 * ˆø”
252 * ecn_fbs_idŒ^ Šm•Û‚µ‚½FBS-ID
253 * const void * fa_dat ’ljÁ‚·‚éƒf[ƒ^
254 * ECN_FBS_SSIZE_T fa_len ’ljÁ‚·‚é’·‚³(byte)
255 * –ß‚è’l
256 * ER 0:ok, Ӗ0:NG
257 */
258ER _ecn_fbs_add_data_ex(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len);
259
260/*
261 * ƒf[ƒ^Žæ“¾
262 * ˆø”
263 * ecn_fbs_idŒ^ Šm•Û‚µ‚½FBS-ID
264 * void * fa_buf Žæ“¾‚·‚éƒoƒbƒtƒ@
265 * ECN_FBS_SSIZE_T fa_maxlen Žæ“¾‚·‚é’·‚³(byte)
266 * ECN_FBS_SSIZE_T *p_len Žæ“¾‚µ‚½’·‚³(byte)
267 * –ß‚è’l
268 * ER 0:ok, Ӗ0:NG
269 */
270ER _ecn_fbs_get_data(ECN_FBS_ID fa_id, void *fa_buf, ECN_FBS_SSIZE_T fa_maxlen,
271 ECN_FBS_SSIZE_T *p_len);
272
273ER ecn_fbs_enqueue(T_ECN_FBS_QUEUE *pk_queue, T_ECN_FST_BLK *pk_buf);
274ER ecn_fbs_dequeue(T_ECN_FBS_QUEUE *pk_queue, T_ECN_FST_BLK **ppk_buf);
275
276#ifdef __cplusplus
277} /* extern "C" */
278#endif
279
280#endif /* #ifndef TOPPERS_ECHONET_FBS_H */
Note: See TracBrowser for help on using the repository browser.