2010-11-14 21:37:50 +00:00
|
|
|
PackageLoader fileInPackage: 'OsmoNetwork'.
|
|
|
|
|
|
|
|
Object subclass: IPAConnection [
|
2010-11-20 00:33:47 +00:00
|
|
|
| socket demuxer queue muxer dispatcher sccp ipa sem |
|
2010-11-14 21:37:50 +00:00
|
|
|
IPAConnection class >> initWith: anAddr port: aPort token: aToken [
|
|
|
|
^ (self new)
|
|
|
|
socket: (Sockets.Socket remote: anAddr port: aPort);
|
|
|
|
setup: aToken;
|
|
|
|
yourself
|
|
|
|
]
|
|
|
|
|
|
|
|
socket: aSocket [
|
|
|
|
socket := aSocket.
|
|
|
|
]
|
|
|
|
|
|
|
|
setup: aToken [
|
2010-11-20 00:33:47 +00:00
|
|
|
sem := Semaphore forMutualExclusion.
|
|
|
|
|
2010-11-14 21:37:50 +00:00
|
|
|
demuxer := Osmo.IPADemuxer initOn: socket.
|
|
|
|
queue := SharedQueue new.
|
|
|
|
muxer := Osmo.IPAMuxer initOn: queue.
|
|
|
|
|
|
|
|
dispatcher := Osmo.IPADispatcher new.
|
|
|
|
dispatcher initialize.
|
|
|
|
|
2010-11-24 09:58:30 +00:00
|
|
|
sccp := SCCPHandler new.
|
2010-11-14 21:37:50 +00:00
|
|
|
sccp registerOn: dispatcher.
|
2010-11-28 20:14:25 +00:00
|
|
|
sccp connection: self.
|
2010-11-14 21:37:50 +00:00
|
|
|
|
|
|
|
ipa := Osmo.IPAProtoHandler new.
|
|
|
|
ipa registerOn: dispatcher.
|
|
|
|
ipa muxer: muxer.
|
|
|
|
ipa token: aToken
|
|
|
|
]
|
|
|
|
|
|
|
|
serve [
|
|
|
|
[true] whileTrue: [
|
|
|
|
[
|
|
|
|
| data |
|
|
|
|
data := demuxer next.
|
|
|
|
dispatcher dispatch: data first with: data second.
|
|
|
|
|
|
|
|
self drainSendQueue.
|
|
|
|
] on: SystemExceptions.EndOfStream do: [:e | ^ false ]
|
|
|
|
]
|
|
|
|
]
|
|
|
|
|
|
|
|
drainSendQueue [
|
2010-11-20 00:33:47 +00:00
|
|
|
sem critical: [
|
|
|
|
[queue isEmpty] whileFalse: [
|
|
|
|
| msg |
|
|
|
|
msg := queue next.
|
|
|
|
socket nextPutAllFlush: msg.
|
|
|
|
]
|
2010-11-14 21:37:50 +00:00
|
|
|
]
|
|
|
|
]
|
2010-11-20 00:33:47 +00:00
|
|
|
|
|
|
|
send: aMsg with: aType [
|
|
|
|
muxer nextPut: aMsg with: aType.
|
|
|
|
self drainSendQueue.
|
|
|
|
]
|
2010-11-24 09:58:30 +00:00
|
|
|
|
|
|
|
sccpHandler [
|
|
|
|
^ sccp
|
|
|
|
]
|
2010-11-14 21:37:50 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
Object subclass: IPAConfig [
|
2010-11-14 21:47:48 +00:00
|
|
|
| socket addr port token connection sem |
|
2010-11-14 21:37:50 +00:00
|
|
|
|
|
|
|
addr: anAddr port: aPort [
|
|
|
|
addr := anAddr.
|
|
|
|
port := aPort.
|
|
|
|
]
|
|
|
|
|
|
|
|
token: aToken [
|
|
|
|
token := aToken.
|
|
|
|
]
|
|
|
|
|
|
|
|
connect [
|
2010-11-14 21:47:48 +00:00
|
|
|
sem := Semaphore new.
|
2010-11-14 21:37:50 +00:00
|
|
|
connection := IPAConnection initWith: addr port: port token: token.
|
|
|
|
]
|
|
|
|
|
|
|
|
connection [
|
|
|
|
^ connection
|
|
|
|
]
|
|
|
|
|
2010-11-14 21:47:48 +00:00
|
|
|
serve [
|
|
|
|
[
|
|
|
|
connection serve.
|
|
|
|
'Connection disconnected' printNl.
|
|
|
|
sem signal.
|
|
|
|
] fork.
|
|
|
|
]
|
2010-11-14 21:37:50 +00:00
|
|
|
|
2010-11-14 21:47:48 +00:00
|
|
|
semaphore [ ^ sem ]
|
2010-11-24 09:58:30 +00:00
|
|
|
|
|
|
|
sendLU [
|
|
|
|
| msg |
|
|
|
|
msg := MessageTests createLU: (connection sccpHandler).
|
|
|
|
connection send: msg with: Osmo.IPAConstants protocolSCCP.
|
|
|
|
]
|
2010-11-14 21:37:50 +00:00
|
|
|
]
|
|
|
|
|
2010-11-20 00:15:52 +00:00
|
|
|
Object subclass: MessageTests [
|
2010-11-20 08:35:12 +00:00
|
|
|
MessageTests class >> createLU: aHandler [
|
2010-11-20 00:32:09 +00:00
|
|
|
| lu bssap msg sccp |
|
2010-11-20 00:22:53 +00:00
|
|
|
|
2010-11-29 10:36:27 +00:00
|
|
|
lu := GSM48LURequest new.
|
2010-11-20 00:15:52 +00:00
|
|
|
lu mi imsi: '666666666666'.
|
|
|
|
|
|
|
|
msg := IEMessage initWith: GSM0808Helper msgComplL3.
|
|
|
|
msg addIe: (GSMCellIdentifier initWith: 274 mnc: 8 lac: 4099 ci: 40000).
|
2010-11-20 00:22:53 +00:00
|
|
|
msg addIe: (GSMLayer3Info initWith: lu).
|
2010-11-20 00:15:52 +00:00
|
|
|
|
2010-11-20 00:32:09 +00:00
|
|
|
bssap := BSSAPManagement initWith: msg.
|
2010-11-20 00:15:52 +00:00
|
|
|
|
2010-11-20 08:35:12 +00:00
|
|
|
sccp := aHandler createConnection: bssap.
|
2010-11-24 09:58:30 +00:00
|
|
|
^ sccp toMessage.
|
2010-11-20 00:15:52 +00:00
|
|
|
]
|
|
|
|
]
|