2010-11-14 21:37:50 +00:00
|
|
|
PackageLoader fileInPackage: 'OsmoNetwork'.
|
|
|
|
|
|
|
|
Object subclass: IPAConnection [
|
|
|
|
| socket demuxer queue muxer dispatcher sccp ipa |
|
|
|
|
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 [
|
|
|
|
demuxer := Osmo.IPADemuxer initOn: socket.
|
|
|
|
queue := SharedQueue new.
|
|
|
|
muxer := Osmo.IPAMuxer initOn: queue.
|
|
|
|
|
|
|
|
dispatcher := Osmo.IPADispatcher new.
|
|
|
|
dispatcher initialize.
|
|
|
|
|
|
|
|
sccp := SCCPHadler new.
|
|
|
|
sccp registerOn: dispatcher.
|
|
|
|
|
|
|
|
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 [
|
|
|
|
[queue isEmpty] whileFalse: [
|
|
|
|
| msg |
|
|
|
|
msg := queue next.
|
|
|
|
socket nextPutAllFlush: msg.
|
|
|
|
]
|
|
|
|
]
|
|
|
|
]
|
|
|
|
|
|
|
|
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-14 21:37:50 +00:00
|
|
|
]
|
|
|
|
|
2010-11-20 00:15:52 +00:00
|
|
|
Object subclass: MessageTests [
|
|
|
|
MessageTests class >> createLU [
|
2010-11-20 00:32:09 +00:00
|
|
|
| lu bssap msg sccp |
|
2010-11-20 00:22:53 +00:00
|
|
|
|
2010-11-20 00:15:52 +00:00
|
|
|
lu := LocationUpdatingRequest new.
|
|
|
|
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 00:32:09 +00:00
|
|
|
sccp := Osmo.SCCPHelper createCR: 666 dest: (Osmo.SCCPAddress createWith: 254) data: bssap.
|
2010-11-20 00:15:52 +00:00
|
|
|
sccp asByteArray printNl.
|
|
|
|
^ sccp asByteArray.
|
|
|
|
]
|
|
|
|
]
|