Removed CellularBase and AT_CellularBase from cellular stack and updated both code and unittests accordingly.
Moved property handling into AT_CellularDevice
MBED_DEPRECATE macros is added to string-based APIs.
New, non-string-based APIs are added in their place.
Wiced binaries rebuilt
Any existing stubs or mocks are adjusted to compile and run with the newly added non-string based functions.
- When calling socket APIs when socket is not open, NSAPI_ERROR_NO_SOCKET will be
returned instead of generic NSAPI_ERROR_DEVICE_ERROR
- If socket_send() is called when connection is not open, NSAPI_ERROR_NO_CONNECTION
will be returned instead of generic NSAPI_ERROR_DEVICE_ERROR
CellularContext now tries to get an IP address after connect and before
sending NSAPI_STATUS_GLOBAL_UP. Even if we don't the IP address from
the modem we will send NSAPI_STATUS_GLOBAL_UP and return success.
Modem has an ip address but for some reason some modems don't
give it to us.
Local modem ip stacks vary in their implementations and the way of
working. Some of the modems may not open a socket until an IP context is
assigned. That's why we came up with a container that stores addresses of
any CellularSocket instances created on-demand by the application. When
the application requests opening a socket we store allocate and store the
premitive in the container however actual socket creation at the modem
may happen at a later stage, e.g., a call to send_to() may result in
actual opening of a socket.
That's why we must not assign socket ids in the CellularSocket object
during construction. It must happen when actual socket is opened and is
alive.
Another implication of the previous model is that we may have multiple
sockets created in our container but the actual socket ids are not
assigned yet, so we cannot directly map the socket id to the container
indices which has been happening previously.
To solve this issue we have promoted the AT_CellularStac::find_socket_index(...) method
to be a protected method rather than being private so that the children
can use the method to determine if the given index in the container
corrsponds to the assigned socket id or not.
We have given up on the socket->created flag and the whole decision
making to actually open a socket on the modem happens on the basis of a
valid socket being assigned or not.
Updated cellular debug trace prints:
- Removed unnecessary prints.
- Tracing more in DEBUG level.
- Read/write bytes not printed on big packets.
- Signal quality (RSSI) traced to log network problems.
- Dismissed AT data is traced.
- Modem type and firmware version are traced.
Network registration returns NotRegistered instead of StatusNotAvailable,
because that's not in 3GPP TS 27.007.