sim: Add minimal/recommended size of file / record

This commit is contained in:
Harald Welte 2014-05-03 14:22:12 +02:00
parent d83d29610a
commit 1e0dfdad69
1 changed files with 27 additions and 13 deletions

View File

@ -156,6 +156,13 @@ struct osim_file_desc {
unsigned int flags;
struct osim_file_ops ops;
struct {
size_t min; /*!< Minimum size of the file
(transparent) or record in
cyclic / linear file */
size_t rec; /*!< Recommended size */
} size;
};
struct osim_file {
@ -165,7 +172,7 @@ struct osim_file {
struct osim_decoded_data *decoded_data;
};
#define EF(pfid, pns, pflags, pnl, ptype, pdec, penc) \
#define EF(pfid, pns, pflags, pnl, ptype, smin, srec, pdec, penc) \
{ \
.fid = pfid, \
.type = TYPE_EF, \
@ -174,23 +181,30 @@ struct osim_file {
.long_name = pnl, \
.flags = pflags, \
.ops = { .encode = penc, .parse = pdec }, \
.size = { .min = smin, .rec = srec}, \
}
#define EF_TRANSP(fid, ns, flags, nl, dec, enc) \
EF(fid, ns, flags, nl, EF_TYPE_TRANSP, dec, enc)
#define EF_TRANSP_N(fid, ns, flags, nl) \
EF_TRANSP(fid, ns, flags, nl, &default_decode, NULL)
#define EF_TRANSP(fid, ns, flags, smin, srec, nl, dec, enc) \
EF(fid, ns, flags, nl, EF_TYPE_TRANSP, \
smin, srec, dec, enc)
#define EF_TRANSP_N(fid, ns, flags, smin, srec, nl) \
EF_TRANSP(fid, ns, flags, smin, srec, \
nl, &default_decode, NULL)
#define EF_CYCLIC(fid, ns, flags, nl, dec, enc) \
EF(fid, ns, flags, nl, EF_TYPE_RECORD_CYCLIC, dec, enc)
#define EF_CYCLIC_N(fid, ns, flags, nl) \
EF_CYCLIC(fid, ns, flags, nl, &default_decode, NULL)
#define EF_CYCLIC(fid, ns, flags, smin, srec, nl, dec, enc) \
EF(fid, ns, flags, nl, EF_TYPE_RECORD_CYCLIC, \
smin, srec, dec, enc)
#define EF_CYCLIC_N(fid, ns, flags, smin, srec, nl) \
EF_CYCLIC(fid, ns, flags, smin, srec, nl, \
&default_decode, NULL)
#define EF_LIN_FIX(fid, ns, flags, nl, dec, enc) \
EF(fid, ns, flags, nl, EF_TYPE_RECORD_FIXED, dec, enc)
#define EF_LIN_FIX_N(fid, ns, flags, nl) \
EF_LIN_FIX(fid, ns, flags, nl, &default_decode, NULL)
#define EF_LIN_FIX(fid, ns, flags, smin, srec, nl, dec, enc) \
EF(fid, ns, flags, nl, EF_TYPE_RECORD_FIXED, \
smin, srec, dec, enc)
#define EF_LIN_FIX_N(fid, sfi, ns, flags, smin, srec, nl) \
EF_LIN_FIX(fid, sfi, ns, flags, smin, srec, nl, \
&default_decode, NULL)
struct osim_file_desc *
osim_file_find_name(struct osim_file_desc *parent, const char *name);