Ignore:
Timestamp:
Aug 23, 2017, 9:27:43 AM (7 years ago)
Author:
coas-nagasima
Message:

文字コードを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_fbs.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    44 *  Copyright (C) 2014-2016 Cores Co., Ltd. Japan
    55 *
    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 è²¬ã™ã‚‹ã“と.
    42  *
    43  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    44 ãŠ
    45  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    46  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    47  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    48  *  の責任を負わない.
    49  *
    50  */
    51 
    52 /*
    53  * 固定長バッファ可変長ストリーム
     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 *  の責任を負わない.
     34 *
     35 */
     36
     37/*
     38 * 固定長バッファ可変長ストリーム
    5439 */
    5540
     
    6651
    6752#ifndef NUM_ECHONET_MEMPOOL_BLOCK
    68 #define NUM_ECHONET_MEMPOOL_BLOCK (60)          /* 電文用メモリブロックの数 */
     53#define NUM_ECHONET_MEMPOOL_BLOCK (60)          /* 電文用メモリブロックの数 */
    6954#endif /* NUM_ECHONET_MEMPOOL_BLOCK */
    7055
    7156#ifndef ECHONET_MEMPOOL_BLOCK_SIZE
    72 #define ECHONET_MEMPOOL_BLOCK_SIZE (256)        /* 電文用メモリブロックのサイズ */
     57#define ECHONET_MEMPOOL_BLOCK_SIZE (256)        /* 電文用メモリブロックのサイズ */
    7358#endif /* ECHONET_MEMPOOL_BLOCK_SIZE */
    7459
    75 typedef unsigned int ECN_FBS_SIZE_T;    /* size_t相当  */
    76 typedef int ECN_FBS_SSIZE_T;                    /* ssize_t相当 */
    77 
    78 /* T_EDATA管理領域サイズ */
     60typedef unsigned int ECN_FBS_SIZE_T;    /* size_t相当  */
     61typedef int ECN_FBS_SSIZE_T;                    /* ssize_t相当 */
     62
     63/* T_EDATA管理領域サイズ */
    7964#define DEF_ECN_EDT_HDR_LEN (sizeof(intptr_t))
    8065
    81 /* 管理領域サイズ(64byte - sizeof(T_MSG)) */
     66/* 管理領域サイズ(64byte - sizeof(T_MSG)) */
    8267/* #define DEF_ECN_FBS_LIB_HDR_LEN ((ECHONET_MEMPOOL_BLOCK_SIZE + sizeof(int) - 1)>> 2) // */
    8368#define DEF_ECN_FBS_LIB_HDR_LEN (64 - DEF_ECN_EDT_HDR_LEN)
    8469
    85 /* 管理領域を含むブロックに保持するデータサイズ */
     70/* 管理領域を含むブロックに保持するデータサイズ */
    8671#define DEF_ECN_FBS_FST_DAT_LEN (64)
    8772
    88 /* リンクポインタé
    89 åˆ—のサイズ(byte) */
     73/* リンクポインタ配列のサイズ(byte) */
    9074#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)
    9175
    92 /* 固定長バッファ最大サイズ */
     76/* 固定長バッファ最大サイズ */
    9377#define DEF_ECN_FBS_BUF_MAXLEN ((DEF_ECN_FBS_LNK_LEN / sizeof(void *)) * ECHONET_MEMPOOL_BLOCK_SIZE + DEF_ECN_FBS_FST_DAT_LEN)
    9478
    95 /* 子要素バッファのサイズ */
     79/* 子要素バッファのサイズ */
    9680#define DEF_ECN_FBS_SUB_BUF_LEN ECHONET_MEMPOOL_BLOCK_SIZE
    9781
    98 /* 電文の種別(å†
    99 å®¹ã¯ä»®) */
     82/* 電文の種別(内容は仮) */
    10083typedef enum
    10184{
    102         ECN_FBS_TYPE_BLANK              =       0,              /* 未使用ストリーム */
    103         ECN_FBS_TYPE_INTERNAL   =       1,              /* å†
    104 éƒ¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ */
    105         ECN_FBS_TYPE_ECHONET    =       2               /* ECHONET電文 */
     85        ECN_FBS_TYPE_BLANK              =       0,              /* 未使用ストリーム */
     86        ECN_FBS_TYPE_INTERNAL   =       1,              /* 内部メッセージ */
     87        ECN_FBS_TYPE_ECHONET    =       2               /* ECHONET電文 */
    10688} TA_ECN_MSG_TYPE;
    10789
    108 /* リンクポインタé
    109 åˆ—に列挙される、子要素バッファ */
     90/* リンクポインタ配列に列挙される、子要素バッファ */
    11091typedef struct
    11192{
     
    11394} T_ECN_SUB_BLK;
    11495
    115 /* リンクポインタé
    116 åˆ— */
     96/* リンクポインタ配列 */
    11797typedef union
    11898{
     
    121101} T_ECN_FBS_LNK;
    122102
    123 /* 管理領域(64byte - sizeof(T_MSG)) */
     103/* 管理領域(64byte - sizeof(T_MSG)) */
    124104typedef struct
    125105{
    126         uint16_t        length;                 /* メッセージ長 */
    127         uint16_t        type;                   /* メッセージタイプ */
     106        uint16_t        length;                 /* メッセージ長 */
     107        uint16_t        type;                   /* メッセージタイプ */
    128108        union{
    129                 ECN_ENOD_ID id;                 /* 送信å
    130 ƒãƒŽãƒ¼ãƒ‰ID(ECHONET電文) */
    131                 struct ecn_fbs_queue *mbxid;    /* 送信å
    132 ƒãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ID(å†
    133 éƒ¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼‰ */
     109                ECN_ENOD_ID id;                 /* 送信元ノードID(ECHONET電文) */
     110                struct ecn_fbs_queue *mbxid;    /* 送信元メールボックスID(内部メッセージ) */
    134111        }sender;
    135112        union{
    136                 ECN_ENOD_ID id;                 /* 送信å
    137 ˆãƒŽãƒ¼ãƒ‰ID(ECHONET電文) */
    138                 struct ecn_fbs_queue *mbxid;    /* 送信å
    139 ˆãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ID(å†
    140 éƒ¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼‰ */
     113                ECN_ENOD_ID id;                 /* 送信先ノードID(ECHONET電文) */
     114                struct ecn_fbs_queue *mbxid;    /* 送信先メールボックスID(内部メッセージ) */
    141115        }target;
    142116        union{
    143                 ECN_ENOD_ID id;                 /* 返信å
    144 ˆãƒŽãƒ¼ãƒ‰ID(ECHONET電文) */
    145                 struct ecn_fbs_queue *mbxid;    /* 返信å
    146 ˆãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ID(å†
    147 éƒ¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼‰ */
     117                ECN_ENOD_ID id;                 /* 返信先ノードID(ECHONET電文) */
     118                struct ecn_fbs_queue *mbxid;    /* 返信先メールボックスID(内部メッセージ) */
    148119        }reply;
    149120
    150         int                     rd;                             /*      読み取りヘッドæƒ
    151 å ±     */
    152         int                     wr;                             /*      書き込みヘッドæƒ
    153 å ±     */
     121        int                     rd;                             /*      読み取りヘッド情報       */
     122        int                     wr;                             /*      書き込みヘッド情報       */
    154123} T_ECN_FBS_HDR;
    155124
    156 /* 管理領域を含むブロックの構造 */
     125/* 管理領域を含むブロックの構造 */
    157126typedef struct
    158127{
    159128        uint8_t _msg[DEF_ECN_EDT_HDR_LEN];      /* T_MSG */
    160         T_ECN_FBS_HDR   hdr;    /*      管理領域  64byte  - sizeof(T_MSG)   */
     129        T_ECN_FBS_HDR   hdr;    /*      管理領域  64byte  - sizeof(T_MSG)   */
    161130        uint8_t                 _gap[DEF_ECN_FBS_LIB_HDR_LEN - sizeof(T_ECN_FBS_HDR)];
    162         T_ECN_FBS_LNK   lnk;    /*      リンクポインタé
    163 åˆ—    128byte                 */
     131        T_ECN_FBS_LNK   lnk;    /*      リンクポインタ配列       128byte                 */
    164132        uint8_t                 payload[DEF_ECN_FBS_FST_DAT_LEN];
    165133} T_ECN_FST_BLK;
     
    171139} ECN_FBS_ID;
    172140
    173 /* メッセージキュー */
     141/* メッセージキュー */
    174142typedef struct ecn_fbs_queue
    175143{
    176         T_ECN_FST_BLK   *pk_head;               /* å
    177 ˆé ­ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ */
    178         T_ECN_FST_BLK   *pk_last;               /* 末尾のメッセージ */
     144        T_ECN_FST_BLK   *pk_head;               /* 先頭のメッセージ */
     145        T_ECN_FST_BLK   *pk_last;               /* 末尾のメッセージ */
    179146} T_ECN_FBS_QUEUE;
    180147
    181 /* メモリブロック取得 ok:ポインタ NG:NULL */
     148/* メモリブロック取得 ok:ポインタ NG:NULL */
    182149void *_ecn_fbs_mbx_get(mrb_state *mrb, ECN_FBS_SIZE_T fa_req_size);
    183150
    184 /* メモリブロック解放 ok:0 NG:非0 */
     151/* メモリブロック解放 ok:0 NG:非0 */
    185152ER _ecn_fbs_mbx_rel(mrb_state *mrb, void *p);
    186153
    187154/*
    188  * 領域確保
    189  *      引数
    190  *              ECN_FBS_SIZE_T  fa_req_size             è¦æ±‚バッファサイズ(byte)
     155 * 領域確保
     156 *      引数
     157 *              ECN_FBS_SIZE_T  fa_req_size             要求バッファサイズ(byte)
    191158 *                                                                              max: DEF_ECN_FBS_BUF_MAXLEN
    192  *              ECN_FBS_ID              *fp_id                  確保したFBS-IDの格納å
    193 ˆ
    194  *      戻り値
    195  *              ER                              0:ok 非0:NG
     159 *              ECN_FBS_ID              *fp_id                  確保したFBS-IDの格納先
     160 *      戻り値
     161 *              ER                              0:ok 非0:NG
    196162 */
    197163ER _ecn_fbs_cre(mrb_state *mrb, ECN_FBS_SIZE_T fa_req_size, ECN_FBS_ID *fp_id);
    198164
    199165/*
    200  * 領域解放
    201  *      引数
    202  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    203  *      戻り値
    204  *              ER                              0:ok, 非0:NG
     166 * 領域解放
     167 *      引数
     168 *              ecn_fbs_id型     確保したFBS-ID
     169 *      戻り値
     170 *              ER                              0:ok, 0:NG
    205171 */
    206172ER _ecn_fbs_del(mrb_state *mrb, ECN_FBS_ID fa_id);
    207173
    208174/*
    209  * 保持データの有無
    210  *      引数
    211  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    212  *      戻り値
    213  *              bool_t                  0:無し, 1:あり
     175 * 保持データの有無
     176 *      引数
     177 *              ecn_fbs_id型     確保したFBS-ID
     178 *      戻り値
     179 *              bool_t                  0:無し, 1:あり
    214180 */
    215181bool_t _ecn_fbs_exist_data(ECN_FBS_ID fa_id);
    216182
    217183/*
    218  * 保持データ長の取得
    219  *      引数
    220  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    221  *      戻り値
    222  *              ECN_FBS_SSIZE_T 保持しているデータの長さ(byte) -1:NG
     184 * 保持データ長の取得
     185 *      引数
     186 *              ecn_fbs_id型     確保したFBS-ID
     187 *      戻り値
     188 *              ECN_FBS_SSIZE_T 保持しているデータの長さ(byte) -1:NG
    223189 */
    224190ECN_FBS_SSIZE_T _ecn_fbs_get_datalen(ECN_FBS_ID fa_id);
    225191
    226192/*
    227  * 読み取りカーソルの位置取得
    228  *      引数
    229  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    230  *      戻り値
    231  *              ECN_FBS_SIZE_T  å
    232 ˆé ­ã‹ã‚‰ã®çµ¶å¯¾ä½ç½® -1:NG
     193 * 読み取りカーソルの位置取得
     194 *      引数
     195 *              ecn_fbs_id型     確保したFBS-ID
     196 *      戻り値
     197 *              ECN_FBS_SIZE_T  先頭からの絶対位置 -1:NG
    233198 */
    234199ECN_FBS_SSIZE_T _ecn_fbs_get_rpos(ECN_FBS_ID fa_id);
    235200
    236201/*
    237  * 読み取りカーソルの位置設定
    238  *      引数
    239  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    240  *              ECN_FBS_SIZE_T  fa_pos  設定する位置(å
    241 ˆé ­ã‹ã‚‰ã®çµ¶å¯¾ä½ç½®)
    242  *      戻り値
    243  *              ER                              0:ok, 非0:NG
     202 * 読み取りカーソルの位置設定
     203 *      引数
     204 *              ecn_fbs_id型     確保したFBS-ID
     205 *              ECN_FBS_SIZE_T  fa_pos  設定する位置(先頭からの絶対位置)
     206 *      戻り値
     207 *              ER                              0:ok, 非0:NG
    244208 */
    245209ER _ecn_fbs_set_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_pos);
    246210
    247211/*
    248  * 読み取りカーソルの位置移動
    249  *      引数
    250  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    251  *              ECN_FBS_SIZE_T  fa_seek 移動量(現状、前進のみ)
    252  *      戻り値
    253  *              ER                              0:ok, 非0:NG
     212 * 読み取りカーソルの位置移動
     213 *      引数
     214 *              ecn_fbs_id型     確保したFBS-ID
     215 *              ECN_FBS_SIZE_T  fa_seek 移動量(現状、前進のみ)
     216 *      戻り値
     217 *              ER                              0:ok, 0:NG
    254218 */
    255219ER _ecn_fbs_seek_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek);
    256220
    257221/*
    258  * 任意指定位置の1byte読み取り
     222 * 任意指定位置の1byte読み取り
    259223 */
    260224int _ecn_fbs_peek(mrb_state *mrb, ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek);
    261225
    262226/*
    263  * 任意指定位置の1byte書き込み
     227 * 任意指定位置の1byte書き込み
    264228 */
    265229ER _ecn_fbs_poke(mrb_state *mrb, ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek, int fa_val);
    266230
    267231/*
    268  * データ追加
    269  *      引数
    270  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    271  *              const void *    fa_dat  追加するデータ
    272  *              ECN_FBS_SSIZE_T fa_len  追加する長さ(byte)
    273  *      戻り値
    274  *              ER                              0:ok, 非0:NG
     232 * データ追加
     233 *      引数
     234 *              ecn_fbs_id型     確保したFBS-ID
     235 *              const void *    fa_dat  追加するデータ
     236 *              ECN_FBS_SSIZE_T fa_len  追加する長さ(byte)
     237 *      戻り値
     238 *              ER                              0:ok, 0:NG
    275239 */
    276240ER _ecn_fbs_add_data(mrb_state *mrb, ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len);
    277241
    278242/*
    279  * データ追加(領域を自動的に拡張する)
    280  *      引数
    281  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    282  *              const void *    fa_dat  追加するデータ
    283  *              ECN_FBS_SSIZE_T fa_len  追加する長さ(byte)
    284  *      戻り値
    285  *              ER                              0:ok, 非0:NG
     243 * データ追加(領域を自動的に拡張する)
     244 *      引数
     245 *              ecn_fbs_id型     確保したFBS-ID
     246 *              const void *    fa_dat  追加するデータ
     247 *              ECN_FBS_SSIZE_T fa_len  追加する長さ(byte)
     248 *      戻り値
     249 *              ER                              0:ok, 0:NG
    286250 */
    287251ER _ecn_fbs_add_data_ex(mrb_state *mrb, ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len);
    288252
    289253/*
    290  * データ取得
    291  *      引数
    292  *              ecn_fbs_id型   ç¢ºä¿ã—たFBS-ID
    293  *              void *                  fa_buf          取得するバッファ
    294  *              ECN_FBS_SSIZE_T fa_maxlen       å–得する長さ(byte)
    295  *              ECN_FBS_SSIZE_T *p_len          取得した長さ(byte)
    296  *      戻り値
    297  *              ER                              0:ok, 非0:NG
     254 * データ取得
     255 *      引数
     256 *              ecn_fbs_id型     確保したFBS-ID
     257 *              void *                  fa_buf          取得するバッファ
     258 *              ECN_FBS_SSIZE_T fa_maxlen       取得する長さ(byte)
     259 *              ECN_FBS_SSIZE_T *p_len          取得した長さ(byte)
     260 *      戻り値
     261 *              ER                              0:ok, 0:NG
    298262 */
    299263ER _ecn_fbs_get_data(mrb_state *mrb, ECN_FBS_ID fa_id, void *fa_buf, ECN_FBS_SSIZE_T fa_maxlen,
Note: See TracChangeset for help on using the changeset viewer.