Changeset 107 for uKadecot/trunk/ecnl_ssp/echonet_fbs.h
- Timestamp:
- Jun 10, 2015, 8:40:31 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uKadecot/trunk/ecnl_ssp/echonet_fbs.h
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 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 NUM_ECHONET_MEMPOOL_BLOCK 57 #define NUM_ECHONET_MEMPOOL_BLOCK (60) /* d¶pubNÌ*/53 #define NUM_ECHONET_MEMPOOL_BLOCK (60) /* 電文用メモリブロックの数 */ 58 54 #endif /* NUM_ECHONET_MEMPOOL_BLOCK */ 59 55 60 56 #ifndef ECHONET_MEMPOOL_BLOCK_SIZE 61 #define ECHONET_MEMPOOL_BLOCK_SIZE (256) /* d¶pubNÌTCY*/57 #define ECHONET_MEMPOOL_BLOCK_SIZE (256) /* 電文用メモリブロックのサイズ */ 62 58 #endif /* ECHONET_MEMPOOL_BLOCK_SIZE */ 63 59 64 typedef unsigned int ECN_FBS_SIZE_T; /* size_t */65 typedef int ECN_FBS_SSIZE_T; /* ssize_t */66 67 /* T_EDATA ÇÌæTCY*/60 typedef unsigned int ECN_FBS_SIZE_T; /* size_t相当 */ 61 typedef int ECN_FBS_SSIZE_T; /* ssize_t相当 */ 62 63 /* T_EDATA管理領域サイズ */ 68 64 #ifdef TARGET_KERNEL_ASP 69 65 #define DEF_ECN_EDT_HDR_LEN (sizeof(T_MSG)) … … 72 68 #endif 73 69 74 /* ÇÌæTCY(64byte - sizeof(T_MSG)) */70 /* 管理領域サイズ(64byte - sizeof(T_MSG)) */ 75 71 /* #define DEF_ECN_FBS_LIB_HDR_LEN ((ECHONET_MEMPOOL_BLOCK_SIZE + sizeof(int) - 1)>> 2) // */ 76 72 #define DEF_ECN_FBS_LIB_HDR_LEN (64 - DEF_ECN_EDT_HDR_LEN) 77 73 78 /* ÇÌæðÜÞubNÉÛ·éf[^TCY*/74 /* 管理領域を含むブロックに保持するデータサイズ */ 79 75 #define DEF_ECN_FBS_FST_DAT_LEN (64) 80 76 81 /* N|C^zñÌTCY(byte) */77 /* リンクポインタ配列のサイズ(byte) */ 82 78 #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) 83 79 84 /* Åè·obt@ÅåTCY*/80 /* 固定長バッファ最大サイズ */ 85 81 #define DEF_ECN_FBS_BUF_MAXLEN ((DEF_ECN_FBS_LNK_LEN / sizeof(void *)) * ECHONET_MEMPOOL_BLOCK_SIZE + DEF_ECN_FBS_FST_DAT_LEN) 86 82 87 /* qvfobt@ÌTCY*/83 /* 子要素バッファのサイズ */ 88 84 #define DEF_ECN_FBS_SUB_BUF_LEN ECHONET_MEMPOOL_BLOCK_SIZE 89 85 90 /* d¶ÌíÊ(àeͼ) */86 /* 電文の種別(内容は仮) */ 91 87 typedef enum 92 88 { 93 ECN_FBS_TYPE_BLANK = 0, /* ¢gpXg[*/94 ECN_FBS_TYPE_INTERNAL = 1, /* àbZ[W*/95 ECN_FBS_TYPE_ECHONET = 2 /* ECHONET d¶*/89 ECN_FBS_TYPE_BLANK = 0, /* 未使用ストリーム */ 90 ECN_FBS_TYPE_INTERNAL = 1, /* 内部メッセージ */ 91 ECN_FBS_TYPE_ECHONET = 2 /* ECHONET電文 */ 96 92 } TA_ECN_MSG_TYPE; 97 93 98 /* N|C^zñÉñ³êéAqvfobt@*/94 /* リンクポインタ配列に列挙される、子要素バッファ */ 99 95 typedef struct 100 96 { … … 102 98 } T_ECN_SUB_BLK; 103 99 104 /* N|C^zñ*/100 /* リンクポインタ配列 */ 105 101 typedef union 106 102 { … … 109 105 } T_ECN_FBS_LNK; 110 106 111 /* ÇÌæ(64byte - sizeof(T_MSG)) */107 /* 管理領域(64byte - sizeof(T_MSG)) */ 112 108 typedef struct 113 109 { 114 uint16_t length; /* bZ[W·*/115 uint16_t type; /* bZ[W^Cv*/110 uint16_t length; /* メッセージ長 */ 111 uint16_t type; /* メッセージタイプ */ 116 112 union{ 117 ECN_ENOD_ID sender; /* M³m[hIDiECHONETd¶j*/118 ID sender_mbxid; /* M³[{bNXIDiàbZ[Wj*/113 ECN_ENOD_ID sender; /* 送信元ノードID(ECHONET電文) */ 114 ID sender_mbxid; /* 送信元メールボックスID(内部メッセージ) */ 119 115 }; 120 116 union{ 121 ECN_ENOD_ID target; /* Mæm[hIDiECHONETd¶j*/122 ID target_mbxid; /* Mæ[{bNXIDiàbZ[Wj*/117 ECN_ENOD_ID target; /* 送信先ノードID(ECHONET電文) */ 118 ID target_mbxid; /* 送信先メールボックスID(内部メッセージ) */ 123 119 }; 124 120 union{ 125 ECN_ENOD_ID reply; /* ÔMæm[hIDiECHONETd¶j*/126 ID reply_mbxid; /* ÔMæ[{bNXIDiàbZ[Wj*/121 ECN_ENOD_ID reply; /* 返信先ノードID(ECHONET電文) */ 122 ID reply_mbxid; /* 返信先メールボックスID(内部メッセージ) */ 127 123 }; 128 124 129 int rd; /* ÇÝæèwbhîñ*/130 int wr; /* «Ýwbhîñ*/125 int rd; /* 読み取りヘッド情報 */ 126 int wr; /* 書き込みヘッド情報 */ 131 127 } T_ECN_FBS_HDR; 132 128 133 /* ÇÌæðÜÞubNÌ\¢*/129 /* 管理領域を含むブロックの構造 */ 134 130 typedef struct 135 131 { 136 132 uint8_t _msg[DEF_ECN_EDT_HDR_LEN]; /* T_MSG */ 137 T_ECN_FBS_HDR hdr; /* ÇÌæ64byte - sizeof(T_MSG) */133 T_ECN_FBS_HDR hdr; /* 管理領域 64byte - sizeof(T_MSG) */ 138 134 uint8_t _gap[DEF_ECN_FBS_LIB_HDR_LEN - sizeof(T_ECN_FBS_HDR)]; 139 T_ECN_FBS_LNK lnk; /* N|C^zñ128byte */135 T_ECN_FBS_LNK lnk; /* リンクポインタ配列 128byte */ 140 136 uint8_t payload[DEF_ECN_FBS_FST_DAT_LEN]; 141 137 } T_ECN_FST_BLK; … … 147 143 } ECN_FBS_ID; 148 144 149 /* bZ[WL 150 [ */ 145 /* メッセージキュー */ 151 146 typedef struct ecn_fbs_queue 152 147 { 153 T_ECN_FST_BLK *pk_head; /* æªÌbZ[W*/154 T_ECN_FST_BLK *pk_last; /* öÌbZ[W*/148 T_ECN_FST_BLK *pk_head; /* 先頭のメッセージ */ 149 T_ECN_FST_BLK *pk_last; /* 末尾のメッセージ */ 155 150 } T_ECN_FBS_QUEUE; 156 151 157 /* ubNæ¾ ok:|C^NG:NULL */152 /* メモリブロック取得 ok:ポインタ NG:NULL */ 158 153 void *_ecn_fbs_mbx_get(ECN_FBS_SIZE_T fa_req_size); 159 154 160 /* ubNðú ok:0 NG:ñ0 */155 /* メモリブロック解放 ok:0 NG:非0 */ 161 156 ER _ecn_fbs_mbx_rel(void *p); 162 157 163 158 /* 164 * ÌæmÛ165 * ø166 * ECN_FBS_SIZE_T fa_req_size vobt@TCY(byte)159 * 領域確保 160 * 引数 161 * ECN_FBS_SIZE_T fa_req_size 要求バッファサイズ(byte) 167 162 * max: DEF_ECN_FBS_BUF_MAXLEN 168 * ECN_FBS_ID *fp_id mÛµ½FBS-IDÌi[æ169 * ßèl170 * ER 0:ok ñ0:NG163 * ECN_FBS_ID *fp_id 確保したFBS-IDの格納先 164 * 戻り値 165 * ER 0:ok 非0:NG 171 166 */ 172 167 ER _ecn_fbs_cre(ECN_FBS_SIZE_T fa_req_size, ECN_FBS_ID *fp_id); 173 168 174 169 /* 175 * Ìæðú176 * ø177 * ecn_fbs_id ^ mÛµ½FBS-ID178 * ßèl179 * ER 0:ok, ñ0:NG170 * 領域解放 171 * 引数 172 * ecn_fbs_id型 確保したFBS-ID 173 * 戻り値 174 * ER 0:ok, 非0:NG 180 175 */ 181 176 ER _ecn_fbs_del(ECN_FBS_ID fa_id); 182 177 183 178 /* 184 * Ûf[^ÌL³185 * ø186 * ecn_fbs_id ^ mÛµ½FBS-ID187 * ßèl188 * bool_t 0: ³µ, 1: è179 * 保持データの有無 180 * 引数 181 * ecn_fbs_id型 確保したFBS-ID 182 * 戻り値 183 * bool_t 0:無し, 1:あり 189 184 */ 190 185 bool_t _ecn_fbs_exist_data(ECN_FBS_ID fa_id); 191 186 192 187 /* 193 * Ûf[^·Ìæ¾194 * ø195 * ecn_fbs_id ^ mÛµ½FBS-ID196 * ßèl197 * ECN_FBS_SSIZE_T ۵Ģéf[^Ì·³(byte) -1:NG188 * 保持データ長の取得 189 * 引数 190 * ecn_fbs_id型 確保したFBS-ID 191 * 戻り値 192 * ECN_FBS_SSIZE_T 保持しているデータの長さ(byte) -1:NG 198 193 */ 199 194 ECN_FBS_SSIZE_T _ecn_fbs_get_datalen(ECN_FBS_ID fa_id); 200 195 201 196 /* 202 * ÇÝæèJ[\ÌÊuæ¾203 * ø204 * ecn_fbs_id ^ mÛµ½FBS-ID205 * ßèl206 * ECN_FBS_SIZE_T 檩çÌâÎÊu-1:NG197 * 読み取りカーソルの位置取得 198 * 引数 199 * ecn_fbs_id型 確保したFBS-ID 200 * 戻り値 201 * ECN_FBS_SIZE_T 先頭からの絶対位置 -1:NG 207 202 */ 208 203 ECN_FBS_SSIZE_T _ecn_fbs_get_rpos(ECN_FBS_ID fa_id); 209 204 210 205 /* 211 * ÇÝæèJ[\ÌÊuÝè212 * ø213 * ecn_fbs_id ^ mÛµ½FBS-ID214 * ECN_FBS_SIZE_T fa_pos Ýè·éÊu(檩çÌâÎÊu)215 * ßèl216 * ER 0:ok, ñ0:NG206 * 読み取りカーソルの位置設定 207 * 引数 208 * ecn_fbs_id型 確保したFBS-ID 209 * ECN_FBS_SIZE_T fa_pos 設定する位置(先頭からの絶対位置) 210 * 戻り値 211 * ER 0:ok, 非0:NG 217 212 */ 218 213 ER _ecn_fbs_set_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_pos); 219 214 220 215 /* 221 * ÇÝæèJ[\ÌÊuÚ®222 * ø223 * ecn_fbs_id ^ mÛµ½FBS-ID224 * ECN_FBS_SIZE_T fa_seek Ú®Ê(»óAOiÌÝ)225 * ßèl226 * ER 0:ok, ñ0:NG216 * 読み取りカーソルの位置移動 217 * 引数 218 * ecn_fbs_id型 確保したFBS-ID 219 * ECN_FBS_SIZE_T fa_seek 移動量(現状、前進のみ) 220 * 戻り値 221 * ER 0:ok, 非0:NG 227 222 */ 228 223 ER _ecn_fbs_seek_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek); 229 224 230 225 /* 231 * CÓwèÊuÌ1byteÇÝæè226 * 任意指定位置の1byte読み取り 232 227 */ 233 228 int _ecn_fbs_peek(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek); 234 229 235 230 /* 236 * CÓwèÊuÌ1byte«Ý231 * 任意指定位置の1byte書き込み 237 232 */ 238 233 ER _ecn_fbs_poke(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek, int fa_val); 239 234 240 235 /* 241 * f[^ÇÁ242 * ø243 * ecn_fbs_id ^ mÛµ½FBS-ID244 * const void * fa_dat ÇÁ·éf[^245 * ECN_FBS_SSIZE_T fa_len ÇÁ·é·³(byte)246 * ßèl247 * ER 0:ok, ñ0:NG236 * データ追加 237 * 引数 238 * ecn_fbs_id型 確保したFBS-ID 239 * const void * fa_dat 追加するデータ 240 * ECN_FBS_SSIZE_T fa_len 追加する長さ(byte) 241 * 戻り値 242 * ER 0:ok, 非0:NG 248 243 */ 249 244 ER _ecn_fbs_add_data(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len); 250 245 251 246 /* 252 * f[^ÇÁ(Ìæð©®IÉg£·é)253 * ø254 * ecn_fbs_id ^ mÛµ½FBS-ID255 * const void * fa_dat ÇÁ·éf[^256 * ECN_FBS_SSIZE_T fa_len ÇÁ·é·³(byte)257 * ßèl258 * ER 0:ok, ñ0:NG247 * データ追加(領域を自動的に拡張する) 248 * 引数 249 * ecn_fbs_id型 確保したFBS-ID 250 * const void * fa_dat 追加するデータ 251 * ECN_FBS_SSIZE_T fa_len 追加する長さ(byte) 252 * 戻り値 253 * ER 0:ok, 非0:NG 259 254 */ 260 255 ER _ecn_fbs_add_data_ex(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len); 261 256 262 257 /* 263 * f[^æ¾264 * ø265 * ecn_fbs_id ^ mÛµ½FBS-ID266 * void * fa_buf æ¾·éobt@267 * ECN_FBS_SSIZE_T fa_maxlen æ¾·é·³(byte)268 * ECN_FBS_SSIZE_T *p_len æ¾µ½·³(byte)269 * ßèl270 * ER 0:ok, ñ0:NG258 * データ取得 259 * 引数 260 * ecn_fbs_id型 確保したFBS-ID 261 * void * fa_buf 取得するバッファ 262 * ECN_FBS_SSIZE_T fa_maxlen 取得する長さ(byte) 263 * ECN_FBS_SSIZE_T *p_len 取得した長さ(byte) 264 * 戻り値 265 * ER 0:ok, 非0:NG 271 266 */ 272 267 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.