source: UsbWattMeter/trunk/ecnl_lwip/echonet_agent.h@ 164

Last change on this file since 164 was 164, checked in by coas-nagasima, 6 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: 5.3 KB
Line 
1/*
2 * TOPPERS ECHONET Lite Communication Middleware
3 *
4 * Copyright (C) 2015 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_agent.h 164 2016-03-07 11:33:50Z coas-nagasima $
40 */
41
42/*
43 * ECHONET Lite “®“I¶¬ƒm[ƒh
44 */
45
46#ifndef ECHONET_NODE_H
47#define ECHONET_NODE_H
48
49#include "echonet.h"
50
51#ifdef __cplusplus
52extern "C" {
53#endif
54
55#define TNUM_AEOBJID 50
56
57/*
58 * ƒLƒ…
59[‚̃f[ƒ^\‘¢‚Ì’è‹`
60 */
61typedef struct ecn_agent_queue {
62#ifdef _DEBUG
63 struct ecn_agent_queue *p_parent; /* eƒLƒ…
64[‚ւ̃|ƒCƒ“ƒ^ */
65#endif
66 struct ecn_agent_queue *p_next; /* ŽŸƒGƒ“ƒgƒŠ‚ւ̃|ƒCƒ“ƒ^ */
67 struct ecn_agent_queue *p_prev; /* ‘OƒGƒ“ƒgƒŠ‚ւ̃|ƒCƒ“ƒ^ */
68} ecn_agent_queue_t;
69
70#define PMAP_FLAG_SET 0x01
71#define PMAP_FLAG_GET 0x02
72#define PMAP_FLAG_ANNO 0x04
73
74typedef struct ecn_obj
75{
76 ID eobjId;
77 EOBJINIB inib;
78 uint8_t pmapFlag;
79 uint8_t pmapSet[16]; /* SETƒvƒƒpƒeƒBƒ}ƒbƒv */
80 uint8_t pmapGet[16]; /* GETƒvƒƒpƒeƒBƒ}ƒbƒv */
81 uint8_t pmapAnno[16]; /* ó‘ԕω»Žž’Ê’mƒvƒƒpƒeƒBƒ}ƒbƒv */
82 uint_t eprpcnt; /* ECHONET Lite ƒvƒƒpƒeƒB” */
83} ecn_obj_t;
84
85typedef enum ecn_node_state
86{
87 ecn_node_state_idle,
88 ecn_node_state_start,
89 ecn_node_state_set_prpmap_wait,
90 ecn_node_state_get_prpmap_wait,
91 ecn_node_state_anno_prpmap_wait,
92} ecn_node_state_t;
93
94typedef struct ecn_node
95{
96 ecn_obj_t base;
97 EOBJCB eobj;
98 ECN_ENOD_ID enodId;
99 ecn_agent_queue_t devices;
100 ecn_node_state_t state;
101 TMO timer;
102 ecn_obj_t *current;
103} ecn_node_t;
104
105typedef struct ecn_device
106{
107 ecn_obj_t base;
108 ecn_node_t *node;
109} ecn_device_t;
110
111typedef struct ecn_inm_get_device_list_req
112{
113 unsigned int requestid;
114} ecn_inm_get_device_list_req_t;
115
116typedef struct ecn_inm_get_device_item
117{
118 ID eobjid; /* ECHONET Lite ƒIƒuƒWƒFƒNƒgID */
119 ID enodid; /* ECHONET Lite ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹ƒIƒuƒWƒFƒNƒgID */
120 uint8_t eojx1; /* ECHONET Lite ƒIƒuƒWƒFƒNƒg‚̃Nƒ‰ƒXƒOƒ‹[ƒvƒR[ƒh */
121 uint8_t eojx2; /* ECHONET Lite ƒIƒuƒWƒFƒNƒg‚̃Nƒ‰ƒXƒR[ƒh */
122 uint8_t eojx3; /* ECHONET Lite ƒIƒuƒWƒFƒNƒg‚̃Cƒ“ƒXƒ^ƒ“ƒXƒR[ƒh */
123 ECN_ENOD_ID addrid; /* IPƒAƒhƒŒƒXŽæ“¾—pID */
124} ecn_inm_get_device_item_t;
125
126typedef struct ecn_inm_get_device_list_res
127{
128 unsigned int requestid;
129 ecn_inm_get_device_item_t devices[1];
130} ecn_inm_get_device_list_res_t;
131
132typedef struct ecn_inm_get_device_info_req
133{
134 unsigned int requestid;
135 ID eobjid;
136} ecn_inm_get_device_info_req_t;
137
138typedef struct ecn_inm_get_device_info_res
139{
140 unsigned int requestid;
141 ID eobjid;
142 uint8_t pmapSet[16];
143 uint8_t pmapGet[16];
144 uint8_t pmapAnno[16];
145 uint_t eprpcnt;
146} ecn_inm_get_device_info_res_t;
147
148/* ‰Šú‰» */
149void ecn_agent_init(void);
150/* ƒm[ƒh‚ðŒŸõ */
151ecn_node_t *ecn_agent_find_node(ECN_ENOD_ID enodid);
152/* ‹@Ší‚ðŒŸõ */
153ecn_obj_t *ecn_agent_find_eobj(const EOBJCB *pk_nod, T_ECN_EOJ eoj);
154/* ƒIƒuƒWƒFƒNƒgID‚ðŽæ“¾ */
155ID ecn_agent_get_eobj(const EOBJINIB *pk_obj);
156/* ŽŸ‚Ì‹@Ší‚ðŽæ“¾ */
157const EOBJINIB *ecn_agent_next_eobj(const EOBJCB *pk_nod, const EOBJINIB *pk_obj);
158/* ƒIƒuƒWƒFƒNƒgID‚©‚çEOJ‚ƃm[ƒhID‚ðŽæ“¾ */
159bool_t ecn_agent_get_eoj_enodid(ID eobjid, T_ECN_EOJ *eoj, ECN_ENOD_ID *enodid);
160/* ƒ^ƒCƒ€ƒAƒEƒg’l‚ð•Ô‚· */
161TMO ecn_agent_get_timer();
162/* ƒ^ƒCƒ}[‚ÌŽžŠÔ‚ði‚ß‚é */
163void ecn_agent_progress(TMO interval);
164/* ƒ^ƒCƒ€ƒAƒEƒgˆ—i‚Ì‚½‚߂̌Ăяo‚µj */
165void ecn_agent_timeout();
166/* “à•”ƒƒbƒZ[ƒWˆ— */
167bool_t ecn_agent_proc_int_msg(ECN_FBS_ID fbs, uint8_t cmd);
168/* ECHONET“d•¶ŽóMˆ— */
169void ecn_agent_proc_ecn_msg(const EOBJCB **snod, const EOBJINIB **sobj, T_EDATA *esv);
170/* ECHONET“d•¶ŽóMˆ—I—¹ */
171void ecn_agent_proc_ecn_msg_end();
172/* ƒvƒƒpƒeƒB‚ðŽæ“¾ */
173const EPRPINIB *ecn_agent_get_property(const EOBJINIB *fp_obj, uint8_t fa_epc, const EPRPINIB *item);
174
175ER ecn_agent_get_device_list(ID sender, int requestid, ECN_FBS_ID *pk_req);
176ER ecn_agent_get_device_info(ID sender, int requestid, ID eobjid, ECN_FBS_ID *pk_req);
177
178#ifdef __cplusplus
179}
180#endif
181
182#endif /* ECHONET_NODE_H */
Note: See TracBrowser for help on using the repository browser.