make module compile again (m2ua->xua changes)

This commit is contained in:
Harald Welte 2012-05-30 12:05:18 +02:00
parent dd35d2c8fb
commit e58b38f7a8
2 changed files with 55 additions and 32 deletions

View File

@ -7,19 +7,20 @@
bssmap_codec,
isup_codec,
mtp2_lsc, mtp2_iac,
m2ua_codec,
m2ua_codec, sctp_m2ua,
m2pa_codec, sctp_m2pa,
m3ua_codec, m3ua_core, m3ua_example, m3ua_asp,
mtp3_codec, mtp3_hmdt, mtp3_sltc,
xua_codec, sua_sccp_conv, sua_asp, sctp_sua,
xua_asp_fsm,
xua_asp_fsm, xua_as_fsm, xua_asp_test,
sccp_codec,
osmo_ss7_sup, osmo_ss7_app,
ss7_links, ss7_link_m3ua, ss7_link_ipa_client,
ss7_routes,
ss7_service_dump,
osmo_ss7_gtt,
osmo_ss7_pcap
osmo_ss7_pcap,
sg_as_sup, sg_asp_sup
]},
{registered, [osmo_ss7_app]},
{mod, {osmo_ss7_app, []}},

View File

@ -23,7 +23,9 @@
-include_lib("kernel/include/inet_sctp.hrl").
-include("osmo_util.hrl").
-include("xua.hrl").
-include("m2ua.hrl").
-include("m3ua.hrl").
-export([init/1, terminate/3, code_change/4, handle_event/3, handle_info/3]).
@ -40,8 +42,9 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
init(_InitOpts) ->
Fun = fixme, % FIXME
{ok, Asp} = gen_fsm:start_link(xua_asp_fsm, [sua_asp, [], Fun, [self()], self()], [{debug, [trace]}]),
{ok, #m2ua_state{last_bsn_received=16#ffffff, last_fsn_sent=16#ffffff, asp_pid=Asp}}
{ok, #m2ua_state{last_bsn_received=16#ffffff, last_fsn_sent=16#ffffff, asp_pid=Asp}}.
terminate(Reason, _State, _LoopDat) ->
io:format("Terminating ~p (Reason ~p)~n", [?MODULE, Reason]),
@ -79,48 +82,59 @@ rx_sctp(#sctp_sndrcvinfo{ppid = ?M2UA_PPID}, Data, State, LoopDat) ->
{ok, M2ua} = xua_codec:parse_msg(Data),
% FIXME: check sequenc number linearity
case M2ua of
#xua_msg{msg_class = ?M3UA_MSGC_SSNM} ->
% FIXME
{ignore, LoopDat};
#xua_msg{msg_class = ?M3UA_MSGC_ASPSM} ->
gen_fsm:send_event(Asp, M2ua),
{ignore, LoopDat};
#xua_msg{msg_class = ?M3UA_MSGC_ASPTM} ->
gen_fsm:send_event(Asp, M2ua),
{ignore, LoopDat};
#xua_msg{msg_class = ?M2UA_CLASS_M2UA,
msg_type = ?M2UA_TYPE_USER} ->
Mtp3 = M2pa#m2pa_msg.mtp3,
case LoopDat#m2pa_state.msu_fisu_accepted of
1 ->
LoopDat2 = LoopDat#m2pa_state{last_bsn_received = FsnRecv},
case Mtp3 of
undefined ->
ok;
_ ->
send_userdata_ack(LoopDat2)
end,
gen_fsm:send_event(LoopDat#m2pa_state.lsc_pid, fisu_msu_received),
Prim = osmo_util:make_prim('MTP','TRANSFER',indication, Mtp3),
{ok, Prim, LoopDat2};
_ ->
{ignore, LoopDat}
end;
#xua_msg{msg_class = ?M2UA_MSGC_MAUP,
msg_type = ?M2UA_MAUP_MSGT_EST_REQ} ->
% FIXME: respond with M2UA_MAUP_MSGT_EST_CONF
error_logger:error_report(["unimplemented message",
{msg_type, "EST_REQ"}]),
{ignore, LoopDat};
#xua_msg{msg_class = ?M2UA_MSGC_MAUP,
msg_type = ?M2UA_MAUP_MSGT_REL_REQ} ->
% FIXME: respond with M2UA_MAUP_MSGT_REL_CONF
error_logger:error_report(["unimplemented message",
{msg_type, "REL_REQ"}]),
{ignore, LoopDat};
#xua_msg{msg_class = ?M2UA_MSGC_MAUP,
msg_type = ?M2UA_MAUP_MSGT_STATE_REQ} ->
handle_m2ua_state_req(M2ua),
{ignore, LoopDat};
#xua_msg{msg_class = ?M2UA_MSGC_MAUP,
msg_type = ?M2UA_MAUP_MSGT_CONG_IND} ->
% FIXME
error_logger:error_report(["unimplemented message",
{msg_type, "CONG_IND"}]),
{ignore, LoopDat};
#xua_msg{msg_class = ?M2UA_MSGC_MAUP,
msg_type = ?M2UA_MAUP_MSGT_DATA_RETR_REQ} ->
% FIXME
error_logger:error_report(["unimplemented message",
{msg_type, "RETR_REQ"}]),
{ignore, LoopDat};
#xua_msg{msg_class = ?M2UA_MSGC_MAUP,
msg_type = ?M2UA_MAUP_MSGT_DATA} ->
Mtp3 = proplists:get_value(?M2UA_P_M2UA_DATA1, M2ua#xua_msg.payload),
Prim = osmo_util:make_prim('MTP','TRANSFER',indication, Mtp3),
{ignore, LoopDat};
_ ->
% do something with link related msgs
io:format("M2UA Unknown message ~p in state ~p~n", [M2pa, State]),
io:format("M2UA Unknown message ~p in state ~p~n", [M2ua, State]),
{ignore, State, LoopDat}
end.
% MTP-TRANSFER.req has arrived at sctp_core, encapsulate+tx it
mtp_xfer(Mtp3, LoopDat) ->
Fsn = inc_seq_nr(LoopDat#m2pa_state.last_fsn_sent),
M2ua = #xua_msg{msg_class = ?M2UA_CLASS_M2UA,
msg_type = ?M2UA_TYPE_USER,
mtp3 = Mtp3},
M2ua = #xua_msg{msg_class = ?M2UA_MSGC_MAUP,
msg_type = ?M2UA_MAUP_MSGT_DATA,
payload = {?M2UA_P_M2UA_DATA1, length(Mtp3), Mtp3}},
M2paBin = xua_codec:encode_msg(M2ua),
tx_sctp(?M2UA_STREAM_USER, M2paBin),
LoopDat2.
% FIXME tx_sctp(?M2UA_STREAM_USER, M2paBin),
LoopDat.
state_change(_, established, LoopDat) ->
% emulate a 'start' from LSC
@ -132,6 +146,14 @@ state_change(established, _, LoopDat) ->
state_change(_, _, LoopDat) ->
LoopDat.
handle_m2ua_state_req(M2ua = #xua_msg{payload = Payload}) ->
{?M2UA_P_MAUP_STATE, State} = lists:keyfind(?M2UA_P_MAUP_STATE, 1, Payload),
% FIXME handle_m2ua_state_req(State).
% LOP_SET/CLEAR, EMER_SET/CLEAR, FLUSH_BUFFERSm CONTINUE, CLEAR_RTB, AUDIT, CONG*
% FIXME: respond with M2UA_MAUP_MSGT_STATE_CONF
error_logger:error_report(["unimplemented message",
{msg_type, "STATE_REQ"}]),
true.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% helper functions