source: uKadecot/trunk/ecnl_ssp/echonet_agent.h@ 101

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

TOPPERS/uKadecotのソースコードを追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/plain
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 101 2015-06-02 15:37:23Z 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 20
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_fault,
93} ecn_node_state_t;
94
95typedef struct ecn_node
96{
97 ecn_obj_t base;
98 EOBJCB eobj;
99 ECN_ENOD_ID enodId;
100 ecn_agent_queue_t devices;
101 ecn_node_state_t state;
102 TMO timer;
103 ecn_obj_t *current;
104 int retry;
105} ecn_node_t;
106
107typedef struct ecn_device
108{
109 ecn_obj_t base;
110 ecn_node_t *node;
111} ecn_device_t;
112
113typedef struct ecn_inm_get_device_list_req
114{
115 unsigned int requestid;
116} ecn_inm_get_device_list_req_t;
117
118typedef struct ecn_inm_get_device_item
119{
120 ID eobjid; /* ECHONET Lite ƒIƒuƒWƒFƒNƒgID */
121 ID enodid; /* ECHONET Lite ƒm[ƒhƒvƒƒtƒ@ƒCƒ‹ƒIƒuƒWƒFƒNƒgID */
122 uint8_t state; /* î•ñŽûWó‘Ô */
123 uint8_t eojx1; /* ECHONET Lite ƒIƒuƒWƒFƒNƒg‚̃Nƒ‰ƒXƒOƒ‹[ƒvƒR[ƒh */
124 uint8_t eojx2; /* ECHONET Lite ƒIƒuƒWƒFƒNƒg‚̃Nƒ‰ƒXƒR[ƒh */
125 uint8_t eojx3; /* ECHONET Lite ƒIƒuƒWƒFƒNƒg‚̃Cƒ“ƒXƒ^ƒ“ƒXƒR[ƒh */
126 ECN_ENOD_ID addrid; /* IPƒAƒhƒŒƒXŽæ“¾—pID */
127} ecn_inm_get_device_item_t;
128
129typedef struct ecn_inm_get_device_list_res
130{
131 unsigned int requestid;
132 ecn_inm_get_device_item_t devices[1];
133} ecn_inm_get_device_list_res_t;
134
135typedef struct ecn_inm_get_device_info_req
136{
137 unsigned int requestid;
138 ID eobjid;
139} ecn_inm_get_device_info_req_t;
140
141typedef struct ecn_inm_get_device_info_res
142{
143 unsigned int requestid;
144 ID eobjid;
145 uint8_t pmapSet[16];
146 uint8_t pmapGet[16];
147 uint8_t pmapAnno[16];
148 uint_t eprpcnt;
149} ecn_inm_get_device_info_res_t;
150
151/* ‰Šú‰» */
152void ecn_agent_init(void);
153/* ƒm[ƒh‚ðŒŸõ */
154ecn_node_t *ecn_agent_find_node(ECN_ENOD_ID enodid);
155/* ‹@Ší‚ðŒŸõ */
156ecn_obj_t *ecn_agent_find_eobj(const EOBJCB *pk_nod, T_ECN_EOJ eoj);
157/* ƒIƒuƒWƒFƒNƒgID‚ðŽæ“¾ */
158ID ecn_agent_get_eobj(const EOBJINIB *pk_obj);
159/* ŽŸ‚Ì‹@Ší‚ðŽæ“¾ */
160const EOBJINIB *ecn_agent_next_eobj(const EOBJCB *pk_nod, const EOBJINIB *pk_obj);
161/* ƒIƒuƒWƒFƒNƒgID‚©‚çEOJ‚ƃm[ƒhID‚ðŽæ“¾ */
162bool_t ecn_agent_get_eoj_enodid(ID eobjid, T_ECN_EOJ *eoj, ECN_ENOD_ID *enodid);
163/* ƒ^ƒCƒ€ƒAƒEƒg’l‚ð•Ô‚· */
164TMO ecn_agent_get_timer();
165/* ƒ^ƒCƒ}[‚ÌŽžŠÔ‚ði‚ß‚é */
166void ecn_agent_progress(TMO interval);
167/* ƒ^ƒCƒ€ƒAƒEƒgˆ—i‚Ì‚½‚߂̌Ăяo‚µj */
168void ecn_agent_timeout();
169/* “à•”ƒƒbƒZ[ƒWˆ— */
170bool_t ecn_agent_proc_int_msg(ECN_FBS_ID fbs, uint8_t cmd);
171/* ECHONET“d•¶ŽóMˆ— */
172void ecn_agent_proc_ecn_msg(const EOBJCB **snod, const EOBJINIB **sobj, T_EDATA *esv);
173/* ECHONET“d•¶ŽóMˆ—I—¹ */
174void ecn_agent_proc_ecn_msg_end();
175/* ƒvƒƒpƒeƒB‚ðŽæ“¾ */
176const EPRPINIB *ecn_agent_get_property(const EOBJINIB *fp_obj, uint8_t fa_epc, const EPRPINIB *item);
177
178ER ecn_agent_get_device_list(ID sender, int requestid, ECN_FBS_ID *pk_req);
179ER ecn_agent_get_device_info(ID sender, int requestid, ID eobjid, ECN_FBS_ID *pk_req);
180
181#ifdef __cplusplus
182}
183#endif
184
185#endif /* ECHONET_NODE_H */
Note: See TracBrowser for help on using the repository browser.