== RSPRO

*RSPRO*, the *Remote SIM Protocol*, is an osmo-remsim specific,
non-standard communications protocol used between the elements of the
osmo-remsim system.

It is specified in ASN.1 syntax (see `asn1/RSPRO.asn` in the
`osmo-remsim` source code) and uses BER (Basic Encoding Rules) on the
transport level.

=== Underlying Transport Layer

RSPRO uses TCP as an underlying transport protocol.  As TCP doesn't
preserve message boundaries, the IPA multiplex is used as intermediate
layer between TCP and the BER-encoded RSPRO PDU.

For more information about the IPA multiplex, see the related chapter
in http://ftp.osmocom.org/docs/latest/osmobts-abis.pdf

RSPRO uses the IPA CCM PING/PONG messages for keep-alive and detection
of dead/stale connections.  The compiled-in defaults transmits one IPA
PING every 30s and waits 10s for a response from the peer before
declaring the connection as dead.

=== RSPRO PDU

An RsproPDU consists of:

* *version* of the protocol (v2 is current)
* *tag* specified by the sender, echoed back by the receiver in
  its response so the server can map responses back to a specific
  request
* *msg* the actual RSPRO Message (union/choice)

=== RSPRO Operations

Each RSPRO Operation typically (unless specified othewise) consists of a
Request and Response pair.

==== ConnectBank

This is used by `remsim-bankd` to identify itself to `remsim-server` and
to establish a logical connection between the two elements.

==== ConnectClient

This is used by `remsim-client` to identify itself to `remsim-server`
and to establish a logical connection between the two elements.

==== CreateMapping

This is used by `remsim-server` to install a slot mapping in a
`remsim-bankd`.

==== RemoveMapping

This is used by `remsim-server` to remove a slot mapping from a
`remsim-bankd`.

==== ConfigClientId

This is used by `remsim-server` to dynamically configure a ClientID in a
`remsim-client`.  This mode is currently not supported yet, each client
must have a locally-configured ClientID.

==== ConfigClientBank

This is used by `remsim-server` to inform a `remsim-client` about the
details (bankd ID, slot number, IP address, TCP port) of a the
`remsim-bankd` to which it shall connect.

==== ErrorInd

This is a generic error indication that can be sent by any RSRPO entity.

==== SetAtr

This is used by `remsim-bankd` to inform the `remsim-client` about the
ATR of the card, so that `remsim-client` can replicate that ATR when
answering to the reset of the SIM card interface of the phone/modem.

==== TpduModemToCard

This is used by `remsim-client` to transfer a command TPDU/APDU from the
phone/modem to the SIM card in `remsim-bankd`

==== TpduCardToModem

This is used by `remsim-bankd` to transfer a response TPDU/APDU from the
SIM card back to the phone/modem at `remsim-client`.

==== ClientSlotStatusInd

This is used by `remsim-client` to report the status of a given slot.

==== BankSlotStatusInd

This is used by `remsim-bankd` to report the status of a given slot.
