Changeset 321 for EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet.h
- Timestamp:
- Aug 23, 2017, 9:27:43 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 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 * 免責すること. 42 28 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 49 34 * 50 35 */ … … 64 49 65 50 #ifndef TOPPERS_T_STDDEF_H 66 typedef char bool_t; /* çå½å¤*/67 68 typedef signed int int_t; /* èªç¶ãªãµã¤ãºã®ç¬¦å·ä»ãæ´æ°*/69 typedef unsigned int uint_t; /* èªç¶ãªãµã¤ãºã®ç¬¦å·ç¡ãæ´æ°*/70 71 typedef int_t ER; /* ã¨ã©ã¼ã³ã¼ã*/72 typedef int_t ID; /* ãªãã¸ã§ã¯ãã®IDçªå·*/73 typedef uint_t ATR; /* ãªãã¸ã§ã¯ãã®å±æ§*/74 typedef int_t TMO; /* ã¿ã¤ã ã¢ã¦ãæå®*/51 typedef char bool_t; /* 真偽値 */ 52 53 typedef signed int int_t; /* 自然なサイズの符号付き整数 */ 54 typedef unsigned int uint_t; /* 自然なサイズの符号無し整数 */ 55 56 typedef int_t ER; /* エラーコード */ 57 typedef int_t ID; /* オブジェクトのID番号 */ 58 typedef uint_t ATR; /* オブジェクトの属性 */ 59 typedef int_t TMO; /* タイムアウト指定 */ 75 60 76 61 #ifndef NULL 77 #define NULL 0 /* ç¡å¹ãã¤ã³ã¿*/62 #define NULL 0 /* 無効ポインタ */ 78 63 #endif /* NULL */ 79 64 80 65 #ifndef true 81 #define true 1 /* ç*/66 #define true 1 /* 真 */ 82 67 #endif /* true */ 83 68 84 69 #ifndef false 85 #define false 0 /* å½*/70 #define false 0 /* 偽 */ 86 71 #endif /* false */ 87 72 88 #define E_OK 0 /* æ£å¸¸çµäº */ 89 90 #define E_SYS (-5) /* ã·ã¹ãã ã¨ã©ã¼ */ 91 #define E_PAR (-17) /* ãã©ã¡ã¼ã¿ã¨ã©ã¼ */ 92 #define E_NOMEM (-33) /* ã¡ã¢ãªä¸è¶³ */ 93 #define E_OBJ (-41) /* ãªãã¸ã§ã¯ãç¶æ 94 ã¨ã©ã¼ */ 95 #define E_NOEXS (-42) /* ãªãã¸ã§ã¯ãæªçæ */ 96 #define E_TMOUT (-50) /* ãã¼ãªã³ã°å¤±æã¾ãã¯ã¿ã¤ã ã¢ã¦ã */ 97 #define E_BOVR (-58) /* ãããã¡ãªã¼ãã¼ããã¼ */ 98 #define E_BRK (-100) /* ã¦ã¼ã¶ã¼ã«ããä¸æ */ 99 100 #define TMO_FEVR (-1) /* æ°¸ä¹ 101 å¾ 102 ã¡ */ 73 #define E_OK 0 /* 正常終了 */ 74 75 #define E_SYS (-5) /* システムエラー */ 76 #define E_PAR (-17) /* パラメータエラー */ 77 #define E_NOMEM (-33) /* メモリ不足 */ 78 #define E_OBJ (-41) /* オブジェクト状態エラー */ 79 #define E_NOEXS (-42) /* オブジェクト未生成 */ 80 #define E_TMOUT (-50) /* ポーリング失敗またはタイムアウト */ 81 #define E_BOVR (-58) /* バッファオーバーフロー */ 82 #define E_BRK (-100) /* ユーザーによる中断 */ 83 84 #define TMO_FEVR (-1) /* 永久待ち */ 103 85 #endif 104 86 105 87 #define EOBJ_NULL 0x00 106 #define EOBJ_LOCAL_NODE 0x01 /* èªãã¼ã*/107 #define EOBJ_SYNC_REMOTE_NODE 0x02 /* ä»ãã¼ã*/108 #define EOBJ_ASYNC_REMOTE_NODE 0x04 /* ä»ãã¼ãï¼éåæï¼*/109 #define EOBJ_DEVICE 0x08 /* æ©å¨ãªãã¸ã§ã¯ã*/88 #define EOBJ_LOCAL_NODE 0x01 /* 自ノード */ 89 #define EOBJ_SYNC_REMOTE_NODE 0x02 /* 他ノード */ 90 #define EOBJ_ASYNC_REMOTE_NODE 0x04 /* 他ノード(非同期) */ 91 #define EOBJ_DEVICE 0x08 /* 機器オブジェクト */ 110 92 111 93 #define EPC_NONE 0x00 112 #define EPC_RULE_SET 0x01 /* ã¢ã¯ã»ã¹ã«ã¼ã« Set */ 113 #define EPC_RULE_GET 0x02 /* ã¢ã¯ã»ã¹ã«ã¼ã« Get */ 114 #define EPC_RULE_ANNO 0x04 /* ã¢ã¯ã»ã¹ã«ã¼ã« Anno */ 115 #define EPC_ANNOUNCE 0x40 /* ç¶æ 116 å¤åæéç¥ */ 117 #define EPC_VARIABLE 0x80 /* å¯å¤é·ãã¼ã¿ */ 94 #define EPC_RULE_SET 0x01 /* アクセスルール Set */ 95 #define EPC_RULE_GET 0x02 /* アクセスルール Get */ 96 #define EPC_RULE_ANNO 0x04 /* アクセスルール Anno */ 97 #define EPC_ANNOUNCE 0x40 /* 状態変化時通知 */ 98 #define EPC_VARIABLE 0x80 /* 可変長データ */ 118 99 119 100 typedef enum _echonet_enod_id 120 101 { 121 ENOD_NOT_MATCH_ID = -1, /* ã¢ãã¬ã¹IDç»é²ãªã*/122 ENOD_MULTICAST_ID = 0, /* ãã«ããã£ã¹ãã¢ãã¬ã¹ID */123 ENOD_LOCAL_ID = 1, /* èªãã¼ãã¢ãã¬ã¹ID */124 ENOD_API_ID = 2, /* API ã¢ãã¬ã¹ID */125 ENOD_REMOTE_ID = 3, /* ä»ãã¼ãã¢ãã¬ã¹ID */102 ENOD_NOT_MATCH_ID = -1, /* アドレスID登録なし */ 103 ENOD_MULTICAST_ID = 0, /* マルチキャストアドレスID */ 104 ENOD_LOCAL_ID = 1, /* 自ノードアドレスID */ 105 ENOD_API_ID = 2, /* APIアドレスID */ 106 ENOD_REMOTE_ID = 3, /* 他ノードアドレスID */ 126 107 } ECN_ENOD_ID; 127 108 128 /* ECHONET Lite è¦æ ¼*/109 /* ECHONET Lite規格 */ 129 110 typedef enum 130 111 { … … 132 113 } ECN_EHD1_ECL_VERSION; 133 114 134 /* é»æå½¢å¼1/2 */115 /* 電文形式1/2 */ 135 116 typedef enum 136 117 { 137 ECN_EDH2_FORMAT_1 = 0x81, /* é»æå½¢å¼1 */138 ECN_EDH2_FORMAT_2 = 0x82 /* é»æå½¢å¼2 */118 ECN_EDH2_FORMAT_1 = 0x81, /* 電文形式1 */ 119 ECN_EDH2_FORMAT_2 = 0x82 /* 電文形式2 */ 139 120 } ECN_EHD2_FORMAT; 140 121 141 /* ECHONET Lite ãµã¼ãã¹ã³ã¼ã*/122 /* ECHONET Liteサービスコード */ 142 123 typedef enum _echonet_service_code 143 124 { 144 ESV_NOP = 0, /* ( æ©è½æå®ãªã) */145 ESV_SET_I = 0x60, /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çä¸è¦ï¼*/146 ESV_SET_C = 0x61, /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çè¦ï¼*/147 ESV_GET = 0x62, /* ããããã£å¤èªã¿åºãè¦æ±*/148 ESV_INF_REQ = 0x63, /* ããããã£å¤éç¥è¦æ±*/149 ESV_SET_GET = 0x6E, /* ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±*/150 ESV_SET_RES = 0x71, /* ããããã£å¤æ¸ãè¾¼ã¿å¿ç*/151 ESV_GET_RES = 0x72, /* ããããã£å¤èªã¿åºãå¿ç*/152 ESV_INF = 0x73, /* ããããã£å¤éç¥*/153 ESV_INFC = 0x74, /* ããããã£å¤éç¥ï¼å¿çè¦ï¼*/154 ESV_INFC_RES = 0x7A, /* ããããã£å¤éç¥å¿ç*/155 ESV_SET_GET_RES = 0x7E, /* ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãå¿ç*/156 ESV_SET_I_SNA = 0x50, /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ä¸å¯å¿ç*/157 ESV_SET_C_SNA = 0x51, /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ä¸å¯å¿ç*/158 ESV_GET_SNA = 0x52, /* ããããã£å¤èªã¿åºãä¸å¯å¿ç*/159 ESV_INF_SNA = 0x53, /* ããããã£å¤éç¥ä¸å¯å¿ç*/160 ESV_SET_GET_SNA = 0x5E /* ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãä¸å¯å¿ç*/125 ESV_NOP = 0, /* (機能指定なし) */ 126 ESV_SET_I = 0x60, /* プロパティ値書き込み要求(応答不要) */ 127 ESV_SET_C = 0x61, /* プロパティ値書き込み要求(応答要) */ 128 ESV_GET = 0x62, /* プロパティ値読み出し要求 */ 129 ESV_INF_REQ = 0x63, /* プロパティ値通知要求 */ 130 ESV_SET_GET = 0x6E, /* プロパティ値書き込み・読み出し要求 */ 131 ESV_SET_RES = 0x71, /* プロパティ値書き込み応答 */ 132 ESV_GET_RES = 0x72, /* プロパティ値読み出し応答 */ 133 ESV_INF = 0x73, /* プロパティ値通知 */ 134 ESV_INFC = 0x74, /* プロパティ値通知(応答要) */ 135 ESV_INFC_RES = 0x7A, /* プロパティ値通知応答 */ 136 ESV_SET_GET_RES = 0x7E, /* プロパティ値書き込み・読み出し応答 */ 137 ESV_SET_I_SNA = 0x50, /* プロパティ値書き込み要求不可応答 */ 138 ESV_SET_C_SNA = 0x51, /* プロパティ値書き込み要求不可応答 */ 139 ESV_GET_SNA = 0x52, /* プロパティ値読み出し不可応答 */ 140 ESV_INF_SNA = 0x53, /* プロパティ値通知不可応答 */ 141 ESV_SET_GET_SNA = 0x5E /* プロパティ値書き込み・読み出し不可応答 */ 161 142 } ECN_SRV_CODE; 162 143 … … 173 154 174 155 /* 175 * ECHONET Lite é»æãããã¼156 * ECHONET Lite電文ヘッダー 176 157 */ 177 158 typedef struct 178 159 { 179 uint8_t ehd1; /* ECHONET Lite é»æãããã¼1 ECN_EHD1_ECL_VERSION */180 uint8_t ehd2; /* ECHONET Lite é»æãããã¼2 ECN_EHD2_FORMAT */181 uint16_t tid; /* ãã©ã³ã¶ã¯ã·ã§ã³ID */160 uint8_t ehd1; /* ECHONET Lite電文ヘッダー1 ECN_EHD1_ECL_VERSION */ 161 uint8_t ehd2; /* ECHONET Lite電文ヘッダー2 ECN_EHD2_FORMAT */ 162 uint16_t tid; /* トランザクションID */ 182 163 } __attribute__((packed)) T_ECN_HDR; 183 164 184 165 /* 185 * ECHONET Lite ãªãã¸ã§ã¯ãã³ã¼ã166 * ECHONET Liteオブジェクトコード 186 167 */ 187 168 typedef struct 188 169 { 189 uint8_t eojx1; /* ã¯ã©ã¹ã°ã«ã¼ãã³ã¼ã*/190 uint8_t eojx2; /* ã¯ã©ã¹ã³ã¼ã*/191 uint8_t eojx3; /* ã¤ã³ã¹ã¿ã³ã¹ã³ã¼ã*/170 uint8_t eojx1; /* クラスグループコード */ 171 uint8_t eojx2; /* クラスコード */ 172 uint8_t eojx3; /* インスタンスコード */ 192 173 } __attribute__((packed)) T_ECN_EOJ; 193 174 194 175 /* 195 * ECHONET Lite ãã¼ã¿ãããã¼176 * ECHONET Liteデータヘッダー 196 177 */ 197 178 typedef struct 198 179 { 199 T_ECN_EOJ seoj; /* éä¿¡å 200 ECHONET Liteãªãã¸ã§ã¯ãæå® */ 201 T_ECN_EOJ deoj; /* ç¸æå 202 ECHONET Liteãªãã¸ã§ã¯ãæå® */ 203 uint8_t esv; /* ECHONET Liteãµã¼ãã¹ (ECN_SRV_CODE) */ 204 uint8_t opc; /* å¦çããããã£æ° */ 180 T_ECN_EOJ seoj; /* 送信元ECHONET Liteオブジェクト指定 */ 181 T_ECN_EOJ deoj; /* 相手先ECHONET Liteオブジェクト指定 */ 182 uint8_t esv; /* ECHONET Liteサービス (ECN_SRV_CODE) */ 183 uint8_t opc; /* 処理プロパティ数 */ 205 184 } __attribute__((packed)) T_ECN_EDATA_BODY; 206 185 207 186 /* 208 * ECHONET Lite ããããã£187 * ECHONET Liteプロパティ 209 188 */ 210 189 typedef struct 211 190 { 212 uint8_t epc; /* ECHONET Lite ããããã£ã³ã¼ã*/213 uint8_t pdc; /* EDT ã®ãã¤ãæ°*/214 /*void *p_edt;*/ /* ããããã£å¤ãã¼ã¿*/191 uint8_t epc; /* ECHONET Liteプロパティコード */ 192 uint8_t pdc; /* EDTのバイト数 */ 193 /*void *p_edt;*/ /* プロパティ値データ */ 215 194 } __attribute__((packed)) T_ECN_PRP; 216 195 217 196 /* 218 * ECHONET Lite ãã¼ã¿197 * ECHONET Liteデータ 219 198 */ 220 199 typedef struct … … 226 205 227 206 /* 228 * ECHONET Lite é»æ207 * ECHONET Lite 電文 229 208 */ 230 209 typedef struct echonet_object_data … … 246 225 247 226 /* 248 * å¿çé»æ解æã¤ãã¬ã¼ã¿ã¼227 * 応答電文解析イテレーター 249 228 */ 250 229 typedef struct echonet_epc_enumerator 251 230 { 252 231 T_EDATA *pk_esv; 253 uint8_t count; /* ä»èªã¿åãä¸ã®ãããã¯ã«ããããããã£ç·æ°*/254 uint8_t got_ct; /* ä»èªã¿åãä¸ã®ãããã¯ã§ãèªã¿åã£ãæ°*/255 uint8_t next_blk_ct; /* å¾ç¶ãããã¯æ°*/256 uint8_t is_eof; /* çµç«¯ã«éããæãé0 */232 uint8_t count; /* 今読み取り中のブロックにあるプロパティ総数 */ 233 uint8_t got_ct; /* 今読み取り中のブロックで、読み取った数 */ 234 uint8_t next_blk_ct; /* 後続ブロック数 */ 235 uint8_t is_eof; /* 終端に達した時、非0 */ 257 236 int cur; 258 237 } T_ENUM_EPC; … … 263 242 264 243 /* 265 * ECHONET Lite ããããã£ã®è¨å®é¢æ°244 * ECHONET Lite プロパティの設定関数 266 245 */ 267 246 typedef int (EPRP_SETTER)(ecnl_svc_task_t *svc, const EPRPINIB *item, const void *src, int size, bool_t *anno); 268 247 269 248 /* 270 * ECHONET Lite ããããã£ã®åå¾é¢æ°249 * ECHONET Lite プロパティの取得関数 271 250 */ 272 251 typedef int (EPRP_GETTER)(ecnl_svc_task_t *svc, const EPRPINIB *item, void *dst, int size); 273 252 274 253 /* 275 * ECHONET Lite ããããã£åæåãããã¯254 * ECHONET Lite プロパティ初期化ブロック 276 255 */ 277 256 struct echonet_property_initialization_block 278 257 { 279 uint8_t eprpcd; /* ECHONET Lite ããããã£ã³ã¼ã */ 280 ATR eprpatr; /* ECHONET Lite ããããã£å±æ§ */ 281 uint8_t eprpsz; /* ECHONET Lite ããããã£ã®ãµã¤ãº */ 282 intptr_t exinf; /* ECHONET Lite ããããã£ã®æ¡å¼µæ 283 å ± */ 284 EPRP_SETTER *eprpset; /* ECHONET Lite ããããã£ã®è¨å®é¢æ° */ 285 EPRP_GETTER *eprpget; /* ECHONET Lite ããããã£ã®åå¾é¢æ° */ 258 uint8_t eprpcd; /* ECHONET Lite プロパティコード */ 259 ATR eprpatr; /* ECHONET Lite プロパティ属性 */ 260 uint8_t eprpsz; /* ECHONET Lite プロパティのサイズ */ 261 intptr_t exinf; /* ECHONET Lite プロパティの拡張情報 */ 262 EPRP_SETTER *eprpset; /* ECHONET Lite プロパティの設定関数 */ 263 EPRP_GETTER *eprpget; /* ECHONET Lite プロパティの取得関数 */ 286 264 }; 287 265 288 #define TMIN_EOBJID 1 /* ECHONET Lite ãªãã¸ã§ã¯ãIDã®æå°å¤*/289 290 /* 291 * ECHONET Lite ãªãã¸ã§ã¯ãåæåãããã¯266 #define TMIN_EOBJID 1 /* ECHONET Lite オブジェクトIDの最小値 */ 267 268 /* 269 * ECHONET Lite オブジェクト初期化ブロック 292 270 */ 293 271 typedef struct echonet_object_initialization_block 294 272 { 295 ATR eobjatr; /* ECHONET Lite ãªãã¸ã§ã¯ãå±æ§ */ 296 ID enodid; /* ECHONET Lite ãã¼ããããã¡ã¤ã«ãªãã¸ã§ã¯ãID */ 297 intptr_t exinf; /* ECHONET Lite ãªãã¸ã§ã¯ãã®æ¡å¼µæ 298 å ± */ 299 uint8_t eojx1; /* ECHONET Lite ãªãã¸ã§ã¯ãã®ã¯ã©ã¹ã°ã«ã¼ãã³ã¼ã */ 300 uint8_t eojx2; /* ECHONET Lite ãªãã¸ã§ã¯ãã®ã¯ã©ã¹ã³ã¼ã */ 301 uint8_t eojx3; /* ECHONET Lite ãªãã¸ã§ã¯ãã®ã¤ã³ã¹ã¿ã³ã¹ã³ã¼ã */ 302 const EPRPINIB **eprp; /* ECHONET Lite ããããã£åæåããã㯠*/ 303 uint_t eprpcnt; /* ECHONET Lite ããããã£åæåãããã¯æ° */ 273 ATR eobjatr; /* ECHONET Lite オブジェクト属性 */ 274 ID enodid; /* ECHONET Lite ノードプロファイルオブジェクトID */ 275 intptr_t exinf; /* ECHONET Lite オブジェクトの拡張情報 */ 276 uint8_t eojx1; /* ECHONET Lite オブジェクトのクラスグループコード */ 277 uint8_t eojx2; /* ECHONET Lite オブジェクトのクラスコード */ 278 uint8_t eojx3; /* ECHONET Lite オブジェクトのインスタンスコード */ 279 const EPRPINIB **eprp; /* ECHONET Lite プロパティ初期化ブロック */ 280 uint_t eprpcnt; /* ECHONET Lite プロパティ初期化ブロック数 */ 304 281 } EOBJINIB; 305 282 306 283 /* 307 * ECHONET Lite ãã¼ã管çãããã¯284 * ECHONET Lite ノード管理ブロック 308 285 */ 309 286 typedef struct echonet_object_control_block 310 287 { 311 const EOBJINIB *profile; /* ECHONET Lite ãã¼ããããã¡ã¤ã«ã¸ã®ãã¤ã³ã¿*/312 const EOBJINIB **eobjs; /* ECHONET Lite ãªãã¸ã§ã¯ããªã¹ãã¸ã®ãã¤ã³ã¿*/313 uint_t eobjcnt; /* ECHONET Lite ãªãã¸ã§ã¯ãæ°*/288 const EOBJINIB *profile; /* ECHONET Lite ノードプロファイルへのポインタ */ 289 const EOBJINIB **eobjs; /* ECHONET Lite オブジェクトリストへのポインタ */ 290 uint_t eobjcnt; /* ECHONET Lite オブジェクト数 */ 314 291 } EOBJCB; 315 292 316 293 /* 317 * ECHONET Lite ãªãã¸ã§ã¯ãæ©è½ã®åæå294 * ECHONET Lite オブジェクト機能の初期化 318 295 */ 319 296 extern void initialize_echonet_object(void); … … 324 301 325 302 /* 326 * ECHONET Lite ãµã¼ãã¹å¦çéå§303 * ECHONET Liteサービス処理開始 327 304 */ 328 305 ER ecn_sta_svc(ecnl_svc_task_t *svc); 329 306 330 307 /* 331 * ECHONETãªãã¸ã§ã¯ãåç 332 § 308 * ECHONETオブジェクト参照 333 309 */ 334 310 ER ecn_ref_eobj(ecnl_svc_task_t *svc, ID eobjid, T_REOBJ *pk_eobj); 335 311 336 312 /* 337 * ECHONETããããã£åç 338 § 313 * ECHONETプロパティ参照 339 314 */ 340 315 ER ecn_ref_eprp(ecnl_svc_task_t *svc, ID eobjid, uint8_t epc, T_RPRP *pk_eprp); 341 316 342 317 /* 343 * ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çä¸è¦ï¼é»æä½æ318 * プロパティ値書き込み要求(応答不要)電文作成 344 319 */ 345 320 ER ecn_esv_seti(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt); 346 321 347 322 /* 348 * ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çè¦ï¼é»æä½æ323 * プロパティ値書き込み要求(応答要)電文作成 349 324 */ 350 325 ER ecn_esv_setc(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt); 351 326 352 327 /* 353 * ããããã£å¤èªã¿åºãè¦æ±é»æä½æ328 * プロパティ値読み出し要求電文作成 354 329 */ 355 330 ER ecn_esv_get(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, uint8_t epc); 356 331 357 332 /* 358 * ããããã£å¤éç¥è¦æ±é»æä½æ333 * プロパティ値通知要求電文作成 359 334 */ 360 335 ER ecn_esv_inf_req(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, uint8_t epc); 361 336 362 337 /* 363 * ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±é»æä½æ338 * プロパティ値書き込み・読み出し要求電文作成 364 339 */ 365 340 ER ecn_esv_set_get(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt); 366 341 367 342 /* 368 * ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±é»ææãè¿ãæå®343 * プロパティ値書き込み・読み出し要求電文折り返し指定 369 344 */ 370 345 ER ecn_trn_set_get(mrb_state *mrb, T_EDATA *pk_esv, int *p_trn_pos); 371 346 372 347 /* 373 * ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±é»æçµäºæå®348 * プロパティ値書き込み・読み出し要求電文終了指定 374 349 */ 375 350 ER ecn_end_set_get(mrb_state *mrb, T_EDATA *pk_esv, int trn_pos); 376 351 377 352 /* 378 * ããããã£å¤éç¥ï¼å¿çè¦ï¼é»æä½æ353 * プロパティ値通知(応答要)電文作成 379 354 */ 380 355 ER ecn_esv_infc(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, ID seobjid, uint8_t sepc); 381 356 382 357 /* 383 * è¦æ±é»æã¸ã®ããããã£æå®è¿½å358 * 要求電文へのプロパティ指定追加 384 359 */ 385 360 ER ecn_add_epc(mrb_state *mrb, T_EDATA *pk_esv, uint8_t epc); 386 361 387 362 /* 388 * è¦æ±é»æã¸ã®ããããã£ãã¼ã¿è¿½å363 * 要求電文へのプロパティデータ追加 389 364 */ 390 365 ER ecn_add_edt(mrb_state *mrb, T_EDATA *pk_esv, uint8_t epc, uint8_t pdc, const void *p_edt); 391 366 392 367 /* 393 * è¦æ±é»æã®éä¿¡368 * 要求電文の送信 394 369 */ 395 370 ER ecn_snd_esv(ecnl_svc_task_t *svc, T_EDATA *pk_esv); 396 371 397 372 /* 398 * å¿çé»æã®åä¿¡ãã¼ãªã³ã°373 * 応答電文の受信ポーリング 399 374 */ 400 375 ER ecn_prcv_esv(ecnl_svc_task_t *svc, T_EDATA **ppk_esv); 401 376 402 377 /* 403 * å¿çé»æã®ç ´æ£378 * 応答電文の破棄 404 379 */ 405 380 ER ecn_rel_esv(mrb_state *mrb, T_EDATA *pk_esv); 406 381 407 382 /* 408 * å¿çé»æã®éä¿¡å 409 ãã¼ããåå¾ãã 383 * 応答電文の送信元ノードを取得する 410 384 */ 411 385 ID ecn_get_enod(ecnl_svc_task_t *svc, T_EDATA *pk_esv); 412 386 413 387 /* 414 * å¿çé»æã®éä¿¡å 415 æ©å¨ãªãã¸ã§ã¯ããåå¾ãã 388 * 応答電文の送信元機器オブジェクトを取得する 416 389 */ 417 390 ID ecn_get_eobj(ecnl_svc_task_t *svc, T_EDATA *pk_esv); 418 391 419 392 /* 420 * å¿çé»æ解æã¤ãã¬ã¼ã¿ã¼åæå393 * 応答電文解析イテレーター初期化 421 394 */ 422 395 ER ecn_itr_ini(T_ENUM_EPC *pk_itr, T_EDATA *pk_esv); 423 396 424 397 /* 425 * å¿çé»æ解æã¤ãã¬ã¼ã¿ã¼ã¤ã³ã¯ãªã¡ã³ã398 * 応答電文解析イテレーターインクリメント 426 399 */ 427 400 ER ecn_itr_nxt(mrb_state *mrb, T_ENUM_EPC *pk_itr, uint8_t *p_epc, uint8_t *p_pdc, void *p_edt); 428 401 429 402 /* 430 * å¿çé»æå¾ 431 ã¡ã®å²ãè¾¼ã¿éä¿¡ 403 * 応答電文待ちの割り込み送信 432 404 */ 433 405 ER ecn_brk_wai(ecnl_svc_task_t *svc, const void *p_dat, int datsz); 434 406 435 407 /* 436 * å²ãè¾¼ã¿ãã¼ã¿ã®åå¾408 * 割り込みデータの取得 437 409 */ 438 410 ER ecn_get_brk_dat(mrb_state *mrb, T_EDATA *pk_esv, void *p_buf, int bufsz, int *p_datsz); 439 411 440 412 /* 441 * ãã¼ã¿è¨å®é¢æ°413 * データ設定関数 442 414 */ 443 415 int ecn_data_prop_set(ecnl_svc_task_t *svc, const EPRPINIB *item, const void *src, int size, bool_t *anno); 444 416 445 417 /* 446 * ãã¼ã¿åå¾é¢æ°418 * データ取得関数 447 419 */ 448 420 int ecn_data_prop_get(ecnl_svc_task_t *svc, const EPRPINIB *item, void *dst, int size);
Note:
See TracChangeset
for help on using the changeset viewer.