== osmo-remsim-bankd

The `osmo-remsim-bankd` (SIM Bank Daemon) manages one given SIM bank.
The initial implementation supports a PC/SC driver to expose any PC/SC
compatible card readers as SIM bank.

`osmo-remsim-bankd` initially connects via a RSPRO control connection to
`osmo-remsim-server` at startup, and will in turn receive a set of
initial [client,slot]:[bankd,slot] mappings.  These mappings determine
which slot on the client (corresponding to a modem) is mapped to which
slot on the SIM bank.  Mappings can be updated by `osmo-remsim-server`
at any given point in time.

`osmo-remsim-bankd` implements a RSPRO server, where it listens to
connections from `osmo-remsim-clients`.

As PC/SC only offers a blocking API, there is one thread per PC/SC slot.
This thread will perform blocking I/O on the socket towards the client,
and blocking API calls on PC/SC.

In terms of thread handling, we do:

* accept() handling in [spare] worker threads
** this means blocking I/O can be used, as each worker thread only has
   one TCP connection
** client identifies itself with client:slot
** lookup mapping based on client:slot (using mutex for protection)
** open the reader based on the lookup result

The worker threads initially don't have any mapping to a specific
reader, and that mapping is only established at a later point after the
client has identified itself.  The advantage is that the entire bankd
can live without any non-blocking I/O.

The main thread handles the connection to `osmo-remsim-server`, where it
can also use non-blocking I/O.  However, re-connection would be
required, to avoid stalling all banks/cards in the event of a connection
loss to the server.

worker threads have the following states:
* INIT (just started)
* ACCEPTING (they're blocking in the accept() call on the server socket fd)
* CONNECTED_WAIT_ID (TCP established, but peer not yet identified itself)
* CONNECTED_CLIENT (TCP established, client has identified itself, no mapping)
* CONNECTED_CLIENT_MAPPED (TCP established, client has identified itself, mapping exists)
* CONNECTED_CLIENT_MAPPED_CARD (TCP established, client identified, mapping exists, card opened)
* CONNECTED_SERVER (TCP established, server has identified itself)

Once the client disconnects, or any other error occurs (such as card I/O
errors), the worker thread either returns to INIT state (closing client
socket and reader), or it terminates.  Termination would mean that the
main thread would have to do non-blocking join to detect client
termination and then re-spawn clients, so the "return to INIT state"
approach seems to make more sense.


=== Running

`osmo-remsim-bankd` currently has the following command-line options:

==== SYNOPSIS

*osmo-remsim-bankd* [-h] [-i A.B.C.D] [-p <1-65535>] [-b <1-65535>] [-n <1-65535>] [-I A.B.C.D] [-P <1-65535> ]

==== OPTIONS

*-h, --help*::
  Print a short help message about the supported options
*-i, --server-host A.B.C.D*::
  Specify the remote IP address/hostname of the `osmo-remsim-server` to
  which this bankd shall establish its RSPRO control connection
*-p, --server-port <1-65535>*::
  Specify the remote TCP port number of the `osmo-remsim-server` to which
  this bankd shall establish its RSPRO control connection
*-b, --bank-id <1-65535>*::
  Specify the numeric bank identifier of the SIM bank this bankd
  instance operates.  Must be unique among all banks connecting to the
  same `osmo-remsim-server`.
*-n, --num-slots <1-65535>*::
  Specify the number of slots that this bankd handles.
*-I, --bind-IP A.B.C.D*::
  Specify the local IP address to which the socket for incoming connections
  from `osmo-remsim-clients` is bound to.
*-P, --bind-port <1-65535>*::
  Specify the local TCP port to whicc the socket for incoming connections
  from `osmo-remsim-client`s is bound to.

=== Logging

`osmo-remsim-bankd` currently logs to stdout only, and the logging
verbosity is not yet configurable.  However, as the libosmocore logging
framework is used, extending this is an easy modification.

=== `bankd_pcsc_slots.csv` CSV file

bankd expects a CSV file `bankd_pcsc_slots.csv` in the current working directory at startup.

This CSV file specifies the mapping between the string names of the PCSC
readers and the RSPRO bandk/slot numbers.  The format is as follows:

.Example: CSV file mapping bankd slots 0..4 to an ACS ACR33U-A1 reader slots
----
"1","0","ACS ACR33 ICC Reader 00 00"
"1","1","ACS ACR33 ICC Reader 00 01"
"1","2","ACS ACR33 ICC Reader 00 02"
"1","3","ACS ACR33 ICC Reader 00 03"
"1","4","ACS ACR33 ICC Reader 00 04"
----
