Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
regression-suites
Commits
b157e436
Commit
b157e436
authored
Oct 05, 2017
by
Thanassis Tsiodras
Browse files
Add an RTEMS build via Gaisler's RTEMS4.10
parent
4abfc715
Changes
9
Hide whitespace changes
Inline
Side-by-side
Demo_C_RTEMS_Gaisler/.gitignore
0 → 100644
View file @
b157e436
simple_c_function.zip
Demo_C_RTEMS_Gaisler/DataView.asn
0 → 100644
View file @
b157e436
DataView DEFINITIONS ::=
BEGIN
MyInteger ::= INTEGER (0..65535)
END
Demo_C_RTEMS_Gaisler/DeploymentView.aadl
0 → 100644
View file @
b157e436
---------------------------------------------------
-- AADL2.0
-- TASTE
-- (c)Ellidiss Technologies
--
---------------------------------------------------
PACKAGE deploymentview::DV::Node1
PUBLIC
WITH Taste;
WITH Deployment;
WITH TASTE_DV_Properties;
PROCESS leon_partition
END leon_partition;
PROCESS IMPLEMENTATION leon_partition.others
END leon_partition.others;
END deploymentview::DV::Node1;
PACKAGE deploymentview::DV
PUBLIC
WITH ocarina_processors_leon;
WITH deploymentview::DV::Node1;
WITH Taste;
WITH Deployment;
WITH interfaceview::IV;
WITH TASTE_DV_Properties;
SYSTEM Node1
END Node1;
SYSTEM IMPLEMENTATION Node1.others
SUBCOMPONENTS
IV_Simple_C_Function : SYSTEM interfaceview::IV::Simple_C_Function.others {
Taste::coordinates => "903 923 1729 1416";
Taste::FunctionName => "Simple_C_Function";
};
leon_partition : PROCESS deploymentview::DV::Node1::leon_partition.others {
Taste::coordinates => "762 722 2102 1592";
Deployment::Port_Number => 0;
};
leon_rtems_posix : PROCESSOR ocarina_processors_leon::gr740.rtems410_gaisler_posix {
Taste::coordinates => "594 473 2269 1716";
};
PROPERTIES
Taste::APLC_Binding => (reference (leon_partition)) APPLIES TO IV_Simple_C_Function;
Actual_Processor_Binding => (reference (leon_rtems_posix)) APPLIES TO leon_partition;
END Node1.others;
SYSTEM deploymentview
END deploymentview;
SYSTEM IMPLEMENTATION deploymentview.others
SUBCOMPONENTS
Node1 : SYSTEM Node1.others {
Taste::coordinates => "385 118 2478 1893";
};
interfaceview : SYSTEM interfaceview::IV::interfaceview.others;
END deploymentview.others;
PROPERTIES
Taste::coordinates => "0 0 2970 2100";
Taste::version => "1.3.17";
Taste::interfaceView => "InterfaceView.aadl";
Taste::HWLibraries => ("~/tool-inst/share/ocarina/AADLv2/ocarina_components.aadl");
END deploymentview::DV;
Demo_C_RTEMS_Gaisler/InterfaceView.aadl
0 → 100644
View file @
b157e436
PACKAGE interfaceview::IV
PUBLIC
WITH DataView;
WITH interfaceview::FV;
WITH Taste;
---------------------------------------------------
-- TASTE Interface View
---------------------------------------------------
--{ interfaceview obj234 2187 243
--The simplest possible demo.. If this one
--does not build.. We are in big trouble!
--}
SYSTEM interfaceview
END interfaceview;
SYSTEM IMPLEMENTATION interfaceview.others
SUBCOMPONENTS
Simple_C_Function: SYSTEM interfaceview::IV::Simple_C_Function.others
{ Taste::Coordinates => "1109 406 1773 1095"; };
END interfaceview.others;
---------------------------------------------------
-- TASTE Function: interfaceview::IV::Simple_C_Function
---------------------------------------------------
SYSTEM Simple_C_Function
FEATURES
cyclic_operation_obj197 : PROVIDES SUBPROGRAM ACCESS interfaceview::FV::cyclic_operation_obj197.others
{ Taste::Coordinates => "1109 558 1109 558";
Taste::RCMoperationKind => cyclic;
Taste::RCMperiod => 2000 ms;
Taste::Deadline => 2000 ms;
Taste::Importance => MEDIUM ;};
PROPERTIES
Source_Language => C;
Taste::Instance_Name => "Function0";
END Simple_C_Function;
SYSTEM IMPLEMENTATION Simple_C_Function.others
SUBCOMPONENTS
cyclic_operation_obj197_impl : SUBPROGRAM interfaceview::FV::cyclic_operation_obj197.others
{ Compute_Execution_Time => 0ms..2000ms ;};
CONNECTIONS
SUBPROGRAM ACCESS cyclic_operation_obj197_impl -> cyclic_operation_obj197;
END Simple_C_Function.others;
PROPERTIES
Taste::Coordinates => "0 0 2970 2100";
Taste::dataView => ("DataView");
Taste::dataViewPath => ("DataView.aadl");
END interfaceview::IV;
PACKAGE interfaceview::FV
PUBLIC
WITH DataView;
WITH TASTE;
SUBPROGRAM cyclic_operation_obj197
END cyclic_operation_obj197;
SUBPROGRAM IMPLEMENTATION cyclic_operation_obj197.others
END cyclic_operation_obj197.others;
END interfaceview::FV;
Demo_C_RTEMS_Gaisler/build-script.sh
0 → 100755
View file @
b157e436
#!/bin/bash
if
[
!
-e
/opt/rtems-4.10
]
;
then
echo
The Gaisler RTEMS4.10 toolchain must be placed under /opt/rtems-4.10.
exit
1
fi
export
PATH
=
/opt/rtems-4.10/bin:
$PATH
# This script will build your TASTE system (by default with the C runtime).
# You should not change this file as it was automatically generated.
# If you need additional preprocessing, create a file named 'user_init_pre.sh'
# and/or 'user_init_post.sh - They will never get overwritten.'
# Inside these files you may set some environment variables:
# C_INCLUDE_PATH=/usr/include/xenomai/analogy/:$C_INCLUDE_PATH
# unset USE_POHIC
if
[
-f
user_init_pre.sh
]
then
echo
[
INFO] Executing user-defined init script
source
user_init_pre.sh
fi
# Use PolyORB-HI-C runtime
# USE_POHIC=1
# Detect models from Ellidiss tools v2, and convert them to 1.3
INTERFACEVIEW
=
InterfaceView.aadl
grep
"version =>
\"
2"
InterfaceView.aadl
>
/dev/null
&&
{
echo
'[INFO] Converting interface view from V2 to V1.3'
TASTE
--load-interface-view
InterfaceView.aadl
--export-interface-view-to-1_3
__iv_1_3.aadl
INTERFACEVIEW
=
__iv_1_3.aadl
}
;
if
[
-z
"
$DEPLOYMENTVIEW
"
]
then
DEPLOYMENTVIEW
=
DeploymentView.aadl
fi
# Detect models from Ellidiss tools v2, and convert them to 1.3
grep
"version =>
\"
2"
"
$DEPLOYMENTVIEW
"
>
/dev/null
&&
{
echo
'[INFO] Converting deployment view from V2 to V1.3'
TASTE
--load-deployment-view
"
$DEPLOYMENTVIEW
"
--export-deployment-view-to-1_3
__dv_1_3.aadl
DEPLOYMENTVIEW
=
__dv_1_3.aadl
}
;
SKELS
=
"./"
# Update the data view with local paths
taste-update-data-view
||
exit
1
cd
"
$SKELS
"
&&
rm
-f
simple_c_function.zip
&&
zip simple_c_function simple_c_function/
*
&&
cd
$OLDPWD
[
!
-z
"
$CLEANUP
"
]
&&
rm
-rf
binary
if
[
-f
ConcurrencyView.pro
]
then
ORCHESTRATOR_OPTIONS+
=
" -w ConcurrencyView.pro "
fi
if
[
!
-z
"
$USE_POHIC
"
]
then
OUTPUTDIR
=
binary.c
ORCHESTRATOR_OPTIONS+
=
" -p "
elif
[
!
-z
"
$USE_POHIADA
"
]
then
OUTPUTDIR
=
binary.ada
else
OUTPUTDIR
=
binary
fi
if
[
-f
user_init_post.sh
]
then
echo
[
INFO] Executing user-defined init script
source
user_init_post.sh
fi
assert-builder-ocarina.py
\
--fast
\
--debug
\
-p
\
--aadlv2
\
--keep-case
\
--interfaceView
"
$INTERFACEVIEW
"
\
--deploymentView
"
$DEPLOYMENTVIEW
"
\
-o
binary.c
\
--subC
simple_c_function:
"
$SKELS
"
/simple_c_function.zip
\
$ORCHESTRATOR_OPTIONS
Demo_C_RTEMS_Gaisler/simple_c_function/dataview/asn1crt.h
0 → 100644
View file @
b157e436
#ifndef ASN1SCC_ASN1CRT_H_
#define ASN1SCC_ASN1CRT_H_
#if (!defined(_MSC_VER) || _MSC_VER >= 1800)
# ifndef SWIG
# include <stdbool.h>
# endif
#else
typedef
unsigned
char
bool
;
#define true 1
#define false 0
#endif
#ifdef __cplusplus
extern
"C"
{
#endif
#ifndef NULL
#define NULL 0
#endif
#ifndef TRUE
#define TRUE true
#endif
#ifndef FALSE
#define FALSE false
#endif
#ifndef WORD_SIZE
#define WORD_SIZE 8
#endif
typedef
int
asn1SccSint32
;
typedef
unsigned
int
asn1SccUint32
;
typedef
unsigned
char
byte
;
typedef
long
long
asn1SccSint64
;
typedef
unsigned
long
long
asn1SccUint64
;
#if WORD_SIZE==8
typedef
asn1SccUint64
asn1SccUint
;
typedef
asn1SccSint64
asn1SccSint
;
#else
typedef
asn1SccUint32
asn1SccUint
;
typedef
asn1SccSint32
asn1SccSint
;
#endif
#ifdef _MSC_VER
# ifndef INFINITY
# define INFINITY (DBL_MAX+DBL_MAX)
# endif
# ifndef NAN
# define NAN (INFINITY-INFINITY)
# endif
#endif
typedef
bool
flag
;
typedef
char
NullType
;
typedef
struct
{
byte
*
buf
;
long
count
;
long
currentByte
;
/* Next available bit for writting. Possible vallues 0..7, 0 is most significant bit of current byte*/
int
currentBit
;
}
BitStream
;
typedef
struct
{
byte
*
buf
;
long
count
;
long
currentByte
;
flag
EncodeWhiteSpace
;
}
ByteStream
;
typedef
struct
{
int
TokenID
;
char
Value
[
100
];
}
Token
;
typedef
struct
{
char
Name
[
50
];
char
Value
[
100
];
}
XmlAttribute
;
typedef
struct
{
XmlAttribute
attrs
[
20
];
int
nCount
;
}
XmlAttributeArray
;
#define ERR_INSUFFICIENT_DATA 101
#define ERR_INCORRECT_PER_STREAM 102
#define ERR_INVALID_CHOICE_ALTERNATIVE 103
#define ERR_INVALID_ENUM_VALUE 104
#define ERR_INVALID_XML_FILE 200
#define ERR_INVALID_BER_FILE 201
#define ERR_BER_LENGTH_MISMATCH 202
/* Bit strean functions */
void
BitStream_Init
(
BitStream
*
pBitStrm
,
unsigned
char
*
buf
,
long
count
);
void
BitStream_AttachBuffer
(
BitStream
*
pBitStrm
,
unsigned
char
*
buf
,
long
count
);
void
BitStream_AppendBit
(
BitStream
*
pBitStrm
,
flag
v
);
void
BitStream_AppendBits
(
BitStream
*
pBitStrm
,
const
byte
*
srcBuffer
,
int
nBitsToWrite
);
void
BitStream_AppendByte
(
BitStream
*
pBitStrm
,
byte
v
,
flag
negate
);
void
BitStream_AppendByte0
(
BitStream
*
pBitStrm
,
byte
v
);
void
ByteStream_Init
(
ByteStream
*
pStrm
,
byte
*
buf
,
long
count
);
void
ByteStream_AttachBuffer
(
ByteStream
*
pStrm
,
unsigned
char
*
buf
,
long
count
);
asn1SccSint
ByteStream_GetLength
(
ByteStream
*
pStrm
);
asn1SccSint
BitStream_GetLength
(
BitStream
*
pBitStrm
);
void
BitStream_AppendBitOne
(
BitStream
*
pBitStrm
);
void
BitStream_AppendBitZero
(
BitStream
*
pBitStrm
);
flag
BitStream_ReadBit
(
BitStream
*
pBitStrm
,
flag
*
v
);
flag
BitStream_ReadBits
(
BitStream
*
pBitStrm
,
byte
*
BuffToWrite
,
int
nBitsToRead
);
flag
BitStream_ReadByte
(
BitStream
*
pBitStrm
,
byte
*
v
);
/* Integer functions */
void
BitStream_EncodeUnConstraintWholeNumber
(
BitStream
*
pBitStrm
,
asn1SccSint
v
);
void
BitStream_EncodeSemiConstraintWholeNumber
(
BitStream
*
pBitStrm
,
asn1SccSint
v
,
asn1SccSint
min
);
void
BitStream_EncodeSemiConstraintPosWholeNumber
(
BitStream
*
pBitStrm
,
asn1SccUint
v
,
asn1SccUint
min
);
void
BitStream_EncodeConstraintWholeNumber
(
BitStream
*
pBitStrm
,
asn1SccSint
v
,
asn1SccSint
min
,
asn1SccSint
max
);
void
BitStream_EncodeConstraintPosWholeNumber
(
BitStream
*
pBitStrm
,
asn1SccUint
v
,
asn1SccUint
min
,
asn1SccUint
max
);
flag
BitStream_DecodeUnConstraintWholeNumber
(
BitStream
*
pBitStrm
,
asn1SccSint
*
v
);
flag
BitStream_DecodeSemiConstraintWholeNumber
(
BitStream
*
pBitStrm
,
asn1SccSint
*
v
,
asn1SccSint
min
);
flag
BitStream_DecodeSemiConstraintPosWholeNumber
(
BitStream
*
pBitStrm
,
asn1SccUint
*
v
,
asn1SccUint
min
);
flag
BitStream_DecodeConstraintWholeNumber
(
BitStream
*
pBitStrm
,
asn1SccSint
*
v
,
asn1SccSint
min
,
asn1SccSint
max
);
flag
BitStream_DecodeConstraintPosWholeNumber
(
BitStream
*
pBitStrm
,
asn1SccUint
*
v
,
asn1SccUint
min
,
asn1SccUint
max
);
void
BitStream_EncodeReal
(
BitStream
*
pBitStrm
,
double
v
);
flag
BitStream_DecodeReal
(
BitStream
*
pBitStrm
,
double
*
v
);
void
CalculateMantissaAndExponent
(
double
d
,
int
*
exp
,
asn1SccUint64
*
mantissa
);
double
GetDoubleByMantissaAndExp
(
asn1SccUint
mantissa
,
int
exp
);
int
GetNumberOfBitsForNonNegativeInteger
(
asn1SccUint
v
);
int
GetCharIndex
(
char
ch
,
byte
allowedCharSet
[],
int
setLen
);
/*
db ,ad8888ba, 888b 88 88888888888 88
d88b d8"' `"8b 8888b 88 88 ,d ""
d8'`8b d8' 88 `8b 88 88 88
d8' `8b 88 88 `8b 88 88aaaaa 88 88 8b,dPPYba, ,adPPYba, MM88MMM 88 ,adPPYba, 8b,dPPYba, ,adPPYba,
d8YaaaaY8b 88 88 `8b 88 88""""" 88 88 88P' `"8a a8" "" 88 88 a8" "8a 88P' `"8a I8[ ""
d8""""""""8b Y8, 88 `8b 88 88 88 88 88 88 8b 88 88 8b d8 88 88 `"Y8ba,
d8' `8b Y8a. .a8P 88 `8888 88 "8a, ,a88 88 88 "8a, ,aa 88, 88 "8a, ,a8" 88 88 aa ]8I
d8' `8b `"Y8888Y"' 88 `888 88 `"YbbdP'Y8 88 88 `"Ybbd8"' "Y888 88 `"YbbdP"' 88 88 `"YbbdP"
*/
void
Acn_AlignToNextByte
(
BitStream
*
pBitStrm
);
void
Acn_AlignToNextWord
(
BitStream
*
pBitStrm
);
void
Acn_AlignToNextDWord
(
BitStream
*
pBitStrm
);
/*ACN Integer functions*/
void
Acn_Enc_Int_PositiveInteger_ConstSize
(
BitStream
*
pBitStrm
,
asn1SccUint
intVal
,
int
encodedSizeInBits
);
void
Acn_Enc_Int_PositiveInteger_ConstSize_8
(
BitStream
*
pBitStrm
,
asn1SccUint
intVal
);
void
Acn_Enc_Int_PositiveInteger_ConstSize_big_endian_16
(
BitStream
*
pBitStrm
,
asn1SccUint
intVal
);
void
Acn_Enc_Int_PositiveInteger_ConstSize_big_endian_32
(
BitStream
*
pBitStrm
,
asn1SccUint
intVal
);
void
Acn_Enc_Int_PositiveInteger_ConstSize_big_endian_64
(
BitStream
*
pBitStrm
,
asn1SccUint
intVal
);
void
Acn_Enc_Int_PositiveInteger_ConstSize_little_endian_16
(
BitStream
*
pBitStrm
,
asn1SccUint
intVal
);
void
Acn_Enc_Int_PositiveInteger_ConstSize_little_endian_32
(
BitStream
*
pBitStrm
,
asn1SccUint
intVal
);
void
Acn_Enc_Int_PositiveInteger_ConstSize_little_endian_64
(
BitStream
*
pBitStrm
,
asn1SccUint
intVal
);
void
Acn_Enc_Int_PositiveInteger_VarSize_LengthEmbedded
(
BitStream
*
pBitStrm
,
asn1SccUint
intVal
);
void
Acn_Enc_Int_TwosComplement_ConstSize
(
BitStream
*
pBitStrm
,
asn1SccSint
intVal
,
int
encodedSizeInBits
);
void
Acn_Enc_Int_TwosComplement_ConstSize_8
(
BitStream
*
pBitStrm
,
asn1SccSint
intVal
);
void
Acn_Enc_Int_TwosComplement_ConstSize_big_endian_16
(
BitStream
*
pBitStrm
,
asn1SccSint
intVal
);
void
Acn_Enc_Int_TwosComplement_ConstSize_big_endian_32
(
BitStream
*
pBitStrm
,
asn1SccSint
intVal
);
void
Acn_Enc_Int_TwosComplement_ConstSize_big_endian_64
(
BitStream
*
pBitStrm
,
asn1SccSint
intVal
);
void
Acn_Enc_Int_TwosComplement_ConstSize_little_endian_16
(
BitStream
*
pBitStrm
,
asn1SccSint
intVal
);
void
Acn_Enc_Int_TwosComplement_ConstSize_little_endian_32
(
BitStream
*
pBitStrm
,
asn1SccSint
intVal
);
void
Acn_Enc_Int_TwosComplement_ConstSize_little_endian_64
(
BitStream
*
pBitStrm
,
asn1SccSint
intVal
);
void
Acn_Enc_Int_TwosComplement_VarSize_LengthEmbedded
(
BitStream
*
pBitStrm
,
asn1SccSint
intVal
);
void
Acn_Enc_Int_BCD_ConstSize
(
BitStream
*
pBitStrm
,
asn1SccUint
intVal
,
int
encodedSizeInNibbles
);
void
Acn_Enc_Int_BCD_VarSize_LengthEmbedded
(
BitStream
*
pBitStrm
,
asn1SccUint
intVal
);
void
Acn_Enc_Int_BCD_VarSize_NullTerminated
(
BitStream
*
pBitStrm
,
asn1SccUint
intVal
);
//encoding ends when 'F' is reached
void
Acn_Enc_SInt_ASCII_ConstSize
(
BitStream
*
pBitStrm
,
asn1SccSint
intVal
,
int
encodedSizeInBytes
);
void
Acn_Enc_SInt_ASCII_VarSize_LengthEmbedded
(
BitStream
*
pBitStrm
,
asn1SccSint
intVal
);
void
Acn_Enc_SInt_ASCII_VarSize_NullTerminated
(
BitStream
*
pBitStrm
,
asn1SccSint
intVal
);
//encoding ends when 0x0 is reached
void
Acn_Enc_UInt_ASCII_ConstSize
(
BitStream
*
pBitStrm
,
asn1SccUint
intVal
,
int
encodedSizeInBytes
);
void
Acn_Enc_UInt_ASCII_VarSize_LengthEmbedded
(
BitStream
*
pBitStrm
,
asn1SccUint
intVal
);
void
Acn_Enc_UInt_ASCII_VarSize_NullTerminated
(
BitStream
*
pBitStrm
,
asn1SccUint
intVal
);
//encoding ends when 0x0 is reached
/*ACN Decode Integer functions*/
flag
Acn_Dec_Int_PositiveInteger_ConstSize
(
BitStream
*
pBitStrm
,
asn1SccUint
*
pIntVal
,
int
encodedSizeInBits
);
flag
Acn_Dec_Int_PositiveInteger_ConstSize_8
(
BitStream
*
pBitStrm
,
asn1SccUint
*
pIntVal
);
flag
Acn_Dec_Int_PositiveInteger_ConstSize_big_endian_16
(
BitStream
*
pBitStrm
,
asn1SccUint
*
pIntVal
);
flag
Acn_Dec_Int_PositiveInteger_ConstSize_big_endian_32
(
BitStream
*
pBitStrm
,
asn1SccUint
*
pIntVal
);
flag
Acn_Dec_Int_PositiveInteger_ConstSize_big_endian_64
(
BitStream
*
pBitStrm
,
asn1SccUint
*
pIntVal
);
flag
Acn_Dec_Int_PositiveInteger_ConstSize_little_endian_16
(
BitStream
*
pBitStrm
,
asn1SccUint
*
pIntVal
);
flag
Acn_Dec_Int_PositiveInteger_ConstSize_little_endian_32
(
BitStream
*
pBitStrm
,
asn1SccUint
*
pIntVal
);
flag
Acn_Dec_Int_PositiveInteger_ConstSize_little_endian_64
(
BitStream
*
pBitStrm
,
asn1SccUint
*
pIntVal
);
flag
Acn_Dec_Int_PositiveInteger_VarSize_LengthEmbedded
(
BitStream
*
pBitStrm
,
asn1SccUint
*
pIntVal
);
flag
Acn_Dec_Int_TwosComplement_ConstSize
(
BitStream
*
pBitStrm
,
asn1SccSint
*
pIntVal
,
int
encodedSizeInBits
);
flag
Acn_Dec_Int_TwosComplement_ConstSize_8
(
BitStream
*
pBitStrm
,
asn1SccSint
*
pIntVal
);
flag
Acn_Dec_Int_TwosComplement_ConstSize_big_endian_16
(
BitStream
*
pBitStrm
,
asn1SccSint
*
pIntVal
);
flag
Acn_Dec_Int_TwosComplement_ConstSize_big_endian_32
(
BitStream
*
pBitStrm
,
asn1SccSint
*
pIntVal
);
flag
Acn_Dec_Int_TwosComplement_ConstSize_big_endian_64
(
BitStream
*
pBitStrm
,
asn1SccSint
*
pIntVal
);
flag
Acn_Dec_Int_TwosComplement_ConstSize_little_endian_16
(
BitStream
*
pBitStrm
,
asn1SccSint
*
pIntVal
);
flag
Acn_Dec_Int_TwosComplement_ConstSize_little_endian_32
(
BitStream
*
pBitStrm
,
asn1SccSint
*
pIntVal
);
flag
Acn_Dec_Int_TwosComplement_ConstSize_little_endian_64
(
BitStream
*
pBitStrm
,
asn1SccSint
*
pIntVal
);
flag
Acn_Dec_Int_TwosComplement_VarSize_LengthEmbedded
(
BitStream
*
pBitStrm
,
asn1SccSint
*
pIntVal
);
flag
Acn_Dec_Int_BCD_ConstSize
(
BitStream
*
pBitStrm
,
asn1SccUint
*
pIntVal
,
int
encodedSizeInNibbles
);
flag
Acn_Dec_Int_BCD_VarSize_LengthEmbedded
(
BitStream
*
pBitStrm
,
asn1SccUint
*
pIntVal
);
//encoding ends when 'F' is reached
flag
Acn_Dec_Int_BCD_VarSize_NullTerminated
(
BitStream
*
pBitStrm
,
asn1SccUint
*
pIntVal
);
flag
Acn_Dec_SInt_ASCII_ConstSize
(
BitStream
*
pBitStrm
,
asn1SccSint
*
pIntVal
,
int
encodedSizeInBytes
);
flag
Acn_Dec_SInt_ASCII_VarSize_LengthEmbedded
(
BitStream
*
pBitStrm
,
asn1SccSint
*
pIntVal
);
flag
Acn_Dec_SInt_ASCII_VarSize_NullTerminated
(
BitStream
*
pBitStrm
,
asn1SccSint
*
pIntVal
);
flag
Acn_Dec_UInt_ASCII_ConstSize
(
BitStream
*
pBitStrm
,
asn1SccUint
*
pIntVal
,
int
encodedSizeInBytes
);
flag
Acn_Dec_UInt_ASCII_VarSize_LengthEmbedded
(
BitStream
*
pBitStrm
,
asn1SccUint
*
pIntVal
);
flag
Acn_Dec_UInt_ASCII_VarSize_NullTerminated
(
BitStream
*
pBitStrm
,
asn1SccUint
*
pIntVal
);
//flag Acn_Dec_Int_ASCII_NullTerminated_FormattedInteger(BitStream* pBitStrm, const char* format, asn1SccSint* pIntVal);
/* Boolean Decode */
flag
BitStream_ReadBitPattern
(
BitStream
*
pBitStrm
,
const
byte
*
patternToRead
,
int
nBitsToRead
,
flag
*
pBoolValue
);
/*Real encoding functions*/
void
Acn_Enc_Real_IEEE754_32_big_endian
(
BitStream
*
pBitStrm
,
double
realValue
);
void
Acn_Enc_Real_IEEE754_64_big_endian
(
BitStream
*
pBitStrm
,
double
realValue
);
void
Acn_Enc_Real_IEEE754_32_little_endian
(
BitStream
*
pBitStrm
,
double
realValue
);
void
Acn_Enc_Real_IEEE754_64_little_endian
(
BitStream
*
pBitStrm
,
double
realValue
);
flag
Acn_Dec_Real_IEEE754_32_big_endian
(
BitStream
*
pBitStrm
,
double
*
pRealValue
);
flag
Acn_Dec_Real_IEEE754_64_big_endian
(
BitStream
*
pBitStrm
,
double
*
pRealValue
);
flag
Acn_Dec_Real_IEEE754_32_little_endian
(
BitStream
*
pBitStrm
,
double
*
pRealValue
);
flag
Acn_Dec_Real_IEEE754_64_little_endian
(
BitStream
*
pBitStrm
,
double
*
pRealValue
);
/*String functions*/
void
Acn_Enc_String_Ascii_FixSize
(
BitStream
*
pBitStrm
,
asn1SccSint
max
,
const
char
*
strVal
);
void
Acn_Enc_String_Ascii_Null_Teminated
(
BitStream
*
pBitStrm
,
asn1SccSint
max
,
char
null_character
,
const
char
*
strVal
);
void
Acn_Enc_String_Ascii_External_Field_Determinant
(
BitStream
*
pBitStrm
,
asn1SccSint
max
,
const
char
*
strVal
);
void
Acn_Enc_String_Ascii_Internal_Field_Determinant
(
BitStream
*
pBitStrm
,
asn1SccSint
max
,
asn1SccSint
min
,
const
char
*
strVal
);
void
Acn_Enc_String_CharIndex_FixSize
(
BitStream
*
pBitStrm
,
asn1SccSint
max
,
byte
allowedCharSet
[],
int
charSetSize
,
const
char
*
strVal
);
void
Acn_Enc_String_CharIndex_External_Field_Determinant
(
BitStream
*
pBitStrm
,
asn1SccSint
max
,
byte
allowedCharSet
[],
int
charSetSize
,
const
char
*
strVal
);
void
Acn_Enc_String_CharIndex_Internal_Field_Determinant
(
BitStream
*
pBitStrm
,
asn1SccSint
max
,
byte
allowedCharSet
[],
int
charSetSize
,
asn1SccSint
min
,
const
char
*
strVal
);
flag
Acn_Dec_String_Ascii_FixSize
(
BitStream
*
pBitStrm
,
asn1SccSint
max
,
char
*
strVal
);
flag
Acn_Dec_String_Ascii_Null_Teminated
(
BitStream
*
pBitStrm
,
asn1SccSint
max
,
char
null_character
,
char
*
strVal
);
flag
Acn_Dec_String_Ascii_External_Field_Determinant
(
BitStream
*
pBitStrm
,
asn1SccSint
max
,
asn1SccSint
extSizeDeterminatFld
,
char
*
strVal
);
flag
Acn_Dec_String_Ascii_Internal_Field_Determinant
(
BitStream
*
pBitStrm
,
asn1SccSint
max
,
asn1SccSint
min
,
char
*
strVal
);
flag
Acn_Dec_String_CharIndex_FixSize
(
BitStream
*
pBitStrm
,
asn1SccSint
max
,
byte
allowedCharSet
[],
int
charSetSize
,
char
*
strVal
);
flag
Acn_Dec_String_CharIndex_External_Field_Determinant
(
BitStream
*
pBitStrm
,
asn1SccSint
max
,
byte
allowedCharSet
[],
int
charSetSize
,
asn1SccSint
extSizeDeterminatFld
,
char
*
strVal
);
flag
Acn_Dec_String_CharIndex_Internal_Field_Determinant
(
BitStream
*
pBitStrm
,
asn1SccSint
max
,
byte
allowedCharSet
[],
int
charSetSize
,
asn1SccSint
min
,
char
*
strVal
);
/* Length Determinant functions*/
void
Acn_Enc_Length
(
BitStream
*
pBitStrm
,
asn1SccUint
lengthValue
,
int
lengthSizeInBits
);
flag
Acn_Dec_Length
(
BitStream
*
pBitStrm
,
asn1SccUint
*
pLengthValue
,
int
lengthSizeInBits
);
void
BitStream_AppendNBitZero
(
BitStream
*
pBitStrm
,
int
nbits
);
void
BitStream_EncodeNonNegativeInteger
(
BitStream
*
pBitStrm
,
asn1SccUint
v
);
void
BitStream_AppendNBitOne
(
BitStream
*
pBitStrm
,
int
nbits
);
void
BitStream_EncodeNonNegativeIntegerNeg
(
BitStream
*
pBitStrm
,
asn1SccUint
v
,
flag
negate
);
flag
BitStream_DecodeNonNegativeInteger
(
BitStream
*
pBitStrm
,
asn1SccUint
*
v
,
int
nBits
);
flag
BitStream_ReadPartialByte
(
BitStream
*
pBitStrm
,
byte
*
v
,
byte
nbits
);
void
BitStream_AppendPartialByte
(
BitStream
*
pBitStrm
,
byte
v
,
byte
nbits
,
flag
negate
);
void
Xer_EncodeXmlHeader
(
ByteStream
*
pByteStrm
,
const
char
*
xmlHeader
);
flag
Xer_EncodeComment
(
ByteStream
*
pByteStrm
,
const
char
*
comment
,
int
*
pErrCode
);
flag
Xer_EncodeInteger
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
asn1SccSint
value
,
int
*
pErrCode
,
int
level
);
flag
Xer_EncodeBoolean
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
flag
value
,
int
*
pErrCode
,
int
level
);
flag
Xer_EncodeEnumerated
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
const
char
*
value
,
int
*
pErrCode
,
int
level
);
flag
Xer_EncodeReal
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
double
value
,
int
*
pErrCode
,
int
level
);
flag
Xer_EncodeString
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
const
char
*
value
,
int
*
pErrCode
,
int
level
);
flag
Xer_EncodeOctetString
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
const
byte
value
[],
int
nCount
,
int
*
pErrCode
,
int
level
);
flag
Xer_EncodeBitString
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
const
byte
value
[],
int
nCount
,
int
*
pErrCode
,
int
level
);
flag
Xer_DecodeInteger
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
asn1SccSint
*
value
,
int
*
pErrCode
);
flag
Xer_DecodeBoolean
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
flag
*
value
,
int
*
pErrCode
);
flag
Xer_DecodeEnumerated
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
char
*
value
,
int
*
pErrCode
);
flag
Xer_DecodeReal
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
double
*
value
,
int
*
pErrCode
);
flag
Xer_DecodeString
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
char
*
value
,
int
*
pErrCode
);
flag
Xer_DecodeOctetString
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
byte
value
[],
long
*
nCount
,
int
*
pErrCode
);
flag
Xer_DecodeBitString
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
byte
value
[],
long
*
nCount
,
int
*
pErrCode
);
flag
Xer_EncodeComplexElementStart
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
XmlAttributeArray
*
pAttrs
,
int
*
pErrCode
,
int
level
);
flag
Xer_EncodeComplexElementEnd
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
int
*
pErrCode
,
int
level
);
flag
Xer_DecodeComplexElementStart
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
XmlAttributeArray
*
pAttrs
,
int
*
pErrCode
);
flag
Xer_DecodeComplexElementEnd
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
,
int
*
pErrCode
);
flag
Xer_NextEndElementIs
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
);
flag
Xer_NextStartElementIs
(
ByteStream
*
pByteStrm
,
const
char
*
elementTag
);
flag
Xer_LA_NextElementTag
(
ByteStream
*
pByteStrm
,
char
*
elementTag
);
flag
LoadXmlFile
(
const
char
*
fileName
,
ByteStream
*
pStrm
,
int
*
nBytesLoaded
);
typedef
asn1SccUint
BerTag
;
flag
BerEncodeTag
(
ByteStream
*
pByteStrm
,
BerTag
tag
,
int
*
pErrCode
);
flag
BerDecodeTag
(
ByteStream
*
pByteStrm
,
BerTag
tag
,
int
*
pErrCode
);
flag
BerEncodeLengthStart
(
ByteStream
*
pByteStrm
,
int
*
pErrCode
);
flag
BerEncodeLengthEnd
(
ByteStream
*
pByteStrm
,
int
*
pErrCode
);
flag
BerDecodeLength
(
ByteStream
*
pByteStrm
,
int
*
value
,
int
*
pErrCode
);
flag
BerDecodeTwoZeroes
(
ByteStream
*
pByteStrm
,
int
*
pErrCode
);
flag
BerEncodeInteger
(
ByteStream
*
pByteStrm
,
BerTag
tag
,
asn1SccSint
value
,
int
*
pErrCode
);
flag
BerDecodeInteger
(
ByteStream
*
pByteStrm
,
BerTag
tag
,
asn1SccSint
*
value
,
int
*
pErrCode
);