Changeset 167 for UsbWattMeter/trunk/ecnl_lwip/echonet_fbs.h
- Timestamp:
- Mar 8, 2016, 8:37:45 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
UsbWattMeter/trunk/ecnl_lwip/echonet_fbs.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêĢ鱯D 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 17 * Ì³ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 32 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨ 34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI 35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF 36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC» 37 * ÌÓCðíÈ¢D 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 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ … … 41 37 42 38 /* 43 * Åè·obt@ÂÏ·Xg[39 * 固定長バッファ可変長ストリーム 44 40 */ 45 41 … … 55 51 56 52 #ifndef ECHONET_MEMPOOL_GET_TMO 57 #define ECHONET_MEMPOOL_GET_TMO (0) /* v[æ¾Ì^CAEgwè*/53 #define ECHONET_MEMPOOL_GET_TMO (0) /* メモリプール取得時のタイムアウト指定 */ 58 54 #endif /* ECHONET_MEMPOOL_GET_TMO */ 59 55 60 56 #ifndef NUM_ECHONET_MEMPOOL_BLOCK 61 #define NUM_ECHONET_MEMPOOL_BLOCK (60) /* d¶pubNÌ*/57 #define NUM_ECHONET_MEMPOOL_BLOCK (60) /* 電文用メモリブロックの数 */ 62 58 #endif /* NUM_ECHONET_MEMPOOL_BLOCK */ 63 59 64 60 #ifndef ECHONET_MEMPOOL_BLOCK_SIZE 65 #define ECHONET_MEMPOOL_BLOCK_SIZE (256) /* d¶pubNÌTCY*/61 #define ECHONET_MEMPOOL_BLOCK_SIZE (256) /* 電文用メモリブロックのサイズ */ 66 62 #endif /* ECHONET_MEMPOOL_BLOCK_SIZE */ 67 63 68 typedef unsigned int ECN_FBS_SIZE_T; /* size_t */69 typedef int ECN_FBS_SSIZE_T; /* ssize_t */70 71 /* T_EDATA ÇÌæTCY*/64 typedef unsigned int ECN_FBS_SIZE_T; /* size_t相当 */ 65 typedef int ECN_FBS_SSIZE_T; /* ssize_t相当 */ 66 67 /* T_EDATA管理領域サイズ */ 72 68 #ifdef TARGET_KERNEL_ASP 73 69 #define DEF_ECN_EDT_HDR_LEN (sizeof(T_MSG)) … … 76 72 #endif 77 73 78 /* ÇÌæTCY(64byte - sizeof(T_MSG)) */74 /* 管理領域サイズ(64byte - sizeof(T_MSG)) */ 79 75 /* #define DEF_ECN_FBS_LIB_HDR_LEN ((ECHONET_MEMPOOL_BLOCK_SIZE + sizeof(int) - 1)>> 2) // */ 80 76 #define DEF_ECN_FBS_LIB_HDR_LEN (64 - DEF_ECN_EDT_HDR_LEN) 81 77 82 /* ÇÌæðÜÞubNÉÛ·éf[^TCY*/78 /* 管理領域を含むブロックに保持するデータサイズ */ 83 79 #define DEF_ECN_FBS_FST_DAT_LEN (64) 84 80 85 /* N|C^zñÌTCY(byte) */81 /* リンクポインタ配列のサイズ(byte) */ 86 82 #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 83 88 /* Åè·obt@ÅåTCY*/84 /* 固定長バッファ最大サイズ */ 89 85 #define DEF_ECN_FBS_BUF_MAXLEN ((DEF_ECN_FBS_LNK_LEN / sizeof(void *)) * ECHONET_MEMPOOL_BLOCK_SIZE + DEF_ECN_FBS_FST_DAT_LEN) 90 86 91 /* qvfobt@ÌTCY*/87 /* 子要素バッファのサイズ */ 92 88 #define DEF_ECN_FBS_SUB_BUF_LEN ECHONET_MEMPOOL_BLOCK_SIZE 93 89 94 /* d¶ÌíÊ(àeͼ) */90 /* 電文の種別(内容は仮) */ 95 91 typedef enum 96 92 { 97 ECN_FBS_TYPE_BLANK = 0, /* ¢gpXg[*/98 ECN_FBS_TYPE_INTERNAL = 1, /* àbZ[W*/99 ECN_FBS_TYPE_ECHONET = 2 /* ECHONET d¶*/93 ECN_FBS_TYPE_BLANK = 0, /* 未使用ストリーム */ 94 ECN_FBS_TYPE_INTERNAL = 1, /* 内部メッセージ */ 95 ECN_FBS_TYPE_ECHONET = 2 /* ECHONET電文 */ 100 96 } TA_ECN_MSG_TYPE; 101 97 102 /* N|C^zñÉñ³êéAqvfobt@*/98 /* リンクポインタ配列に列挙される、子要素バッファ */ 103 99 typedef struct 104 100 { … … 106 102 } T_ECN_SUB_BLK; 107 103 108 /* N|C^zñ*/104 /* リンクポインタ配列 */ 109 105 typedef union 110 106 { … … 113 109 } T_ECN_FBS_LNK; 114 110 115 /* ÇÌæ(64byte - sizeof(T_MSG)) */111 /* 管理領域(64byte - sizeof(T_MSG)) */ 116 112 typedef struct 117 113 { 118 uint16_t length; /* bZ[W·*/119 uint16_t type; /* bZ[W^Cv*/114 uint16_t length; /* メッセージ長 */ 115 uint16_t type; /* メッセージタイプ */ 120 116 union{ 121 ECN_ENOD_ID id; /* M³m[hIDiECHONETd¶j*/122 ID mbxid; /* M³[{bNXIDiàbZ[Wj*/117 ECN_ENOD_ID id; /* 送信元ノードID(ECHONET電文) */ 118 ID mbxid; /* 送信元メールボックスID(内部メッセージ) */ 123 119 }sender; 124 120 union{ 125 ECN_ENOD_ID id; /* Mæm[hIDiECHONETd¶j*/126 ID mbxid; /* Mæ[{bNXIDiàbZ[Wj*/121 ECN_ENOD_ID id; /* 送信先ノードID(ECHONET電文) */ 122 ID mbxid; /* 送信先メールボックスID(内部メッセージ) */ 127 123 }target; 128 124 union{ 129 ECN_ENOD_ID id; /* ÔMæm[hIDiECHONETd¶j*/130 ID mbxid; /* ÔMæ[{bNXIDiàbZ[Wj*/125 ECN_ENOD_ID id; /* 返信先ノードID(ECHONET電文) */ 126 ID mbxid; /* 返信先メールボックスID(内部メッセージ) */ 131 127 }reply; 132 128 133 int rd; /* ÇÝæèwbhîñ*/134 int wr; /* «Ýwbhîñ*/129 int rd; /* 読み取りヘッド情報 */ 130 int wr; /* 書き込みヘッド情報 */ 135 131 } T_ECN_FBS_HDR; 136 132 137 /* ÇÌæðÜÞubNÌ\¢*/133 /* 管理領域を含むブロックの構造 */ 138 134 typedef struct 139 135 { 140 136 uint8_t _msg[DEF_ECN_EDT_HDR_LEN]; /* T_MSG */ 141 T_ECN_FBS_HDR hdr; /* ÇÌæ64byte - sizeof(T_MSG) */137 T_ECN_FBS_HDR hdr; /* 管理領域 64byte - sizeof(T_MSG) */ 142 138 uint8_t _gap[DEF_ECN_FBS_LIB_HDR_LEN - sizeof(T_ECN_FBS_HDR)]; 143 T_ECN_FBS_LNK lnk; /* N|C^zñ128byte */139 T_ECN_FBS_LNK lnk; /* リンクポインタ配列 128byte */ 144 140 uint8_t payload[DEF_ECN_FBS_FST_DAT_LEN]; 145 141 } T_ECN_FST_BLK; … … 151 147 } ECN_FBS_ID; 152 148 153 /* bZ[WL 154 [ */ 149 /* メッセージキュー */ 155 150 typedef struct ecn_fbs_queue 156 151 { 157 T_ECN_FST_BLK *pk_head; /* æªÌbZ[W*/158 T_ECN_FST_BLK *pk_last; /* öÌbZ[W*/152 T_ECN_FST_BLK *pk_head; /* 先頭のメッセージ */ 153 T_ECN_FST_BLK *pk_last; /* 末尾のメッセージ */ 159 154 } T_ECN_FBS_QUEUE; 160 155 161 156 /* 162 * ÌæmÛ163 * ø164 * ECN_FBS_SIZE_T fa_req_size vobt@TCY(byte)157 * 領域確保 158 * 引数 159 * ECN_FBS_SIZE_T fa_req_size 要求バッファサイズ(byte) 165 160 * max: DEF_ECN_FBS_BUF_MAXLEN 166 * ECN_FBS_ID *fp_id mÛµ½FBS-IDÌi[æ167 * ßèl168 * ER 0:ok ñ0:NG161 * ECN_FBS_ID *fp_id 確保したFBS-IDの格納先 162 * 戻り値 163 * ER 0:ok 非0:NG 169 164 */ 170 165 ER _ecn_fbs_cre(ECN_FBS_SIZE_T fa_req_size, ECN_FBS_ID *fp_id); 171 166 172 167 /* 173 * Ìæðú174 * ø175 * ecn_fbs_id ^ mÛµ½FBS-ID176 * ßèl177 * ER 0:ok, ñ0:NG168 * 領域解放 169 * 引数 170 * ecn_fbs_id型 確保したFBS-ID 171 * 戻り値 172 * ER 0:ok, 非0:NG 178 173 */ 179 174 ER _ecn_fbs_del(ECN_FBS_ID fa_id); 180 175 181 176 /* 182 * Ûf[^ÌL³183 * ø184 * ecn_fbs_id ^ mÛµ½FBS-ID185 * ßèl186 * bool_t 0: ³µ, 1: è177 * 保持データの有無 178 * 引数 179 * ecn_fbs_id型 確保したFBS-ID 180 * 戻り値 181 * bool_t 0:無し, 1:あり 187 182 */ 188 183 bool_t _ecn_fbs_exist_data(ECN_FBS_ID fa_id); 189 184 190 185 /* 191 * Ûf[^·Ìæ¾192 * ø193 * ecn_fbs_id ^ mÛµ½FBS-ID194 * ßèl195 * ECN_FBS_SSIZE_T ۵Ģéf[^Ì·³(byte) -1:NG186 * 保持データ長の取得 187 * 引数 188 * ecn_fbs_id型 確保したFBS-ID 189 * 戻り値 190 * ECN_FBS_SSIZE_T 保持しているデータの長さ(byte) -1:NG 196 191 */ 197 192 ECN_FBS_SSIZE_T _ecn_fbs_get_datalen(ECN_FBS_ID fa_id); 198 193 199 194 /* 200 * ÇÝæèJ[\ÌÊuæ¾201 * ø202 * ecn_fbs_id ^ mÛµ½FBS-ID203 * ßèl204 * ECN_FBS_SIZE_T 檩çÌâÎÊu-1:NG195 * 読み取りカーソルの位置取得 196 * 引数 197 * ecn_fbs_id型 確保したFBS-ID 198 * 戻り値 199 * ECN_FBS_SIZE_T 先頭からの絶対位置 -1:NG 205 200 */ 206 201 ECN_FBS_SSIZE_T _ecn_fbs_get_rpos(ECN_FBS_ID fa_id); 207 202 208 203 /* 209 * ÇÝæèJ[\ÌÊuÝè210 * ø211 * ecn_fbs_id ^ mÛµ½FBS-ID212 * ECN_FBS_SIZE_T fa_pos Ýè·éÊu(檩çÌâÎÊu)213 * ßèl214 * ER 0:ok, ñ0:NG204 * 読み取りカーソルの位置設定 205 * 引数 206 * ecn_fbs_id型 確保したFBS-ID 207 * ECN_FBS_SIZE_T fa_pos 設定する位置(先頭からの絶対位置) 208 * 戻り値 209 * ER 0:ok, 非0:NG 215 210 */ 216 211 ER _ecn_fbs_set_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_pos); 217 212 218 213 /* 219 * ÇÝæèJ[\ÌÊuÚ®220 * ø221 * ecn_fbs_id ^ mÛµ½FBS-ID222 * ECN_FBS_SIZE_T fa_seek Ú®Ê(»óAOiÌÝ)223 * ßèl224 * ER 0:ok, ñ0:NG214 * 読み取りカーソルの位置移動 215 * 引数 216 * ecn_fbs_id型 確保したFBS-ID 217 * ECN_FBS_SIZE_T fa_seek 移動量(現状、前進のみ) 218 * 戻り値 219 * ER 0:ok, 非0:NG 225 220 */ 226 221 ER _ecn_fbs_seek_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek); 227 222 228 223 /* 229 * CÓwèÊuÌ1byteÇÝæè224 * 任意指定位置の1byte読み取り 230 225 */ 231 226 int _ecn_fbs_peek(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek); 232 227 233 228 /* 234 * CÓwèÊuÌ1byte«Ý229 * 任意指定位置の1byte書き込み 235 230 */ 236 231 ER _ecn_fbs_poke(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek, int fa_val); 237 232 238 233 /* 239 * f[^ÇÁ240 * ø241 * ecn_fbs_id ^ mÛµ½FBS-ID242 * const void * fa_dat ÇÁ·éf[^243 * ECN_FBS_SSIZE_T fa_len ÇÁ·é·³(byte)244 * ßèl245 * ER 0:ok, ñ0:NG234 * データ追加 235 * 引数 236 * ecn_fbs_id型 確保したFBS-ID 237 * const void * fa_dat 追加するデータ 238 * ECN_FBS_SSIZE_T fa_len 追加する長さ(byte) 239 * 戻り値 240 * ER 0:ok, 非0:NG 246 241 */ 247 242 ER _ecn_fbs_add_data(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len); 248 243 249 244 /* 250 * f[^ÇÁ(Ìæð©®IÉg£·é)251 * ø252 * ecn_fbs_id ^ mÛµ½FBS-ID253 * const void * fa_dat ÇÁ·éf[^254 * ECN_FBS_SSIZE_T fa_len ÇÁ·é·³(byte)255 * ßèl256 * ER 0:ok, ñ0:NG245 * データ追加(領域を自動的に拡張する) 246 * 引数 247 * ecn_fbs_id型 確保したFBS-ID 248 * const void * fa_dat 追加するデータ 249 * ECN_FBS_SSIZE_T fa_len 追加する長さ(byte) 250 * 戻り値 251 * ER 0:ok, 非0:NG 257 252 */ 258 253 ER _ecn_fbs_add_data_ex(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len); 259 254 260 255 /* 261 * f[^æ¾262 * ø263 * ecn_fbs_id ^ mÛµ½FBS-ID264 * void * fa_buf æ¾·éobt@265 * ECN_FBS_SSIZE_T fa_maxlen æ¾·é·³(byte)266 * ECN_FBS_SSIZE_T *p_len æ¾µ½·³(byte)267 * ßèl268 * ER 0:ok, ñ0:NG256 * データ取得 257 * 引数 258 * ecn_fbs_id型 確保したFBS-ID 259 * void * fa_buf 取得するバッファ 260 * ECN_FBS_SSIZE_T fa_maxlen 取得する長さ(byte) 261 * ECN_FBS_SSIZE_T *p_len 取得した長さ(byte) 262 * 戻り値 263 * ER 0:ok, 非0:NG 269 264 */ 270 265 ER _ecn_fbs_get_data(ECN_FBS_ID fa_id, void *fa_buf, ECN_FBS_SSIZE_T fa_maxlen, -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.