1
%% ``The contents of this file are subject to the Erlang Public License,
2
%% Version 1.1, (the "License"); you may not use this file except in
3
%% compliance with the License. You should have received a copy of the
4
%% Erlang Public License along with this software. If not, it can be
5
%% retrieved via the world wide web at http://www.erlang.org/.
7
%% Software distributed under the License is distributed on an "AS IS"
8
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
9
%% the License for the specific language governing rights and limitations
12
%% The Initial Developer of the Original Code is Ericsson Utvecklings AB.
13
%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
14
%% AB. All Rights Reserved.''
18
%%----------------------------------------------------------------------
19
%% Purpose: Encode COMPACT Megaco/H.248 text messages from internal form
20
%%----------------------------------------------------------------------
22
-module(megaco_compact_text_encoder_prev3a).
24
-export([encode_message/2,
26
encode_action_requests/2,
27
encode_action_request/2,
28
encode_command_request/2,
29
encode_action_reply/2]).
32
-include_lib("megaco/include/megaco.hrl").
33
-include_lib("megaco/include/megaco_message_prev3a.hrl").
34
-define(encoder_version_pre_prev3c,true).
35
-include("megaco_text_tokens.hrl").
38
%%----------------------------------------------------------------------
39
%% Convert a 'MegacoMessage' record into a binary
40
%% Return {ok, DeepIoList} | {error, Reason}
41
%%----------------------------------------------------------------------
43
encode_message([], MegaMsg) when record(MegaMsg, 'MegacoMessage') ->
44
case (catch enc_MegacoMessage(MegaMsg)) of
47
Bin when binary(Bin) ->
50
Bin = erlang:list_to_binary(DeepIoList),
53
encode_message([{flex,_}], MegaMsg) when record(MegaMsg, 'MegacoMessage') ->
54
case (catch enc_MegacoMessage(MegaMsg)) of
57
Bin when binary(Bin) ->
60
Bin = erlang:list_to_binary(DeepIoList),
63
encode_message([_|T], MegaMsg) ->
64
encode_message(T, MegaMsg);
65
encode_message(EncodingConfig, MegaMsg)
66
when record(MegaMsg, 'MegacoMessage') ->
67
{error, {bad_encoding_config, EncodingConfig}};
68
encode_message(_EncodingConfig, _MegaMsg) ->
69
{error, bad_megaco_message}.
74
%%----------------------------------------------------------------------
75
%% Convert a transaction record into a deep io list
76
%% Return {ok, DeepIoList} | {error, Reason}
77
%%----------------------------------------------------------------------
78
encode_transaction(_EC, Trans) ->
79
case (catch enc_Transaction(Trans)) of
82
Bin when binary(Bin) ->
85
Bin = erlang:list_to_binary(DeepIoList),
90
%%----------------------------------------------------------------------
91
%% Convert a list of ActionRequest record's into a binary
92
%% Return {ok, DeepIoList} | {error, Reason}
93
%%----------------------------------------------------------------------
94
encode_action_requests(_EC, ActReqs) ->
95
case (catch enc_ActionRequests(ActReqs)) of
98
Bin when binary(Bin) ->
101
Bin = erlang:list_to_binary(DeepIoList),
105
%%----------------------------------------------------------------------
106
%% Convert a ActionRequest record into a binary
107
%% Return {ok, DeepIoList} | {error, Reason}
108
%%----------------------------------------------------------------------
109
encode_action_request(_EC, ActReq)
110
when record(ActReq, 'ActionRequest') ->
111
case (catch enc_ActionRequest(ActReq)) of
114
Bin when binary(Bin) ->
117
Bin = erlang:list_to_binary(DeepIoList),
121
%%----------------------------------------------------------------------
122
%% Convert a CommandRequest record into a deep io list
123
%% Return {ok, DeepIoList} | {error, Reason}
124
%%----------------------------------------------------------------------
125
encode_command_request(_EC, CmdReq)
126
when record(CmdReq, 'CommandRequest') ->
127
case (catch enc_CommandRequest(CmdReq)) of
130
Bin when binary(Bin) ->
133
Bin = erlang:list_to_binary(DeepIoList),
137
%%----------------------------------------------------------------------
138
%% Convert a action reply into a deep io list
139
%% Return {ok, DeepIoList} | {error, Reason}
140
%%----------------------------------------------------------------------
141
encode_action_reply(_EC, ActRep)
142
when record(ActRep, 'ActionReply') ->
143
case (catch enc_ActionReply(ActRep)) of
151
%%----------------------------------------------------------------------
152
%% Define various macros used by the actual generator code
153
%%----------------------------------------------------------------------
155
-define(EQUAL, [?EqualToken]).
156
-define(COLON, [?ColonToken]).
157
-define(LBRKT, [?LbrktToken]).
158
-define(RBRKT, [?RbrktToken]).
159
-define(LSBRKT, [?LsbrktToken]).
160
-define(RSBRKT, [?RsbrktToken]).
161
-define(COMMA, [?CommaToken]).
162
-define(DOT, [?DotToken]).
163
-define(SLASH, [?SlashToken]).
164
-define(DQUOTE, [?DoubleQuoteToken]).
165
-define(SP, [?SpToken]).
166
-define(HTAB, [?HtabToken]).
167
-define(CR, [?CrToken]).
168
-define(LF, [?LfToken]).
174
-define(INIT_INDENT, []).
175
-define(INC_INDENT(State), State).
176
-define(INDENT(State), State).
177
-define(LBRKT_INDENT(_State), [?LbrktToken]).
178
-define(RBRKT_INDENT(_State), [?RbrktToken]).
179
-define(LSBRKT_INDENT(_State), [?LsbrktToken]).
180
-define(RSBRKT_INDENT(_State), [?RsbrktToken]).
181
-define(COMMA_INDENT(_State), [?CommaToken]).
182
-define(SEP_INDENT(_State), [?LfToken]).
184
%%----------------------------------------------------------------------
185
%% Define token macros
186
%%----------------------------------------------------------------------
188
-define(AddToken , ?CompactAddToken).
189
-define(AuditToken , ?CompactAuditToken).
190
-define(AuditCapToken , ?CompactAuditCapToken).
191
-define(AuditValueToken , ?CompactAuditValueToken).
192
-define(AuthToken , ?CompactAuthToken).
193
-define(BothToken , ?CompactBothToken).
194
-define(BothwayToken , ?CompactBothwayToken).
195
-define(BriefToken , ?CompactBriefToken).
196
-define(BufferToken , ?CompactBufferToken).
197
-define(CtxToken , ?CompactCtxToken).
198
-define(ContextAuditToken , ?CompactContextAuditToken).
199
-define(ContextAttrToken , ?CompactContextAttrToken).
200
-define(DigitMapToken , ?CompactDigitMapToken).
201
-define(DirectionToken , ?CompactDirectionToken).
202
-define(DiscardToken , ?CompactDiscardToken).
203
-define(DisconnectedToken , ?CompactDisconnectedToken).
204
-define(DelayToken , ?CompactDelayToken).
205
-define(DeleteToken , ?CompactDeleteToken).
206
-define(DurationToken , ?CompactDurationToken).
207
-define(EmbedToken , ?CompactEmbedToken).
208
-define(EmergencyToken , ?CompactEmergencyToken).
209
-define(EmergencyOffToken , ?CompactEmergencyOffToken).
210
-define(ErrorToken , ?CompactErrorToken).
211
-define(EventBufferToken , ?CompactEventBufferToken).
212
-define(EventsToken , ?CompactEventsToken).
213
-define(ExternalToken , ?CompactExternalToken).
214
-define(FailoverToken , ?CompactFailoverToken).
215
-define(ForcedToken , ?CompactForcedToken).
216
-define(GracefulToken , ?CompactGracefulToken).
217
-define(H221Token , ?CompactH221Token).
218
-define(H223Token , ?CompactH223Token).
219
-define(H226Token , ?CompactH226Token).
220
-define(HandOffToken , ?CompactHandOffToken).
221
-define(IEPSToken , ?CompactIEPSToken).
222
-define(ImmAckRequiredToken , ?CompactImmAckRequiredToken).
223
-define(InactiveToken , ?CompactInactiveToken).
224
-define(InternalToken , ?CompactInternalToken).
225
-define(InterruptByEventToken , ?CompactInterruptByEventToken).
226
-define(InterruptByNewSignalsDescrToken, ?CompactInterruptByNewSignalsDescrToken).
227
-define(IsolateToken , ?CompactIsolateToken).
228
-define(InSvcToken , ?CompactInSvcToken).
229
-define(KeepActiveToken , ?CompactKeepActiveToken).
230
-define(LocalToken , ?CompactLocalToken).
231
-define(LocalControlToken , ?CompactLocalControlToken).
232
-define(LockStepToken , ?CompactLockStepToken).
233
-define(LoopbackToken , ?CompactLoopbackToken).
234
-define(MediaToken , ?CompactMediaToken).
235
-define(MegacopToken , ?CompactMegacopToken).
236
-define(MethodToken , ?CompactMethodToken).
237
-define(MgcIdToken , ?CompactMgcIdToken).
238
-define(ModeToken , ?CompactModeToken).
239
-define(ModifyToken , ?CompactModifyToken).
240
-define(ModemToken , ?CompactModemToken).
241
-define(MoveToken , ?CompactMoveToken).
242
-define(MtpToken , ?CompactMtpToken).
243
-define(MuxToken , ?CompactMuxToken).
244
-define(NotifyToken , ?CompactNotifyToken).
245
-define(NotifyCompletionToken , ?CompactNotifyCompletionToken).
246
-define(Nx64kToken , ?CompactNx64kToken).
247
-define(ObservedEventsToken , ?CompactObservedEventsToken).
248
-define(OffToken , ?CompactOffToken).
249
-define(OnewayToken , ?CompactOnewayToken).
250
-define(OnOffToken , ?CompactOnOffToken).
251
-define(OnToken , ?CompactOnToken).
252
-define(OtherReasonToken , ?CompactOtherReasonToken).
253
-define(OutOfSvcToken , ?CompactOutOfSvcToken).
254
-define(PackagesToken , ?CompactPackagesToken).
255
-define(PendingToken , ?CompactPendingToken).
256
-define(PriorityToken , ?CompactPriorityToken).
257
-define(ProfileToken , ?CompactProfileToken).
258
-define(ReasonToken , ?CompactReasonToken).
259
-define(RecvonlyToken , ?CompactRecvonlyToken).
260
-define(ReplyToken , ?CompactReplyToken).
261
-define(ResponseAckToken , ?CompactResponseAckToken).
262
-define(RestartToken , ?CompactRestartToken).
263
-define(RemoteToken , ?CompactRemoteToken).
264
-define(RequestIDToken , ?CompactRequestIDToken).
265
-define(ReservedGroupToken , ?CompactReservedGroupToken).
266
-define(ReservedValueToken , ?CompactReservedValueToken).
267
-define(SendonlyToken , ?CompactSendonlyToken).
268
-define(SendrecvToken , ?CompactSendrecvToken).
269
-define(ServicesToken , ?CompactServicesToken).
270
-define(ServiceStatesToken , ?CompactServiceStatesToken).
271
-define(ServiceChangeToken , ?CompactServiceChangeToken).
272
-define(ServiceChangeAddressToken , ?CompactServiceChangeAddressToken).
273
-define(ServiceChangeIncompleteToken , ?CompactServiceChangeIncompleteToken).
274
-define(SignalListToken , ?CompactSignalListToken).
275
-define(SignalsToken , ?CompactSignalsToken).
276
-define(SignalTypeToken , ?CompactSignalTypeToken).
277
-define(StatsToken , ?CompactStatsToken).
278
-define(StreamToken , ?CompactStreamToken).
279
-define(SubtractToken , ?CompactSubtractToken).
280
-define(SynchISDNToken , ?CompactSynchISDNToken).
281
-define(TerminationStateToken , ?CompactTerminationStateToken).
282
-define(TestToken , ?CompactTestToken).
283
-define(TimeOutToken , ?CompactTimeOutToken).
284
-define(TopologyToken , ?CompactTopologyToken).
285
-define(TransToken , ?CompactTransToken).
286
-define(V18Token , ?CompactV18Token).
287
-define(V22Token , ?CompactV22Token).
288
-define(V22bisToken , ?CompactV22bisToken).
289
-define(V32Token , ?CompactV32Token).
290
-define(V32bisToken , ?CompactV32bisToken).
291
-define(V34Token , ?CompactV34Token).
292
-define(V76Token , ?CompactV76Token).
293
-define(V90Token , ?CompactV90Token).
294
-define(V91Token , ?CompactV91Token).
295
-define(VersionToken , ?CompactVersionToken).
297
%%----------------------------------------------------------------------
298
%% Include the generator code
299
%%----------------------------------------------------------------------
301
-include("megaco_text_gen_prev3a.hrl").